lawless-legends/Platform/Apple/virtual/src/plasma/gameloop.pla

80 lines
1.3 KiB
Plaintext
Raw Normal View History

2014-06-25 15:47:28 +00:00
;
; Handy constants.
;
const FALSE = 0
const TRUE = !FALSE
;
; Hardware addresses.
;
const keyboard = $C000
const keystrobe = $C010
;
; call() return register structure.
;
const Accum = 0
const Xreg = 1
const Yreg = 2
const Preg = 3
;
; Processor Status (Preg) flag bits.
;
const Cflag = $01
const Zflag = $02
const Iflag = $04
const Dflag = $08
const Bflag = $10
const Vflag = $40
const Sflag = $80
;
; CALL 6502 ROUTINE
; CALL(ADDR, AREG, XREG, YREG, STATUS)
;
asm call
REGVALS = SRC
PHP
LDA ESTKL+4,X
STA TMPL
LDA ESTKH+4,X
STA TMPH
LDA ESTKL,X
PHA
LDA ESTKL+1,X
TAY
LDA ESTKL+3,X
PHA
LDA ESTKL+2,X
INX
INX
INX
INX
STX ESP
TAX
PLA
BIT ROMEN
PLP
JSR JMPTMP
PHP
BIT LCRDEN+LCBNK2
STA REGVALS+0
STX REGVALS+1
STY REGVALS+2
PLA
STA REGVALS+3
LDX ESP
LDA #<REGVALS
LDY #>REGVALS
STA ESTKL,X
STY ESTKH,X
PLP
RTS
JMPTMP JMP (TMP)
end
;
; Main loop.
;
call($FDF0, 65, 0, 0, 0)
call($FDF0, 65, 0, 0, 0)
call($FDF0, 65, 0, 0, 0)
call($FDF0, 13+128, 0, 0, 0)
done