mirror of
https://github.com/digarok/MiniMemoryTester.git
synced 2024-12-22 15:31:03 +00:00
Alpha release
This commit is contained in:
parent
ae0cc2f78c
commit
d44b9f9ca2
329
src/mt.s
329
src/mt.s
@ -10,11 +10,17 @@
|
|||||||
dsk mtsystem ; tell compiler what name for output file
|
dsk mtsystem ; tell compiler what name for output file
|
||||||
put applerom
|
put applerom
|
||||||
|
|
||||||
|
|
||||||
MLI equ $bf00
|
MLI equ $bf00
|
||||||
|
Init
|
||||||
|
LDA #$A0 ;USE A BLANK SPACE TO
|
||||||
|
JSR $C300 ;TURN ON THE VIDEO FIRMWARE
|
||||||
|
|
||||||
Main jsr Menu_Draw
|
lda $C034 ; save border color
|
||||||
:menuLoop jsr Menu_UndrawSelected
|
sta BorderColor
|
||||||
|
|
||||||
|
Main
|
||||||
|
:menuLoop jsr Menu_Draw
|
||||||
|
:menuNoDrawLoop jsr Menu_UndrawSelected
|
||||||
jsr Menu_DrawSelected
|
jsr Menu_DrawSelected
|
||||||
jsr WaitKey
|
jsr WaitKey
|
||||||
cmp #$8D ; ENTER
|
cmp #$8D ; ENTER
|
||||||
@ -25,12 +31,12 @@ Main jsr Menu_Draw
|
|||||||
:check1 cmp #$8B ; UP
|
:check1 cmp #$8B ; UP
|
||||||
bne :check2
|
bne :check2
|
||||||
jsr Menu_PrevItem
|
jsr Menu_PrevItem
|
||||||
bra :menuLoop
|
bra :menuNoDrawLoop
|
||||||
|
|
||||||
:check2 cmp #$8A ; DOWN
|
:check2 cmp #$8A ; DOWN
|
||||||
bne :noKey
|
bne :noKey
|
||||||
jsr Menu_NextItem
|
jsr Menu_NextItem
|
||||||
bra :menuLoop
|
bra :menuNoDrawLoop
|
||||||
|
|
||||||
:noKey bra :menuLoop
|
:noKey bra :menuLoop
|
||||||
* LOOOOOOOOOP ^^^^^^
|
* LOOOOOOOOOP ^^^^^^
|
||||||
@ -63,7 +69,10 @@ GetHex sta _gethex_maxlen
|
|||||||
stz _gethex_current
|
stz _gethex_current
|
||||||
|
|
||||||
:input jsr RDKEY
|
:input jsr RDKEY
|
||||||
cmp #"9"+1
|
cmp #$9B ;esc = abort
|
||||||
|
bne :notesc
|
||||||
|
rts
|
||||||
|
:notesc cmp #"9"+1
|
||||||
bcs :notNum ;bge > 9
|
bcs :notNum ;bge > 9
|
||||||
cmp #"0"
|
cmp #"0"
|
||||||
bcc :badChar ;
|
bcc :badChar ;
|
||||||
@ -141,7 +150,7 @@ HexCharForByte
|
|||||||
Menu_Draw jsr HOME
|
Menu_Draw jsr HOME
|
||||||
lda #MainMenuStrs
|
lda #MainMenuStrs
|
||||||
ldy #>MainMenuStrs
|
ldy #>MainMenuStrs
|
||||||
ldx #05 ; horiz pos
|
ldx #00 ; horiz pos
|
||||||
jsr PrintStringsX
|
jsr PrintStringsX
|
||||||
lda #MainMenuDefs
|
lda #MainMenuDefs
|
||||||
ldy #>MainMenuDefs
|
ldy #>MainMenuDefs
|
||||||
@ -150,12 +159,19 @@ Menu_Draw jsr HOME
|
|||||||
|
|
||||||
BeginTest stz _testIteration
|
BeginTest stz _testIteration
|
||||||
stz _testIteration+1
|
stz _testIteration+1
|
||||||
ldx #23
|
ldx #40
|
||||||
ldy #10
|
ldy #07
|
||||||
jsr GoXY
|
lda #5
|
||||||
lda #Mesg_Writing
|
jsr PrintBox30
|
||||||
ldy #>Mesg_Writing
|
BeginTestPass PRINTXY #44;#08;Mesg_TestPass
|
||||||
jsr PrintString
|
inc _testIteration
|
||||||
|
bne :noroll
|
||||||
|
inc _testIteration+1
|
||||||
|
:noroll lda _testIteration+1
|
||||||
|
jsr PRBYTE
|
||||||
|
lda _testIteration
|
||||||
|
jsr PRBYTE
|
||||||
|
PRINTXY #44;#10;Mesg_Writing
|
||||||
|
|
||||||
clc ; WRITE START
|
clc ; WRITE START
|
||||||
xce
|
xce
|
||||||
@ -183,40 +199,182 @@ BeginTest stz _testIteration
|
|||||||
lda EndBank
|
lda EndBank
|
||||||
cmp CurBank
|
cmp CurBank
|
||||||
bcs :bankloop
|
bcs :bankloop
|
||||||
|
dec CurBank ; so many bad hacks
|
||||||
jsr PrintTestCurrent ; print final score ;)
|
jsr PrintTestCurrent ; print final score ;)
|
||||||
sep $10
|
sep $10
|
||||||
sec
|
sec
|
||||||
xce ; WRITE END
|
xce ; WRITE END
|
||||||
* TODO DO PAUSE
|
|
||||||
* TODO DO READ
|
jsr Pauser ; PAUSE
|
||||||
ldx #23
|
|
||||||
ldy #10
|
PRINTXY #44;#10;Mesg_Reading ; READ PREP
|
||||||
|
|
||||||
|
clc ; READ START
|
||||||
|
xce
|
||||||
|
rep $10 ; long x, short a
|
||||||
|
lda StartBank
|
||||||
|
sta CurBank
|
||||||
|
ldy #0 ; update interval counter
|
||||||
|
:bankrloop lda CurBank
|
||||||
|
sta :bankread+3
|
||||||
|
ldx StartAddr
|
||||||
|
:bankread ldal $000000,x
|
||||||
|
cmp TestValue
|
||||||
|
beq :testpass
|
||||||
|
phx
|
||||||
|
sta _stash ; = read value
|
||||||
|
lda TestValue
|
||||||
|
sta _stash+1 ; = expected value
|
||||||
|
stx _stash+2
|
||||||
|
jsr PrintTestError ; addr in X
|
||||||
|
plx
|
||||||
|
:testpass cpx EndAddr
|
||||||
|
beq :donerbank
|
||||||
|
inx
|
||||||
|
iny
|
||||||
|
cpy #UpdateScanInterval
|
||||||
|
bcc :bankread
|
||||||
|
jsr PrintTestCurrent
|
||||||
|
ldy #0
|
||||||
|
bra :bankread
|
||||||
|
:donerbank
|
||||||
|
ldy #0 ; because i'm anal.. this makes counter align
|
||||||
|
inc CurBank
|
||||||
|
lda EndBank
|
||||||
|
cmp CurBank
|
||||||
|
bcs :bankrloop
|
||||||
|
dec CurBank ; so many bad hacks
|
||||||
|
jsr PrintTestCurrent ; print final score ;)
|
||||||
|
sep $10
|
||||||
|
sec
|
||||||
|
xce ; WRITE END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
:kloop lda KEY
|
||||||
|
bmi :gotOne
|
||||||
|
jsr Pauser ; PAUSE
|
||||||
|
jmp BeginTestPass
|
||||||
|
:gotOne sta STROBE
|
||||||
|
cmp #"b" ; REMOVE DEBUG
|
||||||
|
bne :nobreak
|
||||||
|
brk $75
|
||||||
|
:nobreak
|
||||||
|
lda BorderColor
|
||||||
|
sta $C034
|
||||||
|
rts
|
||||||
|
|
||||||
|
_testIteration ds 8
|
||||||
|
UpdateScanInterval equ #$3000
|
||||||
|
Mesg_Waiting asc "Waiting: ",00
|
||||||
|
Mesg_Writing asc "Writing: ",00
|
||||||
|
Mesg_Reading asc "Reading: ",00
|
||||||
|
Mesg_Error1 asc " Error at: $",00
|
||||||
|
Mesg_Error2 asc " Expected: $ %",$00
|
||||||
|
Mesg_Error3 asc " Read: $ %",$00
|
||||||
|
Mesg_TestPass asc " Pass: ",00
|
||||||
|
Mesg_Blank asc " ",00
|
||||||
|
Mesg_BoxTop30 asc $1B,'ZLLLLLLLLLLLLLLLLLLLLLLLLLLLL_',$18,$8D,00
|
||||||
|
Mesg_BoxMid30 asc $1B,'Z'," ",'_',$18,$8D,$00
|
||||||
|
Mesg_BoxBot30 asc $1B,'Z',"____________________________",'_',$18,$8D,$00
|
||||||
|
|
||||||
|
* x, y, a=height
|
||||||
|
PrintBox30 stx _prbox_x
|
||||||
|
sta _prbox_height
|
||||||
jsr GoXY
|
jsr GoXY
|
||||||
lda #Mesg_WritingB
|
lda #Mesg_BoxTop30
|
||||||
ldy #>Mesg_WritingB
|
ldy #>Mesg_BoxTop30
|
||||||
|
jsr PrintString
|
||||||
|
:midloop ldx _prbox_x
|
||||||
|
stx $24
|
||||||
|
lda #Mesg_BoxMid30
|
||||||
|
ldy #>Mesg_BoxMid30
|
||||||
|
jsr PrintString
|
||||||
|
dec _prbox_height
|
||||||
|
bne :midloop
|
||||||
|
|
||||||
|
ldx _prbox_x
|
||||||
|
stx $24
|
||||||
|
lda #Mesg_BoxBot30
|
||||||
|
ldy #>Mesg_BoxBot30
|
||||||
jsr PrintString
|
jsr PrintString
|
||||||
rts
|
rts
|
||||||
_testIteration ds 8
|
_prbox_x db 0
|
||||||
UpdateScanInterval equ #$0800
|
_prbox_height db 0
|
||||||
Mesg_Writing asc "Writing: ",00
|
|
||||||
Mesg_WritingB asc " ",00
|
|
||||||
|
|
||||||
|
PrintTestError
|
||||||
|
sec
|
||||||
|
xce
|
||||||
|
ldx #42
|
||||||
|
ldy #13
|
||||||
|
lda #4
|
||||||
|
jsr PrintBox30
|
||||||
|
PRINTXY #45;#14;#Mesg_Error1
|
||||||
|
PRINTXY #45;#16;#Mesg_Error2
|
||||||
|
PRINTXY #45;#17;#Mesg_Error3
|
||||||
|
GOXY #57;#14
|
||||||
|
lda CurBank
|
||||||
|
jsr PRBYTE
|
||||||
|
lda #"/"
|
||||||
|
jsr COUT
|
||||||
|
lda _stash+3
|
||||||
|
jsr PRBYTE
|
||||||
|
lda _stash+2
|
||||||
|
jsr PRBYTE
|
||||||
|
GOXY #57;#16
|
||||||
|
lda _stash+1
|
||||||
|
jsr PRBYTE
|
||||||
|
GOXY #61;#16
|
||||||
|
lda _stash+1
|
||||||
|
jsr PRBIN
|
||||||
|
GOXY #57;#17
|
||||||
|
lda _stash
|
||||||
|
jsr PRBYTE
|
||||||
|
GOXY #61;#17
|
||||||
|
lda _stash
|
||||||
|
jsr PRBIN
|
||||||
|
GOXY #66;#14
|
||||||
|
jsr RDKEY
|
||||||
|
|
||||||
|
clc
|
||||||
|
xce
|
||||||
|
rep $10
|
||||||
|
rts
|
||||||
mx %01
|
mx %01
|
||||||
PrintTestCurrent pha
|
PrintTestCurrent pha
|
||||||
phy
|
phy
|
||||||
stx _stash ; save real X
|
stx _stash ; save real X
|
||||||
sec
|
sec
|
||||||
xce
|
xce
|
||||||
ldx #33
|
GOXY #54;#10
|
||||||
ldy #10
|
|
||||||
jsr GoXY
|
|
||||||
lda CurBank
|
lda CurBank
|
||||||
|
sta :corruptme+3
|
||||||
jsr PRBYTE
|
jsr PRBYTE
|
||||||
lda #"/"
|
lda #"/"
|
||||||
jsr COUT
|
jsr COUT
|
||||||
lda _stash+1
|
lda _stash+1
|
||||||
|
sta :corruptme+2
|
||||||
jsr PRBYTE
|
jsr PRBYTE
|
||||||
lda _stash
|
lda _stash
|
||||||
|
sta :corruptme+1
|
||||||
jsr PRBYTE
|
jsr PRBYTE
|
||||||
|
* CORRUPTOR!
|
||||||
|
:kloop lda KEY
|
||||||
|
cmp #"c" ; REMOVE DEBUG
|
||||||
|
bne :nocorrupt
|
||||||
|
jsr GetRandTrash
|
||||||
|
:corruptme stal $060000
|
||||||
|
inc $c034
|
||||||
|
sta STROBE ; we only clear if 'c' is hit
|
||||||
|
inc _stash ; \
|
||||||
|
beq :noroll ; |- INX
|
||||||
|
inc _stash+1 ; /
|
||||||
|
:noroll
|
||||||
|
:nocorrupt
|
||||||
|
|
||||||
clc
|
clc
|
||||||
xce
|
xce
|
||||||
@ -226,17 +384,76 @@ PrintTestCurrent pha
|
|||||||
pla
|
pla
|
||||||
rts
|
rts
|
||||||
mx %11
|
mx %11
|
||||||
|
PRBIN pha
|
||||||
|
phx
|
||||||
|
ldx #8
|
||||||
|
:loop asl
|
||||||
|
pha
|
||||||
|
bcc :zero
|
||||||
|
:one lda #"1"
|
||||||
|
jsr COUT
|
||||||
|
bra :ok
|
||||||
|
:zero lda #"0"
|
||||||
|
jsr COUT
|
||||||
|
:ok pla
|
||||||
|
dex
|
||||||
|
bne :loop
|
||||||
|
plx
|
||||||
|
pla
|
||||||
|
rts
|
||||||
|
|
||||||
|
Pauser
|
||||||
|
PRINTXY #44;#11;Mesg_Waiting
|
||||||
|
ldy #60
|
||||||
|
ldx TestDelay
|
||||||
|
jsr PrintTimerVal ; inaugural print before waiting 1 sec
|
||||||
|
:secondloop
|
||||||
|
:wait ldal $e1c019
|
||||||
|
bpl :wait
|
||||||
|
:wait2 ldal $e1c019
|
||||||
|
bmi :wait2
|
||||||
|
dey
|
||||||
|
bne :secondloop
|
||||||
|
dex
|
||||||
|
beq :donepause
|
||||||
|
jsr PrintTimerVal
|
||||||
|
ldy #60
|
||||||
|
bra :secondloop
|
||||||
|
:donepause
|
||||||
|
PRINTXY #44;#11;Mesg_Blank
|
||||||
|
rts
|
||||||
|
PrintTimerVal
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
txa
|
||||||
|
GOXY #54;#11
|
||||||
|
ply
|
||||||
|
plx
|
||||||
|
txa
|
||||||
|
jsr PRBYTE
|
||||||
|
rts
|
||||||
|
|
||||||
|
**************************************************
|
||||||
|
* Awesome PRNG thx to White Flame (aka David Holz)
|
||||||
|
**************************************************
|
||||||
|
GetRandTrash ; USE ONLY WITH CORRUPTOR
|
||||||
|
lda _randomTrashByte
|
||||||
|
beq :doEor
|
||||||
|
asl
|
||||||
|
bcc :noEor
|
||||||
|
:doEor eor #$1d
|
||||||
|
:noEor sta _randomTrashByte
|
||||||
|
rts
|
||||||
|
_randomTrashByte db 0
|
||||||
|
|
||||||
* DEFAULTS
|
* DEFAULTS
|
||||||
StartBank db #$06
|
StartBank db #$06
|
||||||
EndBank db #$7F
|
EndBank db #$1F
|
||||||
CurBank db #0
|
CurBank db #0
|
||||||
StartAddr dw #$0000
|
StartAddr dw #$0000
|
||||||
EndAddr dw #$FFFF
|
EndAddr dw #$FFFF
|
||||||
TestValue dw #$00
|
TestValue dw #$00
|
||||||
TestDelay dw #$05
|
TestDelay dw #$03
|
||||||
|
|
||||||
Menu_DrawOptions sta $0
|
Menu_DrawOptions sta $0
|
||||||
sty $1
|
sty $1
|
||||||
@ -546,31 +763,31 @@ Menu_NextItem
|
|||||||
|
|
||||||
|
|
||||||
MainMenuDefs
|
MainMenuDefs
|
||||||
:StartBank hex 0D,0A ; x,y
|
:StartBank hex 13,07 ; x,y
|
||||||
db 01 ; 0=char/1=hex input 2=Menu JSR
|
db 01 ; 0=char/1=hex input 2=Menu JSR
|
||||||
db 01 ; memory size (bytes), 0=char/1=hex input
|
db 01 ; memory size (bytes), 0=char/1=hex input
|
||||||
da StartBank ; variable storage
|
da StartBank ; variable storage
|
||||||
:EndBank hex 0D,0B ; x,y
|
:EndBank hex 13,08 ; x,y
|
||||||
db 01 ; 0=char/1=hex input 2=Menu JSR
|
db 01 ; 0=char/1=hex input 2=Menu JSR
|
||||||
db 01 ; memory size (bytes), 0=char/1=hex input
|
db 01 ; memory size (bytes), 0=char/1=hex input
|
||||||
da EndBank ; variable storage
|
da EndBank ; variable storage
|
||||||
:StartAddr hex 0D,0D ; x,y
|
:StartAddr hex 13,0A ; x,y
|
||||||
db 01 ; 0=char/1=hex input 2=Menu JSR
|
db 01 ; 0=char/1=hex input 2=Menu JSR
|
||||||
db 02 ; memory size (bytes), 0=char/1=hex input
|
db 02 ; memory size (bytes), 0=char/1=hex input
|
||||||
da StartAddr ; variable storage
|
da StartAddr ; variable storage
|
||||||
:EndAddr hex 0D,0E ; x,y
|
:EndAddr hex 13,0B ; x,y
|
||||||
db 01 ; 0=char/1=hex input 2=Menu JSR
|
db 01 ; 0=char/1=hex input 2=Menu JSR
|
||||||
db 02 ; memory size (bytes), 0=char/1=hex input
|
db 02 ; memory size (bytes), 0=char/1=hex input
|
||||||
da EndAddr ; variable storage
|
da EndAddr ; variable storage
|
||||||
:TestByte hex 0D,10 ; x,y
|
:TestByte hex 13,0D ; x,y
|
||||||
db 01 ; 0=char/1=hex input 2=Menu JSR
|
db 01 ; 0=char/1=hex input 2=Menu JSR
|
||||||
db 01 ; memory size (bytes), 0=char/1=hex input
|
db 01 ; memory size (bytes), 0=char/1=hex input
|
||||||
da TestValue ; variable storage
|
da TestValue ; variable storage
|
||||||
:TestDelay hex 0D,11 ; x,y
|
:TestDelay hex 13,0E ; x,y
|
||||||
db 01 ; 0=char/1=hex input 2=Menu JSR
|
db 01 ; 0=char/1=hex input 2=Menu JSR
|
||||||
db 01 ; memory size (bytes), 0=char/1=hex input
|
db 01 ; memory size (bytes), 0=char/1=hex input
|
||||||
da TestDelay ; variable storage
|
da TestDelay ; variable storage
|
||||||
:BeginTest hex 0D,13 ; x,y
|
:BeginTest hex 13,11 ; x,y
|
||||||
db 02 ; 0=char/1=hex input 2=Menu JSR
|
db 02 ; 0=char/1=hex input 2=Menu JSR
|
||||||
db MenuStr_BeginTestL ; menu string length
|
db MenuStr_BeginTestL ; menu string length
|
||||||
da MenuStr_BeginTest ; string storage
|
da MenuStr_BeginTest ; string storage
|
||||||
@ -586,22 +803,31 @@ MenuStr_BeginTest asc "BEGIN TEST"
|
|||||||
MenuStr_BeginTestL equ #*-MenuStr_BeginTest
|
MenuStr_BeginTestL equ #*-MenuStr_BeginTest
|
||||||
MenuStr_BeginTestE db 00
|
MenuStr_BeginTestE db 00
|
||||||
MainMenuStrs
|
MainMenuStrs
|
||||||
asc " *********************** ",$8D,$00
|
asc " ____________________________________________________________________________",$8D,$00
|
||||||
asc " ** **",$8D,$00
|
asc " ",$1B,'ZGGGGGGGGGGGGGGGGGGGGGGGGGGG\'," Mini Memory Tester ",'\GGGGGGGGGGGGG\'," ALPHA ",'\GGGGG_',$18,$8D,$00
|
||||||
asc " ** Mini Memory Tester **",$8D,$00
|
asc " ",$1B,'ZWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVW'," ReactiveMicro ",'VW_',$18,$8D,00
|
||||||
asc " ** Reactive Micro **",$8D,$00
|
asc " ",$1B,'ZLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL_',$18,$8D,00
|
||||||
asc " ** (beta) **",$8D,$00
|
asc " ",$1B,'Z'," ",'_',$18,$8D,00
|
||||||
asc " ** **",$8D,$00
|
asc " ",$1B,'Z'," ",' \G_',"Test Settings",'ZG\ '," ",'_',$18,$8D,00
|
||||||
asc " *********************** ",$8D,$00
|
asc " ",$1B,'Z'," ",'_',$18,$8D,00
|
||||||
asc $8D,$8D,$8D,$00
|
asc " ",$1B,'Z'," Start BANK: ",'_',$18,$8D,00
|
||||||
asc " Start BANK: ",$8D,$00
|
asc " ",$1B,'Z'," End BANK: ",'_',$18,$8D,00
|
||||||
asc " End BANK: ",$8D,$8D,$00
|
asc " ",$1B,'Z'," ",'_',$18,$8D,00
|
||||||
asc " Start ADDR: ",$8D,$00
|
asc " ",$1B,'Z'," Start ADDR: ",'_',$18,$8D,00
|
||||||
asc " End ADDR: ",$8D,$8D,$00
|
asc " ",$1B,'Z'," End ADDR: ",'_',$18,$8D,00
|
||||||
asc " Test Byte: ",$8D,$00
|
asc " ",$1B,'Z'," ",'_',$18,$8D,00
|
||||||
asc " Test Delay: ",$8D,$8D,$8D,$8D,$8D,$00
|
asc " ",$1B,'Z'," Test Byte: ",'_',$18,$8D,00
|
||||||
asc " USE ARROW KEYS TO MOVE",8D,$00
|
asc " ",$1B,'Z'," Test Delay: ",'_',$18,$8D,00
|
||||||
asc " USE ENTER TO SELECT/EDIT",$00
|
asc " ",$1B,'Z'," ",'_',$18,$8D,00
|
||||||
|
asc " ",$1B,'Z'," ",'_',$18,$8D,00
|
||||||
|
asc " ",$1B,'Z'," ",'_',$18,$8D,00
|
||||||
|
asc " ",$1B,'Z'," ",'_',$18,$8D,00
|
||||||
|
asc " ",$1B,'Z'," ",'_',$18,$8D,00
|
||||||
|
asc " ",$1B,'Z'," USE ARROW KEYS TO MOVE - USE ENTER TO SELECT/EDIT ",'_',$18,$8D,00
|
||||||
|
asc " ",$1B,'Z',"____________________________________________________________________________",'_',$18,$8D,00
|
||||||
|
|
||||||
|
* asc " ABCDEFGHIZKLMNOPQRSTUVWXYZ ",$8D,$00
|
||||||
|
* asc $1B,' ABCDEFGHIZKLMNOPQRSTUVWXYZ ',$1B,$8D,$00
|
||||||
|
|
||||||
hex 00,00
|
hex 00,00
|
||||||
|
|
||||||
@ -619,6 +845,7 @@ WaitKey
|
|||||||
rts
|
rts
|
||||||
|
|
||||||
put strings.s
|
put strings.s
|
||||||
|
BorderColor db 0
|
||||||
ds \
|
ds \
|
||||||
_stash ds 255
|
_stash ds 255
|
||||||
ds \
|
ds \
|
||||||
|
@ -1,18 +1,46 @@
|
|||||||
|
**** MACROS
|
||||||
|
* GOXY #x;#y
|
||||||
|
* PRINTXY #x;#y;StringAddrWord
|
||||||
|
**** FUNCTIONS
|
||||||
* GoXY
|
* GoXY
|
||||||
* PrintStringsX
|
* PrintStringsX
|
||||||
* PrintString
|
* PrintString
|
||||||
|
|
||||||
|
|
||||||
|
GOXY MAC
|
||||||
|
ldx ]1
|
||||||
|
ldy ]2
|
||||||
|
stx $24
|
||||||
|
sty $25
|
||||||
|
jsr VTAB
|
||||||
|
<<<
|
||||||
|
|
||||||
|
PRINTXY MAC
|
||||||
|
ldx ]1
|
||||||
|
ldy ]2
|
||||||
|
stx $24
|
||||||
|
sty $25
|
||||||
|
jsr VTAB
|
||||||
|
lda #]3
|
||||||
|
ldy #>]3
|
||||||
|
jsr PrintString
|
||||||
|
<<<
|
||||||
|
|
||||||
GoXY stx $24
|
GoXY stx $24
|
||||||
sty $25
|
sty $25
|
||||||
jsr VTAB
|
jsr VTAB
|
||||||
rts
|
rts
|
||||||
|
|
||||||
PrintStringsX stx _printstringsx_horiz ; IGNORED! 4 NOW!
|
* lda #MainMenuStrs
|
||||||
|
* ldy #>MainMenuStrs
|
||||||
|
* ldx #05 ; horiz pos
|
||||||
|
PrintStringsX stx _printstringsx_horiz
|
||||||
|
|
||||||
sta $0
|
sta $0
|
||||||
sty $1
|
sty $1
|
||||||
:loop lda $0 ; slower, but allows API reuse
|
:loop lda _printstringsx_horiz
|
||||||
|
sta $24
|
||||||
|
lda $0 ; slower, but allows API reuse
|
||||||
ldy $1
|
ldy $1
|
||||||
jsr PrintString ; y is last val
|
jsr PrintString ; y is last val
|
||||||
iny
|
iny
|
||||||
|
Loading…
Reference in New Issue
Block a user