99 lines
1.7 KiB
NASM
99 lines
1.7 KiB
NASM
; blinkqslowwithescape.asm
|
|
; Copyright (C) 2023 William R. Moore
|
|
;
|
|
; This program is free software: you can redistribute it and/or modify
|
|
; it under the terms of the GNU General Public License as published by
|
|
; the Free Software Foundation, either version 3 of the License, or
|
|
; (at your option) any later version.
|
|
;
|
|
; This program is distributed in the hope that it will be useful,
|
|
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
; GNU General Public License for more details.
|
|
;
|
|
; You should have received a copy of the GNU General Public License
|
|
; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
R0 EQU $00
|
|
R1 EQU $01
|
|
R2 EQU $02
|
|
R3 EQU $03
|
|
R4 EQU $04
|
|
R5 EQU $05
|
|
R7 EQU $07
|
|
RE EQU $0D
|
|
|
|
STACK EQU 7F6FH
|
|
CALL EQU 8ADBH
|
|
RETURN EQU 8AEDH
|
|
|
|
MON_INPUT EQU 8005H
|
|
MON_OUTSTR EQU 8526H
|
|
|
|
CPU 1802
|
|
; ORG $0000
|
|
|
|
; Setup code to initialize the stack and SCRT registers
|
|
; SETUP R2 (Stack)
|
|
LDI HIGH STACK
|
|
PHI R2
|
|
LDI LOW STACK
|
|
PLO R2 ;STACK = 7F6FH
|
|
SEX R2 ;X = 2
|
|
|
|
; SETUP R4 (CALL PC)
|
|
LDI HIGH CALL
|
|
PHI R4
|
|
LDI LOW CALL
|
|
PLO R4 ;R4 = PC FOR CALL SUBROUTINE
|
|
|
|
LDI HIGH RETURN
|
|
PHI R5
|
|
LDI LOW RETURN
|
|
PLO R5 ;R5 = PC FOR RETURN SUBROUTINE
|
|
|
|
SEQ ; announce running
|
|
|
|
INKEY
|
|
BN4 INKEY
|
|
REQ
|
|
LOAD R7, ALLLED
|
|
OUT 4
|
|
RUN
|
|
LDI 162
|
|
PHI R2
|
|
DECR
|
|
DEC R2
|
|
GHI R2
|
|
BNZ DECR
|
|
LSQ
|
|
SEQ
|
|
SKP
|
|
REQ
|
|
INP 4
|
|
BZ DONE
|
|
BR RUN
|
|
|
|
DONE
|
|
REQ
|
|
; LOAD R7, NullByte
|
|
; SEP R4
|
|
; DW MON_OUTSTR
|
|
LOAD R7, NOLED
|
|
OUT 4
|
|
LOAD R7, BYETXT
|
|
SEP R4
|
|
DW MON_OUTSTR
|
|
LDI $8B
|
|
PHI R0
|
|
LDI $5E
|
|
PLO R0
|
|
SEX R0
|
|
SEP R0
|
|
|
|
ALLLED BYTE $FF
|
|
NOLED BYTE 0
|
|
BYETXT BYTE "$", 0
|
|
NullByte BYTE 0
|
|
END
|