mirror of
https://github.com/jonthomasson/retro1.git
synced 2024-06-09 14:29:27 +00:00
119 lines
2.7 KiB
ArmAsm
119 lines
2.7 KiB
ArmAsm
|
.segment "CODE"
|
||
|
|
||
|
.ifndef CONFIG_NO_POKE
|
||
|
; ----------------------------------------------------------------------------
|
||
|
; EVALUATE "EXP1,EXP2"
|
||
|
;
|
||
|
; CONVERT EXP1 TO 16-BIT NUMBER IN LINNUM
|
||
|
; CONVERT EXP2 TO 8-BIT NUMBER IN X-REG
|
||
|
; ----------------------------------------------------------------------------
|
||
|
GTNUM:
|
||
|
jsr FRMNUM
|
||
|
jsr GETADR
|
||
|
|
||
|
; ----------------------------------------------------------------------------
|
||
|
; EVALUATE ",EXPRESSION"
|
||
|
; CONVERT EXPRESSION TO SINGLE BYTE IN X-REG
|
||
|
; ----------------------------------------------------------------------------
|
||
|
COMBYTE:
|
||
|
jsr CHKCOM
|
||
|
jmp GETBYT
|
||
|
|
||
|
; ----------------------------------------------------------------------------
|
||
|
; CONVERT (FAC) TO A 16-BIT VALUE IN LINNUM
|
||
|
; ----------------------------------------------------------------------------
|
||
|
GETADR:
|
||
|
lda FACSIGN
|
||
|
.ifdef APPLE
|
||
|
nop ; PATCH
|
||
|
nop
|
||
|
.else
|
||
|
bmi GOIQ
|
||
|
.endif
|
||
|
lda FAC
|
||
|
cmp #$91
|
||
|
bcs GOIQ
|
||
|
jsr QINT
|
||
|
lda FAC_LAST-1
|
||
|
ldy FAC_LAST
|
||
|
sty LINNUM
|
||
|
sta LINNUM+1
|
||
|
rts
|
||
|
|
||
|
; ----------------------------------------------------------------------------
|
||
|
; "PEEK" FUNCTION
|
||
|
; ----------------------------------------------------------------------------
|
||
|
PEEK:
|
||
|
.ifdef CONFIG_PEEK_SAVE_LINNUM
|
||
|
lda LINNUM+1
|
||
|
pha
|
||
|
lda LINNUM
|
||
|
pha
|
||
|
.endif
|
||
|
jsr GETADR
|
||
|
ldy #$00
|
||
|
.ifdef CBM1
|
||
|
; disallow PEEK between $C000 and $DFFF
|
||
|
cmp #$C0
|
||
|
bcc LD6F3
|
||
|
cmp #$E1
|
||
|
bcc LD6F6
|
||
|
LD6F3:
|
||
|
.endif
|
||
|
.ifdef CBM2
|
||
|
nop ; patch that disables the compares above
|
||
|
nop
|
||
|
nop
|
||
|
nop
|
||
|
nop
|
||
|
nop
|
||
|
nop
|
||
|
nop
|
||
|
.endif
|
||
|
lda (LINNUM),y
|
||
|
tay
|
||
|
.ifdef CONFIG_PEEK_SAVE_LINNUM
|
||
|
pla
|
||
|
sta LINNUM
|
||
|
pla
|
||
|
sta LINNUM+1
|
||
|
.endif
|
||
|
LD6F6:
|
||
|
jmp SNGFLT
|
||
|
|
||
|
; ----------------------------------------------------------------------------
|
||
|
; "POKE" STATEMENT
|
||
|
; ----------------------------------------------------------------------------
|
||
|
POKE:
|
||
|
jsr GTNUM
|
||
|
txa
|
||
|
ldy #$00
|
||
|
sta (LINNUM),y
|
||
|
rts
|
||
|
|
||
|
; ----------------------------------------------------------------------------
|
||
|
; "WAIT" STATEMENT
|
||
|
; ----------------------------------------------------------------------------
|
||
|
WAIT:
|
||
|
jsr GTNUM
|
||
|
stx FORPNT
|
||
|
ldx #$00
|
||
|
jsr CHRGOT
|
||
|
.ifdef CONFIG_EASTER_EGG
|
||
|
beq EASTER_EGG
|
||
|
.else
|
||
|
beq L3628
|
||
|
.endif
|
||
|
jsr COMBYTE
|
||
|
L3628:
|
||
|
stx FORPNT+1
|
||
|
ldy #$00
|
||
|
L362C:
|
||
|
lda (LINNUM),y
|
||
|
eor FORPNT+1
|
||
|
and FORPNT
|
||
|
beq L362C
|
||
|
RTS3:
|
||
|
rts
|
||
|
.endif
|