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