mirror of
https://github.com/nathanriggs/AppleIIAsm-Collection.git
synced 2025-01-05 03:32:38 +00:00
0.3.1 updates
some minor bugfixes, directory shuffling, added demo and utility disks
This commit is contained in:
parent
45df2f6415
commit
82d0e74c1a
BIN
bin/d15_utilities.dsk
Normal file
BIN
bin/d15_utilities.dsk
Normal file
Binary file not shown.
Binary file not shown.
BIN
bin/d1_stdio.dsk
BIN
bin/d1_stdio.dsk
Binary file not shown.
BIN
bin/d20_minidisk_A.dsk
Normal file
BIN
bin/d20_minidisk_A.dsk
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
bin/d4_math.dsk
BIN
bin/d4_math.dsk
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,358 +0,0 @@
|
||||
__GETRET
|
||||
LDY #255
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
:LP
|
||||
INY
|
||||
LDA RETURN,Y
|
||||
STA (ADDR1),Y
|
||||
CPY RETLEN
|
||||
BNE :LP
|
||||
LDA ADDR1+1
|
||||
PHA
|
||||
LDA ADDR1
|
||||
PHA
|
||||
RTS
|
||||
__SETPARM
|
||||
LDY #255
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
:LP
|
||||
INY
|
||||
LDA (ADDR1),Y
|
||||
STA PARAM,Y
|
||||
CPY PARLEN
|
||||
BNE :LP
|
||||
LDA ADDR1+1
|
||||
PHA
|
||||
LDA ADDR1
|
||||
PHA
|
||||
RTS
|
||||
__DUMP
|
||||
PLA
|
||||
STA :RET
|
||||
PLA
|
||||
STA :RET+1
|
||||
PLA
|
||||
STA :LENGTH
|
||||
PLA
|
||||
STA ADDR3
|
||||
PLA
|
||||
STA ADDR3+1
|
||||
LDA #$8D
|
||||
JSR $FDF0
|
||||
LDA ADDR3+1
|
||||
AND #$F0
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
TAX
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDA ADDR3+1
|
||||
AND #$0F
|
||||
TAX
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDA ADDR3
|
||||
AND #$F0
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
TAX
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDA ADDR3
|
||||
AND #$0F
|
||||
TAX
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDA #186 ; :
|
||||
JSR $FDF0
|
||||
LDA #160 ; SPC
|
||||
JSR $FDF0
|
||||
LDY #0
|
||||
:LP
|
||||
LDA (ADDR3),Y
|
||||
AND #$F0 ; MASK RIGHT
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
STA :LEFT
|
||||
LDA (ADDR3),Y
|
||||
AND #$0F ; MASK LEFT
|
||||
STA :RIGHT
|
||||
LDX :LEFT
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDX :RIGHT
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDA #160
|
||||
JSR $FDF0
|
||||
INY
|
||||
CPY :LENGTH
|
||||
BNE :LP
|
||||
LDA :RET+1
|
||||
PHA
|
||||
LDA :RET
|
||||
PHA
|
||||
RTS
|
||||
:RET DS 2
|
||||
:RIGHT DS 1
|
||||
:LEFT DS 1
|
||||
:LENGTH DS 1
|
||||
__P
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
LDY #1
|
||||
:LP LDA (ADDR1),Y
|
||||
BEQ :DONE
|
||||
JSR $FDF0
|
||||
INY
|
||||
BNE :LP
|
||||
:DONE CLC
|
||||
TYA
|
||||
ADC ADDR1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
PHA
|
||||
LDA ADDR1
|
||||
PHA
|
||||
RTS
|
||||
__W
|
||||
JSR $FD0C
|
||||
RTS
|
||||
__RSAV
|
||||
STA ERRA
|
||||
STX ERRX
|
||||
STY ERRY
|
||||
:C BCC :C0
|
||||
BCS :C1
|
||||
:Z BEQ :Z1
|
||||
BNE :Z0
|
||||
:N BMI :N1
|
||||
BPL :N0
|
||||
:O BVC :O0
|
||||
BVS :O1
|
||||
JMP :EXIT
|
||||
:C0 LDA #0
|
||||
STA ERRCARRY
|
||||
JMP :Z
|
||||
:C1 LDA #1
|
||||
STA ERRCARRY
|
||||
JMP :Z
|
||||
:Z1 LDA #1
|
||||
STA ERRZERO
|
||||
JMP :N
|
||||
:Z0 LDA #0
|
||||
STA ERRZERO
|
||||
JMP :N
|
||||
:N1 LDA #1
|
||||
STA ERRNEG
|
||||
JMP :O
|
||||
:N0 LDA #0
|
||||
STA ERRNEG
|
||||
JMP :O
|
||||
:O0 LDA #0
|
||||
STA ERROVF
|
||||
JMP :EXIT
|
||||
:O1 LDA #1
|
||||
STA ERROVF
|
||||
:EXIT
|
||||
RTS
|
||||
__RDMP
|
||||
_PRNT " ",8D8D
|
||||
_PRNT "REGISTRY DUMP",8D
|
||||
_PRNT "=============",8D
|
||||
_PRNT "A: "
|
||||
LDA ERRA
|
||||
AND #$F0 ; MASK RIGHT
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
STA :LEFT
|
||||
LDA ERRA
|
||||
AND #$0F ; MASK LEFT
|
||||
STA :RIGHT
|
||||
LDX :LEFT
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDX :RIGHT
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
_PRNT " ",8D
|
||||
_PRNT "X: "
|
||||
LDA ERRX
|
||||
AND #$F0 ; MASK RIGHT
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
STA :LEFT
|
||||
LDA ERRX
|
||||
AND #$0F ; MASK LEFT
|
||||
STA :RIGHT
|
||||
LDX :LEFT
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDX :RIGHT
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
_PRNT " ",8D
|
||||
_PRNT "Y: "
|
||||
LDA ERRY
|
||||
AND #$F0 ; MASK RIGHT
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
STA :LEFT
|
||||
LDA ERRY
|
||||
AND #$0F ; MASK LEFT
|
||||
STA :RIGHT
|
||||
LDX :LEFT
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDX :RIGHT
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
_PRNT " ",8D8D
|
||||
_PRNT "STATUS FLAGS",8D
|
||||
_PRNT "============",8D8D
|
||||
LDA #0
|
||||
CMP ERRCARRY
|
||||
BEQ :CARCLR
|
||||
_PRNT "CARRY: SET",8D
|
||||
JMP :TESTN
|
||||
:CARCLR _PRNT "CARRY: CLEAR",8D
|
||||
:TESTN LDA #0
|
||||
CMP ERRNEG
|
||||
BEQ :NEGCLR
|
||||
_PRNT "NEGATIVE: SET",8D
|
||||
JMP :TESTZ
|
||||
:NEGCLR _PRNT "NEGATIVE: CLEAR",8D
|
||||
:TESTZ LDA #0
|
||||
CMP ERRZERO
|
||||
BEQ :ZCLR
|
||||
_PRNT "ZERO: SET",8D
|
||||
JMP :TESTO
|
||||
:ZCLR _PRNT "ZERO: CLEAR",8D
|
||||
:TESTO
|
||||
LDA #0
|
||||
CMP ERROVF
|
||||
BEQ :OCLR
|
||||
_PRNT "OVERFLOW: SET",8D
|
||||
JMP :FIN
|
||||
:OCLR _PRNT "OVERFLOW: CLEAR",8D8D8D
|
||||
:FIN
|
||||
RTS
|
||||
:LEFT DS 1
|
||||
:RIGHT DS 1
|
||||
HEXTAB ASC "0123456789ABCDEF"
|
||||
__ERR
|
||||
JSR __RSAV
|
||||
PLA
|
||||
STA RETADR
|
||||
PLA
|
||||
STA RETADR+1
|
||||
PLA
|
||||
STA :DUMPLEN ; LENGTH OF DUMP
|
||||
PLA
|
||||
STA :DUMP ; DUMP ADDRESS LO
|
||||
PLA
|
||||
STA :DUMP+1 ; DUMP HI
|
||||
PLA
|
||||
STA :DMPMSG
|
||||
PLA
|
||||
STA :DMPMSG+1
|
||||
PLA
|
||||
STA :MESG ; ERROR MESSAGE ADDR LO
|
||||
PLA
|
||||
STA :MESG+1 ; HI
|
||||
PLA
|
||||
STA :SRID ; SUBROUTINE ID ADDR LO
|
||||
PLA
|
||||
STA :SRID+1 ; SUB ID HI
|
||||
_PRNT " ",87878787878D8D
|
||||
_PRNT "ERROR!",8D8D
|
||||
_PRNT "SUBROUTINE: "
|
||||
LDY #0
|
||||
LDA :SRID
|
||||
STA ADDR1
|
||||
LDA :SRID+1
|
||||
STA ADDR1+1
|
||||
:LP1
|
||||
LDA (ADDR1),Y
|
||||
BEQ :LPX1
|
||||
JSR $FDF0
|
||||
INY
|
||||
BNE :LP1
|
||||
:LPX1
|
||||
_PRNT " ",8D
|
||||
_PRNT "MESSAGE: "
|
||||
LDY #0
|
||||
LDA :MESG
|
||||
STA ADDR1
|
||||
LDA :MESG+1
|
||||
STA ADDR1+1
|
||||
:LP2
|
||||
LDA (ADDR1),Y
|
||||
BEQ :LPX2
|
||||
JSR $FDF0
|
||||
INY
|
||||
BNE :LP2
|
||||
:LPX2
|
||||
_PRNT " ",8D8D
|
||||
_WAIT
|
||||
LDY #0
|
||||
LDA :DMPMSG
|
||||
STA ADDR1
|
||||
LDA :DMPMSG+1
|
||||
STA ADDR1+1
|
||||
:LP3
|
||||
LDA (ADDR1),Y
|
||||
BEQ :LPX3
|
||||
JSR $FDF0
|
||||
INY
|
||||
BNE :LP3
|
||||
:LPX3
|
||||
_PRNT " ",8D
|
||||
LDA :DUMP+1
|
||||
PHA
|
||||
LDA :DUMP
|
||||
PHA
|
||||
LDA :DUMPLEN
|
||||
PHA
|
||||
JSR __DUMP
|
||||
_WAIT
|
||||
LDA RETADR+1
|
||||
PHA
|
||||
LDA RETADR
|
||||
PHA
|
||||
_PRNT " ",8D8D
|
||||
_WAIT
|
||||
_RDUMP
|
||||
_WAIT
|
||||
LDA ERRSTOP
|
||||
CMP #1
|
||||
BEQ :KILL
|
||||
RTS
|
||||
:KILL
|
||||
JMP $3D0
|
||||
:DUMPLEN DS 1
|
||||
:DUMP DS 2
|
||||
:DMPMSG DS 2
|
||||
:MESG DS 2
|
||||
:SRID DS 2
|
@ -1,358 +0,0 @@
|
||||
__GETRET
|
||||
LDY #255
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
:LP
|
||||
INY
|
||||
LDA RETURN,Y
|
||||
STA (ADDR1),Y
|
||||
CPY RETLEN
|
||||
BNE :LP
|
||||
LDA ADDR1+1
|
||||
PHA
|
||||
LDA ADDR1
|
||||
PHA
|
||||
RTS
|
||||
__SETPARM
|
||||
LDY #255
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
:LP
|
||||
INY
|
||||
LDA (ADDR1),Y
|
||||
STA PARAM,Y
|
||||
CPY PARLEN
|
||||
BNE :LP
|
||||
LDA ADDR1+1
|
||||
PHA
|
||||
LDA ADDR1
|
||||
PHA
|
||||
RTS
|
||||
__DUMP
|
||||
PLA
|
||||
STA :RET
|
||||
PLA
|
||||
STA :RET+1
|
||||
PLA
|
||||
STA :LENGTH
|
||||
PLA
|
||||
STA ADDR3
|
||||
PLA
|
||||
STA ADDR3+1
|
||||
LDA #$8D
|
||||
JSR $FDF0
|
||||
LDA ADDR3+1
|
||||
AND #$F0
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
TAX
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDA ADDR3+1
|
||||
AND #$0F
|
||||
TAX
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDA ADDR3
|
||||
AND #$F0
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
TAX
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDA ADDR3
|
||||
AND #$0F
|
||||
TAX
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDA #186 ; :
|
||||
JSR $FDF0
|
||||
LDA #160 ; SPC
|
||||
JSR $FDF0
|
||||
LDY #0
|
||||
:LP
|
||||
LDA (ADDR3),Y
|
||||
AND #$F0 ; MASK RIGHT
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
STA :LEFT
|
||||
LDA (ADDR3),Y
|
||||
AND #$0F ; MASK LEFT
|
||||
STA :RIGHT
|
||||
LDX :LEFT
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDX :RIGHT
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDA #160
|
||||
JSR $FDF0
|
||||
INY
|
||||
CPY :LENGTH
|
||||
BNE :LP
|
||||
LDA :RET+1
|
||||
PHA
|
||||
LDA :RET
|
||||
PHA
|
||||
RTS
|
||||
:RET DS 2
|
||||
:RIGHT DS 1
|
||||
:LEFT DS 1
|
||||
:LENGTH DS 1
|
||||
__P
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
LDY #1
|
||||
:LP LDA (ADDR1),Y
|
||||
BEQ :DONE
|
||||
JSR $FDF0
|
||||
INY
|
||||
BNE :LP
|
||||
:DONE CLC
|
||||
TYA
|
||||
ADC ADDR1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
PHA
|
||||
LDA ADDR1
|
||||
PHA
|
||||
RTS
|
||||
__W
|
||||
JSR $FD0C
|
||||
RTS
|
||||
__RSAV
|
||||
STA ERRA
|
||||
STX ERRX
|
||||
STY ERRY
|
||||
:C BCC :C0
|
||||
BCS :C1
|
||||
:Z BEQ :Z1
|
||||
BNE :Z0
|
||||
:N BMI :N1
|
||||
BPL :N0
|
||||
:O BVC :O0
|
||||
BVS :O1
|
||||
JMP :EXIT
|
||||
:C0 LDA #0
|
||||
STA ERRCARRY
|
||||
JMP :Z
|
||||
:C1 LDA #1
|
||||
STA ERRCARRY
|
||||
JMP :Z
|
||||
:Z1 LDA #1
|
||||
STA ERRZERO
|
||||
JMP :N
|
||||
:Z0 LDA #0
|
||||
STA ERRZERO
|
||||
JMP :N
|
||||
:N1 LDA #1
|
||||
STA ERRNEG
|
||||
JMP :O
|
||||
:N0 LDA #0
|
||||
STA ERRNEG
|
||||
JMP :O
|
||||
:O0 LDA #0
|
||||
STA ERROVF
|
||||
JMP :EXIT
|
||||
:O1 LDA #1
|
||||
STA ERROVF
|
||||
:EXIT
|
||||
RTS
|
||||
__RDMP
|
||||
_PRNT " ",8D8D
|
||||
_PRNT "REGISTRY DUMP",8D
|
||||
_PRNT "=============",8D
|
||||
_PRNT "A: "
|
||||
LDA ERRA
|
||||
AND #$F0 ; MASK RIGHT
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
STA :LEFT
|
||||
LDA ERRA
|
||||
AND #$0F ; MASK LEFT
|
||||
STA :RIGHT
|
||||
LDX :LEFT
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDX :RIGHT
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
_PRNT " ",8D
|
||||
_PRNT "X: "
|
||||
LDA ERRX
|
||||
AND #$F0 ; MASK RIGHT
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
STA :LEFT
|
||||
LDA ERRX
|
||||
AND #$0F ; MASK LEFT
|
||||
STA :RIGHT
|
||||
LDX :LEFT
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDX :RIGHT
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
_PRNT " ",8D
|
||||
_PRNT "Y: "
|
||||
LDA ERRY
|
||||
AND #$F0 ; MASK RIGHT
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
STA :LEFT
|
||||
LDA ERRY
|
||||
AND #$0F ; MASK LEFT
|
||||
STA :RIGHT
|
||||
LDX :LEFT
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
LDX :RIGHT
|
||||
LDA HEXTAB,X
|
||||
JSR $FDF0
|
||||
_PRNT " ",8D8D
|
||||
_PRNT "STATUS FLAGS",8D
|
||||
_PRNT "============",8D8D
|
||||
LDA #0
|
||||
CMP ERRCARRY
|
||||
BEQ :CARCLR
|
||||
_PRNT "CARRY: SET",8D
|
||||
JMP :TESTN
|
||||
:CARCLR _PRNT "CARRY: CLEAR",8D
|
||||
:TESTN LDA #0
|
||||
CMP ERRNEG
|
||||
BEQ :NEGCLR
|
||||
_PRNT "NEGATIVE: SET",8D
|
||||
JMP :TESTZ
|
||||
:NEGCLR _PRNT "NEGATIVE: CLEAR",8D
|
||||
:TESTZ LDA #0
|
||||
CMP ERRZERO
|
||||
BEQ :ZCLR
|
||||
_PRNT "ZERO: SET",8D
|
||||
JMP :TESTO
|
||||
:ZCLR _PRNT "ZERO: CLEAR",8D
|
||||
:TESTO
|
||||
LDA #0
|
||||
CMP ERROVF
|
||||
BEQ :OCLR
|
||||
_PRNT "OVERFLOW: SET",8D
|
||||
JMP :FIN
|
||||
:OCLR _PRNT "OVERFLOW: CLEAR",8D8D8D
|
||||
:FIN
|
||||
RTS
|
||||
:LEFT DS 1
|
||||
:RIGHT DS 1
|
||||
HEXTAB ASC "0123456789ABCDEF"
|
||||
__ERR
|
||||
JSR __RSAV
|
||||
PLA
|
||||
STA RETADR
|
||||
PLA
|
||||
STA RETADR+1
|
||||
PLA
|
||||
STA :DUMPLEN ; LENGTH OF DUMP
|
||||
PLA
|
||||
STA :DUMP ; DUMP ADDRESS LO
|
||||
PLA
|
||||
STA :DUMP+1 ; DUMP HI
|
||||
PLA
|
||||
STA :DMPMSG
|
||||
PLA
|
||||
STA :DMPMSG+1
|
||||
PLA
|
||||
STA :MESG ; ERROR MESSAGE ADDR LO
|
||||
PLA
|
||||
STA :MESG+1 ; HI
|
||||
PLA
|
||||
STA :SRID ; SUBROUTINE ID ADDR LO
|
||||
PLA
|
||||
STA :SRID+1 ; SUB ID HI
|
||||
_PRNT " ",87878787878D8D
|
||||
_PRNT "ERROR!",8D8D
|
||||
_PRNT "SUBROUTINE: "
|
||||
LDY #0
|
||||
LDA :SRID
|
||||
STA ADDR1
|
||||
LDA :SRID+1
|
||||
STA ADDR1+1
|
||||
:LP1
|
||||
LDA (ADDR1),Y
|
||||
BEQ :LPX1
|
||||
JSR $FDF0
|
||||
INY
|
||||
BNE :LP1
|
||||
:LPX1
|
||||
_PRNT " ",8D
|
||||
_PRNT "MESSAGE: "
|
||||
LDY #0
|
||||
LDA :MESG
|
||||
STA ADDR1
|
||||
LDA :MESG+1
|
||||
STA ADDR1+1
|
||||
:LP2
|
||||
LDA (ADDR1),Y
|
||||
BEQ :LPX2
|
||||
JSR $FDF0
|
||||
INY
|
||||
BNE :LP2
|
||||
:LPX2
|
||||
_PRNT " ",8D8D
|
||||
_WAIT
|
||||
LDY #0
|
||||
LDA :DMPMSG
|
||||
STA ADDR1
|
||||
LDA :DMPMSG+1
|
||||
STA ADDR1+1
|
||||
:LP3
|
||||
LDA (ADDR1),Y
|
||||
BEQ :LPX3
|
||||
JSR $FDF0
|
||||
INY
|
||||
BNE :LP3
|
||||
:LPX3
|
||||
_PRNT " ",8D
|
||||
LDA :DUMP+1
|
||||
PHA
|
||||
LDA :DUMP
|
||||
PHA
|
||||
LDA :DUMPLEN
|
||||
PHA
|
||||
JSR __DUMP
|
||||
_WAIT
|
||||
LDA RETADR+1
|
||||
PHA
|
||||
LDA RETADR
|
||||
PHA
|
||||
_PRNT " ",8D8D
|
||||
_WAIT
|
||||
_RDUMP
|
||||
_WAIT
|
||||
LDA ERRSTOP
|
||||
CMP #1
|
||||
BEQ :KILL
|
||||
RTS
|
||||
:KILL
|
||||
JMP $3D0
|
||||
:DUMPLEN DS 1
|
||||
:DUMP DS 2
|
||||
:DMPMSG DS 2
|
||||
:MESG DS 2
|
||||
:SRID DS 2
|
2848
source/disk16_integrated_demos/MAKEMAZE
Normal file
2848
source/disk16_integrated_demos/MAKEMAZE
Normal file
File diff suppressed because it is too large
Load Diff
3686
source/disk16_integrated_demos/MAKEMAZE.S
Normal file
3686
source/disk16_integrated_demos/MAKEMAZE.S
Normal file
File diff suppressed because it is too large
Load Diff
@ -25,20 +25,11 @@ AGET81
|
||||
JMP :ERREND
|
||||
:CHKERR
|
||||
LDA :IDX ; IF IDX > ARRAY LENGTH
|
||||
CLC
|
||||
ADC #1
|
||||
CMP :ALEN
|
||||
BCS :OVF
|
||||
JMP :CHKCONT
|
||||
JMP :ERREND
|
||||
:OVF
|
||||
_ERR :E_SID;:E_OVF1;:E_DUMP;:RES;#6
|
||||
:CHKCONT
|
||||
LDA :IDX
|
||||
CMP #255 ; NO ZERO INDEX
|
||||
BEQ :UNF ; UNDERFLOW
|
||||
JMP :ERREND
|
||||
:UNF
|
||||
_ERR :E_SID;:E_UNF;:E_DUMP;:RES;#6
|
||||
:ERREND
|
||||
LDY #0
|
||||
LDA #0
|
||||
@ -102,5 +93,4 @@ AGET81
|
||||
:ALEN DS 1
|
||||
:E_SID ASC "AGET81 (GET81 MACRO)",00
|
||||
:E_DUMP ASC "DUMPING RES(2) IDX(2) ESIZE(1) ALEN(1)",00
|
||||
:E_OVF1 ASC "OVERFLOW: INDEX HIGHER THAN ARRAY LENGTH",00
|
||||
:E_UNF ASC "UNDERFLOW: CANNOT USE A ZERO INDEX",00
|
||||
:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00
|
@ -31,8 +31,6 @@ AGET82
|
||||
JMP :ERREND
|
||||
:CHKERR
|
||||
LDA :XIDX ; IF X > MAX LEN
|
||||
CLC
|
||||
ADC #1
|
||||
CMP :XLEN
|
||||
BCS :XOVF
|
||||
JMP :ERRCONT1
|
||||
@ -40,8 +38,6 @@ AGET82
|
||||
_ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15
|
||||
:ERRCONT1
|
||||
LDA :YIDX ; IF Y > MAX LEN
|
||||
CLC
|
||||
ADC #1
|
||||
CMP :YLEN
|
||||
BCS :YOVF
|
||||
JMP :ERRCONT2
|
||||
@ -153,5 +149,5 @@ AGET82
|
||||
:E_SID ASC "AGET82 (GET82 MACRO)",00
|
||||
:E_DUMP ASC ":XIDX(2) :YIDX(2) :XLEN(1) :YLEN(1)"
|
||||
ASC ":PROD(4) :MLIER(2) :MCAND(2) :ELEN(1)",00
|
||||
:E_XOVF ASC "X-OVERFLOW! X IS > MAXIMUM OR IS 0.",00
|
||||
:E_YOVF ASC "Y-OVERFLOW! Y IS > MAX OR IS 0.",00
|
||||
:E_XOVF ASC "OUT OF BOUNDS! X > MAX OR IS 0.",00
|
||||
:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00
|
@ -1,8 +1,8 @@
|
||||
APUT81
|
||||
PLA
|
||||
STA :RETADR ; LOCAL RETURN ADDRESS STORAGE
|
||||
STA RETADR ; LOCAL RETURN ADDRESS STORAGE
|
||||
PLA ; BECAUSE OF CALLING AGET81
|
||||
STA :RETADR+1
|
||||
STA RETADR+1
|
||||
PLA
|
||||
STA :AIDX
|
||||
STA :IDX
|
||||
@ -34,16 +34,9 @@ APUT81
|
||||
ADC #1
|
||||
CMP :ASIZE
|
||||
BCS :OVF
|
||||
JMP :CHKCONT
|
||||
JMP :ERREND
|
||||
:OVF
|
||||
_ERR :E_SID;:E_OVF1;:E_DUMP;:ESIZE;#9
|
||||
:CHKCONT
|
||||
LDA :IDX
|
||||
CMP #255 ; NO ZERO INDEX
|
||||
BEQ :UNF ; UNDERFLOW
|
||||
JMP :ERREND
|
||||
:UNF
|
||||
_ERR :E_SID;:E_UNF;:E_DUMP;:ESIZE;#9
|
||||
:ERREND
|
||||
LDY #0
|
||||
LDA #0
|
||||
@ -90,15 +83,14 @@ APUT81
|
||||
INY
|
||||
CPY :ESIZEBAK
|
||||
BNE :LP
|
||||
LDA :RETADR+1
|
||||
LDA RETADR+1
|
||||
PHA
|
||||
LDA :RETADR
|
||||
LDA RETADR
|
||||
PHA
|
||||
LDX ADDR2+1
|
||||
LDY ADDR2
|
||||
LDA :ESIZE
|
||||
RTS
|
||||
:RETADR DS 2
|
||||
:ESIZE DS 1
|
||||
:ESIZEBAK DS 1
|
||||
:ASIZE DS 1
|
||||
@ -108,5 +100,4 @@ APUT81
|
||||
:E_SID ASC "APUT81 (PUT81 MACRO)",00
|
||||
:E_DUMP ASC "DUMPING :ESIZE(1) :ESIZEBAK(1) :ASIZE(1)"
|
||||
ASC ":AIDX(2) :IDX(2) :RES(2)",00
|
||||
:E_OVF1 ASC "OVERFLOW! INDEX HIGHER THAN ARRAY LENGTH",00
|
||||
:E_UNF ASC "UNDERFLOW! CANNOT USE A ZERO INDEX",00
|
||||
:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00
|
@ -36,8 +36,6 @@ APUT82
|
||||
JMP :ERREND
|
||||
:CHKERR
|
||||
LDA :XIDX ; IF X > MAX LEN
|
||||
CLC
|
||||
ADC #1
|
||||
CMP :XLEN
|
||||
BCS :XOVF
|
||||
JMP :ERRCONT1
|
||||
@ -45,8 +43,6 @@ APUT82
|
||||
_ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15
|
||||
:ERRCONT1
|
||||
LDA :YIDX ; IF Y > MAX LEN
|
||||
CLC
|
||||
ADC #1
|
||||
CMP :YLEN
|
||||
BCS :YOVF
|
||||
JMP :ERRCONT2
|
||||
@ -147,7 +143,6 @@ APUT82
|
||||
LDY ADDR2
|
||||
LDA :ESIZE
|
||||
RTS
|
||||
:RETADR DS 2
|
||||
:ESIZE DS 1
|
||||
:XIDX DS 1
|
||||
:YIDX DS 1
|
||||
@ -156,8 +151,8 @@ APUT82
|
||||
:PROD DS 4
|
||||
:XLEN DS 1
|
||||
:YLEN DS 1
|
||||
:E_SID ASC "AGET82 (GET82 MACRO)",00
|
||||
:E_DUMP ASC ":XIDX(2) :YIDX(2) :XLEN(1) :YLEN(1)"
|
||||
ASC ":PROD(4) :MLIER(2) :MCAND(2) :ELEN(1)",00
|
||||
:E_XOVF ASC "X-OVERFLOW! X IS > MAXIMUM OR IS 0.",00
|
||||
:E_YOVF ASC "Y-OVERFLOW! Y IS > MAX OR IS 0.",00
|
||||
:E_SID ASC "APUT82 (PUT82 MACRO)",00
|
||||
:E_DUMP ASC ":XIDX(1) :YIDX(1) :MCAND(2) :MLIER(2)"
|
||||
ASC ":PROD(4) :XLEN(1) :YLEN(1)",00
|
||||
:E_XOVF ASC "OUT OF BOUNDS! X > MAXIMUM OR IS 0.",00
|
||||
:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00
|
420
source/disk16_integrated_demos/T.MAKEMAZE
Normal file
420
source/disk16_integrated_demos/T.MAKEMAZE
Normal file
@ -0,0 +1,420 @@
|
||||
********************************
|
||||
* *
|
||||
* MAZE GENERATOR *
|
||||
* *
|
||||
********************************
|
||||
*
|
||||
** ASSEMBLER DIRECTIVES
|
||||
*
|
||||
CYC AVE
|
||||
EXP OFF
|
||||
DSK MAKEMAZE
|
||||
TR ON
|
||||
OBJ $BFE0
|
||||
ORG $6000
|
||||
*
|
||||
PUT REQUIRED.VARS
|
||||
USE REQUIRED.MAC.MIN
|
||||
USE ARRAYS.MAC.MIN
|
||||
USE MATH.MAC.MIN
|
||||
USE STDIO.MAC.MIN
|
||||
PUT REQUIRED.HOOKS.MIN
|
||||
PUT STDIO.HOOKS
|
||||
PUT MATH.HOOKS
|
||||
PUT ARRAYS.HOOKS
|
||||
*
|
||||
********************************
|
||||
* *
|
||||
* CONSTANT DECLARATIONS *
|
||||
* *
|
||||
********************************
|
||||
*
|
||||
BAS EQU $2000 ; BASE ADDRESS FOR ARRAYS
|
||||
*
|
||||
** NOTE THAT XLEN AND YLEN CANNOT EXCEED 13, AS THIS
|
||||
** WOULD MAKE THE ARRAY SIZES >256, WHICH ISN'T
|
||||
** WHAT 8-BIT ARRAYS ARE PREPARED TO HANDLE.
|
||||
*
|
||||
** THE NEXT UPDATE WILL UTILIZE 16-BIT ARRAYS
|
||||
** TO ADDRESS THIS PROBLEM.
|
||||
*
|
||||
XLEN KBD "ENTER MAZE SIZE (<14)"
|
||||
YLEN EQU XLEN ; CURRENT ALGO ONLY DOES SQUARE
|
||||
XMAX EQU XLEN+2 ; ADD EXTRA COLUMN
|
||||
YMAX EQU YLEN+2 ; ADD EXTRA ROW
|
||||
XNUM EQU 2*XLEN+2
|
||||
ASZ EQU XMAX*YMAX+4 ; ARRAY SIZE+INFO BYTES
|
||||
XSTAKS EQU ASZ ; COLUMN STACK SIZE; X * Y + 1
|
||||
YSTAKS EQU ASZ ; ROW STACK SIZE; X * Y + 1
|
||||
*
|
||||
SOUTHW EQU BAS ; SOUTH WALLS ARRAY
|
||||
WESTW EQU ASZ+BAS ; WEST WALLS ARRAY
|
||||
VISITED EQU 2*ASZ+BAS ; CELLS VISITED
|
||||
XSTACK EQU 3*ASZ+BAS ; STACK FOR COLUMNS
|
||||
YSTACK EQU 4*ASZ+BAS ; STACK FOR ROWS
|
||||
*
|
||||
********************************
|
||||
* *
|
||||
* MAIN PROGRAM LOOP *
|
||||
* *
|
||||
********************************
|
||||
*
|
||||
INIT
|
||||
*
|
||||
*LDA #0
|
||||
*STA ERRCTRL ; TURN OFF ERRORS
|
||||
JSR HOME
|
||||
PRN "INITIALIZING...",8D
|
||||
*
|
||||
JSR :SETVARS
|
||||
JSR :OUTWALLS
|
||||
*
|
||||
** GET RANDOM STARTING POINT
|
||||
*
|
||||
RNDB #2;#XLEN
|
||||
STA XX
|
||||
RNDB #2;#YLEN
|
||||
STA YY
|
||||
*
|
||||
JMP BUILD
|
||||
*
|
||||
********************************
|
||||
*
|
||||
:SETVARS
|
||||
*
|
||||
** DIM ARRAYS AND FILL
|
||||
*
|
||||
DIM82 SOUTHW;#XMAX;#YMAX;#1;#1
|
||||
DIM82 WESTW;#XMAX;#YMAX;#1;#1
|
||||
DIM82 VISITED;#XMAX;#YMAX;#1;#0
|
||||
DIM81 XSTACK;#XSTAKS;#1;#0
|
||||
DIM81 YSTACK;#YSTAKS;#1;#0
|
||||
*
|
||||
** NOW ASSIGN VARIABLE VALUES
|
||||
*
|
||||
LDA #0
|
||||
STA SPTR
|
||||
STA V0
|
||||
LDA #1
|
||||
STA V1
|
||||
RTS
|
||||
*
|
||||
********************************
|
||||
*
|
||||
:OUTWALLS
|
||||
*
|
||||
** MAKE COLUMN MIN AND MAX TO BE ALL
|
||||
** WALL (CODE: 1).
|
||||
*
|
||||
LDA #0 ; SO X,Y WILL INC TO 1
|
||||
STA XX
|
||||
STA YY
|
||||
*
|
||||
:COLEDGE
|
||||
INC XX
|
||||
PUT82 V1;VISITED;XX;#1
|
||||
PUT82 V1;VISITED;XX;#YMAX
|
||||
LDA XX
|
||||
CMP #XMAX
|
||||
BNE :COLEDGE
|
||||
*
|
||||
** MAKE MIN AND MAX ROWS TO BE ALL WALL
|
||||
*
|
||||
:ROWEDGE
|
||||
INC YY
|
||||
PUT82 V1;VISITED;#1;YY
|
||||
PUT82 V1;VISITED;#XMAX;YY
|
||||
LDA YY
|
||||
CMP #YMAX
|
||||
BNE :ROWEDGE
|
||||
RTS
|
||||
*
|
||||
********************************
|
||||
* *
|
||||
* BUILD THE MAZE *
|
||||
* *
|
||||
********************************
|
||||
*
|
||||
BUILD
|
||||
*
|
||||
PRN "BUILDING MAZE...",8D8D
|
||||
*
|
||||
********************************
|
||||
*
|
||||
STAKPUSH
|
||||
*
|
||||
INC SPTR
|
||||
PUT81 XX;XSTACK;SPTR ; PUT COL ON STACK
|
||||
PUT81 YY;YSTACK;SPTR ; PUT ROW ON STACK
|
||||
PUT82 V1;VISITED;XX;YY ; MARK BLOCK AS VISITED
|
||||
*
|
||||
********************************
|
||||
*
|
||||
CHECKALL
|
||||
*
|
||||
** CHECKS ALL ADJACENT BLOCKS FOR A WALL. IF
|
||||
** COMPLETELY SURROUNDED, POP THE STACK AND
|
||||
** AND START OVER UNTIL.
|
||||
*
|
||||
LDA YY ; STORE VALUES FOR
|
||||
STA YP1 ; CURRENT ROW MINUS ONE
|
||||
STA YM1 ; AND CURRENT ROW PLUS
|
||||
LDA XX ; ONE, THEN DO THE SAME
|
||||
STA XP1 ; FOR COLUMNS
|
||||
STA XM1
|
||||
*
|
||||
INC YP1
|
||||
INC XP1
|
||||
DEC XM1
|
||||
DEC YM1
|
||||
*
|
||||
:_IF1 ; IF VISITED(XX,Y+1) == 1
|
||||
GET82 VISITED;XX;YP1
|
||||
LDA RETURN
|
||||
CMP #1
|
||||
BEQ :_IF2 ; IF CELL BELOW IS A WALL
|
||||
; CONTINUE TESTING OTHER
|
||||
; ADJACENT CELLS
|
||||
JMP DOMOVE ; OTHERWISE, EXIT CONDITIONAL
|
||||
:_IF2 ; AND VISITED(X+1,Y) == 1
|
||||
*
|
||||
GET82 VISITED;XP1;YY
|
||||
LDA RETURN
|
||||
CMP #1 ; TEST RIGHT CELL
|
||||
BEQ :_IF3
|
||||
JMP DOMOVE
|
||||
*
|
||||
:_IF3 ; AND IF VISITED(X,Y-1) == 1
|
||||
LDA YM1
|
||||
CMP #0 ; TEST FOR Y=0 TO OVOID
|
||||
BNE :IF3C ; OUT OF BOUNDS ERROR
|
||||
JMP :_IF4
|
||||
:IF3C
|
||||
GET82 VISITED;XX;YM1
|
||||
LDA RETURN
|
||||
CMP #1 ; TEST CELL ABOVE
|
||||
BEQ :_IF4
|
||||
JMP DOMOVE
|
||||
*
|
||||
:_IF4 ; AND IF VISITED(X-1,Y) == 1
|
||||
GET82 VISITED;XM1;YY
|
||||
LDA RETURN
|
||||
CMP #1 ; THEN POP STACKS UNTIL DONE
|
||||
BEQ :POP
|
||||
*
|
||||
JMP DOMOVE ; OTHERWISE, EXIT ROUTINE
|
||||
*
|
||||
********************************
|
||||
*
|
||||
:POP
|
||||
*
|
||||
GET81 XSTACK;SPTR
|
||||
LDA RETURN
|
||||
STA XX
|
||||
GET81 YSTACK;SPTR
|
||||
LDA RETURN
|
||||
STA YY
|
||||
DEC SPTR ; POP
|
||||
LDA SPTR
|
||||
CMP #1 ; IF STILL MORE ON STACK
|
||||
BCS :DOREPEAT
|
||||
JMP DISPMAZE ; OTHERWISE, FINISHED!
|
||||
*
|
||||
:DOREPEAT
|
||||
JMP CHECKALL
|
||||
*
|
||||
********************************
|
||||
*
|
||||
DOMOVE
|
||||
*
|
||||
** MOVE IN A RANDOM DIRECTION
|
||||
*
|
||||
JSR RAND8
|
||||
CMP #64 ; IF RND < 64
|
||||
BCC :MVDOWN
|
||||
CMP #128 ; ELSE IF RND < 128
|
||||
BCC :MVRIGHT
|
||||
CMP #192 ; ELSE IF RND < 192
|
||||
BCC :MVUP
|
||||
JMP :MVLEFT ; ELSE RND IS > 191
|
||||
*
|
||||
:MVDOWN
|
||||
GET82 VISITED;XX;YP1
|
||||
LDA RETURN
|
||||
CMP #0 ; IF NOT A WALL
|
||||
BEQ :DOWNGO
|
||||
JMP DOMOVE
|
||||
:DOWNGO ; THEN MOVE THERE
|
||||
PUT82 V0;SOUTHW;XX;YY
|
||||
INC YY
|
||||
JMP STAKPUSH
|
||||
:MVRIGHT
|
||||
GET82 VISITED;XP1;YY
|
||||
LDA RETURN
|
||||
CMP #0
|
||||
BEQ :RIGHTGO
|
||||
JMP DOMOVE
|
||||
:RIGHTGO
|
||||
PUT82 V0;WESTW;XP1;YY
|
||||
INC XX
|
||||
JMP STAKPUSH
|
||||
*
|
||||
:MVUP
|
||||
LDA YM1
|
||||
CMP #0
|
||||
BEQ :UPNO
|
||||
GET82 VISITED;XX;YM1
|
||||
LDA RETURN
|
||||
CMP #0
|
||||
BEQ :UPGO
|
||||
:UPNO
|
||||
JMP DOMOVE
|
||||
:UPGO
|
||||
PUT82 V0;SOUTHW;XX;YM1
|
||||
DEC YY
|
||||
JMP STAKPUSH
|
||||
*
|
||||
:MVLEFT
|
||||
GET82 VISITED;XM1;YY
|
||||
LDA RETURN
|
||||
CMP #0
|
||||
BEQ :LEFTGO
|
||||
JMP DOMOVE
|
||||
:LEFTGO
|
||||
PUT82 V0;WESTW;XX;YY
|
||||
DEC XX
|
||||
JMP STAKPUSH
|
||||
*
|
||||
********************************
|
||||
* *
|
||||
* DISPLAY THE MAZE *
|
||||
* *
|
||||
********************************
|
||||
*
|
||||
DISPMAZE
|
||||
*
|
||||
** SEND MAZE TO DISPLAY OUTPUT, FORMATTED
|
||||
*
|
||||
PRN "PRINTING...",8D
|
||||
PRN " ",8D
|
||||
LDA #1
|
||||
STA XX
|
||||
:XLOOP
|
||||
INC XX
|
||||
PRN "X"
|
||||
LDA XX
|
||||
CMP #XNUM
|
||||
BNE :XLOOP
|
||||
PRN " ",8D
|
||||
*
|
||||
LDA #2
|
||||
STA XX
|
||||
STA YY
|
||||
WLP
|
||||
*
|
||||
** IF WESTW(X,Y) == 0
|
||||
*
|
||||
GET82 WESTW;XX;YY
|
||||
LDA RETURN
|
||||
CMP #0
|
||||
BEQ NOWALLW ; THEN PRINT ...
|
||||
YESWALLW ; ELSE PRINT X..
|
||||
PRN "X "
|
||||
JMP CONTWLP
|
||||
NOWALLW
|
||||
PRN " "
|
||||
*
|
||||
CONTWLP
|
||||
INC XX
|
||||
LDA XX
|
||||
CMP #XMAX
|
||||
BEQ :ENDWLP
|
||||
JMP WLP
|
||||
*
|
||||
:ENDWLP
|
||||
PRN "X",8D ; NEXT LINE
|
||||
*
|
||||
LDA #2
|
||||
STA XX ; RECYCLING
|
||||
*
|
||||
** IF SOUTHW(X,Y) == 0
|
||||
*
|
||||
SLP
|
||||
GET82 SOUTHW;XX;YY
|
||||
LDA RETURN
|
||||
CMP #0
|
||||
BEQ NOSOUTH ; THEN PRINT X..
|
||||
YSOUTH ; ELSE PRINT XXX
|
||||
PRN "XX"
|
||||
JMP CONTSLP
|
||||
NOSOUTH
|
||||
PRN "X "
|
||||
CONTSLP
|
||||
INC XX
|
||||
LDA XX
|
||||
CMP #XMAX
|
||||
BEQ :ENDSLP
|
||||
JMP SLP
|
||||
:ENDSLP
|
||||
*
|
||||
PRN "X",8D
|
||||
*
|
||||
LDA #2
|
||||
STA XX
|
||||
INC YY
|
||||
LDA YY
|
||||
CMP #YMAX
|
||||
BEQ DISPEXIT
|
||||
JMP WLP
|
||||
*
|
||||
DISPEXIT
|
||||
*
|
||||
_WAIT
|
||||
JMP REENTRY
|
||||
*
|
||||
********************************
|
||||
* *
|
||||
* VARIABLES *
|
||||
* *
|
||||
********************************
|
||||
*
|
||||
V0 DS 1 ; USED BECAUSE OF CURRENT
|
||||
V1 DS 1 ; ARRAY DIM LIMITATIONS
|
||||
*
|
||||
XX DS 1 ; CURRENT COLUMN
|
||||
YY DS 1 ; CURRENT ROW
|
||||
SPTR DS 1 ; ARRAY STACK POINTER
|
||||
XP1 DS 1 ; X PLUS ONE
|
||||
XM1 DS 1 ; X MINUS ONE
|
||||
YP1 DS 1 ; Y PLUS ONE
|
||||
YM1 DS 1 ; Y MINUS ONE
|
||||
*
|
||||
********************************
|
||||
* *
|
||||
* LOW-LEVEL ROUTINES *
|
||||
* *
|
||||
********************************
|
||||
*
|
||||
PUT REQUIRED.LIB.MIN
|
||||
*
|
||||
** INDIVIDUAL SUBROUTINES
|
||||
*
|
||||
** ARRAYS
|
||||
*
|
||||
PUT ADIM81.SUB.MIN
|
||||
PUT ADIM82.SUB.MIN
|
||||
PUT AGET81.SUB.MIN
|
||||
PUT AGET82.SUB.MIN
|
||||
PUT APUT81.SUB.MIN
|
||||
PUT APUT82.SUB.MIN
|
||||
*
|
||||
** MATH
|
||||
*
|
||||
PUT RAND8.SUB.MIN
|
||||
PUT RANDB.SUB.MIN
|
||||
*
|
||||
** STDIO
|
||||
*
|
||||
PUT DPRINT.SUB.MIN
|
||||
PUT XPRINT.SUB.MIN
|
||||
*
|
@ -262,6 +262,12 @@ __RDMP
|
||||
:RIGHT DS 1
|
||||
HEXTAB ASC "0123456789ABCDEF"
|
||||
__ERR
|
||||
LDY #0
|
||||
LDA (RETADR),Y
|
||||
STA :RET
|
||||
INY
|
||||
LDA (RETADR),Y
|
||||
STA :RET+1
|
||||
JSR __RSAV
|
||||
PLA
|
||||
STA RETADR
|
||||
@ -350,9 +356,13 @@ __ERR
|
||||
BEQ :KILL
|
||||
RTS
|
||||
:KILL
|
||||
_PRNT " ",8D8D
|
||||
_PRNT "BREAK AT: "
|
||||
_DUMP :RET;#2
|
||||
JMP $3D0
|
||||
:DUMPLEN DS 1
|
||||
:DUMP DS 2
|
||||
:DMPMSG DS 2
|
||||
:MESG DS 2
|
||||
:SRID DS 2
|
||||
:RET DS 2
|
30
source/disk1_stdio/MINIFY
Normal file
30
source/disk1_stdio/MINIFY
Normal file
@ -0,0 +1,30 @@
|
||||
5 HOME
|
||||
8 ONERR GOTO 1000
|
||||
10 PRINT "ASSEMBLY CODE MINIFIER"
|
||||
20 PRINT "-=-=-=-=-=-=-=-=-=-=-="
|
||||
30 PRINT
|
||||
35 DIM FC$(1500):C = 0
|
||||
40 INPUT "ENTER THE SOURCE FILE NAME: ";FF$
|
||||
50 INPUT "ENTER THE DESTINATION FILE NAME: ";DD$
|
||||
55 PRINT "WORKING.."
|
||||
60 PRINT CHR$ (4);"OPEN ";FF$
|
||||
70 PRINT CHR$ (4);"READ ";FF$
|
||||
80 GET AA$
|
||||
85 REM ? CHR$ (34);".";
|
||||
90 IF AA$ = CHR$ (13) THEN GOTO 200
|
||||
95 S$ = S$ + AA$
|
||||
110 GOTO 80
|
||||
200 IF LEFT$ (S$,1) = "*" OR LEFT$ (S$,1) = ";" THEN S$ = ""
|
||||
500 FC$(C) = S$
|
||||
510 S$ = ""
|
||||
520 C = C + 1
|
||||
990 GOTO 80
|
||||
1000 PRINT : PRINT CHR$ (4);"CLOSE ";FF$
|
||||
1010 PRINT CHR$ (4);"OPEN ";DD$
|
||||
1020 PRINT CHR$ (4);"WRITE ";DD$
|
||||
1030 FOR Z = 0 TO C
|
||||
1040 IF FC$(Z) < > "" THEN PRINT FC$(Z)
|
||||
1050 NEXT Z
|
||||
1060 PRINT CHR$ (4);"CLOSE ";DD$
|
||||
1070 PRINT "DONE!": PRINT : PRINT : PRINT
|
||||
1080 PRINT CHR$ (7): PRINT CHR$ (7): PRINT CHR$ (7)
|
88
source/disk1_stdio/T.CURSORUDBF.SUB.MIN
Normal file
88
source/disk1_stdio/T.CURSORUDBF.SUB.MIN
Normal file
@ -0,0 +1,88 @@
|
||||
CURSFOR
|
||||
CLC
|
||||
ADC CURSH
|
||||
STA CURSH
|
||||
LDA ERRCTRL
|
||||
CMP #1
|
||||
BEQ :CHKERR
|
||||
JMP :ERREND
|
||||
:CHKERR
|
||||
LDA CURSH
|
||||
CMP #40 ; MAX COL + 1
|
||||
BCS :XOVF
|
||||
JMP :ERREND
|
||||
:XOVF
|
||||
_ERR :E_SID;:E_XOF;:E_DMP1;RETURN;#10
|
||||
:ERREND
|
||||
JSR VTAB
|
||||
RTS
|
||||
:E_SID ASC "CURSFOR (CURF MACRO)",00
|
||||
:E_DMP1 ASC "DUMPING RETURN BLOCK...",00
|
||||
:E_XOF ASC "CURSOR X OVERFLOW: X <> MIN/MAX",00
|
||||
CURSBAK
|
||||
SEC
|
||||
STA SCRATCH
|
||||
LDA CURSH
|
||||
SBC SCRATCH
|
||||
STA CURSH
|
||||
LDA ERRCTRL
|
||||
CMP #1
|
||||
BEQ :CHKERR
|
||||
JMP :ERREND
|
||||
:CHKERR
|
||||
LDA CURSH
|
||||
CMP #40 ; MIN COLUMN
|
||||
BCS :XOVF
|
||||
JMP :ERREND
|
||||
:XOVF
|
||||
_ERR :E_SID;:E_XOF;:E_DMP1;RETURN;#10
|
||||
:ERREND
|
||||
JSR VTAB
|
||||
RTS
|
||||
:E_SID ASC "CURSBAK (CURB MACRO)",00
|
||||
:E_DMP1 ASC "DUMPING RETURN BLOCK...",00
|
||||
:E_XOF ASC "CURSOR X OVERFLOW: X <> MIN/MAX",00
|
||||
CURSDN
|
||||
CLC
|
||||
ADC CURSV
|
||||
STA CURSV
|
||||
LDA ERRCTRL
|
||||
CMP #1
|
||||
BEQ :CHKERR
|
||||
JMP :ERREND
|
||||
:CHKERR
|
||||
LDA CURSV
|
||||
CMP #24 ; MAX ROWS
|
||||
BCS :YOVF
|
||||
JMP :ERREND
|
||||
:YOVF
|
||||
_ERR :E_SID;:E_YOF;:E_DMP1;RETURN;#10
|
||||
:ERREND
|
||||
JSR VTAB
|
||||
RTS
|
||||
:E_SID ASC "CURSDN (CURD MACRO)",00
|
||||
:E_DMP1 ASC "DUMPING RETURN BLOCK...",00
|
||||
:E_YOF ASC "CURSOR Y OVERFLOW: Y <> MIN/MAX",00
|
||||
CURSUP
|
||||
SEC
|
||||
STA SCRATCH
|
||||
LDA CURSV
|
||||
SBC SCRATCH
|
||||
STA CURSV
|
||||
LDA ERRCTRL
|
||||
CMP #1
|
||||
BEQ :CHKERR
|
||||
JMP :ERREND
|
||||
:CHKERR
|
||||
LDA CURSV
|
||||
CMP #24 ; MAX ROWS
|
||||
BCS :YOVF
|
||||
JMP :ERREND
|
||||
:YOVF
|
||||
_ERR :E_SID;:E_YOF;:E_DMP1;RETURN;#10
|
||||
:ERREND
|
||||
JSR VTAB
|
||||
RTS
|
||||
:E_SID ASC "CURSUP (CURU MACRO)",00
|
||||
:E_DMP1 ASC "DUMPING RETURN BLOCK...",00
|
||||
:E_YOF ASC "CURSOR Y OVERFLOW: Y <> MIN/MAX",00
|
22
source/disk1_stdio/T.DPRINT.SUB.MIN
Normal file
22
source/disk1_stdio/T.DPRINT.SUB.MIN
Normal file
@ -0,0 +1,22 @@
|
||||
DPRINT
|
||||
PLA
|
||||
STA RETADR
|
||||
PLA
|
||||
STA RETADR+1
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
LDY #$00
|
||||
:LOOP
|
||||
LDA (ADDR1),Y
|
||||
BEQ :EXIT
|
||||
JSR COUT1
|
||||
INY
|
||||
BNE :LOOP
|
||||
:EXIT
|
||||
LDA RETADR+1
|
||||
PHA
|
||||
LDA RETADR
|
||||
PHA
|
||||
RTS
|
50
source/disk1_stdio/T.GPBX.SUB.MIN
Normal file
50
source/disk1_stdio/T.GPBX.SUB.MIN
Normal file
@ -0,0 +1,50 @@
|
||||
GPBX
|
||||
PLA
|
||||
STA RETADR
|
||||
PLA
|
||||
STA RETADR+1
|
||||
PLA
|
||||
STA ADDR1 ; ZERO PAGE
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
LDA ERRCTRL
|
||||
CMP #1
|
||||
BEQ :CHKERR
|
||||
JMP :ERREND
|
||||
:CHKERR
|
||||
LDA ADDR1+1
|
||||
CMP #$C0 ; MAX COL + 1
|
||||
BNE :BADHI
|
||||
LDA ADDR1
|
||||
CMP #$64
|
||||
BCS :BADLO
|
||||
LDA ADDR1
|
||||
CMP #$60
|
||||
BCC :BADLO
|
||||
JMP :ERREND
|
||||
:BADHI
|
||||
_ERR :E_SID;:E_BHI;:E_DMP1;RETURN;#10
|
||||
JMP :ERREND
|
||||
:BADLO
|
||||
_ERR :E_SID;:E_BLO;:E_DMP1;RETURN;#10
|
||||
:ERREND
|
||||
LDY #$00
|
||||
LDA (ADDR1),Y ; IF BTN = PUSHED
|
||||
BMI :1
|
||||
JMP :0
|
||||
:1
|
||||
LDY #$01 ; BTN PUSHED;A=1
|
||||
JMP :EXIT
|
||||
:0
|
||||
LDY #$00 ; BTN NOT PUSHED;A=0
|
||||
:EXIT
|
||||
LDA RETADR+1
|
||||
PHA
|
||||
LDA RETADR
|
||||
PHA
|
||||
TYA ; BTN FLAG MOVE TO A
|
||||
RTS
|
||||
:E_SID ASC "GPBX (PBX MACRO)",00
|
||||
:E_DMP1 ASC "DUMPING RETURN BLOCK...",00
|
||||
:E_BHI ASC "BAD HIGH BYTE--NOT A PADDLE BUTTON!.",00
|
||||
:E_BLO ASC "BAD LOW BYTE--NOT A PADDLE BUTTON",00
|
@ -262,6 +262,12 @@ __RDMP
|
||||
:RIGHT DS 1
|
||||
HEXTAB ASC "0123456789ABCDEF"
|
||||
__ERR
|
||||
LDY #0
|
||||
LDA (RETADR),Y
|
||||
STA :RET
|
||||
INY
|
||||
LDA (RETADR),Y
|
||||
STA :RET+1
|
||||
JSR __RSAV
|
||||
PLA
|
||||
STA RETADR
|
||||
@ -350,9 +356,13 @@ __ERR
|
||||
BEQ :KILL
|
||||
RTS
|
||||
:KILL
|
||||
_PRNT " ",8D8D
|
||||
_PRNT "BREAK AT: "
|
||||
_DUMP :RET;#2
|
||||
JMP $3D0
|
||||
:DUMPLEN DS 1
|
||||
:DUMP DS 2
|
||||
:DMPMSG DS 2
|
||||
:MESG DS 2
|
||||
:SRID DS 2
|
||||
:RET DS 2
|
27
source/disk1_stdio/T.SINPUT.SUB.MIN
Normal file
27
source/disk1_stdio/T.SINPUT.SUB.MIN
Normal file
@ -0,0 +1,27 @@
|
||||
SINPUT
|
||||
PLA
|
||||
STA RETADR
|
||||
PLA
|
||||
STA RETADR+1
|
||||
LDX #$00
|
||||
JSR GETLN
|
||||
STX :STRLEN ; STORE STR LENGTH
|
||||
CPX #0
|
||||
BEQ :EXIT
|
||||
:INP_CLR
|
||||
LDY #0
|
||||
LDA :STRLEN ; LENGTH OF STRING
|
||||
STA RETLEN,Y ; PUT LENGTH
|
||||
:LOOP
|
||||
LDA KEYBUFF,Y ; PUT STR INTO NEW LOC
|
||||
STA RETURN,Y
|
||||
INY
|
||||
CPY :STRLEN ; IF Y < STR LENGTH
|
||||
BNE :LOOP ; LOOP; ELSE, CONTINUE
|
||||
:EXIT
|
||||
LDA RETADR+1
|
||||
PHA
|
||||
LDA RETADR
|
||||
PHA
|
||||
RTS
|
||||
:STRLEN DS 1
|
53
source/disk1_stdio/T.STDIO.HOOKS
Normal file
53
source/disk1_stdio/T.STDIO.HOOKS
Normal file
@ -0,0 +1,53 @@
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* STDIO.HOOKS.PUT *
|
||||
*- -*
|
||||
* HOOKS TO INPUT/OUTPUT *
|
||||
* ROUTINES IN MONITOR *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
* OUTPUT HOOKS
|
||||
*
|
||||
COUT1 EQU $FDF0 ; FASTER SCREEN OUTPUT
|
||||
COUT EQU $FDED ; MONITOR STD OUTPUT
|
||||
HOME EQU $FC58 ; CLEAR SCREEN, HOME CURSOR
|
||||
VTAB EQU $FC22 ; MONITOR CURSOR POS ROUTINE
|
||||
CURSH EQU $24 ; HPOS OF COUT CURSOR
|
||||
CURSV EQU $25 ; VPOS OF COUT CURSOR
|
||||
WNDLEFT EQU $20 ; SCROLL WINDOW LEFT
|
||||
WNDWIDTH EQU $21 ; SCROLL WINDOW WIDTH
|
||||
WNDTOP EQU $22 ; SCROLL WINDOW TOP
|
||||
WNDBOT EQU $23 ; SCROLL WINDOW BOTTOM
|
||||
TEXTP1 EQU $0400 ; START OF TEXT PAGE 1
|
||||
TEXTP2 EQU $0800 ; START OF TEXT PAGE 2
|
||||
PAGE1 EQU $C054 ; SOFT SWITCH USE PAGE 1
|
||||
PAGE2 EQU $C055 ; SOFT SWITCH USE PAGE 2
|
||||
S80COL EQU $C01F ; READ ONLY; CHECK IF 80C
|
||||
KEYBUFF EQU $0200 ; KEYBUFFER START
|
||||
GSTROBE EQU $C040 ; GAME CONNECTOR STROBE
|
||||
TXTSET EQU $C051 ; TEXT ON SOFT SWITCH
|
||||
SETWND EQU $FB4B ; SET NORMAL WINDOW MODE
|
||||
CURADV EQU $FBF4 ; ADVANCE CURSOR RIGHT
|
||||
CURBS EQU $FC10 ; CURSOR LEFT
|
||||
CURUP EQU $FC1A ; CURSOR UP
|
||||
CR EQU $FC62 ; CARRIAGE RETURN TO SCREEN
|
||||
LF EQU $FC66 ; LINE FEED ONLY TO SCREEN
|
||||
CLEOL EQU $FC9C ; CLEAR TEXT TO END OF LINE
|
||||
*
|
||||
* INPUT HOOKS
|
||||
*
|
||||
KYBD EQU $C000 ; LDA SINGLE KEYPRESS
|
||||
STROBE EQU $C010 ; CLEAR KYBD BUFFER
|
||||
GETLN EQU $FD6F ; MONITOR GET LINE OF KB INPUT
|
||||
GETKEY EQU $FD0C ; MONITOR GET SINGLE KEY INPUT
|
||||
OPAPP EQU $C061
|
||||
CLAPP EQU $C062
|
||||
*
|
||||
* PADDLE HOOKS
|
||||
*
|
||||
PREAD EQU $FB1E ; READ STATE OF PADDLE
|
||||
PB0 EQU $C061 ; PADDLE BUTTON 0
|
||||
PB1 EQU $C062
|
||||
PB2 EQU $C063
|
||||
PB3 EQU $C060
|
||||
*
|
120
source/disk1_stdio/T.STDIO.MAC.MIN
Normal file
120
source/disk1_stdio/T.STDIO.MAC.MIN
Normal file
@ -0,0 +1,120 @@
|
||||
PRN MAC
|
||||
IF ",]1 ; --- IF PARAM=STRING
|
||||
JSR XPRINT ; SPECIAL PRINT
|
||||
ASC ]1 ; PUT STRING HERE
|
||||
HEX 00 ; STRING TERMINATE
|
||||
ELSE ; ELSE, PARAM IS
|
||||
; MEMORY LOCATION
|
||||
LDA #>]1 ; PUSH HIGH BYTE
|
||||
PHA ; TO STACK
|
||||
LDA #<]1 ; PUSH LOW BYTE
|
||||
PHA
|
||||
JSR DPRINT
|
||||
FIN
|
||||
<<<
|
||||
PCR MAC
|
||||
LDA #$8D
|
||||
JSR COUT1
|
||||
<<<
|
||||
INP MAC
|
||||
JSR SINPUT
|
||||
<<<
|
||||
GKEY MAC
|
||||
JSR GETKEY
|
||||
LDY #0
|
||||
STY STROBE
|
||||
<<<
|
||||
SCPOS MAC
|
||||
LDX ]1
|
||||
LDY ]2
|
||||
STX CURSH
|
||||
STY CURSV
|
||||
JSR VTAB
|
||||
<<<
|
||||
SETCX MAC
|
||||
LDX ]1
|
||||
STX CURSH
|
||||
JSR VTAB
|
||||
<<<
|
||||
SETCY MAC
|
||||
LDY ]1
|
||||
STY CURSV
|
||||
JSR VTAB
|
||||
<<<
|
||||
CURF MAC
|
||||
LDA ]1
|
||||
JSR CURSFOR
|
||||
<<<
|
||||
CURB MAC
|
||||
LDA ]1
|
||||
JSR CURSBAK
|
||||
<<<
|
||||
CURU MAC
|
||||
LDA ]1
|
||||
JSR CURSUP
|
||||
<<<
|
||||
CURD MAC
|
||||
LDA ]1
|
||||
JSR CURSDN
|
||||
<<<
|
||||
RCPOS MAC
|
||||
LDA ]1 ; ROW
|
||||
LDY ]2 ; COLUMN
|
||||
JSR $F847 ; GBASCALC ROUTINE
|
||||
LDA ($26),Y ; LOW OF ADDR OF CHAR
|
||||
<<<
|
||||
PDL MAC ; GET PADDLE VALUE
|
||||
LDX #]1 ; READ PADDLE # ]1 (USUALLY 0)
|
||||
JSR PREAD ; PADDLE READING STORED IN Y
|
||||
<<<
|
||||
PBX MAC
|
||||
LDA #>]1
|
||||
PHA
|
||||
LDA #<]1
|
||||
PHA
|
||||
JSR GPBX
|
||||
<<<
|
||||
TVLIN MAC
|
||||
LDA ]1 ; Y START
|
||||
PHA
|
||||
LDA ]2 ; Y END
|
||||
PHA
|
||||
LDA ]3 ; X POSITION
|
||||
PHA
|
||||
LDA ]4 ; CHARACTER
|
||||
PHA
|
||||
JSR TVLINE
|
||||
<<<
|
||||
THLIN MAC
|
||||
LDA ]1 ; X START
|
||||
PHA
|
||||
LDA ]2 ; X END
|
||||
PHA
|
||||
LDA ]3 ; Y POS
|
||||
PHA
|
||||
LDA ]4 ; FILL CHAR
|
||||
PHA
|
||||
JSR THLINE
|
||||
<<<
|
||||
TFILL MAC
|
||||
LDA ]1 ; LEFT BOUNDARY
|
||||
PHA
|
||||
LDA ]2 ; TOP BOUNDARY
|
||||
PHA
|
||||
LDA ]3 ; RIGHT BOUNDARY
|
||||
PHA
|
||||
LDA ]4 ; BOTTOM BOUNDARY
|
||||
PHA
|
||||
LDA ]5 ; FILL CHAR
|
||||
PHA
|
||||
JSR TFILLA
|
||||
<<<
|
||||
TPUT MAC
|
||||
LDA ]1
|
||||
PHA
|
||||
LDA ]2
|
||||
PHA
|
||||
LDA ]3
|
||||
PHA
|
||||
JSR TXTPUT
|
||||
<<<
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user