retrocoding/1802mc/blinkqslowwithescape.asm
2024-09-27 01:15:46 -05:00

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