mirror of https://github.com/A2osX/A2osX.git
Another Bunch of fixes:
-Loader is now working (todo:rename to A2osX.system,tSYS) -most of BINs working -CR->CR/LF
This commit is contained in:
parent
36e174bbf2
commit
f34e2b5f7c
438
BIN/ARP.S.txt
438
BIN/ARP.S.txt
|
@ -1,219 +1,219 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /DATA/A2OSX
|
PREFIX /DATA/A2OSX
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF BIN/ARP
|
.TF BIN/ARP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
.INB INC/KERNEL.I
|
.INB INC/KERNEL.I
|
||||||
.INB INC/LIBSTR.I
|
.INB INC/LIBSTR.I
|
||||||
.INB INC/LIBTCPIP.I
|
.INB INC/LIBTCPIP.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ARP.TIMEOUT .EQ 50 50*100ms = 5 sec.
|
ARP.TIMEOUT .EQ 50 50*100ms = 5 sec.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPPTR1 .EQ ZPBIN
|
ZPPTR1 .EQ ZPBIN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Main entry point
|
* Main entry point
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Code signature and INIT table
|
* Code signature and INIT table
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CLD $D8
|
* CLD $D8
|
||||||
* JMP (*,x) $7C
|
* JMP (*,x) $7C
|
||||||
* #JMPTABLE
|
* #JMPTABLE
|
||||||
* /JMPTABLE
|
* /JMPTABLE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.START cld
|
CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.1 .DA CS.INIT
|
.1 .DA CS.INIT
|
||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.EVENT
|
.DA CS.EVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.LIBSTR .DA LIBSTR
|
L.LIBSTR .DA LIBSTR
|
||||||
L.LIBTCPIP .DA LIBTCPIP
|
L.LIBTCPIP .DA LIBTCPIP
|
||||||
L.SSCANF.IP .DA SSCANF.IP
|
L.SSCANF.IP .DA SSCANF.IP
|
||||||
L.DST.IP .DA DST.IP
|
L.DST.IP .DA DST.IP
|
||||||
L.DST.MAC .DA DST.MAC
|
L.DST.MAC .DA DST.MAC
|
||||||
L.MSG0 .DA MSG0
|
L.MSG0 .DA MSG0
|
||||||
L.MSG1 .DA MSG1
|
L.MSG1 .DA MSG1
|
||||||
L.MSG2 .DA MSG2
|
L.MSG2 .DA MSG2
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA CS.END-CS.START Code Length To Relocate
|
.DA CS.END-CS.START Code Length To Relocate
|
||||||
.DA DS.END-DS.START Data Segment to Allocate
|
.DA DS.END-DS.START Data Segment to Allocate
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT >LIBLOADP L.LIBSTR
|
CS.INIT >LIBLOADP L.LIBSTR
|
||||||
sta hLIBSTR
|
sta hLIBSTR
|
||||||
|
|
||||||
>LIBLOADP L.LIBTCPIP
|
>LIBLOADP L.LIBTCPIP
|
||||||
sta hLIBTCPIP
|
sta hLIBTCPIP
|
||||||
|
|
||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
lda (pPsContext),y
|
lda (pPsContext),y
|
||||||
beq CS.INIT.CACHE
|
beq CS.INIT.CACHE
|
||||||
|
|
||||||
pha
|
pha
|
||||||
>PUSHW L.DST.IP
|
>PUSHW L.DST.IP
|
||||||
>PUSHW L.SSCANF.IP
|
>PUSHW L.SSCANF.IP
|
||||||
pla
|
pla
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>LIBCALL hLIBSTR,LIBSTR.SSCANF
|
>LIBCALL hLIBSTR,LIBSTR.SSCANF
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
stz bCTRLC
|
stz bCTRLC
|
||||||
|
|
||||||
lda (pPsContext)
|
lda (pPsContext)
|
||||||
ora #S.PS.F.EVENT Now accept events
|
ora #S.PS.F.EVENT Now accept events
|
||||||
sta (pPsContext)
|
sta (pPsContext)
|
||||||
|
|
||||||
rts CC,Give back control to CS.RUN
|
rts CC,Give back control to CS.RUN
|
||||||
|
|
||||||
.9 lda #SYSMGR.ERRSYN
|
.9 lda #SYSMGR.ERRSYN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
CS.INIT.CACHE >LIBCALL hLIBTCPIP,LIBTCPIP.ARP.GETCACHE
|
CS.INIT.CACHE >LIBCALL hLIBTCPIP,LIBTCPIP.ARP.GETCACHE
|
||||||
>STYA ZPPTR1
|
>STYA ZPPTR1
|
||||||
>PUSHW L.MSG0
|
>PUSHW L.MSG0
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
ldx #K.ARPCACHE.SIZE
|
ldx #K.ARPCACHE.SIZE
|
||||||
.1 lda (ZPPTR1)
|
.1 lda (ZPPTR1)
|
||||||
* beq .8
|
* beq .8
|
||||||
|
|
||||||
ldy #S.ARPCACHE.IP+4
|
ldy #S.ARPCACHE.IP+4
|
||||||
.2 dey
|
.2 dey
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
cpy #S.ARPCACHE.IP
|
cpy #S.ARPCACHE.IP
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
ldy #S.ARPCACHE.MAC+6
|
ldy #S.ARPCACHE.MAC+6
|
||||||
.3 dey
|
.3 dey
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
cpy #S.ARPCACHE.MAC
|
cpy #S.ARPCACHE.MAC
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
ldy #S.ARPCACHE.RETRYCNT
|
ldy #S.ARPCACHE.RETRYCNT
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
>PUSHB (ZPPTR1)
|
>PUSHB (ZPPTR1)
|
||||||
|
|
||||||
>PUSHW L.MSG1
|
>PUSHW L.MSG1
|
||||||
phx
|
phx
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
plx
|
plx
|
||||||
lda ZPPTR1
|
lda ZPPTR1
|
||||||
clc
|
clc
|
||||||
adc #S.ARPCACHE
|
adc #S.ARPCACHE
|
||||||
sta ZPPTR1
|
sta ZPPTR1
|
||||||
bcc .4
|
bcc .4
|
||||||
inc ZPPTR1+1
|
inc ZPPTR1+1
|
||||||
.4 dex
|
.4 dex
|
||||||
bne .1
|
bne .1
|
||||||
.8 lda #0 tell TSKMGR that all done ok, but
|
.8 lda #0 tell TSKMGR that all done ok, but
|
||||||
sec we do not want to stay in memory
|
sec we do not want to stay in memory
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN lda #ARP.TIMEOUT
|
CS.RUN lda #ARP.TIMEOUT
|
||||||
sta TimeOut
|
sta TimeOut
|
||||||
|
|
||||||
.1 lda bCTRLC
|
.1 lda bCTRLC
|
||||||
bne .9
|
bne .9
|
||||||
>PUSHW L.DST.MAC
|
>PUSHW L.DST.MAC
|
||||||
>PUSHW L.DST.IP
|
>PUSHW L.DST.IP
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.ARP.QUERY
|
>LIBCALL hLIBTCPIP,LIBTCPIP.ARP.QUERY
|
||||||
bcc .2 success, print & exit
|
bcc .2 success, print & exit
|
||||||
|
|
||||||
lda TimeOut
|
lda TimeOut
|
||||||
beq .9
|
beq .9
|
||||||
jsr A2osX.SLEEP
|
jsr A2osX.SLEEP
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.2 ldx #5
|
.2 ldx #5
|
||||||
.3 >PUSHB DST.MAC,x
|
.3 >PUSHB DST.MAC,x
|
||||||
dex
|
dex
|
||||||
bpl .3
|
bpl .3
|
||||||
|
|
||||||
ldx #3
|
ldx #3
|
||||||
.4 >PUSHB DST.IP,x
|
.4 >PUSHB DST.IP,x
|
||||||
dex
|
dex
|
||||||
bpl .4
|
bpl .4
|
||||||
|
|
||||||
>PUSHW L.MSG2
|
>PUSHW L.MSG2
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.EVENT >PULLW pEvent
|
CS.EVENT >PULLW pEvent
|
||||||
lda (pEvent)
|
lda (pEvent)
|
||||||
and #S.EVT.F.TIMER is it a TIMER event?
|
and #S.EVT.F.TIMER is it a TIMER event?
|
||||||
beq .1 no....
|
beq .1 no....
|
||||||
|
|
||||||
lda TimeOut
|
lda TimeOut
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
dec TimeOut
|
dec TimeOut
|
||||||
bra .9
|
bra .9
|
||||||
|
|
||||||
.1 lda (pEvent)
|
.1 lda (pEvent)
|
||||||
and #S.EVT.F.KEY is it a KEY event?
|
and #S.EVT.F.KEY is it a KEY event?
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
ldy #S.EVT.hDEV is Event from active IN device?
|
ldy #S.EVT.hDEV is Event from active IN device?
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
ldy #S.PS.hINDEV
|
ldy #S.PS.hINDEV
|
||||||
cmp (pPsContext),y
|
cmp (pPsContext),y
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
|
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
ldy #S.EVT.DATALO
|
ldy #S.EVT.DATALO
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
cmp #$03 Ctrl-C
|
cmp #$03 Ctrl-C
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
lda #$FF
|
lda #$FF
|
||||||
sta bCTRLC
|
sta bCTRLC
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT lda hLIBTCPIP
|
CS.QUIT lda hLIBTCPIP
|
||||||
>SYSCALL SYS.UnloadLibA
|
>SYSCALL SYS.UnloadLibA
|
||||||
lda hLIBSTR
|
lda hLIBSTR
|
||||||
>SYSCALL SYS.UnloadLibA
|
>SYSCALL SYS.UnloadLibA
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
LIBSTR >PSTRING "libstr.o"
|
LIBSTR >PSTRING "libstr.o"
|
||||||
LIBTCPIP >PSTRING "libtcpip.o"
|
LIBTCPIP >PSTRING "libtcpip.o"
|
||||||
SSCANF.IP >PSTRING "%d.%d.%d.%d"
|
SSCANF.IP >PSTRING "%d.%d.%d.%d"
|
||||||
MSG0 >CSTRING "STS RET MAC Address IP Address\n"
|
MSG0 >CSTRING "STS RET MAC Address IP Address\n"
|
||||||
MSG1 >CSTRING "$%h %03d %h:%h:%h:%h:%h:%h %d.%d.%d.%d\n"
|
MSG1 >CSTRING "$%h %03d %h:%h:%h:%h:%h:%h %d.%d.%d.%d\n"
|
||||||
MSG2 >CSTRING "%d.%d.%d.%d is at %h:%h:%h:%h:%h:%h\n"
|
MSG2 >CSTRING "%d.%d.%d.%d is at %h:%h:%h:%h:%h:%h\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DS.START
|
DS.START
|
||||||
hLIBSTR .BS 1
|
hLIBSTR .BS 1
|
||||||
hLIBTCPIP .BS 1
|
hLIBTCPIP .BS 1
|
||||||
DST.IP .BS 4
|
DST.IP .BS 4
|
||||||
DST.MAC .BS 6
|
DST.MAC .BS 6
|
||||||
TimeOut .BS 1
|
TimeOut .BS 1
|
||||||
bCTRLC .BS 1
|
bCTRLC .BS 1
|
||||||
DS.END
|
DS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE BIN/ARP.S
|
SAVE BIN/ARP.S
|
||||||
ASM
|
ASM
|
||||||
|
|
764
BIN/ASM.S.txt
764
BIN/ASM.S.txt
|
@ -1,382 +1,382 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /DATA/A2OS
|
PREFIX /DATA/A2OSX
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF /DATA/A2OS/BIN/ASM
|
.TF BIN/ASM
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OS.I
|
.INB INC/A2OSX.I
|
||||||
.INB INC/LIBSTR.I
|
.INB INC/LIBSTR.I
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.BLOCK.SIZE .EQ 4096
|
SYM.BLOCK.SIZE .EQ 4096
|
||||||
SYM.BLOCK.MAX .EQ 8
|
SYM.BLOCK.MAX .EQ 8
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
ERR.INV.ARGS .EQ 1
|
ERR.INV.ARGS .EQ 1
|
||||||
ERR.SRC.INV.TYPE .EQ 2
|
ERR.SRC.INV.TYPE .EQ 2
|
||||||
ERR.SRC.TOO.LONG .EQ 3
|
ERR.SRC.TOO.LONG .EQ 3
|
||||||
ERR.SYM.TOO.LARGE .EQ 10
|
ERR.SYM.TOO.LARGE .EQ 10
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
CS.START cld
|
CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.1 .DA CS.INIT
|
.1 .DA CS.INIT
|
||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.EVENT
|
.DA CS.DOEVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.LIBSTR .DA LIBSTR
|
L.LIBSTR .DA LIBSTR
|
||||||
L.MSG.HELP1 .DA MSG.HELP1
|
L.MSG.HELP1 .DA MSG.HELP1
|
||||||
L.MSG.HELP2 .DA MSG.HELP2
|
L.MSG.HELP2 .DA MSG.HELP2
|
||||||
L.MSG.SRCLINE .DA MSG.SRCLINE
|
L.MSG.SRCLINE .DA MSG.SRCLINE
|
||||||
L.READ.BUFFER .DA READ.BUFFER
|
L.READ.BUFFER .DA READ.BUFFER
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA CS.END-CS.START Code Length To Relocate
|
.DA CS.END-CS.START Code Length To Relocate
|
||||||
.DA 0 Data Segment to Allocate
|
.DA 0 Data Segment to Allocate
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
CS.INIT >LIBLOADP L.LIBSTR
|
CS.INIT >LIBLOADP L.LIBSTR
|
||||||
sta hLIBSTR
|
sta hLIBSTR
|
||||||
|
|
||||||
ldx #VAR.INIT.END-VAR.INIT
|
ldx #VAR.INIT.END-VAR.INIT
|
||||||
.1 stz VAR.INIT-1,x
|
.1 stz VAR.INIT-1,x
|
||||||
dex
|
dex
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
lda (TSKMGR.TSKPTR),y
|
lda (pPsContext),y
|
||||||
bne CS.INIT.ARGS
|
bne CS.INIT.ARGS
|
||||||
|
|
||||||
>PUSHW L.MSG.HELP1
|
>PUSHW L.MSG.HELP1
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
>PUSHW L.MSG.HELP2
|
>PUSHW L.MSG.HELP2
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
lda #ERR.INV.ARGS
|
lda #ERR.INV.ARGS
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
CS.INIT.ARGS >SYSCALL SYS.GetMemPtrA
|
CS.INIT.ARGS >SYSCALL SYS.GetMemPtrA
|
||||||
>STYA ZPQuickPtr1
|
>STYA ZPQuickPtr1
|
||||||
lda (ZPQuickPtr1)
|
lda (ZPQuickPtr1)
|
||||||
bne .1
|
bne .1
|
||||||
lda #ERR.INV.ARGS
|
lda #ERR.INV.ARGS
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 ldy #1
|
.1 ldy #1
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
cmp #'/'
|
cmp #'/'
|
||||||
bne .2
|
bne .2
|
||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
lda (TSKMGR.TSKPTR),y
|
lda (pPsContext),y
|
||||||
>SYSCALL SYS.PStrCpyA
|
>SYSCALL SYS.PStrCpyA
|
||||||
bra CS.INIT.ARGS.OK
|
bra CS.INIT.ARGS.OK
|
||||||
|
|
||||||
.2 ldy #S.PS.hARGS
|
.2 ldy #S.PS.hARGS
|
||||||
lda (TSKMGR.TSKPTR),y
|
lda (pPsContext),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
ldy #S.PS.hPREFIX
|
ldy #S.PS.hPREFIX
|
||||||
lda (TSKMGR.TSKPTR),y
|
lda (pPsContext),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>SYSCALL SYS.PStrCat
|
>SYSCALL SYS.PStrCat
|
||||||
|
|
||||||
CS.INIT.ARGS.OK sta SRC.hFILENAMES
|
CS.INIT.ARGS.OK sta SRC.hFILENAMES
|
||||||
|
|
||||||
>SYSCALL SYS.OpenFileA
|
>SYSCALL SYS.MLIOpenA
|
||||||
bcc CS.INIT.OPEN
|
bcc CS.INIT.OPEN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
CS.INIT.OPEN sta SRC.hREFNUMS
|
CS.INIT.OPEN sta SRC.hREFNUMS
|
||||||
stx SRC.hBUFFERS
|
stx SRC.hBUFFERS
|
||||||
inc SRC.COUNT
|
inc SRC.COUNT
|
||||||
lda SRC.hFILENAMES
|
lda SRC.hFILENAMES
|
||||||
>SYSCALL SYS.GetFileInfoA
|
>SYSCALL SYS.MLIGetFileInfoA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>STYA ZPQuickPtr1
|
>STYA ZPQuickPtr1
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
sta SRC.hFILETYPES
|
sta SRC.hFILETYPES
|
||||||
cmp #$04 TXT?
|
cmp #$04 TXT?
|
||||||
bne .1
|
bne .1
|
||||||
>PUSHBI $0D
|
>PUSHBI $0D
|
||||||
>PUSHBI $FF
|
>PUSHBI $FF
|
||||||
>PUSHB SRC.hREFNUMS
|
>PUSHB SRC.hREFNUMS
|
||||||
>SYSCALL SYS.NewLine
|
>SYSCALL SYS.MLINewLine
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
.1 cmp #$FA BAS?
|
.1 cmp #$FA BAS?
|
||||||
bne .98
|
bne .98
|
||||||
|
|
||||||
stz bSTOP
|
stz bSTOP
|
||||||
stz bCANCEL
|
stz bCANCEL
|
||||||
lda (TSKMGR.TSKPTR)
|
lda (pPsContext)
|
||||||
ora #S.PS.F.EVENT Now accept events
|
ora #S.PS.F.EVENT Now accept events
|
||||||
sta (TSKMGR.TSKPTR)
|
sta (pPsContext)
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.98 lda #ERR.SRC.INV.TYPE
|
.98 lda #ERR.SRC.INV.TYPE
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN lda bCANCEL
|
CS.RUN lda bCANCEL
|
||||||
beq .1
|
beq .1
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 lda bSTOP
|
.1 lda bSTOP
|
||||||
beq .2
|
beq .2
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.2 jsr CS.RUN.READLINE
|
.2 jsr CS.RUN.READLINE
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PUSHWI TmpBuffer256
|
>PUSHWI TmpBuffer256
|
||||||
>PUSHW SRC.LINENUM
|
>PUSHW SRC.LINENUM
|
||||||
>PUSHW L.MSG.SRCLINE
|
>PUSHW L.MSG.SRCLINE
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
CS.RUN.READLINE ldx SRC.COUNT
|
CS.RUN.READLINE ldx SRC.COUNT
|
||||||
lda SRC.hFILETYPES-1,x
|
lda SRC.hFILETYPES-1,x
|
||||||
bmi CS.RUN.READLINE.BIN
|
bmi CS.RUN.READLINE.BIN
|
||||||
jmp CS.RUN.READLINE.TXT
|
jmp CS.RUN.READLINE.TXT
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
CS.RUN.READLINE.BIN >LDYAI 3 LEN + LINENUM
|
CS.RUN.READLINE.BIN >LDYAI 3 LEN + LINENUM
|
||||||
jsr CS.RUN.READLINE.YA
|
jsr CS.RUN.READLINE.YA
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda READ.BUFFER+1
|
lda READ.BUFFER+1
|
||||||
sta SRC.LINENUM
|
sta SRC.LINENUM
|
||||||
lda READ.BUFFER+2
|
lda READ.BUFFER+2
|
||||||
sta SRC.LINENUM+1
|
sta SRC.LINENUM+1
|
||||||
|
|
||||||
lda READ.BUFFER
|
lda READ.BUFFER
|
||||||
dec
|
dec
|
||||||
dec
|
dec
|
||||||
dec
|
dec
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
tay
|
tay
|
||||||
lda #0
|
lda #0
|
||||||
jsr CS.RUN.READLINE.YA
|
jsr CS.RUN.READLINE.YA
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.1 lda READ.BUFFER,y
|
.1 lda READ.BUFFER,y
|
||||||
bmi .2
|
bmi .2
|
||||||
sta TmpBuffer256,x
|
sta TmpBuffer256,x
|
||||||
beq .8 Ending 00
|
beq .8 Ending 00
|
||||||
inx
|
inx
|
||||||
beq .99
|
beq .99
|
||||||
iny
|
iny
|
||||||
bne .1
|
bne .1
|
||||||
bra .99
|
bra .99
|
||||||
.2 cmp #$C0 REPEAT char?
|
.2 cmp #$C0 REPEAT char?
|
||||||
bne .5
|
bne .5
|
||||||
iny
|
iny
|
||||||
beq .99
|
beq .99
|
||||||
lda READ.BUFFER,y
|
lda READ.BUFFER,y
|
||||||
iny
|
iny
|
||||||
beq .99
|
beq .99
|
||||||
.3 pha
|
.3 pha
|
||||||
lda READ.BUFFER,y
|
lda READ.BUFFER,y
|
||||||
sta TmpBuffer256,x
|
sta TmpBuffer256,x
|
||||||
pla
|
pla
|
||||||
inx
|
inx
|
||||||
beq .99
|
beq .99
|
||||||
dec
|
dec
|
||||||
bne .3
|
bne .3
|
||||||
iny
|
iny
|
||||||
bne .1
|
bne .1
|
||||||
bra .99
|
bra .99
|
||||||
|
|
||||||
.5 and #$3F Compute blank count
|
.5 and #$3F Compute blank count
|
||||||
.6 pha
|
.6 pha
|
||||||
lda #$20
|
lda #$20
|
||||||
sta TmpBuffer256,x
|
sta TmpBuffer256,x
|
||||||
pla
|
pla
|
||||||
inx
|
inx
|
||||||
beq .99
|
beq .99
|
||||||
dec
|
dec
|
||||||
bne .6
|
bne .6
|
||||||
iny
|
iny
|
||||||
bne .1
|
bne .1
|
||||||
bra .99
|
bra .99
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
.99 lda #ERR.SRC.TOO.LONG
|
.99 lda #ERR.SRC.TOO.LONG
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.READLINE.TXT >LDYAI 256 newline = $0D
|
CS.RUN.READLINE.TXT >LDYAI 256 newline = $0D
|
||||||
jsr CS.RUN.READLINE.YA
|
jsr CS.RUN.READLINE.YA
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.READLINE.YA >PUSHYA
|
CS.RUN.READLINE.YA >PUSHYA
|
||||||
>PUSHW L.READ.BUFFER
|
>PUSHW L.READ.BUFFER
|
||||||
ldx SRC.COUNT
|
ldx SRC.COUNT
|
||||||
lda SRC.hREFNUMS-1,x
|
lda SRC.hREFNUMS-1,x
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>SYSCALL SYS.ReadFile
|
>SYSCALL SYS.MLIRead
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.EVENT ldy #S.EVT.hDEV is Event from active IN device?
|
CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
||||||
lda (EVTMGR.EVTPTR),y
|
lda (pEvent),y
|
||||||
ldy #S.PS.hINDEV
|
ldy #S.PS.hINDEV
|
||||||
cmp (TSKMGR.TSKPTR),y
|
cmp (pPsContext),y
|
||||||
bne .9
|
bne .9
|
||||||
lda (EVTMGR.EVTPTR)
|
lda (pEvent)
|
||||||
and #S.EVT.F.KEY is it a KEY event?
|
and #S.EVT.F.KEY is it a KEY event?
|
||||||
beq .9
|
beq .9
|
||||||
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
|
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
|
||||||
lda (EVTMGR.EVTPTR),y
|
lda (pEvent),y
|
||||||
bne .9
|
bne .9
|
||||||
ldy #S.EVT.DATALO
|
ldy #S.EVT.DATALO
|
||||||
lda (EVTMGR.EVTPTR),y
|
lda (pEvent),y
|
||||||
cmp #$03 Ctrl-C
|
cmp #$03 Ctrl-C
|
||||||
bne .1
|
bne .1
|
||||||
lda #$FF
|
lda #$FF
|
||||||
sta bCANCEL
|
sta bCANCEL
|
||||||
bra .8
|
bra .8
|
||||||
.1 cmp #$13 Ctrl-S
|
.1 cmp #$13 Ctrl-S
|
||||||
bne .8
|
bne .8
|
||||||
lda bSTOP
|
lda bSTOP
|
||||||
eor #$FF
|
eor #$FF
|
||||||
sta bSTOP
|
sta bSTOP
|
||||||
.8 >SYSCALL SYS.DestroyEvent
|
.8 >SYSCALL SYS.DestroyEvent
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT ldx SRC.COUNT
|
CS.QUIT ldx SRC.COUNT
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
lda SRC.hREFNUMS-1,x
|
lda SRC.hREFNUMS-1,x
|
||||||
>SYSCALL SYS.CloseFileA
|
>SYSCALL SYS.MLICloseA
|
||||||
|
|
||||||
ldx SRC.COUNT
|
ldx SRC.COUNT
|
||||||
lda SRC.hFILENAMES-1,x
|
lda SRC.hFILENAMES-1,x
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
|
|
||||||
ldx SRC.COUNT
|
ldx SRC.COUNT
|
||||||
lda SRC.hBUFFERS-1,x
|
lda SRC.hBUFFERS-1,x
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
|
|
||||||
dec SRC.COUNT
|
dec SRC.COUNT
|
||||||
bne CS.QUIT
|
bne CS.QUIT
|
||||||
|
|
||||||
.1 lda hLIBSTR
|
.1 lda hLIBSTR
|
||||||
>SYSCALL SYS.UnloadLibA
|
>SYSCALL SYS.UnloadLibA
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
LOAD.ASM.T
|
LOAD.ASM.T
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.ADD
|
SYM.ADD
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.LOOKUP
|
SYM.LOOKUP
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.BLOCK.ALLOC ldx #0
|
SYM.BLOCK.ALLOC ldx #0
|
||||||
.1 lda SYM.BLOCKS,x
|
.1 lda SYM.BLOCKS,x
|
||||||
beq .2
|
beq .2
|
||||||
inx
|
inx
|
||||||
cpx #SYM.BLOCK.MAX
|
cpx #SYM.BLOCK.MAX
|
||||||
bne .1
|
bne .1
|
||||||
lda #ERR.SYM.TOO.LARGE
|
lda #ERR.SYM.TOO.LARGE
|
||||||
sec Out of block error
|
sec Out of block error
|
||||||
rts
|
rts
|
||||||
.2 phx Save next free block
|
.2 phx Save next free block
|
||||||
>LDYA SYM.BLOCK.SIZE
|
>LDYA SYM.BLOCK.SIZE
|
||||||
>SYSCALL SYS.GetMem
|
>SYSCALL SYS.GetMem
|
||||||
bcs .9
|
bcs .9
|
||||||
txa
|
txa
|
||||||
plx
|
plx
|
||||||
sta SYM.BLOCKS,x
|
sta SYM.BLOCKS,x
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
T.DIRECTIVES .AS "AS"
|
T.DIRECTIVES .AS "AS"
|
||||||
.AS "AT"
|
.AS "AT"
|
||||||
.AS "AZ"
|
.AS "AZ"
|
||||||
.AS "BS"
|
.AS "BS"
|
||||||
.AS "DA"
|
.AS "DA"
|
||||||
.AS "DO"
|
.AS "DO"
|
||||||
.AS "DU"
|
.AS "DU"
|
||||||
.AS "ED"
|
.AS "ED"
|
||||||
.AS "EL"
|
.AS "EL"
|
||||||
.AS "EN"
|
.AS "EN"
|
||||||
.AS "EP"
|
.AS "EP"
|
||||||
.AS "EQ"
|
.AS "EQ"
|
||||||
.AS "FI"
|
.AS "FI"
|
||||||
.AS "HS"
|
.AS "HS"
|
||||||
.AS "IN"
|
.AS "IN"
|
||||||
.AS "LI"
|
.AS "LI"
|
||||||
.AS "MA"
|
.AS "MA"
|
||||||
.AS "OP"
|
.AS "OP"
|
||||||
.AS "OR"
|
.AS "OR"
|
||||||
.AS "PG"
|
.AS "PG"
|
||||||
.AS "PH"
|
.AS "PH"
|
||||||
.AS "TA"
|
.AS "TA"
|
||||||
.AS "TF"
|
.AS "TF"
|
||||||
.AS "TI"
|
.AS "TI"
|
||||||
.AS "US"
|
.AS "US"
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
LIBSTR >PSTRING "libstr.o"
|
LIBSTR >PSTRING "libstr.o"
|
||||||
MSG.HELP1 >CSTRING "A2OS-Macro Assembler (S-C MASM 2.0 Based)\n"
|
MSG.HELP1 >CSTRING "A2OS-Macro Assembler (S-C MASM 2.0 Based)\n"
|
||||||
MSG.HELP2 >CSTRING "Usage : ASM <src file> [type TXT ($04) or S-C/BAS ($FA)]\n"
|
MSG.HELP2 >CSTRING "Usage : ASM <src file> [type TXT ($04) or S-C/BAS ($FA)]\n"
|
||||||
MSG.SRCLINE >CSTRING "%05D-%s\n"
|
MSG.SRCLINE >CSTRING "%05D-%s\n"
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
DS.START
|
DS.START
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
hLIBSTR .BS 1
|
hLIBSTR .BS 1
|
||||||
bSTOP .BS 1
|
bSTOP .BS 1
|
||||||
bCANCEL .BS 1
|
bCANCEL .BS 1
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
VAR.INIT
|
VAR.INIT
|
||||||
SRC.COUNT .BS 1
|
SRC.COUNT .BS 1
|
||||||
SRC.hFILENAMES .BS 8 Store full path to opened SRC files
|
SRC.hFILENAMES .BS 8 Store full path to opened SRC files
|
||||||
SRC.hFILETYPES .BS 8 Store file type of opened SRC files
|
SRC.hFILETYPES .BS 8 Store file type of opened SRC files
|
||||||
SRC.hREFNUMS .BS 8 Store ref_num of opened files (Main, .INs & .INBs)
|
SRC.hREFNUMS .BS 8 Store ref_num of opened files (Main, .INs & .INBs)
|
||||||
SRC.hBUFFERS .BS 8 Store hMem to allocated buffers
|
SRC.hBUFFERS .BS 8 Store hMem to allocated buffers
|
||||||
SRC.LINENUM .BS 2
|
SRC.LINENUM .BS 2
|
||||||
ASM.T.hFILENAME .BS 1
|
ASM.T.hFILENAME .BS 1
|
||||||
ASM.T.hFILE .BS 1 handle to loaded ASM.T.xxxxx
|
ASM.T.hFILE .BS 1 handle to loaded ASM.T.xxxxx
|
||||||
DST.hFILENAME .BS 1
|
DST.hFILENAME .BS 1
|
||||||
DST.hFILE .BS 1
|
DST.hFILE .BS 1
|
||||||
DST.hBUFFER .BS 1
|
DST.hBUFFER .BS 1
|
||||||
VAR.INIT.END
|
VAR.INIT.END
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
ASM.T.FILENAME .BS 65 PStr ProDOS Max Path Len +1
|
ASM.T.FILENAME .BS 65 PStr ProDOS Max Path Len +1
|
||||||
TARGET.FILENAME .BS 65 PStr ProDOS Max Path Len +1
|
TARGET.FILENAME .BS 65 PStr ProDOS Max Path Len +1
|
||||||
TARGET.FILETYPE .BS 1
|
TARGET.FILETYPE .BS 1
|
||||||
READ.BUFFER .BS 256
|
READ.BUFFER .BS 256
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
PASS .BS 1
|
PASS .BS 1
|
||||||
ORIGIN .BS 4 32Bits Origin
|
ORIGIN .BS 4 32Bits Origin
|
||||||
SYM.BLOCKS .BS SYM.BLOCK.MAX
|
SYM.BLOCKS .BS SYM.BLOCK.MAX
|
||||||
DS.END
|
DS.END
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /DATA/A2OS/BIN/ASM.S
|
SAVE BIN/ASM.S
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -1,264 +1,264 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /DATA/A2OS
|
PREFIX /DATA/A2OS
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.TF /DATA/A2OS/BIN/ASM.T.6502
|
.TF /DATA/A2OS/BIN/ASM.T.6502
|
||||||
.OR $2000
|
.OR $2000
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.MA AMS AMSID,"Syntax",0,"Operand",0,"Range",0
|
.MA AMS AMSID,"Syntax",0,"Operand",0,"Range",0
|
||||||
.DA #]1
|
.DA #]1
|
||||||
.AS ]2
|
.AS ]2
|
||||||
.DA #0
|
.DA #0
|
||||||
.AS ]3
|
.AS ]3
|
||||||
.DA #0
|
.DA #0
|
||||||
.AS ]4
|
.AS ]4
|
||||||
.DA #0
|
.DA #0
|
||||||
.EM
|
.EM
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.DA T.ADDR.MODES.SYNTAX
|
.DA T.ADDR.MODES.SYNTAX
|
||||||
.DA T.OPCODES
|
.DA T.OPCODES
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.ADDR.MODES.SYNTAX >AMS 1,"","","" Implicit
|
T.ADDR.MODES.SYNTAX >AMS 1,"","","" Implicit
|
||||||
>AMS 2,"#$1",$1","" Immediate
|
>AMS 2,"#$1",$1","" Immediate
|
||||||
>AMS 3,"$2","$1=$2-@+1","-127,128" rel
|
>AMS 3,"$2","$1=$2-@+1","-127,128" rel
|
||||||
>AMS 4,"$1","$1","" zp
|
>AMS 4,"$1","$1","" zp
|
||||||
>AMS 5,"$1,X","$1","" zp,x
|
>AMS 5,"$1,X","$1","" zp,x
|
||||||
>AMS 6,"$2","$2","" abs
|
>AMS 6,"$2","$2","" abs
|
||||||
>AMS 7,"$2,X","$2","" abs,x
|
>AMS 7,"$2,X","$2","" abs,x
|
||||||
>AMS 8,"$2,Y","$2","" abs,y
|
>AMS 8,"$2,Y","$2","" abs,y
|
||||||
>AMS 9,"($2)","$2","" (abs)
|
>AMS 9,"($2)","$2","" (abs)
|
||||||
>AMS 10,"($1)","$1","" (zp)
|
>AMS 10,"($1)","$1","" (zp)
|
||||||
>AMS 11,"($1,X)","$1","" (zp,x)
|
>AMS 11,"($1,X)","$1","" (zp,x)
|
||||||
>AMS 12,"($1),Y","$1","" (zp),x
|
>AMS 12,"($1),Y","$1","" (zp),x
|
||||||
.HS 0
|
.HS 0
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.OPCODES .AS "ADC"
|
T.OPCODES .AS "ADC"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS 2,$69,4,$65,5,$75,6,$6D,7,$7D,8,$79,11,$61,12,$71
|
.HS 2,$69,4,$65,5,$75,6,$6D,7,$7D,8,$79,11,$61,12,$71
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "AND"
|
.AS "AND"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "ASL"
|
.AS "ASL"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "BCC"
|
.AS "BCC"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS 3,$90
|
.HS 3,$90
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "BCS"
|
.AS "BCS"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS 3,$B0
|
.HS 3,$B0
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "BEQ"
|
.AS "BEQ"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "BIT"
|
.AS "BIT"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "BMI"
|
.AS "BMI"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "BNE"
|
.AS "BNE"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "BPL"
|
.AS "BPL"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "BRK"
|
.AS "BRK"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "BVC"
|
.AS "BVC"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "BVS"
|
.AS "BVS"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "CLC"
|
.AS "CLC"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "CLD"
|
.AS "CLD"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "CLI"
|
.AS "CLI"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "CLV"
|
.AS "CLV"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "CMP"
|
.AS "CMP"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "CPX"
|
.AS "CPX"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "CPY"
|
.AS "CPY"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "DEC"
|
.AS "DEC"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "DEX"
|
.AS "DEX"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "DEY"
|
.AS "DEY"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "EOR"
|
.AS "EOR"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "INC"
|
.AS "INC"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "INX"
|
.AS "INX"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "INY"
|
.AS "INY"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "JMP"
|
.AS "JMP"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "JSR"
|
.AS "JSR"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "LDA"
|
.AS "LDA"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "LDX"
|
.AS "LDX"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "LDY"
|
.AS "LDY"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "LSR"
|
.AS "LSR"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "NOP"
|
.AS "NOP"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "NOP"
|
.AS "NOP"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "ORA"
|
.AS "ORA"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "PHA"
|
.AS "PHA"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "PHP"
|
.AS "PHP"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "PLA"
|
.AS "PLA"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "ROL"
|
.AS "ROL"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "ROR"
|
.AS "ROR"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "RTI"
|
.AS "RTI"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "RTS"
|
.AS "RTS"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "SBC"
|
.AS "SBC"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "SEC"
|
.AS "SEC"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "SED"
|
.AS "SED"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "SEI"
|
.AS "SEI"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "STA"
|
.AS "STA"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "STX"
|
.AS "STX"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "STY"
|
.AS "STY"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "TAX"
|
.AS "TAX"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "TAY"
|
.AS "TAY"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "TSX"
|
.AS "TSX"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "TXA"
|
.AS "TXA"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "TXS"
|
.AS "TXS"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "TYA"
|
.AS "TYA"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS
|
.HS
|
||||||
.HS 0
|
.HS 0
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.HS 0
|
.HS 0
|
||||||
MAN
|
MAN
|
||||||
SAVE /DATA/A2OS/BIN/ASM.T.6502.S
|
SAVE /DATA/A2OS/BIN/ASM.T.6502.S
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -1,100 +1,100 @@
|
||||||
PR#3
|
PR#3
|
||||||
NEW
|
NEW
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.TF /DATA/A2OS/BIN/ASM.T.65C02
|
.TF /DATA/A2OS/BIN/ASM.T.65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.MA AMS AMSID,"Syntax",0,"Operand",0,"Rule",0
|
.MA AMS AMSID,"Syntax",0,"Operand",0,"Rule",0
|
||||||
.DA #]1
|
.DA #]1
|
||||||
.AS ]2
|
.AS ]2
|
||||||
.DA #0
|
.DA #0
|
||||||
.AS ]3
|
.AS ]3
|
||||||
.DA #0
|
.DA #0
|
||||||
.AS ]4
|
.AS ]4
|
||||||
.DA #0
|
.DA #0
|
||||||
.EM
|
.EM
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.ADDR.MODES.SYNTAX >AMS 1,"","","" Implicit
|
T.ADDR.MODES.SYNTAX >AMS 1,"","","" Implicit
|
||||||
>AMS 2,"#$1",$1","" Immediate
|
>AMS 2,"#$1",$1","" Immediate
|
||||||
>AMS 3,"$2","$1=$2-@+1","-127<$1<128" rel
|
>AMS 3,"$2","$1=$2-@+1","-127<$1<128" rel
|
||||||
>AMS 4,"$1","$1","" zp
|
>AMS 4,"$1","$1","" zp
|
||||||
>AMS 5,"$1,X","$1","" zp,x
|
>AMS 5,"$1,X","$1","" zp,x
|
||||||
>AMS 6,"$2","$2","" abs
|
>AMS 6,"$2","$2","" abs
|
||||||
>AMS 7,"$2,X","$2","" abs,x
|
>AMS 7,"$2,X","$2","" abs,x
|
||||||
>AMS 8,"$2,Y","$2","" abs,y
|
>AMS 8,"$2,Y","$2","" abs,y
|
||||||
>AMS 9,"($2)","$2","" (abs)
|
>AMS 9,"($2)","$2","" (abs)
|
||||||
>AMS 10,"($1)","$1","" (zp)
|
>AMS 10,"($1)","$1","" (zp)
|
||||||
>AMS 11,"($1,X)","$1","" (zp,x)
|
>AMS 11,"($1,X)","$1","" (zp,x)
|
||||||
>AMS 12,"($1),Y","$1","" (zp),x
|
>AMS 12,"($1),Y","$1","" (zp),x
|
||||||
|
|
||||||
T.OPCODES .AS "ADC"
|
T.OPCODES .AS "ADC"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS 2,$69,4,$65,5,$75,6,$6D,7,$7D,8,$79,11,$61,12,$71
|
.HS 2,$69,4,$65,5,$75,6,$6D,7,$7D,8,$79,11,$61,12,$71
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "AND"
|
.AS "AND"
|
||||||
.AS "ASL"
|
.AS "ASL"
|
||||||
.AS "BCC"
|
.AS "BCC"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS 3,$90
|
.HS 3,$90
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "BCS"
|
.AS "BCS"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS 3,$B0
|
.HS 3,$B0
|
||||||
.HS 0
|
.HS 0
|
||||||
.AS "BEQ"
|
.AS "BEQ"
|
||||||
.AS "BIT"
|
.AS "BIT"
|
||||||
.AS "BMI"
|
.AS "BMI"
|
||||||
.AS "BNE"
|
.AS "BNE"
|
||||||
.AS "BPL"
|
.AS "BPL"
|
||||||
.AS "BRK"
|
.AS "BRK"
|
||||||
.AS "BVC"
|
.AS "BVC"
|
||||||
.AS "BVS"
|
.AS "BVS"
|
||||||
.AS "CLC"
|
.AS "CLC"
|
||||||
.AS "CLD"
|
.AS "CLD"
|
||||||
.AS "CLI"
|
.AS "CLI"
|
||||||
.AS "CLV"
|
.AS "CLV"
|
||||||
.AS "CMP"
|
.AS "CMP"
|
||||||
.AS "CPX"
|
.AS "CPX"
|
||||||
.AS "CPY"
|
.AS "CPY"
|
||||||
.AS "DEC"
|
.AS "DEC"
|
||||||
.AS "DEX"
|
.AS "DEX"
|
||||||
.AS "DEY"
|
.AS "DEY"
|
||||||
.AS "EOR"
|
.AS "EOR"
|
||||||
.AS "INC"
|
.AS "INC"
|
||||||
.AS "INX"
|
.AS "INX"
|
||||||
.AS "INY"
|
.AS "INY"
|
||||||
.AS "JMP"
|
.AS "JMP"
|
||||||
.AS "JSR"
|
.AS "JSR"
|
||||||
.AS "LDA"
|
.AS "LDA"
|
||||||
.AS "LDX"
|
.AS "LDX"
|
||||||
.AS "LDY"
|
.AS "LDY"
|
||||||
.AS "LSR"
|
.AS "LSR"
|
||||||
.AS "NOP"
|
.AS "NOP"
|
||||||
.AS "NOP"
|
.AS "NOP"
|
||||||
.AS "ORA"
|
.AS "ORA"
|
||||||
.AS "PHA"
|
.AS "PHA"
|
||||||
.AS "PHP"
|
.AS "PHP"
|
||||||
.AS "PLA"
|
.AS "PLA"
|
||||||
.AS "ROL"
|
.AS "ROL"
|
||||||
.AS "ROR"
|
.AS "ROR"
|
||||||
.AS "RTI"
|
.AS "RTI"
|
||||||
.AS "RTS"
|
.AS "RTS"
|
||||||
.AS "SBC"
|
.AS "SBC"
|
||||||
.AS "SEC"
|
.AS "SEC"
|
||||||
.AS "SED"
|
.AS "SED"
|
||||||
.AS "SEI"
|
.AS "SEI"
|
||||||
.AS "STA"
|
.AS "STA"
|
||||||
.AS "STX"
|
.AS "STX"
|
||||||
.AS "STY"
|
.AS "STY"
|
||||||
.AS "TAX"
|
.AS "TAX"
|
||||||
.AS "TAY"
|
.AS "TAY"
|
||||||
.AS "TSX"
|
.AS "TSX"
|
||||||
.AS "TXA"
|
.AS "TXA"
|
||||||
.AS "TXS"
|
.AS "TXS"
|
||||||
.AS "TYA"
|
.AS "TYA"
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.HS 0
|
.HS 0
|
||||||
MAN
|
MAN
|
||||||
SAVE /DATA/A2OS/BIN/ASM.T.65C02.S
|
SAVE /DATA/A2OS/BIN/ASM.T.65C02.S
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -1,36 +1,36 @@
|
||||||
PR#3
|
PR#3
|
||||||
NEW
|
NEW
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.TF /DATA/A2OS/BIN/ASM.T.Z80
|
.TF /DATA/A2OS/BIN/ASM.T.Z80
|
||||||
.OR $2000
|
.OR $2000
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.MA AMS AMSID,"Syntax",0,"Operand",0,"Rule",0
|
.MA AMS AMSID,"Syntax",0,"Operand",0,"Rule",0
|
||||||
.DA #]1
|
.DA #]1
|
||||||
.AS ]2
|
.AS ]2
|
||||||
.DA #0
|
.DA #0
|
||||||
.AS ]3
|
.AS ]3
|
||||||
.DA #0
|
.DA #0
|
||||||
.AS ]4
|
.AS ]4
|
||||||
.DA #0
|
.DA #0
|
||||||
.EM
|
.EM
|
||||||
.DA T.ADDR.MODES.SYNTAX
|
.DA T.ADDR.MODES.SYNTAX
|
||||||
.DA T.OPCODES
|
.DA T.OPCODES
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.ADDR.MODES.SYNTAX >AMS 1,"","","" Implicit
|
T.ADDR.MODES.SYNTAX >AMS 1,"","","" Implicit
|
||||||
>AMS 2,"#$1",$1","" Immediate8
|
>AMS 2,"#$1",$1","" Immediate8
|
||||||
>AMS 3,"#$2",$2","" Immediate16
|
>AMS 3,"#$2",$2","" Immediate16
|
||||||
>AMS 4, Modified zp
|
>AMS 4, Modified zp
|
||||||
>AMS 3,"$2","$1=$2-@+1","-127<$1<128" rel
|
>AMS 3,"$2","$1=$2-@+1","-127<$1<128" rel
|
||||||
>AMS 6,"$2","$2","" abs
|
>AMS 6,"$2","$2","" abs
|
||||||
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.OPCODES .AS "ADC"
|
T.OPCODES .AS "ADC"
|
||||||
.HS 0
|
.HS 0
|
||||||
.HS 2,$69,4,$65,5,$75,6,$6D,7,$7D,8,$79,11,$61,12,$71
|
.HS 2,$69,4,$65,5,$75,6,$6D,7,$7D,8,$79,11,$61,12,$71
|
||||||
.HS 0
|
.HS 0
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.HS 0
|
.HS 0
|
||||||
MAN
|
MAN
|
||||||
SAVE /DATA/A2OS/BIN/ASM.T.Z80.S
|
SAVE /DATA/A2OS/BIN/ASM.T.Z80.S
|
||||||
ASM
|
ASM
|
||||||
|
|
802
BIN/CHTYP.S.txt
802
BIN/CHTYP.S.txt
|
@ -1,401 +1,401 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /DATA/A2OSX
|
PREFIX /DATA/A2OSX
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF BIN/CHTYP
|
.TF BIN/CHTYP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
.INB INC/LIBSTR.I
|
.INB INC/LIBSTR.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Main entry point
|
* Main entry point
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Code signature and INIT table
|
* Code signature and INIT table
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CLD $D8
|
* CLD $D8
|
||||||
* JMP (*,x) $7C
|
* JMP (*,x) $7C
|
||||||
* #JMPTABLE
|
* #JMPTABLE
|
||||||
* /JMPTABLE
|
* /JMPTABLE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.START cld
|
CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.1 .DA CS.INIT
|
.1 .DA CS.INIT
|
||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.DOEVENT
|
.DA CS.DOEVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.LIB.LIBSTR .DA LIB.LIBSTR
|
L.LIB.LIBSTR .DA LIB.LIBSTR
|
||||||
L.MSG.VOL.HEADER .DA MSG.VOL.HEADER
|
L.MSG.VOL.HEADER .DA MSG.VOL.HEADER
|
||||||
L.MSG.DIR.HEADER .DA MSG.DIR.HEADER
|
L.MSG.DIR.HEADER .DA MSG.DIR.HEADER
|
||||||
L.MSG.VOL .DA MSG.VOL
|
L.MSG.VOL .DA MSG.VOL
|
||||||
L.MSG.DIR .DA MSG.DIR
|
L.MSG.DIR .DA MSG.DIR
|
||||||
L.MSG.FILE .DA MSG.FILE
|
L.MSG.FILE .DA MSG.FILE
|
||||||
L.MSG.VOL.END .DA MSG.VOL.END
|
L.MSG.VOL.END .DA MSG.VOL.END
|
||||||
L.MSG.DIR.END .DA MSG.DIR.END
|
L.MSG.DIR.END .DA MSG.DIR.END
|
||||||
L.PRODOS.FT.TXT .DA PRODOS.FT.TXT
|
L.PRODOS.FT.TXT .DA PRODOS.FT.TXT
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA CS.END-CS.START Code Length To Relocate
|
.DA CS.END-CS.START Code Length To Relocate
|
||||||
.DA DS.END-DS.START Data Segment to Allocate
|
.DA DS.END-DS.START Data Segment to Allocate
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT >LIBLOADP L.LIB.LIBSTR
|
CS.INIT >LIBLOADP L.LIB.LIBSTR
|
||||||
sta hLIBSTR
|
sta hLIBSTR
|
||||||
stz hDIRPATH
|
stz hDIRPATH
|
||||||
stz hS.LISTDIR
|
stz hS.LISTDIR
|
||||||
stz hVOLHEADER
|
stz hVOLHEADER
|
||||||
stz hDIRHEADER
|
stz hDIRHEADER
|
||||||
stz bSTOP
|
stz bSTOP
|
||||||
stz bCANCEL
|
stz bCANCEL
|
||||||
|
|
||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
lda (pPsContext),y
|
lda (pPsContext),y
|
||||||
beq .99 no arg, exit with err=0
|
beq .99 no arg, exit with err=0
|
||||||
|
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>PUSHBI $20 Push SEP=' '
|
>PUSHBI $20 Push SEP=' '
|
||||||
>PUSHBI 1 Push 1 for getting First arg
|
>PUSHBI 1 Push 1 for getting First arg
|
||||||
>SYSCALL SYS.PStrGetTkn
|
>SYSCALL SYS.PStrGetTkn
|
||||||
bcs .99 error, exit with error code
|
bcs .99 error, exit with error code
|
||||||
sta hArg
|
sta hArg
|
||||||
|
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>STYA ZPQuickPtr1
|
>STYA ZPQuickPtr1
|
||||||
lda (ZPQuickPtr1)
|
lda (ZPQuickPtr1)
|
||||||
beq .99
|
beq .99
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
cmp #'$' is it a TYPE ?
|
cmp #'$' is it a TYPE ?
|
||||||
bne .11
|
bne .11
|
||||||
|
|
||||||
|
|
||||||
.11 cmp #'/'
|
.11 cmp #'/'
|
||||||
bne .10
|
bne .10
|
||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
bra .2
|
bra .2
|
||||||
|
|
||||||
.10 ldy #S.PS.hARGS
|
.10 ldy #S.PS.hARGS
|
||||||
lda (pPsContext),y
|
lda (pPsContext),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
ldy #S.PS.hPREFIX
|
ldy #S.PS.hPREFIX
|
||||||
lda (pPsContext),y
|
lda (pPsContext),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>SYSCALL SYS.PStrCat
|
>SYSCALL SYS.PStrCat
|
||||||
sta hDIRPATH
|
sta hDIRPATH
|
||||||
bra .3
|
bra .3
|
||||||
|
|
||||||
.1 ldy #S.PS.hPREFIX
|
.1 ldy #S.PS.hPREFIX
|
||||||
.2 lda (pPsContext),y
|
.2 lda (pPsContext),y
|
||||||
|
|
||||||
.3 >SYSCALL SYS.ListDirInitA
|
.3 >SYSCALL SYS.ListDirInitA
|
||||||
bcs .98
|
bcs .98
|
||||||
sta hS.LISTDIR
|
sta hS.LISTDIR
|
||||||
|
|
||||||
lda (pPsContext)
|
lda (pPsContext)
|
||||||
ora #S.PS.F.EVENT Now accept events
|
ora #S.PS.F.EVENT Now accept events
|
||||||
sta (pPsContext)
|
sta (pPsContext)
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.98 pha
|
.98 pha
|
||||||
lda hLIBSTR
|
lda hLIBSTR
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
pla
|
pla
|
||||||
.99 sec
|
.99 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN lda bCANCEL
|
CS.RUN lda bCANCEL
|
||||||
beq .1
|
beq .1
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 lda bSTOP
|
.1 lda bSTOP
|
||||||
beq .2
|
beq .2
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.2 lda hS.LISTDIR
|
.2 lda hS.LISTDIR
|
||||||
>SYSCALL SYS.ListDirNextA
|
>SYSCALL SYS.ListDirNextA
|
||||||
bcc .3
|
bcc .3
|
||||||
|
|
||||||
jmp Push.Footer
|
jmp Push.Footer
|
||||||
|
|
||||||
.3 pha
|
.3 pha
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>STYA ZPQuickPtr1
|
>STYA ZPQuickPtr1
|
||||||
lda (ZPQuickPtr1)
|
lda (ZPQuickPtr1)
|
||||||
pha
|
pha
|
||||||
|
|
||||||
and #$0F
|
and #$0F
|
||||||
sta (ZPQuickPtr1) Adjust Filename len
|
sta (ZPQuickPtr1) Adjust Filename len
|
||||||
|
|
||||||
pla
|
pla
|
||||||
and #$F0
|
and #$F0
|
||||||
cmp #$F0 Volume ($F) HEADER ?
|
cmp #$F0 Volume ($F) HEADER ?
|
||||||
bne .31
|
bne .31
|
||||||
|
|
||||||
pla
|
pla
|
||||||
sta hVOLHEADER
|
sta hVOLHEADER
|
||||||
>PUSHW ZPQuickPtr1
|
>PUSHW ZPQuickPtr1
|
||||||
>PUSHW L.MSG.VOL.HEADER
|
>PUSHW L.MSG.VOL.HEADER
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.31 cmp #$E0 Dir ($E) HEADER ?
|
.31 cmp #$E0 Dir ($E) HEADER ?
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
pla
|
pla
|
||||||
sta hDIRHEADER
|
sta hDIRHEADER
|
||||||
|
|
||||||
>PUSHW ZPQuickPtr1
|
>PUSHW ZPQuickPtr1
|
||||||
>PUSHW L.MSG.DIR.HEADER
|
>PUSHW L.MSG.DIR.HEADER
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.4 cmp #$D0 Directory ?
|
.4 cmp #$D0 Directory ?
|
||||||
bne .5
|
bne .5
|
||||||
jsr Push.Dates
|
jsr Push.Dates
|
||||||
jsr Push.Dir
|
jsr Push.Dir
|
||||||
>PUSHW L.MSG.DIR
|
>PUSHW L.MSG.DIR
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.5 cmp #$C0 Volume Name ?
|
.5 cmp #$C0 Volume Name ?
|
||||||
bne .6
|
bne .6
|
||||||
|
|
||||||
>PUSHW ZPQuickPtr1
|
>PUSHW ZPQuickPtr1
|
||||||
>PUSHW L.MSG.VOL
|
>PUSHW L.MSG.VOL
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.6 jsr Push.Dates File
|
.6 jsr Push.Dates File
|
||||||
jsr Push.File
|
jsr Push.File
|
||||||
>PUSHW L.MSG.FILE
|
>PUSHW L.MSG.FILE
|
||||||
|
|
||||||
.8 >LIBCALL hLIBSTR,LIBSTR.PRINTF
|
.8 >LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
.9 pla
|
.9 pla
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Push.Dir ldy #$1E get access mask
|
Push.Dir ldy #$1E get access mask
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>PUSHW ZPQuickPtr1
|
>PUSHW ZPQuickPtr1
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Push.File >PUSHBI 0 4th byte of file len=0
|
Push.File >PUSHBI 0 4th byte of file len=0
|
||||||
ldy #$17 get file len (3 bytes)
|
ldy #$17 get file len (3 bytes)
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
ldy #$1E get access mask
|
ldy #$1E get access mask
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
ldy #$20 get aux type
|
ldy #$20 get aux type
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
ldy #$10 get filetype
|
ldy #$10 get filetype
|
||||||
|
|
||||||
lda L.PRODOS.FT.TXT
|
lda L.PRODOS.FT.TXT
|
||||||
sta ZPQuickPtr2
|
sta ZPQuickPtr2
|
||||||
lda L.PRODOS.FT.TXT+1
|
lda L.PRODOS.FT.TXT+1
|
||||||
sta ZPQuickPtr2+1
|
sta ZPQuickPtr2+1
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.1 lda (ZPQuickPtr1),y
|
.1 lda (ZPQuickPtr1),y
|
||||||
cmp PRODOS.FT.ID,x
|
cmp PRODOS.FT.ID,x
|
||||||
beq .3
|
beq .3
|
||||||
lda ZPQuickPtr2
|
lda ZPQuickPtr2
|
||||||
clc
|
clc
|
||||||
adc #4
|
adc #4
|
||||||
sta ZPQuickPtr2
|
sta ZPQuickPtr2
|
||||||
bcc .2
|
bcc .2
|
||||||
inc ZPQuickPtr2+1
|
inc ZPQuickPtr2+1
|
||||||
.2 inx
|
.2 inx
|
||||||
cpx PRODOS.FT.COUNT
|
cpx PRODOS.FT.COUNT
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
tax
|
tax
|
||||||
lda HEXDIGIT,x
|
lda HEXDIGIT,x
|
||||||
sta PRODOS.FT.DFLT+2
|
sta PRODOS.FT.DFLT+2
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
and #$0F
|
and #$0F
|
||||||
tax
|
tax
|
||||||
lda HEXDIGIT,x
|
lda HEXDIGIT,x
|
||||||
sta PRODOS.FT.DFLT+3
|
sta PRODOS.FT.DFLT+3
|
||||||
|
|
||||||
.3 >PUSHW ZPQuickPtr2
|
.3 >PUSHW ZPQuickPtr2
|
||||||
>PUSHW ZPQuickPtr1
|
>PUSHW ZPQuickPtr1
|
||||||
>LIBCALL hLIBSTR,LIBSTR.LCASEP
|
>LIBCALL hLIBSTR,LIBSTR.LCASEP
|
||||||
>PUSHW ZPQuickPtr1
|
>PUSHW ZPQuickPtr1
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Push.Dates ldy #$24 get modification time
|
Push.Dates ldy #$24 get modification time
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
ldy #$22
|
ldy #$22
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
ldy #$1B get creation time
|
ldy #$1B get creation time
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
ldy #$19
|
ldy #$19
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Push.Footer lda hVOLHEADER
|
Push.Footer lda hVOLHEADER
|
||||||
beq .20
|
beq .20
|
||||||
|
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>STYA ZPQuickPtr1
|
>STYA ZPQuickPtr1
|
||||||
|
|
||||||
ldy #22 file_count
|
ldy #22 file_count
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
>PUSHW L.MSG.VOL.END
|
>PUSHW L.MSG.VOL.END
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
.20 lda hDIRHEADER
|
.20 lda hDIRHEADER
|
||||||
beq .21
|
beq .21
|
||||||
|
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>STYA ZPQuickPtr1
|
>STYA ZPQuickPtr1
|
||||||
|
|
||||||
ldy #22 file_count
|
ldy #22 file_count
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
>PUSHW L.MSG.DIR.END
|
>PUSHW L.MSG.DIR.END
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
.21 sec
|
.21 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
ldy #S.PS.hINDEV
|
ldy #S.PS.hINDEV
|
||||||
cmp (pPsContext),y
|
cmp (pPsContext),y
|
||||||
bne .9
|
bne .9
|
||||||
lda (pEvent)
|
lda (pEvent)
|
||||||
and #S.EVT.F.KEY is it a KEY event?
|
and #S.EVT.F.KEY is it a KEY event?
|
||||||
beq .9
|
beq .9
|
||||||
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
|
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
bne .9
|
bne .9
|
||||||
ldy #S.EVT.DATALO
|
ldy #S.EVT.DATALO
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
cmp #$03 Ctrl-C
|
cmp #$03 Ctrl-C
|
||||||
bne .1
|
bne .1
|
||||||
lda #$FF
|
lda #$FF
|
||||||
sta bCANCEL
|
sta bCANCEL
|
||||||
bra .8
|
bra .8
|
||||||
.1 cmp #$13 Ctrl-S
|
.1 cmp #$13 Ctrl-S
|
||||||
bne .8
|
bne .8
|
||||||
lda bSTOP
|
lda bSTOP
|
||||||
eor #$FF
|
eor #$FF
|
||||||
sta bSTOP
|
sta bSTOP
|
||||||
.8 >SYSCALL SYS.DestroyEvent
|
.8 >SYSCALL SYS.DestroyEvent
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT lda hVOLHEADER
|
CS.QUIT lda hVOLHEADER
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
|
|
||||||
.1 lda hDIRHEADER
|
.1 lda hDIRHEADER
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
|
|
||||||
.2 lda hS.LISTDIR
|
.2 lda hS.LISTDIR
|
||||||
>SYSCALL SYS.ListDirCloseA
|
>SYSCALL SYS.ListDirCloseA
|
||||||
|
|
||||||
lda hDIRPATH
|
lda hDIRPATH
|
||||||
beq .3
|
beq .3
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
|
|
||||||
.3 lda hLIBSTR
|
.3 lda hLIBSTR
|
||||||
>SYSCALL SYS.UnloadLibA
|
>SYSCALL SYS.UnloadLibA
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
LIB.LIBSTR >PSTRING "libstr.o"
|
LIB.LIBSTR >PSTRING "libstr.o"
|
||||||
MSG.VOL.HEADER >CSTRING "Volume Listing Of %S\n"
|
MSG.VOL.HEADER >CSTRING "Volume Listing Of %S\n"
|
||||||
MSG.DIR.HEADER >CSTRING "Directory Listing Of %S\n"
|
MSG.DIR.HEADER >CSTRING "Directory Listing Of %S\n"
|
||||||
MSG.VOL >CSTRING "/%S\n"
|
MSG.VOL >CSTRING "/%S\n"
|
||||||
MSG.DIR >CSTRING "/%15S <dir> %a %T %t %T %t\n"
|
MSG.DIR >CSTRING "/%15S <dir> %a %T %t %T %t\n"
|
||||||
MSG.FILE >CSTRING "%15S %S $%H %a %8L %T %t %T %t\n"
|
MSG.FILE >CSTRING "%15S %S $%H %a %8L %T %t %T %t\n"
|
||||||
MSG.VOL.END >CSTRING "%D Files In Volume.\n"
|
MSG.VOL.END >CSTRING "%D Files In Volume.\n"
|
||||||
MSG.DIR.END >CSTRING "%D Files In Directory.\n"
|
MSG.DIR.END >CSTRING "%D Files In Directory.\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PRODOS.FT.COUNT .HS 07
|
PRODOS.FT.COUNT .HS 07
|
||||||
PRODOS.FT.ID .HS 0406FAFCFDE2FF
|
PRODOS.FT.ID .HS 0406FAFCFDE2FF
|
||||||
PRODOS.FT.TXT
|
PRODOS.FT.TXT
|
||||||
T04 >PSTRING "TXT"
|
T04 >PSTRING "TXT"
|
||||||
T06 >PSTRING "BIN"
|
T06 >PSTRING "BIN"
|
||||||
TFA >PSTRING "S-C"
|
TFA >PSTRING "S-C"
|
||||||
TFC >PSTRING "BAS"
|
TFC >PSTRING "BAS"
|
||||||
TFD >PSTRING "VAR"
|
TFD >PSTRING "VAR"
|
||||||
TE2 >PSTRING "ATK"
|
TE2 >PSTRING "ATK"
|
||||||
TFF >PSTRING "SYS"
|
TFF >PSTRING "SYS"
|
||||||
PRODOS.FT.DFLT >PSTRING "$ "
|
PRODOS.FT.DFLT >PSTRING "$ "
|
||||||
HEXDIGIT .AS '0123456789ABCDEF'
|
HEXDIGIT .AS '0123456789ABCDEF'
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DS.START
|
DS.START
|
||||||
hLIBSTR .BS 1
|
hLIBSTR .BS 1
|
||||||
hDIRPATH .BS 1
|
hDIRPATH .BS 1
|
||||||
hS.LISTDIR .BS 1
|
hS.LISTDIR .BS 1
|
||||||
hVOLHEADER .BS 1
|
hVOLHEADER .BS 1
|
||||||
hDIRHEADER .BS 1
|
hDIRHEADER .BS 1
|
||||||
bSTOP .BS 1
|
bSTOP .BS 1
|
||||||
bCANCEL .BS 1
|
bCANCEL .BS 1
|
||||||
DS.END
|
DS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE BIN/CHTYP.S
|
SAVE BIN/CHTYP.S
|
||||||
ASM
|
ASM
|
||||||
|
|
366
BIN/DNS.S.txt
366
BIN/DNS.S.txt
|
@ -1,183 +1,183 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /DATA/A2OSX
|
PREFIX /DATA/A2OSX
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST ON
|
.LIST ON
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF BIN/DNS
|
.TF BIN/DNS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
.INB INC/KERNEL.I
|
.INB INC/KERNEL.I
|
||||||
.INB INC/LIBSTR.I
|
.INB INC/LIBSTR.I
|
||||||
.INB INC/LIBTCPIP.I
|
.INB INC/LIBTCPIP.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPPTR1 .EQ ZPBIN
|
ZPPTR1 .EQ ZPBIN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Main entry point
|
* Main entry point
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Code signature and INIT table
|
* Code signature and INIT table
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CLD $D8
|
* CLD $D8
|
||||||
* JMP (*,x) $7C
|
* JMP (*,x) $7C
|
||||||
* #JMPTABLE
|
* #JMPTABLE
|
||||||
* /JMPTABLE
|
* /JMPTABLE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.START cld
|
CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.1 .DA CS.INIT
|
.1 .DA CS.INIT
|
||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.EVENT
|
.DA CS.EVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.LIBSTR .DA LIBSTR
|
L.LIBSTR .DA LIBSTR
|
||||||
L.LIBTCPIP .DA LIBTCPIP
|
L.LIBTCPIP .DA LIBTCPIP
|
||||||
L.SSCANF.IP .DA SSCANF.IP
|
L.SSCANF.IP .DA SSCANF.IP
|
||||||
L.IP .DA IP
|
L.IP .DA IP
|
||||||
L.MSG0 .DA MSG0
|
L.MSG0 .DA MSG0
|
||||||
L.MSG1 .DA MSG1
|
L.MSG1 .DA MSG1
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA CS.END-CS.START Code Length To Relocate
|
.DA CS.END-CS.START Code Length To Relocate
|
||||||
.DA DS.END-DS.START Data Segment to Allocate
|
.DA DS.END-DS.START Data Segment to Allocate
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT stz hHostName
|
CS.INIT stz hHostName
|
||||||
stz hIP
|
stz hIP
|
||||||
|
|
||||||
>LIBLOADP L.LIBSTR
|
>LIBLOADP L.LIBSTR
|
||||||
sta hLIBSTR
|
sta hLIBSTR
|
||||||
|
|
||||||
>LIBLOADP L.LIBTCPIP
|
>LIBLOADP L.LIBTCPIP
|
||||||
sta hLIBTCPIP
|
sta hLIBTCPIP
|
||||||
|
|
||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
lda (pPsContext),y
|
lda (pPsContext),y
|
||||||
bne CS.INIT.ADD
|
bne CS.INIT.ADD
|
||||||
jmp CS.INIT.DUMP
|
jmp CS.INIT.DUMP
|
||||||
|
|
||||||
CS.INIT.ADD >PUSHA
|
CS.INIT.ADD >PUSHA
|
||||||
>PUSHBI $20 Push SEP=' '
|
>PUSHBI $20 Push SEP=' '
|
||||||
>PUSHBI 1 Push 1 for getting hostname
|
>PUSHBI 1 Push 1 for getting hostname
|
||||||
>SYSCALL SYS.PStrGetTkn
|
>SYSCALL SYS.PStrGetTkn
|
||||||
bcs .91
|
bcs .91
|
||||||
sta hHostName
|
sta hHostName
|
||||||
|
|
||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
lda (pPsContext),y
|
lda (pPsContext),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>PUSHBI $20 Push SEP=' '
|
>PUSHBI $20 Push SEP=' '
|
||||||
>PUSHBI 2 Push 2 for getting IP
|
>PUSHBI 2 Push 2 for getting IP
|
||||||
>SYSCALL SYS.PStrGetTkn
|
>SYSCALL SYS.PStrGetTkn
|
||||||
.91 bcs .9
|
.91 bcs .9
|
||||||
|
|
||||||
sta hIP
|
sta hIP
|
||||||
>PUSHW L.IP
|
>PUSHW L.IP
|
||||||
>PUSHW L.SSCANF.IP
|
>PUSHW L.SSCANF.IP
|
||||||
lda hIP
|
lda hIP
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>LIBCALL hLIBSTR,LIBSTR.SSCANF
|
>LIBCALL hLIBSTR,LIBSTR.SSCANF
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PUSHWI 1800 default TTL
|
>PUSHWI 1800 default TTL
|
||||||
>PUSHW L.IP
|
>PUSHW L.IP
|
||||||
>PUSHB hHostName
|
>PUSHB hHostName
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.DNS.ADD
|
>LIBCALL hLIBTCPIP,LIBTCPIP.DNS.ADD
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #0 tell TSKMGR that all done ok, but
|
lda #0 tell TSKMGR that all done ok, but
|
||||||
sec we do not want to stay in memory
|
sec we do not want to stay in memory
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #SYSMGR.ERRSYN
|
.9 lda #SYSMGR.ERRSYN
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
|
|
||||||
CS.INIT.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GETCACHE
|
CS.INIT.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GETCACHE
|
||||||
>STYA ZPPTR1
|
>STYA ZPPTR1
|
||||||
>PUSHW L.MSG0
|
>PUSHW L.MSG0
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
ldx #K.DNSCACHE.SIZE
|
ldx #K.DNSCACHE.SIZE
|
||||||
.1 phx
|
.1 phx
|
||||||
lda (ZPPTR1)
|
lda (ZPPTR1)
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
ldy #S.DNSCACHE.IP+3
|
ldy #S.DNSCACHE.IP+3
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
ldy #S.DNSCACHE.TTL
|
ldy #S.DNSCACHE.TTL
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
pha
|
pha
|
||||||
iny
|
iny
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
ply
|
ply
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
|
|
||||||
ldy #S.DNSCACHE.hNAME
|
ldy #S.DNSCACHE.hNAME
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
|
|
||||||
>PUSHB (ZPPTR1)
|
>PUSHB (ZPPTR1)
|
||||||
|
|
||||||
>PUSHW L.MSG1
|
>PUSHW L.MSG1
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
.2 lda ZPPTR1
|
.2 lda ZPPTR1
|
||||||
clc
|
clc
|
||||||
adc #S.DNSCACHE
|
adc #S.DNSCACHE
|
||||||
sta ZPPTR1
|
sta ZPPTR1
|
||||||
bcc .3
|
bcc .3
|
||||||
inc ZPPTR1+1
|
inc ZPPTR1+1
|
||||||
.3 plx
|
.3 plx
|
||||||
dex
|
dex
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda #0 tell TSKMGR that all done ok, but
|
lda #0 tell TSKMGR that all done ok, but
|
||||||
sec we do not want to stay in memory
|
sec we do not want to stay in memory
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN
|
CS.RUN
|
||||||
CS.EVENT clc
|
CS.EVENT clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT lda hHostName
|
CS.QUIT lda hHostName
|
||||||
beq .1
|
beq .1
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
.1 lda hIP
|
.1 lda hIP
|
||||||
beq .2
|
beq .2
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
.2 lda hLIBTCPIP
|
.2 lda hLIBTCPIP
|
||||||
>SYSCALL SYS.UnloadLibA
|
>SYSCALL SYS.UnloadLibA
|
||||||
lda hLIBSTR
|
lda hLIBSTR
|
||||||
>SYSCALL SYS.UnloadLibA
|
>SYSCALL SYS.UnloadLibA
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
LIBSTR >PSTRING "libstr.o"
|
LIBSTR >PSTRING "libstr.o"
|
||||||
LIBTCPIP >PSTRING "libtcpip.o"
|
LIBTCPIP >PSTRING "libtcpip.o"
|
||||||
SSCANF.IP >PSTRING "%d.%d.%d.%d"
|
SSCANF.IP >PSTRING "%d.%d.%d.%d"
|
||||||
MSG0 >CSTRING "STS Hostname TTL IP Address\n"
|
MSG0 >CSTRING "STS Hostname TTL IP Address\n"
|
||||||
MSG1 >CSTRING "$%h %32S %05D %d.%d.%d.%d\n"
|
MSG1 >CSTRING "$%h %32S %05D %d.%d.%d.%d\n"
|
||||||
DS.START
|
DS.START
|
||||||
hLIBSTR .BS 1
|
hLIBSTR .BS 1
|
||||||
hLIBTCPIP .BS 1
|
hLIBTCPIP .BS 1
|
||||||
hHostName .BS 1
|
hHostName .BS 1
|
||||||
hIP .BS 1
|
hIP .BS 1
|
||||||
IP .BS 4
|
IP .BS 4
|
||||||
DS.END
|
DS.END
|
||||||
MAN
|
MAN
|
||||||
SAVE BIN/DNS.S
|
SAVE BIN/DNS.S
|
||||||
ASM
|
ASM
|
||||||
|
|
778
BIN/LS.S.txt
778
BIN/LS.S.txt
|
@ -1,389 +1,389 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /DATA/A2OSX
|
PREFIX /DATA/A2OSX
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF BIN/LS
|
.TF BIN/LS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
.INB INC/LIBSTR.I
|
.INB INC/LIBSTR.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Main entry point
|
* Main entry point
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Code signature and INIT table
|
* Code signature and INIT table
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CLD $D8
|
* CLD $D8
|
||||||
* JMP (*,x) $7C
|
* JMP (*,x) $7C
|
||||||
* #JMPTABLE
|
* #JMPTABLE
|
||||||
* /JMPTABLE
|
* /JMPTABLE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.START cld
|
CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.1 .DA CS.INIT
|
.1 .DA CS.INIT
|
||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.DOEVENT
|
.DA CS.DOEVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.LIB.LIBSTR .DA LIB.LIBSTR
|
L.LIB.LIBSTR .DA LIB.LIBSTR
|
||||||
L.MSG.VOL.HEADER .DA MSG.VOL.HEADER
|
L.MSG.VOL.HEADER .DA MSG.VOL.HEADER
|
||||||
L.MSG.DIR.HEADER .DA MSG.DIR.HEADER
|
L.MSG.DIR.HEADER .DA MSG.DIR.HEADER
|
||||||
L.MSG.VOL .DA MSG.VOL
|
L.MSG.VOL .DA MSG.VOL
|
||||||
L.MSG.DIR .DA MSG.DIR
|
L.MSG.DIR .DA MSG.DIR
|
||||||
L.MSG.FILE .DA MSG.FILE
|
L.MSG.FILE .DA MSG.FILE
|
||||||
L.MSG.VOL.END .DA MSG.VOL.END
|
L.MSG.VOL.END .DA MSG.VOL.END
|
||||||
L.MSG.DIR.END .DA MSG.DIR.END
|
L.MSG.DIR.END .DA MSG.DIR.END
|
||||||
L.PRODOS.FT.TXT .DA PRODOS.FT.TXT
|
L.PRODOS.FT.TXT .DA PRODOS.FT.TXT
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA CS.END-CS.START Code Length To Relocate
|
.DA CS.END-CS.START Code Length To Relocate
|
||||||
.DA DS.END-DS.START Data Segment to Allocate
|
.DA DS.END-DS.START Data Segment to Allocate
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT >LIBLOADP L.LIB.LIBSTR
|
CS.INIT >LIBLOADP L.LIB.LIBSTR
|
||||||
sta hLIBSTR
|
sta hLIBSTR
|
||||||
stz hDIRPATH
|
stz hDIRPATH
|
||||||
stz hS.LISTDIR
|
stz hS.LISTDIR
|
||||||
stz hVOLHEADER
|
stz hVOLHEADER
|
||||||
stz hDIRHEADER
|
stz hDIRHEADER
|
||||||
stz bSTOP
|
stz bSTOP
|
||||||
stz bCANCEL
|
stz bCANCEL
|
||||||
|
|
||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
lda (pPsContext),y
|
lda (pPsContext),y
|
||||||
beq .1
|
beq .1
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>STYA ZPQuickPtr1
|
>STYA ZPQuickPtr1
|
||||||
lda (ZPQuickPtr1)
|
lda (ZPQuickPtr1)
|
||||||
beq .1
|
beq .1
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
cmp #'/'
|
cmp #'/'
|
||||||
bne .10
|
bne .10
|
||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
bra .2
|
bra .2
|
||||||
|
|
||||||
.10 ldy #S.PS.hARGS
|
.10 ldy #S.PS.hARGS
|
||||||
lda (pPsContext),y
|
lda (pPsContext),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
ldy #S.PS.hPREFIX
|
ldy #S.PS.hPREFIX
|
||||||
lda (pPsContext),y
|
lda (pPsContext),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>SYSCALL SYS.PStrCat
|
>SYSCALL SYS.PStrCat
|
||||||
sta hDIRPATH
|
sta hDIRPATH
|
||||||
bra .3
|
bra .3
|
||||||
|
|
||||||
.1 ldy #S.PS.hPREFIX
|
.1 ldy #S.PS.hPREFIX
|
||||||
.2 lda (pPsContext),y
|
.2 lda (pPsContext),y
|
||||||
|
|
||||||
.3 >SYSCALL SYS.ListDirInitA
|
.3 >SYSCALL SYS.ListDirInitA
|
||||||
bcs .98
|
bcs .98
|
||||||
sta hS.LISTDIR
|
sta hS.LISTDIR
|
||||||
|
|
||||||
lda (pPsContext)
|
lda (pPsContext)
|
||||||
ora #S.PS.F.EVENT Now accept events
|
ora #S.PS.F.EVENT Now accept events
|
||||||
sta (pPsContext)
|
sta (pPsContext)
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.98 pha
|
.98 pha
|
||||||
lda hLIBSTR
|
lda hLIBSTR
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
pla
|
pla
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN lda bCANCEL
|
CS.RUN lda bCANCEL
|
||||||
beq .1
|
beq .1
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 lda bSTOP
|
.1 lda bSTOP
|
||||||
beq .2
|
beq .2
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.2 lda hS.LISTDIR
|
.2 lda hS.LISTDIR
|
||||||
>SYSCALL SYS.ListDirNextA
|
>SYSCALL SYS.ListDirNextA
|
||||||
bcc .3
|
bcc .3
|
||||||
|
|
||||||
jmp Push.Footer
|
jmp Push.Footer
|
||||||
|
|
||||||
.3 pha
|
.3 pha
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>STYA ZPQuickPtr1
|
>STYA ZPQuickPtr1
|
||||||
lda (ZPQuickPtr1)
|
lda (ZPQuickPtr1)
|
||||||
pha
|
pha
|
||||||
|
|
||||||
and #$0F
|
and #$0F
|
||||||
sta (ZPQuickPtr1) Adjust Filename len
|
sta (ZPQuickPtr1) Adjust Filename len
|
||||||
|
|
||||||
pla
|
pla
|
||||||
and #$F0
|
and #$F0
|
||||||
cmp #$F0 Volume ($F) HEADER ?
|
cmp #$F0 Volume ($F) HEADER ?
|
||||||
bne .31
|
bne .31
|
||||||
|
|
||||||
pla
|
pla
|
||||||
sta hVOLHEADER
|
sta hVOLHEADER
|
||||||
>PUSHW ZPQuickPtr1
|
>PUSHW ZPQuickPtr1
|
||||||
>PUSHW L.MSG.VOL.HEADER
|
>PUSHW L.MSG.VOL.HEADER
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.31 cmp #$E0 Dir ($E) HEADER ?
|
.31 cmp #$E0 Dir ($E) HEADER ?
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
pla
|
pla
|
||||||
sta hDIRHEADER
|
sta hDIRHEADER
|
||||||
|
|
||||||
>PUSHW ZPQuickPtr1
|
>PUSHW ZPQuickPtr1
|
||||||
>PUSHW L.MSG.DIR.HEADER
|
>PUSHW L.MSG.DIR.HEADER
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.4 cmp #$D0 Directory ?
|
.4 cmp #$D0 Directory ?
|
||||||
bne .5
|
bne .5
|
||||||
jsr Push.Dates
|
jsr Push.Dates
|
||||||
jsr Push.Dir
|
jsr Push.Dir
|
||||||
>PUSHW L.MSG.DIR
|
>PUSHW L.MSG.DIR
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.5 cmp #$C0 Volume Name ?
|
.5 cmp #$C0 Volume Name ?
|
||||||
bne .6
|
bne .6
|
||||||
|
|
||||||
>PUSHW ZPQuickPtr1
|
>PUSHW ZPQuickPtr1
|
||||||
>PUSHW L.MSG.VOL
|
>PUSHW L.MSG.VOL
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.6 jsr Push.Dates File
|
.6 jsr Push.Dates File
|
||||||
jsr Push.File
|
jsr Push.File
|
||||||
>PUSHW L.MSG.FILE
|
>PUSHW L.MSG.FILE
|
||||||
|
|
||||||
.8 >LIBCALL hLIBSTR,LIBSTR.PRINTF
|
.8 >LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
.9 pla
|
.9 pla
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Push.Dir ldy #$1E get access mask
|
Push.Dir ldy #$1E get access mask
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>PUSHW ZPQuickPtr1
|
>PUSHW ZPQuickPtr1
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Push.File >PUSHBI 0 4th byte of file len=0
|
Push.File >PUSHBI 0 4th byte of file len=0
|
||||||
ldy #$17 get file len (3 bytes)
|
ldy #$17 get file len (3 bytes)
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
ldy #$1E get access mask
|
ldy #$1E get access mask
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
ldy #$20 get aux type
|
ldy #$20 get aux type
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
ldy #$10 get filetype
|
ldy #$10 get filetype
|
||||||
|
|
||||||
lda L.PRODOS.FT.TXT
|
lda L.PRODOS.FT.TXT
|
||||||
sta ZPQuickPtr2
|
sta ZPQuickPtr2
|
||||||
lda L.PRODOS.FT.TXT+1
|
lda L.PRODOS.FT.TXT+1
|
||||||
sta ZPQuickPtr2+1
|
sta ZPQuickPtr2+1
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.1 lda (ZPQuickPtr1),y
|
.1 lda (ZPQuickPtr1),y
|
||||||
cmp PRODOS.FT.ID,x
|
cmp PRODOS.FT.ID,x
|
||||||
beq .3
|
beq .3
|
||||||
lda ZPQuickPtr2
|
lda ZPQuickPtr2
|
||||||
clc
|
clc
|
||||||
adc #4
|
adc #4
|
||||||
sta ZPQuickPtr2
|
sta ZPQuickPtr2
|
||||||
bcc .2
|
bcc .2
|
||||||
inc ZPQuickPtr2+1
|
inc ZPQuickPtr2+1
|
||||||
.2 inx
|
.2 inx
|
||||||
cpx PRODOS.FT.COUNT
|
cpx PRODOS.FT.COUNT
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
tax
|
tax
|
||||||
lda HEXDIGIT,x
|
lda HEXDIGIT,x
|
||||||
sta PRODOS.FT.DFLT+2
|
sta PRODOS.FT.DFLT+2
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
and #$0F
|
and #$0F
|
||||||
tax
|
tax
|
||||||
lda HEXDIGIT,x
|
lda HEXDIGIT,x
|
||||||
sta PRODOS.FT.DFLT+3
|
sta PRODOS.FT.DFLT+3
|
||||||
|
|
||||||
.3 >PUSHW ZPQuickPtr2
|
.3 >PUSHW ZPQuickPtr2
|
||||||
>PUSHW ZPQuickPtr1
|
>PUSHW ZPQuickPtr1
|
||||||
>LIBCALL hLIBSTR,LIBSTR.LCASEP
|
>LIBCALL hLIBSTR,LIBSTR.LCASEP
|
||||||
>PUSHW ZPQuickPtr1
|
>PUSHW ZPQuickPtr1
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Push.Dates ldy #$24 get modification time
|
Push.Dates ldy #$24 get modification time
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
ldy #$22
|
ldy #$22
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
ldy #$1B get creation time
|
ldy #$1B get creation time
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
ldy #$19
|
ldy #$19
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Push.Footer lda hVOLHEADER
|
Push.Footer lda hVOLHEADER
|
||||||
beq .20
|
beq .20
|
||||||
|
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>STYA ZPQuickPtr1
|
>STYA ZPQuickPtr1
|
||||||
|
|
||||||
ldy #22 file_count
|
ldy #22 file_count
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
>PUSHW L.MSG.VOL.END
|
>PUSHW L.MSG.VOL.END
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
.20 lda hDIRHEADER
|
.20 lda hDIRHEADER
|
||||||
beq .21
|
beq .21
|
||||||
|
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>STYA ZPQuickPtr1
|
>STYA ZPQuickPtr1
|
||||||
|
|
||||||
ldy #22 file_count
|
ldy #22 file_count
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
>PUSHW L.MSG.DIR.END
|
>PUSHW L.MSG.DIR.END
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
.21 sec
|
.21 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
ldy #S.PS.hINDEV
|
ldy #S.PS.hINDEV
|
||||||
cmp (pPsContext),y
|
cmp (pPsContext),y
|
||||||
bne .9
|
bne .9
|
||||||
lda (pEvent)
|
lda (pEvent)
|
||||||
and #S.EVT.F.KEY is it a KEY event?
|
and #S.EVT.F.KEY is it a KEY event?
|
||||||
beq .9
|
beq .9
|
||||||
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
|
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
bne .9
|
bne .9
|
||||||
ldy #S.EVT.DATALO
|
ldy #S.EVT.DATALO
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
cmp #$03 Ctrl-C
|
cmp #$03 Ctrl-C
|
||||||
bne .1
|
bne .1
|
||||||
lda #$FF
|
lda #$FF
|
||||||
sta bCANCEL
|
sta bCANCEL
|
||||||
bra .8
|
bra .8
|
||||||
.1 cmp #$13 Ctrl-S
|
.1 cmp #$13 Ctrl-S
|
||||||
bne .8
|
bne .8
|
||||||
lda bSTOP
|
lda bSTOP
|
||||||
eor #$FF
|
eor #$FF
|
||||||
sta bSTOP
|
sta bSTOP
|
||||||
.8 >SYSCALL SYS.DestroyEvent
|
.8 >SYSCALL SYS.DestroyEvent
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT lda hVOLHEADER
|
CS.QUIT lda hVOLHEADER
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
|
|
||||||
.1 lda hDIRHEADER
|
.1 lda hDIRHEADER
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
|
|
||||||
.2 lda hS.LISTDIR
|
.2 lda hS.LISTDIR
|
||||||
>SYSCALL SYS.ListDirCloseA
|
>SYSCALL SYS.ListDirCloseA
|
||||||
|
|
||||||
lda hDIRPATH
|
lda hDIRPATH
|
||||||
beq .3
|
beq .3
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
|
|
||||||
.3 lda hLIBSTR
|
.3 lda hLIBSTR
|
||||||
>SYSCALL SYS.UnloadLibA
|
>SYSCALL SYS.UnloadLibA
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
LIB.LIBSTR >PSTRING "libstr.o"
|
LIB.LIBSTR >PSTRING "libstr.o"
|
||||||
MSG.VOL.HEADER >CSTRING "Volume Listing Of %S\n"
|
MSG.VOL.HEADER >CSTRING "Volume Listing Of %S\n"
|
||||||
MSG.DIR.HEADER >CSTRING "Directory Listing Of %S\n"
|
MSG.DIR.HEADER >CSTRING "Directory Listing Of %S\n"
|
||||||
MSG.VOL >CSTRING "/%S\n"
|
MSG.VOL >CSTRING "/%S\n"
|
||||||
MSG.DIR >CSTRING "/%15S <dir> %a %T %t %T %t\n"
|
MSG.DIR >CSTRING "/%15S <dir> %a %T %t %T %t\n"
|
||||||
MSG.FILE >CSTRING "%15S %S $%H %a %8L %T %t %T %t\n"
|
MSG.FILE >CSTRING "%15S %S $%H %a %8L %T %t %T %t\n"
|
||||||
MSG.VOL.END >CSTRING "%D Files In Volume.\n"
|
MSG.VOL.END >CSTRING "%D Files In Volume.\n"
|
||||||
MSG.DIR.END >CSTRING "%D Files In Directory.\n"
|
MSG.DIR.END >CSTRING "%D Files In Directory.\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PRODOS.FT.COUNT .HS 07
|
PRODOS.FT.COUNT .HS 07
|
||||||
PRODOS.FT.ID .HS 0406FAFCFDE2FF
|
PRODOS.FT.ID .HS 0406FAFCFDE2FF
|
||||||
PRODOS.FT.TXT
|
PRODOS.FT.TXT
|
||||||
T04 >PSTRING "TXT"
|
T04 >PSTRING "TXT"
|
||||||
T06 >PSTRING "BIN"
|
T06 >PSTRING "BIN"
|
||||||
TFA >PSTRING "S-C"
|
TFA >PSTRING "S-C"
|
||||||
TFC >PSTRING "BAS"
|
TFC >PSTRING "BAS"
|
||||||
TFD >PSTRING "VAR"
|
TFD >PSTRING "VAR"
|
||||||
TE2 >PSTRING "ATK"
|
TE2 >PSTRING "ATK"
|
||||||
TFF >PSTRING "SYS"
|
TFF >PSTRING "SYS"
|
||||||
PRODOS.FT.DFLT >PSTRING "$ "
|
PRODOS.FT.DFLT >PSTRING "$ "
|
||||||
HEXDIGIT .AS '0123456789ABCDEF'
|
HEXDIGIT .AS '0123456789ABCDEF'
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DS.START
|
DS.START
|
||||||
hLIBSTR .BS 1
|
hLIBSTR .BS 1
|
||||||
hDIRPATH .BS 1
|
hDIRPATH .BS 1
|
||||||
hS.LISTDIR .BS 1
|
hS.LISTDIR .BS 1
|
||||||
hVOLHEADER .BS 1
|
hVOLHEADER .BS 1
|
||||||
hDIRHEADER .BS 1
|
hDIRHEADER .BS 1
|
||||||
bSTOP .BS 1
|
bSTOP .BS 1
|
||||||
bCANCEL .BS 1
|
bCANCEL .BS 1
|
||||||
DS.END
|
DS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE BIN/LS.S
|
SAVE BIN/LS.S
|
||||||
ASM
|
ASM
|
||||||
|
|
278
BIN/LSDEV.S.txt
278
BIN/LSDEV.S.txt
|
@ -1,139 +1,139 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /DATA/A2OSX
|
PREFIX /DATA/A2OSX
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF BIN/LSDEV
|
.TF BIN/LSDEV
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
.INB INC/KERNEL.I
|
.INB INC/KERNEL.I
|
||||||
.INB INC/LIBSTR.I
|
.INB INC/LIBSTR.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPPTR1 .EQ ZPBIN
|
ZPPTR1 .EQ ZPBIN
|
||||||
ZPPTR2 .EQ ZPBIN+2
|
ZPPTR2 .EQ ZPBIN+2
|
||||||
ZPPTR3 .EQ ZPBIN+4
|
ZPPTR3 .EQ ZPBIN+4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Main entry point
|
* Main entry point
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Code signature and INIT table
|
* Code signature and INIT table
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CLD $D8
|
* CLD $D8
|
||||||
* JMP (*,x) $7C
|
* JMP (*,x) $7C
|
||||||
* #JMPTABLE
|
* #JMPTABLE
|
||||||
* /JMPTABLE
|
* /JMPTABLE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.START cld
|
CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.1 .DA CS.INIT
|
.1 .DA CS.INIT
|
||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.EVENT
|
.DA CS.EVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.LIBSTR .DA LIBSTR
|
L.LIBSTR .DA LIBSTR
|
||||||
L.MSG0 .DA MSG0
|
L.MSG0 .DA MSG0
|
||||||
L.MSG1 .DA MSG1
|
L.MSG1 .DA MSG1
|
||||||
L.MSG2 .DA MSG2
|
L.MSG2 .DA MSG2
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA CS.END-CS.START Code Length To Relocate
|
.DA CS.END-CS.START Code Length To Relocate
|
||||||
.DA 0 Data Segment to Allocate
|
.DA 0 Data Segment to Allocate
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT >LIBLOADP L.LIBSTR
|
CS.INIT >LIBLOADP L.LIBSTR
|
||||||
* bcs .9
|
* bcs .9
|
||||||
sta hLIBSTR
|
sta hLIBSTR
|
||||||
|
|
||||||
>SYSCALL SYS.GetDevTable
|
>SYSCALL SYS.GetDevTable
|
||||||
>STYA ZPPTR1
|
>STYA ZPPTR1
|
||||||
stz DEV.COUNT
|
stz DEV.COUNT
|
||||||
|
|
||||||
L0 >PUSHW L.MSG0
|
L0 >PUSHW L.MSG0
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
lda #22
|
lda #22
|
||||||
sta LINE.COUNT
|
sta LINE.COUNT
|
||||||
L1 lda (ZPPTR1)
|
L1 lda (ZPPTR1)
|
||||||
bmi .1
|
bmi .1
|
||||||
jmp L41
|
jmp L41
|
||||||
|
|
||||||
.1 ldy #S.DEV.hARGS
|
.1 ldy #S.DEV.hARGS
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
beq L10
|
beq L10
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
bra L11
|
bra L11
|
||||||
|
|
||||||
L10 >PUSHW L.MSG2
|
L10 >PUSHW L.MSG2
|
||||||
|
|
||||||
L11 ldy #S.DEV.hCMD
|
L11 ldy #S.DEV.hCMD
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
beq L12
|
beq L12
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
bra L13
|
bra L13
|
||||||
|
|
||||||
L12 >PUSHW L.MSG2
|
L12 >PUSHW L.MSG2
|
||||||
|
|
||||||
L13 lda ZPPTR1
|
L13 lda ZPPTR1
|
||||||
clc
|
clc
|
||||||
adc #S.DEV.NAME
|
adc #S.DEV.NAME
|
||||||
sta ZPPTR2
|
sta ZPPTR2
|
||||||
lda ZPPTR1+1
|
lda ZPPTR1+1
|
||||||
adc #0
|
adc #0
|
||||||
sta ZPPTR2+1
|
sta ZPPTR2+1
|
||||||
>PUSHW ZPPTR2
|
>PUSHW ZPPTR2
|
||||||
|
|
||||||
ldy #S.DEV.hOWNERPS
|
ldy #S.DEV.hOWNERPS
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
>PUSHA Owner PSID
|
>PUSHA Owner PSID
|
||||||
lda (ZPPTR1) push flags
|
lda (ZPPTR1) push flags
|
||||||
>PUSHA
|
>PUSHA
|
||||||
ldy #S.DEV.ID
|
ldy #S.DEV.ID
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
>PUSHA DevID
|
>PUSHA DevID
|
||||||
>PUSHW L.MSG1
|
>PUSHW L.MSG1
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
L4 dec LINE.COUNT
|
L4 dec LINE.COUNT
|
||||||
L41 lda ZPPTR1
|
L41 lda ZPPTR1
|
||||||
clc
|
clc
|
||||||
adc #S.DEV.SIZE
|
adc #S.DEV.SIZE
|
||||||
sta ZPPTR1
|
sta ZPPTR1
|
||||||
bcc L5
|
bcc L5
|
||||||
inc ZPPTR1+1
|
inc ZPPTR1+1
|
||||||
L5 inc DEV.COUNT
|
L5 inc DEV.COUNT
|
||||||
lda DEV.COUNT
|
lda DEV.COUNT
|
||||||
cmp #K.DEV.MAX
|
cmp #K.DEV.MAX
|
||||||
beq L8
|
beq L8
|
||||||
lda LINE.COUNT
|
lda LINE.COUNT
|
||||||
beq L6
|
beq L6
|
||||||
jmp L1
|
jmp L1
|
||||||
L6 >DEBUG
|
L6 >DEBUG
|
||||||
jmp L0
|
jmp L0
|
||||||
|
|
||||||
L8 lda #0 tell TSKMGR that all done ok, but
|
L8 lda #0 tell TSKMGR that all done ok, but
|
||||||
sec we do not want to stay in memory
|
sec we do not want to stay in memory
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN
|
CS.RUN
|
||||||
CS.EVENT clc
|
CS.EVENT clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT lda hLIBSTR
|
CS.QUIT lda hLIBSTR
|
||||||
|
|
||||||
bra *
|
bra *
|
||||||
|
|
||||||
>SYSCALL SYS.UnloadLibA
|
>SYSCALL SYS.UnloadLibA
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
hLIBSTR .BS 1
|
hLIBSTR .BS 1
|
||||||
DEV.COUNT .BS 1
|
DEV.COUNT .BS 1
|
||||||
LINE.COUNT .BS 1
|
LINE.COUNT .BS 1
|
||||||
LIBSTR >PSTRING "libstr.o"
|
LIBSTR >PSTRING "libstr.o"
|
||||||
MSG0 >CSTRING "hDev Flags PID NAME CMD ARGS\n"
|
MSG0 >CSTRING "hDev Flags PID NAME CMD ARGS\n"
|
||||||
MSG1 >CSTRING " %03d %b $%h %4S %16S %32S\n"
|
MSG1 >CSTRING " %03d %b $%h %4S %16S %32S\n"
|
||||||
MSG2 >PSTRING "(none)"
|
MSG2 >PSTRING "(none)"
|
||||||
MAN
|
MAN
|
||||||
SAVE BIN/LSDEV.S
|
SAVE BIN/LSDEV.S
|
||||||
ASM
|
ASM
|
||||||
|
|
570
BIN/MEM.S.txt
570
BIN/MEM.S.txt
|
@ -1,285 +1,285 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /DATA/A2OSX
|
PREFIX /DATA/A2OSX
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF BIN/MEM
|
.TF BIN/MEM
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
.INB INC/LIBSTR.I
|
.INB INC/LIBSTR.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPPTR1 .EQ ZPBIN
|
ZPPTR1 .EQ ZPBIN
|
||||||
ZPPTR2 .EQ ZPBIN+2
|
ZPPTR2 .EQ ZPBIN+2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Main entry point
|
* Main entry point
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Code signature and INIT table
|
* Code signature and INIT table
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CLD $D8
|
* CLD $D8
|
||||||
* JMP (*,x) $7C
|
* JMP (*,x) $7C
|
||||||
* #JMPTABLE
|
* #JMPTABLE
|
||||||
* /JMPTABLE
|
* /JMPTABLE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.START cld
|
CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.1 .DA CS.INIT
|
.1 .DA CS.INIT
|
||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.DOEVENT
|
.DA CS.DOEVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.LIBSTR .DA LIBSTR
|
L.LIBSTR .DA LIBSTR
|
||||||
L.MSG0 .DA MSG0
|
L.MSG0 .DA MSG0
|
||||||
L.MSG1 .DA MSG1
|
L.MSG1 .DA MSG1
|
||||||
L.MSG2 .DA MSG2
|
L.MSG2 .DA MSG2
|
||||||
L.MSG3 .DA MSG3
|
L.MSG3 .DA MSG3
|
||||||
L.MSG4 .DA MSG4
|
L.MSG4 .DA MSG4
|
||||||
L.MSG5 .DA MSG5
|
L.MSG5 .DA MSG5
|
||||||
L.MSG6 .DA MSG6
|
L.MSG6 .DA MSG6
|
||||||
L.MSG7 .DA MSG7
|
L.MSG7 .DA MSG7
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA CS.END-CS.START Code Length To Relocate
|
.DA CS.END-CS.START Code Length To Relocate
|
||||||
.DA DS.END-DS.START Data Segment to Allocate
|
.DA DS.END-DS.START Data Segment to Allocate
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT >LIBLOADP L.LIBSTR
|
CS.INIT >LIBLOADP L.LIBSTR
|
||||||
bcs .9
|
bcs .9
|
||||||
sta hLIBSTR
|
sta hLIBSTR
|
||||||
|
|
||||||
stz LINE.COUNT
|
stz LINE.COUNT
|
||||||
stz MEM.COUNT
|
stz MEM.COUNT
|
||||||
stz USED.COUNT
|
stz USED.COUNT
|
||||||
stz bSTOP
|
stz bSTOP
|
||||||
stz bCANCEL
|
stz bCANCEL
|
||||||
|
|
||||||
lda (pPsContext)
|
lda (pPsContext)
|
||||||
ora #S.PS.F.EVENT Now accept events
|
ora #S.PS.F.EVENT Now accept events
|
||||||
sta (pPsContext)
|
sta (pPsContext)
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN lda bCANCEL
|
CS.RUN lda bCANCEL
|
||||||
bne .99
|
bne .99
|
||||||
lda bSTOP
|
lda bSTOP
|
||||||
bne .8
|
bne .8
|
||||||
lda LINE.COUNT
|
lda LINE.COUNT
|
||||||
bne .1
|
bne .1
|
||||||
>PUSHW L.MSG0
|
>PUSHW L.MSG0
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
.1 lda MEM.COUNT
|
.1 lda MEM.COUNT
|
||||||
>SYSCALL SYS.GetMemByIDA
|
>SYSCALL SYS.GetMemByIDA
|
||||||
>STYA ZPPTR1
|
>STYA ZPPTR1
|
||||||
lda (ZPPTR1)
|
lda (ZPPTR1)
|
||||||
bpl .2
|
bpl .2
|
||||||
inc USED.COUNT
|
inc USED.COUNT
|
||||||
.2 jsr CS.RUN.PRINTMEM
|
.2 jsr CS.RUN.PRINTMEM
|
||||||
|
|
||||||
inc MEM.COUNT
|
inc MEM.COUNT
|
||||||
lda MEM.COUNT
|
lda MEM.COUNT
|
||||||
cmp MEMMGR.TABLESIZE
|
cmp MEMMGR.TABLESIZE
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
.8
|
.8
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 jsr CS.RUN.PRINTEND
|
.9 jsr CS.RUN.PRINTEND
|
||||||
.99 sec
|
.99 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.PRINTMEM ldy #S.MEM.LEN
|
CS.RUN.PRINTMEM ldy #S.MEM.LEN
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
pha
|
pha
|
||||||
iny
|
iny
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
ply
|
ply
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
ldy #S.MEM.PTR
|
ldy #S.MEM.PTR
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
pha
|
pha
|
||||||
iny
|
iny
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
ply
|
ply
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
ldy #S.MEM.REFCNT
|
ldy #S.MEM.REFCNT
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
ldy #S.MEM.OWNERPID
|
ldy #S.MEM.OWNERPID
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
lda (ZPPTR1)
|
lda (ZPPTR1)
|
||||||
>PUSHA
|
>PUSHA
|
||||||
lda MEM.COUNT
|
lda MEM.COUNT
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>PUSHW L.MSG1
|
>PUSHW L.MSG1
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
ldy #S.MEM.BIN
|
ldy #S.MEM.BIN
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
ldy #S.MEM.PTR
|
ldy #S.MEM.PTR
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
sta ZPPTR2
|
sta ZPPTR2
|
||||||
iny
|
iny
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
sta ZPPTR2+1
|
sta ZPPTR2+1
|
||||||
lda #"{"
|
lda #"{"
|
||||||
jsr COUT
|
jsr COUT
|
||||||
lda (ZPPTR2)
|
lda (ZPPTR2)
|
||||||
jsr PRBYTE
|
jsr PRBYTE
|
||||||
lda #"|"
|
lda #"|"
|
||||||
jsr COUT
|
jsr COUT
|
||||||
ldy #1
|
ldy #1
|
||||||
.1 lda (ZPPTR2),y
|
.1 lda (ZPPTR2),y
|
||||||
ora #$80
|
ora #$80
|
||||||
cmp #$A0
|
cmp #$A0
|
||||||
bcs .2
|
bcs .2
|
||||||
ora #$20
|
ora #$20
|
||||||
.2 jsr COUT
|
.2 jsr COUT
|
||||||
iny
|
iny
|
||||||
cpy #40
|
cpy #40
|
||||||
bne .1
|
bne .1
|
||||||
lda #"}"
|
lda #"}"
|
||||||
jsr COUT
|
jsr COUT
|
||||||
bra .4
|
bra .4
|
||||||
|
|
||||||
.3 >SYSCALL SYS.GetMemPtrA
|
.3 >SYSCALL SYS.GetMemPtrA
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTP
|
>LIBCALL hLIBSTR,LIBSTR.PRINTP
|
||||||
|
|
||||||
.4 jsr CROUT
|
.4 jsr CROUT
|
||||||
inc LINE.COUNT
|
inc LINE.COUNT
|
||||||
lda LINE.COUNT
|
lda LINE.COUNT
|
||||||
cmp #22
|
cmp #22
|
||||||
bne .5
|
bne .5
|
||||||
lda #$FF
|
lda #$FF
|
||||||
sta bSTOP
|
sta bSTOP
|
||||||
stz LINE.COUNT
|
stz LINE.COUNT
|
||||||
.5 rts
|
.5 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.PRINTEND >PUSHB MEM.COUNT
|
CS.RUN.PRINTEND >PUSHB MEM.COUNT
|
||||||
>PUSHB USED.COUNT
|
>PUSHB USED.COUNT
|
||||||
>PUSHW L.MSG2
|
>PUSHW L.MSG2
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
>PUSHW MEMMGR.LOMEM
|
>PUSHW MEMMGR.LOMEM
|
||||||
>PUSHW L.MSG3
|
>PUSHW L.MSG3
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
>PUSHW MEMMGR.MLLIMIT
|
>PUSHW MEMMGR.MLLIMIT
|
||||||
>PUSHW L.MSG4
|
>PUSHW L.MSG4
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
>PUSHW MEMMGR.MHLIMIT
|
>PUSHW MEMMGR.MHLIMIT
|
||||||
>PUSHW L.MSG5
|
>PUSHW L.MSG5
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
>PUSHW MEMMGR.HIMEM
|
>PUSHW MEMMGR.HIMEM
|
||||||
>PUSHW L.MSG6
|
>PUSHW L.MSG6
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
>PUSHW MEMMGR.MFREE
|
>PUSHW MEMMGR.MFREE
|
||||||
>PUSHW L.MSG7
|
>PUSHW L.MSG7
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.DOEVENT >PULLW pEvent
|
CS.DOEVENT >PULLW pEvent
|
||||||
ldy #S.EVT.hDEV is Event from active IN device?
|
ldy #S.EVT.hDEV is Event from active IN device?
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
ldy #S.PS.hINDEV
|
ldy #S.PS.hINDEV
|
||||||
cmp (pPsContext),y
|
cmp (pPsContext),y
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
lda (pEvent)
|
lda (pEvent)
|
||||||
and #S.EVT.F.KEY is it a KEY event?
|
and #S.EVT.F.KEY is it a KEY event?
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
|
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
ldy #S.EVT.DATALO
|
ldy #S.EVT.DATALO
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
cmp #$03 Ctrl-C
|
cmp #$03 Ctrl-C
|
||||||
bne .1
|
bne .1
|
||||||
lda #$FF
|
lda #$FF
|
||||||
sta bCANCEL
|
sta bCANCEL
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.1 cmp #$13 Ctrl-S
|
.1 cmp #$13 Ctrl-S
|
||||||
bne .2
|
bne .2
|
||||||
lda bSTOP
|
lda bSTOP
|
||||||
eor #$FF
|
eor #$FF
|
||||||
sta bSTOP
|
sta bSTOP
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.2 lda bSTOP
|
.2 lda bSTOP
|
||||||
beq .8
|
beq .8
|
||||||
stz bSTOP
|
stz bSTOP
|
||||||
|
|
||||||
.8 >SYSCALL SYS.DestroyEvent
|
.8 >SYSCALL SYS.DestroyEvent
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT lda hLIBSTR
|
CS.QUIT lda hLIBSTR
|
||||||
>SYSCALL SYS.UnloadLibA
|
>SYSCALL SYS.UnloadLibA
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PRBYTE pha
|
PRBYTE pha
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
ora #$B0
|
ora #$B0
|
||||||
cmp #$BA
|
cmp #$BA
|
||||||
bcc .1
|
bcc .1
|
||||||
adc #6
|
adc #6
|
||||||
.1 jsr COUT
|
.1 jsr COUT
|
||||||
pla
|
pla
|
||||||
and #$0F
|
and #$0F
|
||||||
ora #$B0
|
ora #$B0
|
||||||
cmp #$BA
|
cmp #$BA
|
||||||
bcc COUT
|
bcc COUT
|
||||||
adc #6
|
adc #6
|
||||||
bra COUT
|
bra COUT
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CROUT lda #13
|
CROUT lda #13
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
COUT phx
|
COUT phx
|
||||||
phy
|
phy
|
||||||
>PUSHA
|
>PUSHA
|
||||||
ldy #S.PS.hOUTDEV
|
ldy #S.PS.hOUTDEV
|
||||||
lda (pPsContext),y
|
lda (pPsContext),y
|
||||||
>SYSCALL SYS.DevOutA
|
>SYSCALL SYS.DevOutA
|
||||||
ply
|
ply
|
||||||
plx
|
plx
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
DS.START
|
DS.START
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
hLIBSTR .BS 1
|
hLIBSTR .BS 1
|
||||||
LINE.COUNT .BS 1
|
LINE.COUNT .BS 1
|
||||||
MEM.COUNT .BS 1
|
MEM.COUNT .BS 1
|
||||||
USED.COUNT .BS 1
|
USED.COUNT .BS 1
|
||||||
bSTOP .BS 1
|
bSTOP .BS 1
|
||||||
bCANCEL .BS 1
|
bCANCEL .BS 1
|
||||||
LIBSTR >PSTRING "libstr.o"
|
LIBSTR >PSTRING "libstr.o"
|
||||||
MSG0 >CSTRING "hMem Flags PID REF PTR LEN BINPATH/DATA\n"
|
MSG0 >CSTRING "hMem Flags PID REF PTR LEN BINPATH/DATA\n"
|
||||||
MSG1 >CSTRING " %03d %b $%h $%h $%H $%H "
|
MSG1 >CSTRING " %03d %b $%h $%h $%H $%H "
|
||||||
MSG2 >CSTRING "\nAllocated hMem:%d, Total:%d\n"
|
MSG2 >CSTRING "\nAllocated hMem:%d, Total:%d\n"
|
||||||
MSG3 >CSTRING "Low Memory: $%H\n"
|
MSG3 >CSTRING "Low Memory: $%H\n"
|
||||||
MSG4 >CSTRING "Low Free PTR: $%H\n"
|
MSG4 >CSTRING "Low Free PTR: $%H\n"
|
||||||
MSG5 >CSTRING "High Free PTR: $%H\n"
|
MSG5 >CSTRING "High Free PTR: $%H\n"
|
||||||
MSG6 >CSTRING "High Memory: $%H\n"
|
MSG6 >CSTRING "High Memory: $%H\n"
|
||||||
MSG7 >CSTRING "\nFree Memory: %D Bytes.\n"
|
MSG7 >CSTRING "\nFree Memory: %D Bytes.\n"
|
||||||
DS.END
|
DS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE BIN/MEM.S
|
SAVE BIN/MEM.S
|
||||||
ASM
|
ASM
|
||||||
|
|
412
BIN/NETCFG.S.txt
412
BIN/NETCFG.S.txt
|
@ -1,206 +1,206 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /DATA/A2OSX
|
PREFIX /DATA/A2OSX
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF BIN/NETCFG
|
.TF BIN/NETCFG
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
.INB INC/KERNEL.I
|
.INB INC/KERNEL.I
|
||||||
.INB INC/LIBSTR.I
|
.INB INC/LIBSTR.I
|
||||||
.INB INC/LIBTCPIP.I
|
.INB INC/LIBTCPIP.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPPTR1 .EQ ZPBIN
|
ZPPTR1 .EQ ZPBIN
|
||||||
ZPPTR2 .EQ ZPBIN+2
|
ZPPTR2 .EQ ZPBIN+2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Main entry point
|
* Main entry point
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Code signature and INIT table
|
* Code signature and INIT table
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CLD $D8
|
* CLD $D8
|
||||||
* JMP (*,x) $7C
|
* JMP (*,x) $7C
|
||||||
* #JMPTABLE
|
* #JMPTABLE
|
||||||
* /JMPTABLE
|
* /JMPTABLE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.START cld
|
CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.1 .DA CS.INIT
|
.1 .DA CS.INIT
|
||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.DOEVENT
|
.DA CS.DOEVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.LIBSTR .DA LIBSTR
|
L.LIBSTR .DA LIBSTR
|
||||||
L.MSG0 .DA MSG0
|
L.MSG0 .DA MSG0
|
||||||
L.MSG0.0 .DA MSG0.0
|
L.MSG0.0 .DA MSG0.0
|
||||||
L.MSG0.1 .DA MSG0.1
|
L.MSG0.1 .DA MSG0.1
|
||||||
L.MSG0.2 .DA MSG0.2
|
L.MSG0.2 .DA MSG0.2
|
||||||
L.MSG0.N .DA MSG0.N
|
L.MSG0.N .DA MSG0.N
|
||||||
L.MSG0.U .DA MSG0.U
|
L.MSG0.U .DA MSG0.U
|
||||||
L.MSG0.C .DA MSG0.C
|
L.MSG0.C .DA MSG0.C
|
||||||
L.MSG1.DEV .DA MSG1.DEV
|
L.MSG1.DEV .DA MSG1.DEV
|
||||||
L.MSG1.DHCPSRVR .DA MSG1.DHCPSRVR
|
L.MSG1.DHCPSRVR .DA MSG1.DHCPSRVR
|
||||||
L.MSG1.IP .DA MSG1.IP
|
L.MSG1.IP .DA MSG1.IP
|
||||||
L.MSG1.GW .DA MSG1.GW
|
L.MSG1.GW .DA MSG1.GW
|
||||||
L.MSG1.DNS .DA MSG1.DNS
|
L.MSG1.DNS .DA MSG1.DNS
|
||||||
L.MSG1.HOSTNAME .DA MSG1.HOSTNAME
|
L.MSG1.HOSTNAME .DA MSG1.HOSTNAME
|
||||||
L.MSG1.DOMAIN .DA MSG1.DOMAIN
|
L.MSG1.DOMAIN .DA MSG1.DOMAIN
|
||||||
L.MSG1.END .DA MSG1.END
|
L.MSG1.END .DA MSG1.END
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA CS.END-CS.START Code Length To Relocate
|
.DA CS.END-CS.START Code Length To Relocate
|
||||||
.DA DS.END-DS.START Data Segemnt to Allocate
|
.DA DS.END-DS.START Data Segemnt to Allocate
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT >LIBLOADP L.LIBSTR
|
CS.INIT >LIBLOADP L.LIBSTR
|
||||||
sta hLIBSTR
|
sta hLIBSTR
|
||||||
|
|
||||||
lda #K.PROTOID.IP
|
lda #K.PROTOID.IP
|
||||||
>SYSCALL SYS.GetNetCfgA
|
>SYSCALL SYS.GetNetCfgA
|
||||||
bcc CS.INIT.LOADED
|
bcc CS.INIT.LOADED
|
||||||
|
|
||||||
>PUSHW L.MSG0.N
|
>PUSHW L.MSG0.N
|
||||||
>PUSHW L.MSG0.2
|
>PUSHW L.MSG0.2
|
||||||
>PUSHW L.MSG0
|
>PUSHW L.MSG0
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
jmp CS.INIT.END
|
jmp CS.INIT.END
|
||||||
|
|
||||||
CS.INIT.LOADED >STYA ZPPTR1
|
CS.INIT.LOADED >STYA ZPPTR1
|
||||||
|
|
||||||
ldy #S.IPCFG.STATUS
|
ldy #S.IPCFG.STATUS
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
bmi CS.INIT.CONFOK
|
bmi CS.INIT.CONFOK
|
||||||
|
|
||||||
>PUSHW L.MSG0.U
|
>PUSHW L.MSG0.U
|
||||||
>PUSHW L.MSG0.2
|
>PUSHW L.MSG0.2
|
||||||
>PUSHW L.MSG0
|
>PUSHW L.MSG0
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
jsr CS.INIT.DEV.MAC
|
jsr CS.INIT.DEV.MAC
|
||||||
jmp CS.INIT.END
|
jmp CS.INIT.END
|
||||||
|
|
||||||
CS.INIT.CONFOK >PUSHW L.MSG0.C
|
CS.INIT.CONFOK >PUSHW L.MSG0.C
|
||||||
>PUSHW L.MSG0.2
|
>PUSHW L.MSG0.2
|
||||||
>PUSHW L.MSG0
|
>PUSHW L.MSG0
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
jsr CS.INIT.DEV.MAC
|
jsr CS.INIT.DEV.MAC
|
||||||
|
|
||||||
ldy #S.IPCFG.DHCPSRVR+3
|
ldy #S.IPCFG.DHCPSRVR+3
|
||||||
ldx #4
|
ldx #4
|
||||||
L1 >PUSHB (ZPPTR1),y
|
L1 >PUSHB (ZPPTR1),y
|
||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
bne L1
|
bne L1
|
||||||
>PUSHW L.MSG1.DHCPSRVR
|
>PUSHW L.MSG1.DHCPSRVR
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
ldy #S.IPCFG.IP+7 IP/MASK
|
ldy #S.IPCFG.IP+7 IP/MASK
|
||||||
ldx #8
|
ldx #8
|
||||||
L2 >PUSHB (ZPPTR1),y
|
L2 >PUSHB (ZPPTR1),y
|
||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
bne L2
|
bne L2
|
||||||
>PUSHW L.MSG1.IP
|
>PUSHW L.MSG1.IP
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
ldy #S.IPCFG.GW+3
|
ldy #S.IPCFG.GW+3
|
||||||
ldx #4
|
ldx #4
|
||||||
L4 >PUSHB (ZPPTR1),y
|
L4 >PUSHB (ZPPTR1),y
|
||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
bne L4
|
bne L4
|
||||||
>PUSHW L.MSG1.GW
|
>PUSHW L.MSG1.GW
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
ldy #S.IPCFG.DNS+7
|
ldy #S.IPCFG.DNS+7
|
||||||
ldx #8
|
ldx #8
|
||||||
L5 >PUSHB (ZPPTR1),y
|
L5 >PUSHB (ZPPTR1),y
|
||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
bne L5
|
bne L5
|
||||||
>PUSHW L.MSG1.DNS
|
>PUSHW L.MSG1.DNS
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
lda ZPPTR1
|
lda ZPPTR1
|
||||||
clc
|
clc
|
||||||
adc #S.IPCFG.HOSTNAME
|
adc #S.IPCFG.HOSTNAME
|
||||||
tay
|
tay
|
||||||
lda ZPPTR1+1
|
lda ZPPTR1+1
|
||||||
adc #0
|
adc #0
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>PUSHW L.MSG1.HOSTNAME
|
>PUSHW L.MSG1.HOSTNAME
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
ldy #S.IPCFG.DOMAIN
|
ldy #S.IPCFG.DOMAIN
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
beq L6
|
beq L6
|
||||||
|
|
||||||
lda ZPPTR1
|
lda ZPPTR1
|
||||||
clc
|
clc
|
||||||
adc #S.IPCFG.DOMAIN
|
adc #S.IPCFG.DOMAIN
|
||||||
tay
|
tay
|
||||||
lda ZPPTR1+1
|
lda ZPPTR1+1
|
||||||
adc #0
|
adc #0
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>PUSHW L.MSG1.DOMAIN
|
>PUSHW L.MSG1.DOMAIN
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
L6 >PUSHW L.MSG1.END
|
L6 >PUSHW L.MSG1.END
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
|
|
||||||
CS.INIT.END lda #0 tell TSKMGR that all done ok, but
|
CS.INIT.END lda #0 tell TSKMGR that all done ok, but
|
||||||
sec we do not want to stay in memory
|
sec we do not want to stay in memory
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT.DEV.MAC ldy #S.IPCFG.MAC+6
|
CS.INIT.DEV.MAC ldy #S.IPCFG.MAC+6
|
||||||
.1 dey
|
.1 dey
|
||||||
>PUSHB (ZPPTR1),y
|
>PUSHB (ZPPTR1),y
|
||||||
cpy #S.IPCFG.MAC
|
cpy #S.IPCFG.MAC
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
ldy #S.IPCFG.hDEV
|
ldy #S.IPCFG.hDEV
|
||||||
>PUSHB (ZPPTR1),y
|
>PUSHB (ZPPTR1),y
|
||||||
|
|
||||||
>PUSHW L.MSG1.DEV
|
>PUSHW L.MSG1.DEV
|
||||||
|
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN clc
|
CS.RUN clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.DOEVENT clc
|
CS.DOEVENT clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT lda hLIBSTR
|
CS.QUIT lda hLIBSTR
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
LIBSTR >PSTRING "libstr.o"
|
LIBSTR >PSTRING "libstr.o"
|
||||||
MSG0 >CSTRING "Protocol:%s (%s)\n"
|
MSG0 >CSTRING "Protocol:%s (%s)\n"
|
||||||
MSG0.0 >CSTRING "AppleTalk"
|
MSG0.0 >CSTRING "AppleTalk"
|
||||||
MSG0.1 >CSTRING "EtherTalk"
|
MSG0.1 >CSTRING "EtherTalk"
|
||||||
MSG0.2 >CSTRING "TCP/IP"
|
MSG0.2 >CSTRING "TCP/IP"
|
||||||
MSG0.N >CSTRING "Not Loaded"
|
MSG0.N >CSTRING "Not Loaded"
|
||||||
MSG0.U >CSTRING "Unconfigured"
|
MSG0.U >CSTRING "Unconfigured"
|
||||||
MSG0.C >CSTRING "Configured"
|
MSG0.C >CSTRING "Configured"
|
||||||
MSG1.DEV >CSTRING " DeviceID : %h,MAC=%02h:%02h:%02h:%02h:%02h:%02h\n"
|
MSG1.DEV >CSTRING " DeviceID : %h,MAC=%02h:%02h:%02h:%02h:%02h:%02h\n"
|
||||||
MSG1.DHCPSRVR >CSTRING " DHCP Server : %d.%d.%d.%d\n"
|
MSG1.DHCPSRVR >CSTRING " DHCP Server : %d.%d.%d.%d\n"
|
||||||
MSG1.IP >CSTRING " IP/Mask : %d.%d.%d.%d/%d.%d.%d.%d\n"
|
MSG1.IP >CSTRING " IP/Mask : %d.%d.%d.%d/%d.%d.%d.%d\n"
|
||||||
MSG1.GW >CSTRING " Gateway : %d.%d.%d.%d\n"
|
MSG1.GW >CSTRING " Gateway : %d.%d.%d.%d\n"
|
||||||
MSG1.DNS >CSTRING " DNS : %d.%d.%d.%d,%d.%d.%d.%d\n"
|
MSG1.DNS >CSTRING " DNS : %d.%d.%d.%d,%d.%d.%d.%d\n"
|
||||||
MSG1.HOSTNAME >CSTRING " Hostname : %s"
|
MSG1.HOSTNAME >CSTRING " Hostname : %s"
|
||||||
MSG1.DOMAIN >CSTRING ".%s"
|
MSG1.DOMAIN >CSTRING ".%s"
|
||||||
MSG1.END >CSTRING "\nEnd of network configuration.\n"
|
MSG1.END >CSTRING "\nEnd of network configuration.\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DS.START
|
DS.START
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
hLIBSTR .BS 1
|
hLIBSTR .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DS.END
|
DS.END
|
||||||
MAN
|
MAN
|
||||||
SAVE BIN/NETCFG.S
|
SAVE BIN/NETCFG.S
|
||||||
ASM
|
ASM
|
||||||
|
|
734
BIN/PING.S.txt
734
BIN/PING.S.txt
|
@ -1,367 +1,367 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /DATA/A2OSX
|
PREFIX /DATA/A2OSX
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF BIN/PING
|
.TF BIN/PING
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
.INB INC/KERNEL.I
|
.INB INC/KERNEL.I
|
||||||
.INB INC/LIBSTR.I
|
.INB INC/LIBSTR.I
|
||||||
.INB INC/LIBTCPIP.I
|
.INB INC/LIBTCPIP.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PING.TIMEOUT .EQ 40 40*100ms = 4 sec.
|
PING.TIMEOUT .EQ 40 40*100ms = 4 sec.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPFrameBase1 .EQ ZPBIN
|
ZPFrameBase1 .EQ ZPBIN
|
||||||
ZPFrameLen1 .EQ ZPBIN+2
|
ZPFrameLen1 .EQ ZPBIN+2
|
||||||
ZPFramePtr1 .EQ ZPBIN+4
|
ZPFramePtr1 .EQ ZPBIN+4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Main entry point
|
* Main entry point
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Code signature and INIT table
|
* Code signature and INIT table
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CLD $D8
|
* CLD $D8
|
||||||
* JMP (*,x) $7C
|
* JMP (*,x) $7C
|
||||||
* #JMPTABLE
|
* #JMPTABLE
|
||||||
* /JMPTABLE
|
* /JMPTABLE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.START cld
|
CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.1 .DA CS.INIT
|
.1 .DA CS.INIT
|
||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.EVENT
|
.DA CS.EVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.LIBSTR .DA LIBSTR
|
L.LIBSTR .DA LIBSTR
|
||||||
L.LIBTCPIP .DA LIBTCPIP
|
L.LIBTCPIP .DA LIBTCPIP
|
||||||
L.SSCANF.IP .DA SSCANF.IP
|
L.SSCANF.IP .DA SSCANF.IP
|
||||||
L.DST.IP .DA DST.IP
|
L.DST.IP .DA DST.IP
|
||||||
L.MSG0 .DA MSG0
|
L.MSG0 .DA MSG0
|
||||||
L.MSG1 .DA MSG1
|
L.MSG1 .DA MSG1
|
||||||
L.MSG2 .DA MSG2
|
L.MSG2 .DA MSG2
|
||||||
L.MSG3 .DA MSG3
|
L.MSG3 .DA MSG3
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA CS.END-CS.START Code Length To Relocate
|
.DA CS.END-CS.START Code Length To Relocate
|
||||||
.DA DS.END-DS.START Data Segment to Allocate
|
.DA DS.END-DS.START Data Segment to Allocate
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT ldy #S.PS.hARGS
|
CS.INIT ldy #S.PS.hARGS
|
||||||
lda (pPsContext),y
|
lda (pPsContext),y
|
||||||
bne .1
|
bne .1
|
||||||
lda #SYSMGR.ERRSYN
|
lda #SYSMGR.ERRSYN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 >LIBLOADP L.LIBSTR
|
.1 >LIBLOADP L.LIBSTR
|
||||||
sta hLIBSTR
|
sta hLIBSTR
|
||||||
|
|
||||||
>LIBLOADP L.LIBTCPIP
|
>LIBLOADP L.LIBTCPIP
|
||||||
sta hLIBTCPIP
|
sta hLIBTCPIP
|
||||||
|
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
|
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
|
||||||
bcs .9
|
bcs .9
|
||||||
>STYA ZPQuickPtr1
|
>STYA ZPQuickPtr1
|
||||||
|
|
||||||
lda (ZPQuickPtr1) Configured ?
|
lda (ZPQuickPtr1) Configured ?
|
||||||
bpl .9
|
bpl .9
|
||||||
|
|
||||||
ldy #S.IPCFG.HDEV
|
ldy #S.IPCFG.HDEV
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
sta hDev
|
sta hDev
|
||||||
|
|
||||||
lda A2OSX.RANDOM16
|
lda A2OSX.RANDOM16
|
||||||
sta Identifier
|
sta Identifier
|
||||||
lda A2OSX.RANDOM16+1
|
lda A2OSX.RANDOM16+1
|
||||||
sta Identifier+1
|
sta Identifier+1
|
||||||
|
|
||||||
stz Sequence
|
stz Sequence
|
||||||
stz Sequence+1
|
stz Sequence+1
|
||||||
|
|
||||||
lda (pPsContext)
|
lda (pPsContext)
|
||||||
ora #S.PS.F.EVENT Now accept events
|
ora #S.PS.F.EVENT Now accept events
|
||||||
sta (pPsContext)
|
sta (pPsContext)
|
||||||
clc
|
clc
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN >PUSHW L.DST.IP
|
CS.RUN >PUSHW L.DST.IP
|
||||||
>PUSHW L.SSCANF.IP
|
>PUSHW L.SSCANF.IP
|
||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
lda (pPsContext),y
|
lda (pPsContext),y
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>LIBCALL hLIBSTR,LIBSTR.SSCANF
|
>LIBCALL hLIBSTR,LIBSTR.SSCANF
|
||||||
bcc CS.RUN.IPOK
|
bcc CS.RUN.IPOK
|
||||||
|
|
||||||
lda #PING.TIMEOUT
|
lda #PING.TIMEOUT
|
||||||
sta TimeOut
|
sta TimeOut
|
||||||
|
|
||||||
CS.RUN.DNSQUERY >PUSHW L.DST.IP
|
CS.RUN.DNSQUERY >PUSHW L.DST.IP
|
||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
lda (pPsContext),y
|
lda (pPsContext),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.DNS.QUERY
|
>LIBCALL hLIBTCPIP,LIBTCPIP.DNS.QUERY
|
||||||
bcc CS.RUN.IPOK
|
bcc CS.RUN.IPOK
|
||||||
|
|
||||||
jsr A2osX.SLEEP
|
jsr A2osX.SLEEP
|
||||||
lda TimeOut
|
lda TimeOut
|
||||||
bne CS.RUN.DNSQUERY
|
bne CS.RUN.DNSQUERY
|
||||||
|
|
||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
lda (pPsContext),y
|
lda (pPsContext),y
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>PUSHW L.MSG0
|
>PUSHW L.MSG0
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
sec
|
sec
|
||||||
CS.RUN.RTS rts
|
CS.RUN.RTS rts
|
||||||
|
|
||||||
CS.RUN.IPOK ldy #S.PS.hARGS
|
CS.RUN.IPOK ldy #S.PS.hARGS
|
||||||
lda (pPsContext),y
|
lda (pPsContext),y
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>PUSHB DST.IP+3
|
>PUSHB DST.IP+3
|
||||||
>PUSHB DST.IP+2
|
>PUSHB DST.IP+2
|
||||||
>PUSHB DST.IP+1
|
>PUSHB DST.IP+1
|
||||||
>PUSHB DST.IP
|
>PUSHB DST.IP
|
||||||
>PUSHW L.MSG1
|
>PUSHW L.MSG1
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
CS.RUN.ECHO >LIBCALL hLIBTCPIP,LIBTCPIP.NEW.ICMP.FRAME
|
CS.RUN.ECHO >LIBCALL hLIBTCPIP,LIBTCPIP.NEW.ICMP.FRAME
|
||||||
bcs CS.RUN.RTS
|
bcs CS.RUN.RTS
|
||||||
>STYA ZPFrameBase1
|
>STYA ZPFrameBase1
|
||||||
stx hFrame
|
stx hFrame
|
||||||
|
|
||||||
ldx #3
|
ldx #3
|
||||||
ldy #S.IP.DST+3
|
ldy #S.IP.DST+3
|
||||||
.1 lda DST.IP,x
|
.1 lda DST.IP,x
|
||||||
sta (ZPFrameBase1),y
|
sta (ZPFrameBase1),y
|
||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
ldy #S.ICMP.TYPE
|
ldy #S.ICMP.TYPE
|
||||||
lda #S.ICMP.TYPE.ECHOREQ
|
lda #S.ICMP.TYPE.ECHOREQ
|
||||||
sta (ZPFrameBase1),y
|
sta (ZPFrameBase1),y
|
||||||
|
|
||||||
ldy #S.ICMP.IDENTIFIER
|
ldy #S.ICMP.IDENTIFIER
|
||||||
lda Identifier
|
lda Identifier
|
||||||
sta (ZPFrameBase1),y
|
sta (ZPFrameBase1),y
|
||||||
iny
|
iny
|
||||||
lda Identifier+1
|
lda Identifier+1
|
||||||
sta (ZPFrameBase1),y
|
sta (ZPFrameBase1),y
|
||||||
|
|
||||||
inc Sequence
|
inc Sequence
|
||||||
bne .2
|
bne .2
|
||||||
inc Sequence+1
|
inc Sequence+1
|
||||||
|
|
||||||
.2 ldy #S.ICMP.SEQUENCE
|
.2 ldy #S.ICMP.SEQUENCE
|
||||||
lda Sequence
|
lda Sequence
|
||||||
sta (ZPFrameBase1),y
|
sta (ZPFrameBase1),y
|
||||||
iny
|
iny
|
||||||
lda Sequence+1
|
lda Sequence+1
|
||||||
sta (ZPFrameBase1),y
|
sta (ZPFrameBase1),y
|
||||||
|
|
||||||
lda #PING.TIMEOUT
|
lda #PING.TIMEOUT
|
||||||
sta TimeOut
|
sta TimeOut
|
||||||
|
|
||||||
.3 >PUSHWI S.ICMP+32
|
.3 >PUSHWI S.ICMP+32
|
||||||
lda hFrame
|
lda hFrame
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SEND.ICMP.FRAME
|
>LIBCALL hLIBTCPIP,LIBTCPIP.SEND.ICMP.FRAME
|
||||||
bcc .4
|
bcc .4
|
||||||
jsr A2osX.SLEEP
|
jsr A2osX.SLEEP
|
||||||
lda TimeOut
|
lda TimeOut
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
.4 lda hFrame
|
.4 lda hFrame
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
|
|
||||||
stz bReply
|
stz bReply
|
||||||
lda #PING.TIMEOUT
|
lda #PING.TIMEOUT
|
||||||
sta TimeOut
|
sta TimeOut
|
||||||
|
|
||||||
CS.RUN.WAIT jsr A2osX.SLEEP
|
CS.RUN.WAIT jsr A2osX.SLEEP
|
||||||
lda bReply
|
lda bReply
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda bCTRLC
|
lda bCTRLC
|
||||||
bne CS.RUN.ERROR
|
bne CS.RUN.ERROR
|
||||||
lda TimeOut
|
lda TimeOut
|
||||||
bne CS.RUN.WAIT
|
bne CS.RUN.WAIT
|
||||||
|
|
||||||
>PUSHB DST.IP+3
|
>PUSHB DST.IP+3
|
||||||
>PUSHB DST.IP+2
|
>PUSHB DST.IP+2
|
||||||
>PUSHB DST.IP+1
|
>PUSHB DST.IP+1
|
||||||
>PUSHB DST.IP
|
>PUSHB DST.IP
|
||||||
>PUSHW L.MSG2
|
>PUSHW L.MSG2
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
.1 lda bCTRLC
|
.1 lda bCTRLC
|
||||||
bne CS.RUN.ERROR
|
bne CS.RUN.ERROR
|
||||||
lda TimeOut
|
lda TimeOut
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
jsr A2osX.SLEEP
|
jsr A2osX.SLEEP
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.2 jmp CS.RUN.ECHO
|
.2 jmp CS.RUN.ECHO
|
||||||
|
|
||||||
CS.RUN.ERROR sec
|
CS.RUN.ERROR sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.EVENT lda (pEvent)
|
CS.EVENT lda (pEvent)
|
||||||
and #S.EVT.F.TIMER is it a TIMER event?
|
and #S.EVT.F.TIMER is it a TIMER event?
|
||||||
beq .1 no....
|
beq .1 no....
|
||||||
|
|
||||||
lda TimeOut
|
lda TimeOut
|
||||||
beq .10
|
beq .10
|
||||||
|
|
||||||
dec TimeOut
|
dec TimeOut
|
||||||
.10 sec do not discard TIMER event
|
.10 sec do not discard TIMER event
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 lda (pEvent)
|
.1 lda (pEvent)
|
||||||
and #S.EVT.F.KEY is it a KEY event?
|
and #S.EVT.F.KEY is it a KEY event?
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
ldy #S.EVT.hDEV is Event from active IN device?
|
ldy #S.EVT.hDEV is Event from active IN device?
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
ldy #S.PS.hINDEV
|
ldy #S.PS.hINDEV
|
||||||
cmp (pPsContext),y
|
cmp (pPsContext),y
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
|
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
ldy #S.EVT.DATALO
|
ldy #S.EVT.DATALO
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
cmp #$03 Ctrl-C
|
cmp #$03 Ctrl-C
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
lda #$FF
|
lda #$FF
|
||||||
sta bCTRLC
|
sta bCTRLC
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.2 lda (pEvent)
|
.2 lda (pEvent)
|
||||||
and #S.EVT.F.NET
|
and #S.EVT.F.NET
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
ldy #S.EVT.hDEV
|
ldy #S.EVT.hDEV
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
cmp hDev
|
cmp hDev
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
ldy #S.EVT.DATALO Get Frame hMem
|
ldy #S.EVT.DATALO Get Frame hMem
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>STYA ZPFrameBase1
|
>STYA ZPFrameBase1
|
||||||
|
|
||||||
ldy #S.IP.PROTOCOL
|
ldy #S.IP.PROTOCOL
|
||||||
lda (ZPFrameBase1),y
|
lda (ZPFrameBase1),y
|
||||||
cmp #S.IP.PROTOCOL.ICMP
|
cmp #S.IP.PROTOCOL.ICMP
|
||||||
|
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
ldy #S.ICMP.TYPE
|
ldy #S.ICMP.TYPE
|
||||||
lda (ZPFrameBase1),y
|
lda (ZPFrameBase1),y
|
||||||
cmp #S.ICMP.TYPE.ECHOREP
|
cmp #S.ICMP.TYPE.ECHOREP
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
ldy #S.ICMP.IDENTIFIER
|
ldy #S.ICMP.IDENTIFIER
|
||||||
lda (ZPFrameBase1),y
|
lda (ZPFrameBase1),y
|
||||||
cmp Identifier
|
cmp Identifier
|
||||||
bne .9
|
bne .9
|
||||||
iny
|
iny
|
||||||
lda (ZPFrameBase1),y
|
lda (ZPFrameBase1),y
|
||||||
cmp Identifier+1
|
cmp Identifier+1
|
||||||
bne .9
|
bne .9
|
||||||
jsr CS.EVENT.REPLY
|
jsr CS.EVENT.REPLY
|
||||||
.8 >SYSCALL SYS.DestroyEvent
|
.8 >SYSCALL SYS.DestroyEvent
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.EVENT.REPLY lda #PING.TIMEOUT
|
CS.EVENT.REPLY lda #PING.TIMEOUT
|
||||||
sec
|
sec
|
||||||
sbc TimeOut
|
sbc TimeOut
|
||||||
|
|
||||||
stz TimeOut.ms
|
stz TimeOut.ms
|
||||||
stz TimeOut.ms+1
|
stz TimeOut.ms+1
|
||||||
|
|
||||||
tay
|
tay
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
.1 lda TimeOut.ms
|
.1 lda TimeOut.ms
|
||||||
clc
|
clc
|
||||||
adc #K.TIMER16RESOLUTION*20
|
adc #K.TIMER16RESOLUTION*20
|
||||||
sta TimeOut.ms
|
sta TimeOut.ms
|
||||||
bcc .2
|
bcc .2
|
||||||
inc TimeOut+1+1
|
inc TimeOut+1+1
|
||||||
.2 dey
|
.2 dey
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.3 >PUSHW TimeOut.ms
|
.3 >PUSHW TimeOut.ms
|
||||||
ldy #S.IP.TTL
|
ldy #S.IP.TTL
|
||||||
>PUSHB (ZPFrameBase1),y
|
>PUSHB (ZPFrameBase1),y
|
||||||
|
|
||||||
ldy #S.ICMP.SEQUENCE+1
|
ldy #S.ICMP.SEQUENCE+1
|
||||||
>PUSHB (ZPFrameBase1),y
|
>PUSHB (ZPFrameBase1),y
|
||||||
dey
|
dey
|
||||||
>PUSHB (ZPFrameBase1),y
|
>PUSHB (ZPFrameBase1),y
|
||||||
|
|
||||||
ldy #S.IP.SRC+3
|
ldy #S.IP.SRC+3
|
||||||
>PUSHB (ZPFrameBase1),y
|
>PUSHB (ZPFrameBase1),y
|
||||||
dey
|
dey
|
||||||
>PUSHB (ZPFrameBase1),y
|
>PUSHB (ZPFrameBase1),y
|
||||||
dey
|
dey
|
||||||
>PUSHB (ZPFrameBase1),y
|
>PUSHB (ZPFrameBase1),y
|
||||||
dey
|
dey
|
||||||
>PUSHB (ZPFrameBase1),y
|
>PUSHB (ZPFrameBase1),y
|
||||||
|
|
||||||
>PUSHW L.MSG3
|
>PUSHW L.MSG3
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
inc bReply
|
inc bReply
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT lda hLIBTCPIP
|
CS.QUIT lda hLIBTCPIP
|
||||||
>SYSCALL SYS.UnloadLibA
|
>SYSCALL SYS.UnloadLibA
|
||||||
lda hLIBSTR
|
lda hLIBSTR
|
||||||
>SYSCALL SYS.UnloadLibA
|
>SYSCALL SYS.UnloadLibA
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
LIBSTR >PSTRING "libstr.o"
|
LIBSTR >PSTRING "libstr.o"
|
||||||
LIBTCPIP >PSTRING "libtcpip.o"
|
LIBTCPIP >PSTRING "libtcpip.o"
|
||||||
SSCANF.IP >PSTRING "%d.%d.%d.%d"
|
SSCANF.IP >PSTRING "%d.%d.%d.%d"
|
||||||
MSG0 >CSTRING "%S: Unknown host\n"
|
MSG0 >CSTRING "%S: Unknown host\n"
|
||||||
MSG1 >CSTRING "PING %d.%d.%d.%d (%S)\n"
|
MSG1 >CSTRING "PING %d.%d.%d.%d (%S)\n"
|
||||||
MSG2 >CSTRING "%d.%d.%d.%d: TimeOut/Host unreachable\n"
|
MSG2 >CSTRING "%d.%d.%d.%d: TimeOut/Host unreachable\n"
|
||||||
MSG3 >CSTRING "32 bytes from %d.%d.%d.%d, icmp_seq=%D, ttl=%d, time=%D ms\n"
|
MSG3 >CSTRING "32 bytes from %d.%d.%d.%d, icmp_seq=%D, ttl=%d, time=%D ms\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DS.START
|
DS.START
|
||||||
hLIBSTR .BS 1
|
hLIBSTR .BS 1
|
||||||
hLIBTCPIP .BS 1
|
hLIBTCPIP .BS 1
|
||||||
hDev .BS 1
|
hDev .BS 1
|
||||||
DST.IP .BS 4
|
DST.IP .BS 4
|
||||||
hFrame .BS 1
|
hFrame .BS 1
|
||||||
TimeOut .BS 1
|
TimeOut .BS 1
|
||||||
TimeOut.ms .BS 2
|
TimeOut.ms .BS 2
|
||||||
Identifier .BS 2
|
Identifier .BS 2
|
||||||
Sequence .BS 2
|
Sequence .BS 2
|
||||||
bCTRLC .BS 1
|
bCTRLC .BS 1
|
||||||
bReply .BS 1
|
bReply .BS 1
|
||||||
DS.END
|
DS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE BIN/PING.S
|
SAVE BIN/PING.S
|
||||||
ASM
|
ASM
|
||||||
|
|
228
BIN/PS.S.txt
228
BIN/PS.S.txt
|
@ -1,114 +1,114 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /DATA/A2OSX
|
PREFIX /DATA/A2OSX
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF BIN/PS
|
.TF BIN/PS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
.INB INC/KERNEL.I
|
.INB INC/KERNEL.I
|
||||||
.INB INC/LIBSTR.I
|
.INB INC/LIBSTR.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPPTR1 .EQ ZPBIN
|
ZPPTR1 .EQ ZPBIN
|
||||||
ZPPTR2 .EQ ZPBIN+2
|
ZPPTR2 .EQ ZPBIN+2
|
||||||
ZPPTR3 .EQ ZPBIN+4
|
ZPPTR3 .EQ ZPBIN+4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Main entry point
|
* Main entry point
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Code signature and INIT table
|
* Code signature and INIT table
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CLD $D8
|
* CLD $D8
|
||||||
* JMP (*,x) $7C
|
* JMP (*,x) $7C
|
||||||
* #JMPTABLE
|
* #JMPTABLE
|
||||||
* /JMPTABLE
|
* /JMPTABLE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.START cld
|
CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.1 .DA CS.INIT
|
.1 .DA CS.INIT
|
||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.DOEVENT
|
.DA CS.DOEVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.LIBSTR .DA LIBSTR
|
L.LIBSTR .DA LIBSTR
|
||||||
L.MSG0 .DA MSG0
|
L.MSG0 .DA MSG0
|
||||||
L.MSG1 .DA MSG1
|
L.MSG1 .DA MSG1
|
||||||
L.MSG2 .DA MSG2
|
L.MSG2 .DA MSG2
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA CS.END-CS.START Code Length To Relocate
|
.DA CS.END-CS.START Code Length To Relocate
|
||||||
.DA 0 Data Segment to Allocate
|
.DA 0 Data Segment to Allocate
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT >LIBLOADP L.LIBSTR
|
CS.INIT >LIBLOADP L.LIBSTR
|
||||||
sta hLibStr
|
sta hLibStr
|
||||||
|
|
||||||
>LDYAI TSKMGR.TABLE
|
>LDYAI TSKMGR.TABLE
|
||||||
>STYA ZPPTR1
|
>STYA ZPPTR1
|
||||||
stz PS.COUNT
|
stz PS.COUNT
|
||||||
|
|
||||||
>PUSHW L.MSG0
|
>PUSHW L.MSG0
|
||||||
>LIBCALL hLibStr,LIBSTR.PRINTF
|
>LIBCALL hLibStr,LIBSTR.PRINTF
|
||||||
|
|
||||||
.1 lda (ZPPTR1)
|
.1 lda (ZPPTR1)
|
||||||
bpl .4
|
bpl .4
|
||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
beq .2
|
beq .2
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
bra .3
|
bra .3
|
||||||
.2 >PUSHW L.MSG2
|
.2 >PUSHW L.MSG2
|
||||||
.3 ldy #S.PS.hCMD
|
.3 ldy #S.PS.hCMD
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
|
|
||||||
ldy #S.PS.PID
|
ldy #S.PS.PID
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
>PUSHA Parent PID
|
>PUSHA Parent PID
|
||||||
|
|
||||||
lda (ZPPTR1) push flags
|
lda (ZPPTR1) push flags
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
ldy #S.PS.ID
|
ldy #S.PS.ID
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
>PUSHA DevID
|
>PUSHA DevID
|
||||||
>PUSHW L.MSG1
|
>PUSHW L.MSG1
|
||||||
>LIBCALL hLibStr,LIBSTR.PRINTF
|
>LIBCALL hLibStr,LIBSTR.PRINTF
|
||||||
|
|
||||||
.4 lda ZPPTR1
|
.4 lda ZPPTR1
|
||||||
clc
|
clc
|
||||||
adc #S.PS.SIZE
|
adc #S.PS.SIZE
|
||||||
sta ZPPTR1
|
sta ZPPTR1
|
||||||
bcc .5
|
bcc .5
|
||||||
inc ZPPTR1+1
|
inc ZPPTR1+1
|
||||||
.5 inc PS.COUNT
|
.5 inc PS.COUNT
|
||||||
lda PS.COUNT
|
lda PS.COUNT
|
||||||
cmp #K.PS.MAX
|
cmp #K.PS.MAX
|
||||||
beq .8
|
beq .8
|
||||||
jmp .1
|
jmp .1
|
||||||
|
|
||||||
.8 lda #0 tell TSKMGR that all done ok, but
|
.8 lda #0 tell TSKMGR that all done ok, but
|
||||||
sec we do not want to stay in memory
|
sec we do not want to stay in memory
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN
|
CS.RUN
|
||||||
CS.DOEVENT clc
|
CS.DOEVENT clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT lda hLibStr
|
CS.QUIT lda hLibStr
|
||||||
>SYSCALL SYS.UnloadLibA
|
>SYSCALL SYS.UnloadLibA
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
hLibStr .BS 1
|
hLibStr .BS 1
|
||||||
PS.COUNT .BS 1
|
PS.COUNT .BS 1
|
||||||
LIBSTR >PSTRING "libstr.o"
|
LIBSTR >PSTRING "libstr.o"
|
||||||
MSG0 >CSTRING "hPS Flags PID CMD ARGS\n"
|
MSG0 >CSTRING "hPS Flags PID CMD ARGS\n"
|
||||||
MSG1 >CSTRING " %03d %b $%h %16S %32S\n"
|
MSG1 >CSTRING " %03d %b $%h %16S %32S\n"
|
||||||
MSG2 >PSTRING "(none)"
|
MSG2 >PSTRING "(none)"
|
||||||
MAN
|
MAN
|
||||||
SAVE BIN/PS.S
|
SAVE BIN/PS.S
|
||||||
ASM
|
ASM
|
||||||
|
|
343
BIN/TEST.S.txt
343
BIN/TEST.S.txt
|
@ -1,153 +1,190 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /DATA/A2OSX
|
PREFIX /DATA/A2OSX
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF BIN/TEST
|
.TF BIN/TEST
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
.INB INC/LIBSTR.I
|
.INB INC/LIBSTR.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Main entry point
|
* Main entry point
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Code signature and INIT table
|
* Code signature and INIT table
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CLD $D8
|
* CLD $D8
|
||||||
* JMP (*,x) $7C
|
* JMP (*,x) $7C
|
||||||
* #JMPTABLE
|
* #JMPTABLE
|
||||||
* /JMPTABLE
|
* /JMPTABLE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.START cld
|
CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.1 .DA CS.INIT
|
.1 .DA CS.INIT
|
||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.EVENT
|
.DA CS.EVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.LIBSTR .DA LIBSTR
|
L.LIBSTR .DA LIBSTR
|
||||||
L.MSG0 .DA MSG0
|
L.MSG0 .DA MSG0
|
||||||
L.MSG1 .DA MSG1
|
L.MSG1 .DA MSG1
|
||||||
L.MSG2 .DA MSG2
|
L.MSG2 .DA MSG2
|
||||||
L.MSG3 .DA MSG3
|
L.MSG3 .DA MSG3
|
||||||
L.SSCANF.IP .DA SSCANF.IP
|
L.SSCANF.IP .DA SSCANF.IP
|
||||||
L.DST.IP .DA DST.IP
|
L.PRINTF.IP .DA PRINTF.IP
|
||||||
L.TEST1 .DA TEST1
|
L.DST.IP .DA DST.IP
|
||||||
L.TEST2 .DA TEST2
|
L.TEST1 .DA TEST1
|
||||||
L.TEST3 .DA TEST3
|
L.TEST2 .DA TEST2
|
||||||
.DA 0
|
L.TEST3 .DA TEST3
|
||||||
.DA CS.END-CS.START Code Length To Relocate
|
.DA 0
|
||||||
.DA 0 Data Segment to Allocate
|
.DA CS.END-CS.START Code Length To Relocate
|
||||||
*--------------------------------------
|
.DA 0 Data Segment to Allocate
|
||||||
CS.INIT >LIBLOADP L.LIBSTR
|
*--------------------------------------
|
||||||
sta hLIBSTR
|
CS.INIT >LIBLOADP L.LIBSTR
|
||||||
|
sta hLIBSTR
|
||||||
ldy #S.PS.hOUTDEV
|
|
||||||
lda (TSKMGR.TSKPTR),y
|
ldy #S.PS.hPREFIX
|
||||||
>SYSCALL SYS.DevSelectA
|
lda (pPsContext),y
|
||||||
|
>SYSCALL SYS.GetMemPtrA
|
||||||
ldy #S.PS.hPREFIX
|
>PUSHYA
|
||||||
lda (TSKMGR.TSKPTR),y
|
>PUSHW L.MSG0
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
>PUSHYA
|
|
||||||
>PUSHW L.MSG0
|
ldy #S.PS.hCS
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
lda (pPsContext),y
|
||||||
|
>SYSCALL SYS.GetMemByIDA
|
||||||
ldy #S.PS.hCS
|
>STYA ZPQuickPtr1
|
||||||
lda (TSKMGR.TSKPTR),y
|
ldy #S.MEM.BIN
|
||||||
>SYSCALL SYS.GetMemByIDA
|
lda (ZPQuickPtr1),y
|
||||||
>STYA ZPQuickPtr1
|
>SYSCALL SYS.GetMemPtrA
|
||||||
ldy #S.MEM.BIN
|
>PUSHYA
|
||||||
lda (ZPQuickPtr1),y
|
>PUSHW L.MSG1
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
>PUSHYA
|
|
||||||
>PUSHW L.MSG1
|
ldy #S.PS.hARGS
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
lda (pPsContext),y
|
||||||
|
>SYSCALL SYS.GetMemPtrA
|
||||||
ldy #S.PS.hARGS
|
>PUSHYA
|
||||||
lda (TSKMGR.TSKPTR),y
|
ldy #S.PS.hCMD
|
||||||
>SYSCALL SYS.GetMemPtrA
|
lda (pPsContext),y
|
||||||
>PUSHYA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
ldy #S.PS.hCMD
|
>PUSHYA
|
||||||
lda (TSKMGR.TSKPTR),y
|
>PUSHW L.MSG2
|
||||||
>SYSCALL SYS.GetMemPtrA
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
>PUSHYA
|
|
||||||
>PUSHW L.MSG2
|
ldy #S.PS.hENV
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
lda (pPsContext),y
|
||||||
|
>SYSCALL SYS.GetMemPtrA
|
||||||
ldy #S.PS.hENV
|
>STYA ZPBIN
|
||||||
lda (TSKMGR.TSKPTR),y
|
|
||||||
>SYSCALL SYS.GetMemPtrA
|
.1 lda (ZPBIN)
|
||||||
>STYA ZPBIN
|
beq .2
|
||||||
|
>PUSHW ZPBIN
|
||||||
.1 lda (ZPBIN)
|
>PUSHW L.MSG3
|
||||||
beq .2
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
>PUSHW ZPBIN
|
lda (ZPBIN)
|
||||||
>PUSHW L.MSG3
|
sec
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
adc ZPBIN
|
||||||
lda (ZPBIN)
|
sta ZPBIN
|
||||||
sec
|
bcc .1
|
||||||
adc ZPBIN
|
inc ZPBIN+1
|
||||||
sta ZPBIN
|
bra .1
|
||||||
bcc .1
|
|
||||||
inc ZPBIN+1
|
.2 >PUSHW L.DST.IP
|
||||||
bra .1
|
>PUSHW L.SSCANF.IP
|
||||||
|
>PUSHW L.TEST1
|
||||||
.2 >PUSHW L.DST.IP
|
>LIBCALL hLIBSTR,LIBSTR.SSCANF
|
||||||
>PUSHW L.SSCANF.IP
|
|
||||||
>PUSHW L.TEST1
|
>PUSHB DST.IP+3
|
||||||
>LIBCALL hLIBSTR,LIBSTR.SSCANF
|
>PUSHB DST.IP+2
|
||||||
|
>PUSHB DST.IP+1
|
||||||
lda DST.IP+3
|
>PUSHB DST.IP
|
||||||
jsr PRBYTE
|
>PUSHW L.PRINTF.IP
|
||||||
jsr CROUT
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
>PUSHW L.DST.IP
|
>PUSHW L.DST.IP
|
||||||
>PUSHW L.SSCANF.IP
|
>PUSHW L.SSCANF.IP
|
||||||
>PUSHW L.TEST2
|
>PUSHW L.TEST2
|
||||||
>LIBCALL hLIBSTR,LIBSTR.SSCANF
|
>LIBCALL hLIBSTR,LIBSTR.SSCANF
|
||||||
|
|
||||||
lda DST.IP+3
|
>PUSHB DST.IP+3
|
||||||
jsr PRBYTE
|
>PUSHB DST.IP+2
|
||||||
jsr CROUT
|
>PUSHB DST.IP+1
|
||||||
|
>PUSHB DST.IP
|
||||||
>PUSHW L.DST.IP
|
>PUSHW L.PRINTF.IP
|
||||||
>PUSHW L.SSCANF.IP
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
>PUSHW L.TEST3
|
|
||||||
>LIBCALL hLIBSTR,LIBSTR.SSCANF
|
>PUSHW L.DST.IP
|
||||||
|
>PUSHW L.SSCANF.IP
|
||||||
lda DST.IP+3
|
>PUSHW L.TEST3
|
||||||
jsr PRBYTE
|
>LIBCALL hLIBSTR,LIBSTR.SSCANF
|
||||||
jsr CROUT
|
|
||||||
|
>PUSHB DST.IP+3
|
||||||
lda #0 tell TSKMGR that all done ok, but
|
>PUSHB DST.IP+2
|
||||||
sec we do not want to stay in memory
|
>PUSHB DST.IP+1
|
||||||
rts
|
>PUSHB DST.IP
|
||||||
*--------------------------------------
|
>PUSHW L.PRINTF.IP
|
||||||
CS.RUN
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
CS.EVENT clc
|
|
||||||
rts
|
lda #0 tell TSKMGR that all done ok, but
|
||||||
*--------------------------------------
|
sec we do not want to stay in memory
|
||||||
CS.QUIT lda hLIBSTR
|
rts
|
||||||
>SYSCALL SYS.FreeMemA
|
*--------------------------------------
|
||||||
clc
|
CS.RUN
|
||||||
rts
|
CS.EVENT clc
|
||||||
*--------------------------------------
|
rts
|
||||||
CS.END
|
*--------------------------------------
|
||||||
hLIBSTR .BS 1
|
CS.QUIT lda hLIBSTR
|
||||||
LIBSTR >PSTRING "libstr.o"
|
>SYSCALL SYS.FreeMemA
|
||||||
MSG0 >CSTRING "PREFIX=%S\n"
|
clc
|
||||||
MSG1 >CSTRING "BIN={%S}\n"
|
rts
|
||||||
MSG2 >CSTRING "CMD={%S},ARGS={%S}\nENV:\n"
|
*--------------------------------------
|
||||||
MSG3 >CSTRING " %S\n"
|
PRBYTE pha
|
||||||
TEST1 >PSTRING "198.168.1.1"
|
lsr
|
||||||
TEST2 >PSTRING "198.168.1.23"
|
lsr
|
||||||
TEST3 >PSTRING "198.168.1.4"
|
lsr
|
||||||
SSCANF.IP >PSTRING "%d.%d.%d.%d"
|
lsr
|
||||||
DST.IP .BS 4
|
ora #$B0
|
||||||
*--------------------------------------
|
cmp #$BA
|
||||||
MAN
|
bcc .1
|
||||||
SAVE BIN/TEST.S
|
adc #6
|
||||||
ASM
|
.1 jsr COUT
|
||||||
|
pla
|
||||||
|
PRHEX and #$0F
|
||||||
|
ora #$B0
|
||||||
|
cmp #$BA
|
||||||
|
bcc COUT
|
||||||
|
adc #6
|
||||||
|
bra COUT
|
||||||
|
*--------------------------------------
|
||||||
|
CROUT lda #13
|
||||||
|
*--------------------------------------
|
||||||
|
COUT phx
|
||||||
|
phy
|
||||||
|
>PUSHA
|
||||||
|
ldy #S.PS.hOUTDEV
|
||||||
|
lda (pPsContext),y
|
||||||
|
>SYSCALL SYS.DevOutA
|
||||||
|
ply
|
||||||
|
plx
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.END
|
||||||
|
hLIBSTR .BS 1
|
||||||
|
LIBSTR >PSTRING "libstr.o"
|
||||||
|
MSG0 >CSTRING "PREFIX=%S\n"
|
||||||
|
MSG1 >CSTRING "BIN={%S}\n"
|
||||||
|
MSG2 >CSTRING "CMD={%S},ARGS={%S}\nENV:\n"
|
||||||
|
MSG3 >CSTRING " %S\n"
|
||||||
|
TEST1 >PSTRING "198.168.1.1"
|
||||||
|
TEST2 >PSTRING "198.168.1.23"
|
||||||
|
TEST3 >PSTRING "198.168.1.4"
|
||||||
|
SSCANF.IP >PSTRING "%d.%d.%d.%d"
|
||||||
|
PRINTF.IP >CSTRING "IP=%d.%d.%d.%d\n"
|
||||||
|
DST.IP .BS 4
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE BIN/TEST.S
|
||||||
|
ASM
|
||||||
|
|
|
@ -1,57 +1,57 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /DATA/A2OSX
|
PREFIX /DATA/A2OSX
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF
|
.TF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
.INB INC/MONITOR.I
|
.INB INC/MONITOR.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Main entry point
|
* Main entry point
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Code signature and INIT table
|
* Code signature and INIT table
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CLD $D8
|
* CLD $D8
|
||||||
* JMP (*,x) $7C
|
* JMP (*,x) $7C
|
||||||
* #JMPTABLE
|
* #JMPTABLE
|
||||||
* /JMPTABLE
|
* /JMPTABLE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.START cld
|
CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.1 .DA CS.INIT
|
.1 .DA CS.INIT
|
||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.EVENT
|
.DA CS.EVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA CS.END-CS.START Code Length To Relocate
|
.DA CS.END-CS.START Code Length To Relocate
|
||||||
.DA DS.END-DS.START Data Segemnt to Allocate
|
.DA DS.END-DS.START Data Segemnt to Allocate
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT
|
CS.INIT
|
||||||
|
|
||||||
|
|
||||||
CS.INIT.EXIT lda #0 tell TSKMGR that all done ok, but
|
CS.INIT.EXIT lda #0 tell TSKMGR that all done ok, but
|
||||||
sec we do not want to stay in memory
|
sec we do not want to stay in memory
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN clc
|
CS.RUN clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.EVENT clc
|
CS.EVENT clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT clc
|
CS.QUIT clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
DS.START
|
DS.START
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DS.END
|
DS.END
|
||||||
MAN
|
MAN
|
||||||
SAVE SBIN/ .S
|
SAVE SBIN/ .S
|
||||||
ASM
|
ASM
|
||||||
|
|
Loading…
Reference in New Issue