diff --git a/A2OSX.BOOT.DSK b/A2OSX.BOOT.DSK index ad42d5a6..256ff6fb 100644 Binary files a/A2OSX.BOOT.DSK and b/A2OSX.BOOT.DSK differ diff --git a/A2OSX.SRC.po b/A2OSX.SRC.po index 3c53c218..0d3bc7ce 100644 Binary files a/A2OSX.SRC.po and b/A2OSX.SRC.po differ diff --git a/A2osX.S.GP.txt b/A2osX.S.GP.txt index dcaa23d3..ff5bb2b2 100644 --- a/A2osX.S.GP.txt +++ b/A2osX.S.GP.txt @@ -59,16 +59,25 @@ A2osX.MLICALL1 jsr GO.MAINLC jsr GO.AUXLC rts *-------------------------------------- -A2osX.ROMCALL1 bra * +A2osX.ROMCALL1 plx + stx .1+1 + plx + stx .1+2 + ldx RROMBNK1 + jsr .1 + ldx RRAMWRAMBNK1 + ldx RRAMWRAMBNK1 + rts +.1 jmp $FFFF *-------------------------------------- GO.MAINLC php clc - bra GO.SAVE.REG + .HS 2C bit abs GO.AUXLC php sec -GO.SAVE.REG sta A2osX.SaveA + sta A2osX.SaveA pla keep P in A for later stx A2osX.SaveX sty A2osX.SaveY @@ -79,6 +88,10 @@ GO.SAVE.REG sta A2osX.SaveA iny .1 stx GO.EXIT.JMP+1 sty GO.EXIT.JMP+2 + + ldx RRAMWRAMBNK1 + ldx RRAMWRAMBNK1 + sei ldy pStack bcs GO.AUXLC1 @@ -88,7 +101,6 @@ GO.MAINLC1 tsx ldx A2osX.SaveSM txs stx CLRALTZP - ldx RROMBNK1 bra GO.EXIT *-------------------------------------- GO.AUXLC1 stx SETALTZP @@ -96,8 +108,6 @@ GO.AUXLC1 stx SETALTZP stx A2osX.SaveSM ldx A2osX.SaveSX txs - ldx RRAMWRAMBNK1 - ldx RRAMWRAMBNK1 *-------------------------------------- GO.EXIT sty pStack pha push P on stack @@ -110,39 +120,18 @@ GO.EXIT.JMP jmp $FFFF GO.Reset jsr GO.AUXLC jmp KERNEL.COLDBOOT *-------------------------------------- -S.PRBYTE pha - lsr - lsr - lsr - lsr - ora #$30 - cmp #$3A - bcc .1 - adc #6 -.1 jsr S.COUT - pla - and #$0F - ora #$30 - cmp #$3A - bcc S.COUT - adc #6 - bra S.COUT -*-------------------------------------- -S.CROUT lda #13 -*-------------------------------------- -S.COUT phx - phy - ldx #DEVMGR.COUT - jsr pDevJmp - ply - plx - rts -*-------------------------------------- A2osX.SaveA .BS 1 A2osX.SaveX .BS 1 A2osX.SaveY .BS 1 *-------------------------------------- A2osX.GP.End .EQ * +*-------------------------------------- +* CONTROL SECTION : +*-------------------------------------- + .DO A2osX.GP.End>$BEBF + ERROR:GP too big + .FIN +*-------------------------------------- A2osX.GP.SIZE .EQ A2osX.GP.END-A2osX.GP.START .BS A2osX.GP.START+$100-* .EP diff --git a/A2osX.S.TOOLS.txt b/A2osX.S.TOOLS.txt index 482cdcc9..eade8d36 100644 --- a/A2osX.S.TOOLS.txt +++ b/A2osX.S.TOOLS.txt @@ -76,7 +76,7 @@ PrintCStrAX >STAX TmpPtr1 *-------------------------------------- PrintADec ldx #0 PrintAXDec >STAX HEX -PrintDec stz BCD + stz BCD stz BCD+1 stz BCD+2 diff --git a/A2osX.S.txt b/A2osX.S.txt index b4224a6d..ceb707b6 100644 --- a/A2osX.S.txt +++ b/A2osX.S.txt @@ -6,7 +6,7 @@ AUTO 6 .LIST OFF .OP 65C02 .OR $2000 - .TF /A2OSX.BOOT/A + .TF /A2OSX.BOOT/A2OSX *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I diff --git a/A2osX.STARTUP.txt b/A2osX.STARTUP.txt index 9f8d2dd7..dbd36724 100644 --- a/A2osX.STARTUP.txt +++ b/A2osX.STARTUP.txt @@ -3,21 +3,24 @@ PREFIX /A2OSX.BOOT NEW INC 1 AUTO 6 -SET PATH=%A2OSX%SBIN/;%A2OSX%BIN/ -SET LIB=%A2OSX%LIB/ -LOAD %A2OSX%DRV/CONSOLE.DRV -EXEC GETTY CON LOGIN -*LOAD %A2OSX%DRV/SSC.DRV 9600 N 8 1 X -*EXEC GETTY COM2 LOGIN -*LOAD %A2OSX%DRV/PPIC.DRV -LOAD %A2OSX%DRV/UTHERNET.DRV 000E3A123456 -EXEC TCPIP ETH3 -EXEC DHCPCLNT -*EXEC TELNETD -*MOUNT TFTP 192.168.1.5:/A2OSX /MNT/A2OSX -*MOUNT CIFS 192.168.1.5:/MSSHARE /MNT/MSSHARE -*LOAD %A2OSX%DRV/DHGR.DRV -*LOAD %A2OSX%DRV/MOUSE.DRV -*EXEC GUI +ECHO *** A2osX Startup file *** +echo Env: +SET +INSDRV CONSOLE.DRV +GETTY CON SBIN/LOGIN +INSDRV UTHERNET.DRV 000E3A123456 +TCPIP ETH3 +DHCPCLNT +#INSDRV SSC.DRV 9600 N 8 1 X +#GETTY COM2 SBIN/LOGIN +#INSDRV PPIC.DRV +#TELNETD +#MOUNT TFTP 192.168.1.5:/A2OSX /MNT/A2OSX +#MOUNT CIFS 192.168.1.5:/MSSHARE /MNT/MSSHARE +INSDRV DHGR.DRV +INSDRV MOUSE.DRV +GUI +PS +ECHO *** End A2osX Startup file *** MAN TEXT A2OSX.STARTUP diff --git a/BIN/ARP.S.txt b/BIN/ARP.S.txt index c04cdee0..6a522a91 100644 --- a/BIN/ARP.S.txt +++ b/BIN/ARP.S.txt @@ -10,8 +10,6 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I - .INB INC/KERNEL.I .INB INC/LIBSTR.I .INB INC/LIBTCPIP.I *-------------------------------------- @@ -48,11 +46,11 @@ L.MSG2 .DA MSG2 .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBSTR - >LOADLIBYA + >SYSCALL SYS.LoadLibYA sta hLIBSTR >LDYA L.LIBTCPIP - >LOADLIBYA + >SYSCALL SYS.LoadLibYA sta hLIBTCPIP ldy #S.PS.hARGS @@ -139,7 +137,7 @@ CS.RUN lda #ARP.TIMEOUT lda TimeOut beq .9 - jsr A2osX.SLEEP + >SYSCALL SYS.Sleep bra .1 .2 ldx #5 diff --git a/BIN/ASM.S.EXP.txt b/BIN/ASM.S.EXP.txt index ece66bb7..dbdccb62 100644 --- a/BIN/ASM.S.EXP.txt +++ b/BIN/ASM.S.EXP.txt @@ -77,7 +77,12 @@ EXP.Eval stz EXP.Operator lda (pData),y pass#2? bne .96 yes, undefined symbol - jsr + + + bra * + + + .41 ldx #3 .5 lda SRC.FLabel.Value,x diff --git a/BIN/ASM.S.FIO.txt b/BIN/ASM.S.FIO.txt index d064ba8b..c0c1081f 100644 --- a/BIN/ASM.S.FIO.txt +++ b/BIN/ASM.S.FIO.txt @@ -65,9 +65,9 @@ FIO.OpenFileA sta FIO.hFileName >SYSCALL SYS.MLIGetFileInfoA bcs .99 - >STYA ZPQuickPtr1 + >STYA ZPPtr1 ldy #1 - lda (ZPQuickPtr1),y + lda (ZPPtr1),y tax ldy #SRC.COUNT diff --git a/BIN/ASM.S.SYM.txt b/BIN/ASM.S.SYM.txt index c65280a3..9a9e7749 100644 --- a/BIN/ASM.S.SYM.txt +++ b/BIN/ASM.S.SYM.txt @@ -107,7 +107,7 @@ SYM.Dump >PUSHW L.MSG.SYMBOLS >PUSHW L.MSG.GSYMBOL >LIBCALL hLIBSTR,LIBSTR.PRINTF -* bcs .9 + bcs .9 .4 jsr SYM.GetByteGBlock beq .5 End Locals...proceed next Global @@ -119,11 +119,10 @@ SYM.Dump >PUSHW L.MSG.SYMBOLS >PUSHA >PUSHW L.MSG.LSYMBOL >LIBCALL hLIBSTR,LIBSTR.PRINTF -* bcc .4 - bra .4 + bcc .4 .5 lda #13 - jsr COUT + >SYSCALL SYS.CoutA ldy #SYM.DumpCount lda (pData),y diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index 9102a6c2..127c7be7 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -10,7 +10,6 @@ AUTO 6 *--------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I .INB INC/LIBSTR.I *--------------------------------------- ZPPtr1 .EQ ZPBIN @@ -139,7 +138,7 @@ J.LI .DA DIR.LI.CON .DA 0 *--------------------------------------- CS.INIT >LDYA L.LIBSTR - >LOADLIBYA + >SYSCALL SYS.LoadLibYA sta hLIBSTR ldy #S.PS.hARGS @@ -342,15 +341,6 @@ CS.QUIT jsr FIO.FileClose clc rts *--------------------------------------- -COUT phx - phy - ldx #DEVMGR.COUT - jsr pDevJmp - ply - plx - rts -pDevJmp jmp (pDev) -*--------------------------------------- .INB BIN/ASM.S.DIR .INB BIN/ASM.S.EXP .INB BIN/ASM.S.FIO diff --git a/BIN/CHTYP.S.txt b/BIN/CHTYP.S.txt index c5559891..8bbb09b5 100644 --- a/BIN/CHTYP.S.txt +++ b/BIN/CHTYP.S.txt @@ -6,23 +6,26 @@ AUTO 6 .LIST OFF .OP 65C02 .OR $2000 - .TF BIN/CHTYP + .TF /A2OSX.BOOT/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 +* File Header (16 Bytes) *-------------------------------------- CS.START cld jmp (.1,x) + .DA #$61 6502,Level 1 (65c02) + .DA #1 BIN Layout Version 1 + .DA 0 + .DA CS.END-CS.START Code Length To Relocate + .DA DS.END-DS.START Data Segment to Allocate + .DA 0 + .DA 0 +*-------------------------------------- +* Relocation Table +*-------------------------------------- .1 .DA CS.INIT .DA CS.RUN .DA CS.DOEVENT @@ -37,11 +40,11 @@ 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 +CS.INIT >LDYA L.LIBSTR + >SYSCALL SYS.LoadLibYA sta hLIBSTR + stz hDIRPATH stz hS.LISTDIR stz hVOLHEADER @@ -50,7 +53,7 @@ CS.INIT >LIBLOADP L.LIB.LIBSTR stz bCANCEL ldy #S.PS.hARGS - lda (pPsContext),y + lda (pPs),y beq .99 no arg, exit with err=0 >PUSHA @@ -76,25 +79,25 @@ CS.INIT >LIBLOADP L.LIB.LIBSTR bra .2 .10 ldy #S.PS.hARGS - lda (pPsContext),y + lda (pPs),y >PUSHA ldy #S.PS.hPREFIX - lda (pPsContext),y + lda (pPs),y >PUSHA >SYSCALL SYS.PStrCat sta hDIRPATH bra .3 .1 ldy #S.PS.hPREFIX -.2 lda (pPsContext),y +.2 lda (pPs),y .3 >SYSCALL SYS.ListDirInitA bcs .98 sta hS.LISTDIR - lda (pPsContext) + lda (pPs) ora #S.PS.F.EVENT Now accept events - sta (pPsContext) + sta (pPs) clc rts @@ -313,7 +316,7 @@ Push.Footer lda hVOLHEADER CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? lda (pEvent),y ldy #S.PS.hINDEV - cmp (pPsContext),y + cmp (pPs),y bne .9 lda (pEvent) and #S.EVT.F.KEY is it a KEY event? diff --git a/BIN/DNS.S.txt b/BIN/DNSINFO.S.txt similarity index 91% rename from BIN/DNS.S.txt rename to BIN/DNSINFO.S.txt index 6d6fb44b..80821913 100644 --- a/BIN/DNS.S.txt +++ b/BIN/DNSINFO.S.txt @@ -3,15 +3,13 @@ PREFIX /A2OSX.SRC NEW INC 1 AUTO 6 - .LIST ON + .LIST OFF .OP 65C02 .OR $2000 - .TF /A2OSX.BOOT/BIN/DNS + .TF /A2OSX.BOOT/BIN/DNSINFO *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I - .INB INC/KERNEL.I .INB INC/LIBSTR.I .INB INC/LIBTCPIP.I *-------------------------------------- @@ -49,11 +47,11 @@ CS.INIT stz hHostName stz hIP >LDYA L.LIBSTR - >LOADLIBYA + >SYSCALL SYS.LoadLibYA sta hLIBSTR >LDYA L.LIBTCPIP - >LOADLIBYA + >SYSCALL SYS.LoadLibYA sta hLIBTCPIP ldy #S.PS.hARGS @@ -201,5 +199,5 @@ hIP .BS 1 IP .BS 4 DNSNAME .BS K.DNS.MAXLEN+1 MAN -SAVE BIN/DNS.S +SAVE BIN/DNSINFO.S ASM diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt index 59e7eb14..6e4a02aa 100644 --- a/BIN/EDIT.S.txt +++ b/BIN/EDIT.S.txt @@ -9,9 +9,7 @@ AUTO 6 .TF /A2OSX.BOOT/BIN/EDIT *-------------------------------------- .INB INC/MACROS.I - .INB INC/KERNEL.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I .INB INC/LIBSTR.I *-------------------------------------- ZPPTR1 .EQ ZPBIN @@ -44,17 +42,14 @@ CS.INIT lda #0 dey bpl .1 - lda #12 - jsr COUT - ldy #S.PS.hARGS lda (pPs),y beq .7 >SYSCALL SYS.GetMemPtrA - >STYA ZPQuickPtr1 + >STYA ZPPTR1 - lda (ZPQuickPtr1),y + lda (ZPPTR1) cmp #'/' bne .10 @@ -83,18 +78,27 @@ CS.INIT lda #0 bcs .9 >LDYAI 0 -.8 pha +.8 pha Y,A = len,X=hMem tya ldy #FileLen sta (pData),y iny pla sta (pData),y + txa ldy #hBuffer - txa sta (pData),y + lda #$80 + ldy #bSaved + sta (pData),y + ldy #bInsert + sta (pData),y + + lda #12 + jsr COUT + lda (pPs) ora #S.PS.F.EVENT Now accept events sta (pPs) @@ -135,7 +139,7 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? sta (pData),y bra .8 -.1 +.1 cmp #$20 .8 clc rts @@ -143,30 +147,13 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? .9 sec rts *-------------------------------------- -CS.QUIT lda #12 - jsr COUT +CS.QUIT ldy #hBuffer + lda (pData),y + >SYSCALL SYS.FreeMemA 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 @@ -176,7 +163,6 @@ COUT phx ply plx rts -pDevJmp jmp (pDev) *-------------------------------------- CS.END *-------------------------------------- @@ -187,9 +173,10 @@ bCANCEL .BS 1 hFileName .BS 1 hBuffer .BS 1 FileLen .BS 2 -xPos .BS 2 -yPos .BS 2 - +cPos .BS 1 +rPos .BS 2 +bInsert .BS 1 +bSaved .BS 1 DS.END .ED *-------------------------------------- diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index a480bd7a..2d8e39e1 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -10,9 +10,12 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I .INB INC/LIBSTR.I *-------------------------------------- +ZPPtr1 .EQ ZPBIN +ZPPtr2 .EQ ZPBIN+2 +ZPPtr3 .EQ ZPBIN+4 +*-------------------------------------- * File Header (16 Bytes) *-------------------------------------- CS.START cld @@ -43,7 +46,7 @@ L.PRODOS.FT.TXT .DA PRODOS.FT.TXT .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBSTR - >LOADLIBYA + >SYSCALL SYS.LoadLibYA sta hLIBSTR lda #0 @@ -57,11 +60,11 @@ CS.INIT >LDYA L.LIBSTR beq .1 no arg, go get current prefix >SYSCALL SYS.GetMemPtrA - >STYA ZPQuickPtr1 - lda (ZPQuickPtr1) + >STYA ZPPtr1 + lda (ZPPtr1) beq .1 ldy #1 - lda (ZPQuickPtr1),y + lda (ZPPtr1),y cmp #'/' full path starting with '/'? bne .10 no, append to current prefix @@ -89,18 +92,18 @@ CS.INIT >LDYA L.LIBSTR pla pha >SYSCALL SYS.GetMemPtrA - >STYA ZPQuickPtr1 - lda (ZPQuickPtr1) + >STYA ZPPtr1 + lda (ZPPtr1) tay lda #'/' - cmp (ZPQuickPtr1),y + cmp (ZPPtr1),y beq .31 iny - sta (ZPQuickPtr1),y + sta (ZPPtr1),y .31 iny lda #'*' - sta (ZPQuickPtr1),y + sta (ZPPtr1),y .4 pla >SYSCALL SYS.ListDirInitA @@ -138,12 +141,12 @@ CS.RUN ldy #bCANCEL .3 pha >SYSCALL SYS.GetMemPtrA - >STYA ZPQuickPtr1 - lda (ZPQuickPtr1) + >STYA ZPPtr1 + lda (ZPPtr1) pha and #$0F - sta (ZPQuickPtr1) Adjust Filename len + sta (ZPPtr1) Adjust Filename len pla and #$F0 @@ -153,7 +156,7 @@ CS.RUN ldy #bCANCEL pla ldy #hVOLHEADER sta (pData),y - >PUSHW ZPQuickPtr1 + >PUSHW ZPPtr1 >PUSHW L.MSG.VOL.HEADER >LIBCALL hLIBSTR,LIBSTR.PRINTF clc @@ -166,7 +169,7 @@ CS.RUN ldy #bCANCEL ldy #hDIRHEADER sta (pData),y - >PUSHW ZPQuickPtr1 + >PUSHW ZPPtr1 >PUSHW L.MSG.DIR.HEADER >LIBCALL hLIBSTR,LIBSTR.PRINTF clc @@ -183,7 +186,7 @@ CS.RUN ldy #bCANCEL .5 cmp #$C0 Volume Name ? bne .6 - >PUSHW ZPQuickPtr1 + >PUSHW ZPPtr1 >PUSHW L.MSG.VOL bra .8 @@ -199,55 +202,55 @@ CS.RUN ldy #bCANCEL rts *-------------------------------------- Push.Dir ldy #$1E get access mask - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA - >PUSHW ZPQuickPtr1 + >PUSHW ZPPtr1 rts *-------------------------------------- Push.File >PUSHBI 0 4th byte of file len=0 ldy #$17 get file len (3 bytes) - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA dey - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA dey - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA ldy #$1E get access mask - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA ldy #$20 get aux type - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA dey - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA ldy #$10 get filetype lda L.PRODOS.FT.TXT - sta ZPQuickPtr2 + sta ZPPtr2 lda L.PRODOS.FT.TXT+1 - sta ZPQuickPtr2+1 + sta ZPPtr2+1 ldx #0 -.1 lda (ZPQuickPtr1),y +.1 lda (ZPPtr1),y cmp PRODOS.FT.ID,x beq .3 - lda ZPQuickPtr2 + lda ZPPtr2 clc adc #4 - sta ZPQuickPtr2 + sta ZPPtr2 bcc .2 - inc ZPQuickPtr2+1 + inc ZPPtr2+1 .2 inx cpx PRODOS.FT.COUNT bne .1 - lda (ZPQuickPtr1),y + lda (ZPPtr1),y lsr lsr lsr @@ -255,41 +258,41 @@ Push.File >PUSHBI 0 4th byte of file len=0 tax lda HEXDIGIT,x sta PRODOS.FT.DFLT+2 - lda (ZPQuickPtr1),y + lda (ZPPtr1),y and #$0F tax lda HEXDIGIT,x sta PRODOS.FT.DFLT+3 -.3 >PUSHW ZPQuickPtr2 - >PUSHW ZPQuickPtr1 +.3 >PUSHW ZPPtr2 + >PUSHW ZPPtr1 >LIBCALL hLIBSTR,LIBSTR.LCASEP - >PUSHW ZPQuickPtr1 + >PUSHW ZPPtr1 rts *-------------------------------------- Push.Dates ldy #$24 get modification time - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA dey - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA ldy #$22 - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA dey - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA ldy #$1B get creation time - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA dey - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA ldy #$19 - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA dey - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA rts *-------------------------------------- @@ -298,13 +301,13 @@ Push.Footer ldy #hVOLHEADER beq .20 >SYSCALL SYS.GetMemPtrA - >STYA ZPQuickPtr1 + >STYA ZPPtr1 ldy #$22 file_count - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA dey - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA >PUSHW L.MSG.VOL.END @@ -315,13 +318,13 @@ Push.Footer ldy #hVOLHEADER beq .21 >SYSCALL SYS.GetMemPtrA - >STYA ZPQuickPtr1 + >STYA ZPPtr1 ldy #$22 file_count - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA dey - lda (ZPQuickPtr1),y + lda (ZPPtr1),y >PUSHA >PUSHW L.MSG.DIR.END diff --git a/BIN/LSDEV.S.txt b/BIN/LSDEV.S.txt index ce666f40..9058c9ac 100644 --- a/BIN/LSDEV.S.txt +++ b/BIN/LSDEV.S.txt @@ -10,8 +10,6 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I - .INB INC/KERNEL.I .INB INC/LIBSTR.I *-------------------------------------- ZPPTR1 .EQ ZPBIN @@ -42,7 +40,7 @@ L.MSG1 .DA MSG1 .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBSTR - >LOADLIBYA + >SYSCALL SYS.LoadLibYA bcs .9 sta hLIBSTR diff --git a/BIN/MD.S.txt b/BIN/MD.S.txt index ef70d7e6..090b4159 100644 --- a/BIN/MD.S.txt +++ b/BIN/MD.S.txt @@ -9,9 +9,7 @@ AUTO 6 .TF /A2OSX.BOOT/BIN/MD *-------------------------------------- .INB INC/MACROS.I - .INB INC/KERNEL.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I .INB INC/LIBSTR.I *-------------------------------------- ZPPTR1 .EQ ZPBIN @@ -123,7 +121,6 @@ COUT phx ply plx rts -pDevJmp jmp (pDev) *-------------------------------------- CS.END hFullPath .BS 1 diff --git a/BIN/MEM.S.txt b/BIN/MEM.S.txt index 6f4d3af2..81010dc6 100644 --- a/BIN/MEM.S.txt +++ b/BIN/MEM.S.txt @@ -9,9 +9,7 @@ AUTO 6 .TF /A2OSX.BOOT/BIN/MEM *-------------------------------------- .INB INC/MACROS.I - .INB INC/KERNEL.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I .INB INC/LIBSTR.I *-------------------------------------- PAGELEN .EQ 22 @@ -49,7 +47,7 @@ L.MSG6 .DA MSG6 .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBSTR - >LOADLIBYA + >SYSCALL SYS.LoadLibYA bcs .9 sta hLIBSTR @@ -330,7 +328,6 @@ COUT phx ply plx rts -pDevJmp jmp (pDev) *-------------------------------------- CS.END LIBSTR >PSTRING "libstr.o" diff --git a/BIN/MOUNT.S.txt b/BIN/MOUNT.S.txt index 92503cd3..8189eb3a 100644 --- a/BIN/MOUNT.S.txt +++ b/BIN/MOUNT.S.txt @@ -10,8 +10,6 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I - .INB INC/KERNEL.I .INB INC/LIBSTR.I .INB INC/LIBTCPIP.I *-------------------------------------- @@ -52,11 +50,11 @@ CS.INIT ldy #S.PS.hARGS rts .1 >LDYA L.LIBSTR - >LOADLIBYA + >SYSCALL SYS.LoadLibYA sta hLIBSTR >LDYA L.LIBTCPIP - >LOADLIBYA + >SYSCALL SYS.LoadLibYA sta hLIBTCPIP >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ? diff --git a/BIN/NETCFG.S.txt b/BIN/NETINFO.S.txt similarity index 93% rename from BIN/NETCFG.S.txt rename to BIN/NETINFO.S.txt index 3ad69086..28eadb68 100644 --- a/BIN/NETCFG.S.txt +++ b/BIN/NETINFO.S.txt @@ -6,12 +6,10 @@ AUTO 6 .LIST OFF .OP 65C02 .OR $2000 - .TF /A2OSX.BOOT/BIN/NETCFG + .TF /A2OSX.BOOT/BIN/NETINFO *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I - .INB INC/KERNEL.I .INB INC/LIBSTR.I .INB INC/LIBTCPIP.I *-------------------------------------- @@ -55,7 +53,7 @@ L.MSG1.END .DA MSG1.END .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBSTR - >LOADLIBYA + >SYSCALL SYS.LoadLibYA sta hLIBSTR lda #K.PROTOID.IP @@ -200,5 +198,5 @@ MSG1.DOMAIN >CSTRING ".%s" MSG1.END >CSTRING "\nEnd of network configuration.\n" hLIBSTR .BS 1 MAN -SAVE BIN/NETCFG.S +SAVE BIN/NETINFO.S ASM diff --git a/BIN/PING.S.txt b/BIN/PING.S.txt index 709321f8..3ecf1360 100644 --- a/BIN/PING.S.txt +++ b/BIN/PING.S.txt @@ -10,8 +10,6 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I - .INB INC/KERNEL.I .INB INC/LIBSTR.I .INB INC/LIBTCPIP.I *-------------------------------------- @@ -20,6 +18,7 @@ PING.TIMEOUT .EQ 40 40*100ms = 4 sec. ZPFrameBase1 .EQ ZPBIN ZPFrameLen1 .EQ ZPBIN+2 ZPFramePtr1 .EQ ZPBIN+4 +ZPIPCfgPtr .EQ ZPBIN+6 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -54,22 +53,22 @@ CS.INIT ldy #S.PS.hARGS rts .1 >LDYA L.LIBSTR - >LOADLIBYA + >SYSCALL SYS.LoadLibYA sta hLIBSTR >LDYA L.LIBTCPIP - >LOADLIBYA + >SYSCALL SYS.LoadLibYA sta hLIBTCPIP >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ? bcs .9 - >STYA ZPQuickPtr1 + >STYA ZPIPCfgPtr - lda (ZPQuickPtr1) Configured ? + lda (ZPIPCfgPtr) Configured ? bpl .9 ldy #S.IPCFG.HDEV - lda (ZPQuickPtr1),y + lda (ZPIPCfgPtr),y sta hDev lda A2OSX.RANDOM16 @@ -113,7 +112,7 @@ CS.RUN.DNSQUERY >PUSHW pData DST.IP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.QUERY bcc CS.RUN.IPOK - jsr A2osX.SLEEP + >SYSCALL SYS.Sleep ldy #TimeOut lda (pData),y bne CS.RUN.DNSQUERY @@ -212,7 +211,7 @@ CS.RUN.ECHO >LIBCALL hLIBTCPIP,LIBTCPIP.NEW.ICMP.FRAME >PUSHYA >LIBCALL hLIBTCPIP,LIBTCPIP.SEND.ICMP.FRAME bcc .4 - jsr A2osX.SLEEP + >SYSCALL SYS.Sleep ldy #TimeOut lda (pData),y bne .3 @@ -228,7 +227,7 @@ CS.RUN.ECHO >LIBCALL hLIBTCPIP,LIBTCPIP.NEW.ICMP.FRAME ldy #TimeOut sta (pData),y -CS.RUN.WAIT jsr A2osX.SLEEP +CS.RUN.WAIT >SYSCALL SYS.Sleep ldy #bReply lda (pData),y bne .1 @@ -257,7 +256,7 @@ CS.RUN.WAIT jsr A2osX.SLEEP lda (pData),y beq .2 - jsr A2osX.SLEEP + >SYSCALL SYS.Sleep bra .1 .2 jmp CS.RUN.ECHO diff --git a/BIN/PS.S.txt b/BIN/PS.S.txt index 75bc0314..cb6a457c 100644 --- a/BIN/PS.S.txt +++ b/BIN/PS.S.txt @@ -10,8 +10,6 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I - .INB INC/KERNEL.I .INB INC/LIBSTR.I *-------------------------------------- ZPPTR1 .EQ ZPBIN @@ -43,7 +41,7 @@ L.MSG2 .DA MSG2 .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBSTR - >LOADLIBYA + >SYSCALL SYS.LoadLibYA sta hLibStr clc rts diff --git a/BIN/RM.S.txt b/BIN/RM.S.txt index d8a7121c..1a89a366 100644 --- a/BIN/RM.S.txt +++ b/BIN/RM.S.txt @@ -10,8 +10,6 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I - .INB INC/LIBSTR.I *-------------------------------------- ZPListDirPTR .EQ ZPBIN *-------------------------------------- @@ -250,7 +248,6 @@ COUT phx ply plx rts -pDevJmp jmp (pDev) *-------------------------------------- CS.END FullPath .BS 64 diff --git a/BIN/RPCINFO.S.txt b/BIN/RPCINFO.S.txt index f6babcd6..879b469b 100644 --- a/BIN/RPCINFO.S.txt +++ b/BIN/RPCINFO.S.txt @@ -10,8 +10,6 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I - .INB INC/KERNEL.I .INB INC/LIBSTR.I .INB INC/LIBTCPIP.I *-------------------------------------- @@ -20,6 +18,7 @@ RPCINFO.TIMEOUT .EQ 40 40*100ms = 4 sec. ZPFrameBase1 .EQ ZPBIN ZPFrameLen1 .EQ ZPBIN+2 ZPFramePtr1 .EQ ZPBIN+4 +ZPIPCfgPtr .EQ ZPBIN+6 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -54,22 +53,22 @@ CS.INIT ldy #S.PS.hARGS rts .1 >LDYA L.LIBSTR - >LOADLIBYA + >SYSCALL SYS.LoadLibYA sta hLIBSTR >LDYA L.LIBTCPIP - >LOADLIBYA + >SYSCALL SYS.LoadLibYA sta hLIBTCPIP >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ? bcs .9 - >STYA ZPQuickPtr1 + >STYA ZPIPCfgPtr - lda (ZPQuickPtr1) Configured ? + lda (ZPIPCfgPtr) Configured ? bpl .9 ldy #S.IPCFG.HDEV - lda (ZPQuickPtr1),y + lda (ZPIPCfgPtr),y sta hDev lda A2OSX.RANDOM16 diff --git a/BIN/TEST.S.txt b/BIN/TEST.S.txt index 9a244b65..8fceadac 100644 --- a/BIN/TEST.S.txt +++ b/BIN/TEST.S.txt @@ -6,23 +6,26 @@ AUTO 6 .LIST OFF .OP 65C02 .OR $2000 - .TF BIN/TEST + .TF /A2OSX.BOOT/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 +* File Header (16 Bytes) *-------------------------------------- CS.START cld jmp (.1,x) + .DA #$61 6502,Level 1 (65c02) + .DA #1 BIN Layout Version 1 + .DA 0 + .DA CS.END-CS.START Code Length To Relocate + .DA 0 + .DA 0 + .DA 0 +*-------------------------------------- +* Relocation Table +*-------------------------------------- .1 .DA CS.INIT .DA CS.RUN .DA CS.EVENT @@ -39,21 +42,20 @@ 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 +CS.INIT >LDYA L.LIBSTR + >SYSCALL SYS.LoadLibYA sta hLIBSTR ldy #S.PS.hPREFIX - lda (pPsContext),y + lda (pPs),y >SYSCALL SYS.GetMemPtrA >PUSHYA >PUSHW L.MSG0 >LIBCALL hLIBSTR,LIBSTR.PRINTF ldy #S.PS.hCS - lda (pPsContext),y + lda (pPs),y >SYSCALL SYS.GetMemByIDA >STYA ZPQuickPtr1 ldy #S.MEM.BIN @@ -64,18 +66,18 @@ CS.INIT >LIBLOADP L.LIBSTR >LIBCALL hLIBSTR,LIBSTR.PRINTF ldy #S.PS.hARGS - lda (pPsContext),y + lda (pPs),y >SYSCALL SYS.GetMemPtrA >PUSHYA ldy #S.PS.hCMD - lda (pPsContext),y + lda (pPs),y >SYSCALL SYS.GetMemPtrA >PUSHYA >PUSHW L.MSG2 >LIBCALL hLIBSTR,LIBSTR.PRINTF ldy #S.PS.hENV - lda (pPsContext),y + lda (pPs),y >SYSCALL SYS.GetMemPtrA >STYA ZPBIN @@ -163,10 +165,8 @@ CROUT lda #13 *-------------------------------------- COUT phx phy - >PUSHA - ldy #S.PS.hOUTDEV - lda (pPsContext),y - >SYSCALL SYS.DevOutA + ldx #DEVMGR.COUT + jsr pDevJmp ply plx rts diff --git a/DRV/CONSOLE.DRV.S.txt b/DRV/CONSOLE.DRV.S.txt index 4ccd0798..84059d5a 100644 --- a/DRV/CONSOLE.DRV.S.txt +++ b/DRV/CONSOLE.DRV.S.txt @@ -10,8 +10,6 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I - .INB INC/KERNEL.I .INB INC/IO.I *-------------------------------------- CURSOR.BLINK.SPEED .EQ 2 @@ -37,16 +35,15 @@ L.MSG.DETECT .DA MSG.DETECT .DA 0 End Of Reloc Table *-------------------------------------- Dev.Detect >LDYA L.MSG.DETECT - >SYSCALL SYS.SysScrPPSTRYA + >SYSCALL SYS.PSTROutYA lda A2osX.SCREENS ora #A2osX.SCREENS.C sta A2osX.SCREENS - clc rts CS.END -MSG.DETECT >PSTRING "\nApple IIe/IIc 80 Col Driver." +MSG.DETECT >PSTRING "Apple IIe/IIc 80 Col Driver.\n" *-------------------------------------- * Device Header (16 Bytes) *-------------------------------------- @@ -72,8 +69,10 @@ L.DEVINFO .DA DEVINFO OPEN stz CURON lda #$80 sta INVFLG - jsr HOME + + lda #A2osX.SCREENS.C + >SYSCALL SYS.ScreenSelectA clc rts @@ -84,7 +83,7 @@ GETEVENT lda A2osX.TIMER16 beq .1 jsr CURBLNK -.1 lda A2osX.SCREENS +.1 lda A2osX.ASCREEN and #A2osX.SCREENS.C is screen active? beq .9 diff --git a/DRV/DHGR.DRV.S.txt b/DRV/DHGR.DRV.S.txt index 41265408..42084855 100644 --- a/DRV/DHGR.DRV.S.txt +++ b/DRV/DHGR.DRV.S.txt @@ -10,8 +10,6 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I - .INB INC/KERNEL.I .INB INC/IO.I *-------------------------------------- ZPBASE .EQ ZPDRV @@ -50,7 +48,7 @@ MSG.DETECT >PSTRING "\nApple IIe/IIc DoubleHGR Driver." *-------------------------------------- DEV.HEADER cld jmp (DRV.CS.START,x) - .DA #0 + .DA #S.DEV.F.EVENT >PSTRING "GFX" NAME .HS 00 NAME must Be 5 bytes long .HS 00.00 @@ -73,7 +71,12 @@ DRV.CS.START .DA OPEN L.DEVINFO .DA DEVINFO .DA 0 end or relocation *-------------------------------------- -OPEN sta SETHIRES +OPEN lda #A2osX.SCREENS.G + >SYSCALL SYS.ScreenSelectA + + sta SETHIRES + lda RD80STORE + pha sta SET80STORE prepare for page switching ldx #192 @@ -106,10 +109,25 @@ OPEN sta SETHIRES txa bne .81 - clc + pla + bmi .84 + + sta CLR80STORE +.84 clc rts *-------------------------------------- -GETEVENT +GETEVENT lda A2osX.ASCREEN + and #A2osX.SCREENS.G is screen active? + beq .9 + + >SYSCALL SYS.GetKeyboardEvent + bcs .9 + rts + +.9 lda #0 Error = no event + sec + rts +*-------------------------------------- COUT IRQ sec rts diff --git a/DRV/MOUSE.DRV.S.txt b/DRV/MOUSE.DRV.S.txt index 9ad10cec..151db151 100644 --- a/DRV/MOUSE.DRV.S.txt +++ b/DRV/MOUSE.DRV.S.txt @@ -11,7 +11,6 @@ AUTO 6 .INB INC/MACROS.I .INB INC/IO.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I *-------------------------------------- ZPGoMouse .EQ ZPDRV ZPTmpPtr1 .EQ ZPDRV+2 @@ -65,7 +64,7 @@ L.DEV.HEADER.NAME .DA DEV.HEADER.NAME .DA 0 End Of Reloc Table *-------------------------------------- Dev.Detect >LDYA L.MSG.DETECT - >SYSCALL SYS.SysScrPPSTRYA + >SYSCALL SYS.PSTROutYA stz ZPTmpPtr1 lda #$C1 @@ -87,7 +86,7 @@ Dev.Detect >LDYA L.MSG.DETECT bne .1 >LDYA L.MSG.DETECT.KO - >SYSCALL SYS.SysScrPPSTRYA + >SYSCALL SYS.PSTROutYA lda #DEVMGR.ERRNOHW Not Found in any slot, exiting sec @@ -106,16 +105,18 @@ Dev.Detect >LDYA L.MSG.DETECT sta DEVSLOTn0 >LDYA L.MSG.DETECT.OK - >SYSCALL SYS.SysScrPPSTRYA + >SYSCALL SYS.PSTROutYA >LDYA L.DEV.HEADER.NAME - >SYSCALL SYS.SysScrPPSTRYA + >SYSCALL SYS.PSTROutYA + lda #13 + >SYSCALL SYS.COutA clc rts *-------------------------------------- CS.END -MSG.DETECT >PSTRING "\nApple II Mouse Driver." -MSG.DETECT.OK >PSTRING "\nMouse Card Driver Installed As Device : " -MSG.DETECT.KO >PSTRING "\nMouse Card Not Found." +MSG.DETECT >PSTRING "Apple Mouse Card/IIc Mouse Driver." +MSG.DETECT.OK >PSTRING "Mouse Installed As Device : " +MSG.DETECT.KO >PSTRING "No Mouse Found.\n" *-------------------------------------- * Device Header (16 Bytes) *-------------------------------------- @@ -188,7 +189,11 @@ OPEN clc rts *-------------------------------------- -GETEVENT php +GETEVENT lda A2osX.ASCREEN + and #A2osX.SCREENS.G is screen active? + beq .9 + + php sei lda RD80STORE @@ -252,8 +257,9 @@ GETEVENT php clc rts -.9 sec A=0 : no event - rts +.9 lda #0 Error = no event + sec + rts *-------------------------------------- COUT IRQ sec diff --git a/DRV/UTHERNET.DRV.S.txt b/DRV/UTHERNET.DRV.S.txt index 0a2ad0d5..1a39a2c3 100644 --- a/DRV/UTHERNET.DRV.S.txt +++ b/DRV/UTHERNET.DRV.S.txt @@ -10,8 +10,6 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I - .INB INC/KERNEL.I *-------------------------------------- ZPTmpPTR .EQ ZPDRV *-------------------------------------- @@ -126,11 +124,14 @@ CS.START cld * Relocation Table *-------------------------------------- L.MSG.DETECT .DA MSG.DETECT +L.MSG.DETECT.OK .DA MSG.DETECT.OK +L.MSG.DETECT.KO .DA MSG.DETECT.KO +L.DEV.HEADER.NAME .DA DEV.HEADER.NAME .DA 0 End Of Reloc Table *-------------------------------------- Dev.Detect sta hArgs >LDYA L.MSG.DETECT - >SYSCALL SYS.SysScrPPSTRYA + >SYSCALL SYS.PSTROutYA ldx #$10 .1 stx DEVSLOTx0 @@ -150,7 +151,10 @@ Dev.Detect sta hArgs cpx #$80 bne .1 - lda #DEVMGR.ERRNOHW + >LDYA L.MSG.DETECT.KO + >SYSCALL SYS.PSTROutYA + + lda #DEVMGR.ERRNOHW Not Found in any slot, exiting sec rts @@ -165,7 +169,13 @@ Dev.Detect sta hArgs sec rts -.4 clc +.4 >LDYA L.MSG.DETECT.OK + >SYSCALL SYS.PSTROutYA + >LDYA L.DEV.HEADER.NAME + >SYSCALL SYS.PSTROutYA + lda #13 + >SYSCALL SYS.COutA + clc rts *-------------------------------------- DecodeMac lda (ZPTmpPTR) @@ -221,7 +231,9 @@ Asc2NibbleA cmp #$30 rts *-------------------------------------- CS.END -MSG.DETECT >PSTRING "\nUtherNet/CS8900A Driver." +MSG.DETECT >PSTRING "UtherNet/CS8900A Driver.\n" +MSG.DETECT.OK >PSTRING "UtherNet/CS8900A Installed As Device : " +MSG.DETECT.KO >PSTRING "Hardware Not Found.\n" hArgs .BS 1 *-------------------------------------- * Device Header (16 Bytes) diff --git a/ETC/HOSTNAME b/ETC/HOSTNAME new file mode 100644 index 00000000..ff3d9873 --- /dev/null +++ b/ETC/HOSTNAME @@ -0,0 +1 @@ +apple2-host \ No newline at end of file diff --git a/ETC/HOSTS b/ETC/HOSTS new file mode 100644 index 00000000..e69de29b diff --git a/ETC/TCPIP.CONF b/ETC/TCPIP.CONF index b28034df..43789235 100644 --- a/ETC/TCPIP.CONF +++ b/ETC/TCPIP.CONF @@ -8,7 +8,6 @@ MASK=255.255.255.0 GW=192.168.1.1 DNS=192.168.1.2 DNS=192.168.1.1 -HOSTNAME=apple2 DOMAIN=coincoin.hd.free.fr MAN TEXT ETC/TCPIP.CONF diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 0426f7d4..6ff50988 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -7,11 +7,6 @@ AUTO 6 *-------------------------------------- * Aux ZP *-------------------------------------- -ZPQuickPtr1 .EQ $0 Temp Ptrs for use in very limited scope -ZPQuickPtr2 .EQ $2 (could be trashed by any JSR) -ZPQuickPtr3 .EQ $4 -ZPQuickPtr4 .EQ $6 - pCode .EQ $10 pData .EQ $12 pStack .EQ $14 @@ -26,12 +21,12 @@ ZPDRV .EQ $80 ZPBIN .EQ $90 ZPLIB .EQ $A0 *-------------------------------------- +* !!!!!!! RESERVED APPLESOFT.I !!!!!!! +* $5E -> $C8 +*-------------------------------------- * $B0 -> $FF KERNEL RESERVED *-------------------------------------- -ZPMemMgr .EQ $B0 -ZPSysScr .EQ $C0 -ZPDevMgr .EQ $D0 -ZPTskMgr .EQ $E0 +ZPMemMgr .EQ $E0 *-------------------------------------- R.VCPU16 .EQ $F0 R.AX .EQ R.VCPU16 @@ -73,7 +68,6 @@ D.STACK.TOP .EQ $03F0 ...Down to $0300 Z80STACK .EQ $0FFF (0FFFFh) Down to $0F00 Z80JMP .EQ $1000 *-------------------------------------- -MLICALL.PARAMS .EQ $1100 DevMgr.Table .EQ $1200 K.DEV.MAX*S.DEV.SIZE=32*16=512b *-------------------------------------- TskMgr.Table .EQ $1400 K.PS.MAX*S.PS.SIZE=64*16=1k @@ -103,6 +97,10 @@ pDevJmp .EQ $BE10 pCodeJmp .EQ $BE13 pLibJmp .EQ $BE16 *-------------------------------------- +* $11 bytes min !!!! +*-------------------------------------- +MLICALL.PARAMS .EQ $BEC0 +*-------------------------------------- * $BEE0->$BEFF : Public Variables *-------------------------------------- A2osX.SCREENS .EQ $BEE0 @@ -189,13 +187,13 @@ SYS.LoadDrvA .EQ $26 *-------------------------------------- SYS.ExpandPStrA .EQ $30 SYS.ExpandPStrYA .EQ $32 -SYS.GetEnvVarH .EQ $34 -SYS.GetEnvVarP .EQ $36 +SYS.GetEnvVarA .EQ $34 +SYS.GetEnvVarYA .EQ $36 SYS.SetEnvVarH .EQ $38 SYS.SetEnvVarP .EQ $3A -SYS.DelEnvVarH .EQ $3C -SYS.DelEnvVarP .EQ $3E +SYS.DelEnvVarA .EQ $3C +SYS.DelEnvVarYA .EQ $3E *-------------------------------------- SYS.MLICreateFile .EQ $40 SYS.MLICreateDirA .EQ $42 @@ -243,10 +241,10 @@ SYS.GetDevByNameYA .EQ $84 SYS.GetKeyboardEvent .EQ $88 *-------------------------------------- -SYS.ExecProcessNewEnvA .EQ $90 -SYS.ExecProcessA .EQ $92 -SYS.CreateProcessNewEnvA .EQ $94 -SYS.CreateProcessA .EQ $96 +SYS.ExecProcessNewEnvYA .EQ $90 +SYS.ExecProcessYA .EQ $92 +SYS.CreateProcessNewEnvYA .EQ $94 +SYS.CreateProcessYA .EQ $96 SYS.GetPSByIDA .EQ $98 @@ -267,9 +265,15 @@ SYS.GetNetCfgA .EQ $B4 SYS.ClrNetCfgA .EQ $B6 *-------------------------------------- SYS.ScreenSelectA .EQ $C0 +*-------------------------------------- +SYS.COutA .EQ $D0 +SYS.PSTROutA .EQ $D2 +SYS.PSTROutYA .EQ $D4 -SYS.SysScrPPSTRA .EQ $C4 -SYS.SysScrPPSTRYA .EQ $C6 +SYS.HexOutA .EQ $D8 +SYS.HexOutYA .EQ $DA +SYS.DecOutA .EQ $DC +SYS.DecOutYA .EQ $DE *-------------------------------------- * ERROR CODES *-------------------------------------- diff --git a/INC/APPLESOFT.I.txt b/INC/APPLESOFT.I.txt new file mode 100644 index 00000000..1b4637fd --- /dev/null +++ b/INC/APPLESOFT.I.txt @@ -0,0 +1,70 @@ +PR#3 +PREFIX /A2OSX.SRC +NEW +INC 1 +AUTO 6 + .LIST OFF +*-------------------------------------- +* AppleSoft ZP +* http://www.txbobsc.com/scsc/scdocumentor/index.html#toc +*-------------------------------------- +SIGNFLG .EQ $16 FLAGS SIGN IN TAN +INDEX .EQ $5E Ptr Used by Math routines +RESULT .EQ $62 -> $66, RESULT OF LAST * OR / +FAC .EQ $9D -> $A1 (5 bytes) +FAC.SIGN .EQ $A2 +ARG .EQ $A5 -> $A9 (5 bytes) +ARG.SIGN .EQ $AA +SGNCPR .EQ $AB FLAGS OPP SIGN IN FP ROUT +CHRGET .EQ $B1 -> $C8 +CHRGOT .EQ $B7 +TXTPTR .EQ $B8 +*-------------------------------------- +*-------------------------------------- +*-------------------------------------- +*-------------------------------------- +* FAC = (Y,A) - FAC +*-------------------------------------- +FSUB .EQ $E7A7 +*-------------------------------------- +* FAC = (Y,A) + FAC +*-------------------------------------- +FADD .EQ $E7BE +*-------------------------------------- +LOG .EQ $E941 +*-------------------------------------- +* FAC = (Y,A) * FAC +*-------------------------------------- +FMULT .EQ $E97F +*-------------------------------------- +* FAC = (Y,A) / FAC +*-------------------------------------- +FDIV .EQ $EA66 +*-------------------------------------- +* CONVERT STRING TO FP VALUE IN FAC +* STRING POINTED TO BY TXTPTR +* FIRST CHAR ALREADY SCANNED BY CHRGET +* (A) = FIRST CHAR, C=0 IF DIGIT. +*-------------------------------------- +FIN .EQ $EC4A +*-------------------------------------- +SQR .EQ $EE8D +*-------------------------------------- +* FAC = E ^ FAC +*-------------------------------------- +EXP .EQ $EF09 +*-------------------------------------- +RND .EQ $EFAE +*-------------------------------------- +COS .EQ $EFEA +*-------------------------------------- +SIN .EQ $EFF1 +*-------------------------------------- +TAN .EQ $F03A +*-------------------------------------- +ATN .EQ $F09E +*-------------------------------------- + +*-------------------------------------- +MAN +SAVE INC/APPLESOFT.I diff --git a/INC/MACROS.I.txt b/INC/MACROS.I.txt index 476154e0..fae6739c 100644 --- a/INC/MACROS.I.txt +++ b/INC/MACROS.I.txt @@ -10,6 +10,14 @@ AUTO 6 bpl :1 sta $C010 .EM +*-------------------------------------- + .MA DEBUGOA + bit $C061 + bpl :2 +:1 bit $C000 + bpl :1 + sta $C010 +:2 .EM *-------------------------------------- * SYSCALLs Macros *-------------------------------------- @@ -101,16 +109,6 @@ AUTO 6 ldx #]2 jsr A2osX.DRVCALL .EM -*-------------------------------------- - .MA LOADLIBYA - ldx #SYS.LoadLibYA - jsr A2osX.SYSCALL - .EM -*-------------------------------------- - .MA LOADLIBA - ldx #SYS.LoadLibA - jsr A2osX.SYSCALL - .EM *-------------------------------------- .MA LIBCALL ldy ]1 @@ -287,9 +285,9 @@ AUTO 6 .EM *-------------------------------------- .MA PSTRING - .DA #:2-:1 -:1 .AS "]1" -:2 .EQ * + .DA #:1-*-1 + .AS "]1" +:1 .EQ * .EM MAN SAVE INC/MACROS.I diff --git a/LIB/LIBSTR.S.txt b/LIB/LIBSTR.S.txt index 9bfb534f..91d65390 100644 --- a/LIB/LIBSTR.S.txt +++ b/LIB/LIBSTR.S.txt @@ -10,7 +10,6 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I *-------------------------------------- ZPTmpPtr1 .EQ ZPLIB+2 ZPTmpPtr2 .EQ ZPLIB+4 @@ -761,7 +760,6 @@ COUT phx ply plx rts -pDevJmp jmp (pDev) *-------------------------------------- CS.END PRINTFTBL1 .AS -"abBdDLeEhHiIsStT" diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index bcbbe2e5..34f97114 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -10,8 +10,6 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I - .INB INC/KERNEL.I .INB INC/LIBTCPIP.I *-------------------------------------- ZPFrameBase1 .EQ ZPLIB @@ -469,7 +467,6 @@ ComputeChecksum >PULLA eor #$FF rts *-------------------------------------- -pDevJmp jmp (pDev) CS.END *-------------------------------------- bFirstLoad .DA #0 diff --git a/SBIN/DHCPCLNT.S.txt b/SBIN/DHCPCLNT.S.txt index 3959d5ed..0c45674f 100644 --- a/SBIN/DHCPCLNT.S.txt +++ b/SBIN/DHCPCLNT.S.txt @@ -10,14 +10,13 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I - .INB INC/KERNEL.I .INB INC/LIBSTR.I .INB INC/LIBTCPIP.I *-------------------------------------- ZPFrameBase1 .EQ ZPBIN ZPFrameLen1 .EQ ZPBIN+2 ZPFramePtr1 .EQ ZPBIN+4 +ZPPtr1 .EQ ZPBIN+6 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -43,20 +42,20 @@ L.IPCFG .DA IPCFG .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBSTR - >LOADLIBYA + >SYSCALL SYS.LoadLibYA sta hLIBSTR >LDYA L.LIBTCPIP - >LOADLIBYA + >SYSCALL SYS.LoadLibYA sta hLIBTCPIP >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG bcs .9 - >STYA ZPQuickPTR1 + >STYA ZPPtr1 ldy #S.IPCFG .1 dey - lda (ZPQuickPTR1),y + lda (ZPPtr1),y sta IPCFG,y tya bne .1 @@ -97,7 +96,7 @@ CS.RUN.DISC jsr SendDHCPDiscFrame lda #S.IPCFG.STATUS.SDISC sta IPCFG -CS.RUN.OFFER jsr A2osX.SLEEP +CS.RUN.OFFER >SYSCALL SYS.Sleep lda IPCFG and #S.IPCFG.STATUS.ROFFER bne CS.RUN.REQ @@ -112,7 +111,7 @@ CS.RUN.REQ jsr SendDHCPReqFrame lda #S.IPCFG.STATUS.SREQ sta IPCFG -CS.RUN.RACK jsr A2osX.SLEEP +CS.RUN.RACK >SYSCALL SYS.Sleep lda IPCFG and #S.IPCFG.STATUS.RACK bne CS.RUN.OK @@ -209,15 +208,15 @@ SendDHCPDiscFrame lda ZPFrameBase1 clc adc #S.UDP - sta ZPQuickPTR1 + sta ZPPtr1 lda ZPFrameBase1+1 adc /S.UDP - sta ZPQuickPTR1+1 + sta ZPPtr1+1 ldy #FRAME.DISC.LEN .1 dey lda FRAME.DISC,y - sta (ZPQuickPTR1),y + sta (ZPPtr1),y tya bne .1 @@ -363,15 +362,15 @@ SendDHCPReqFrame lda ZPFrameBase1 clc adc #S.UDP - sta ZPQuickPTR1 + sta ZPPtr1 lda ZPFrameBase1+1 adc /S.UDP - sta ZPQuickPTR1+1 + sta ZPPtr1+1 ldy #FRAME.REQ.LEN .1 dey lda FRAME.REQ,y - sta (ZPQuickPTR1),y + sta (ZPPtr1),y tya bne .1 diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index e5067c48..bd6aca9b 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -10,8 +10,6 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I - .INB INC/KERNEL.I *-------------------------------------- ZPTmp1 .EQ ZPBIN *-------------------------------------- @@ -42,7 +40,8 @@ CS.INIT ldy #S.PS.hARGS bne .1 >LDYA L.MSG.USAGE - jsr PRINT.MSG + >SYSCALL SYS.PSTROutYA + lda #0 sec rts @@ -50,12 +49,13 @@ CS.INIT ldy #S.PS.hARGS >PUSHBI $20 Push SEP=' ' >PUSHBI 1 Push 1 for getting INDEV >SYSCALL SYS.PStrGetTkn - bcs .98 + bcs .99 sta hDEVNAME >SYSCALL SYS.GetDevByNameA - bcs .99 + bcs .98 + >STYA pDev txa ldy #S.PS.hINDEV sta (pPs),y @@ -77,13 +77,11 @@ CS.INIT ldy #S.PS.hARGS ldy #hBinName sta (pData),y - + ldx #DEVMGR.OPEN jsr pDevJmp if error CS, else... - rts ...Tell TskMgr To stay in memory - .98 pha lda hDEVNAME >SYSCALL SYS.FreeMemA @@ -91,41 +89,33 @@ CS.INIT ldy #S.PS.hARGS sec .99 rts *-------------------------------------- -CS.RUN ldy #S.PS.hOUTDEV - lda (pPs),y - >SYSCALL SYS.GetDevByIDA - >STYA pDev - - lda #13 try send a CR... - - jsr COUT Device Is Ready ? +CS.RUN lda #13 try send a CR... + >SYSCALL SYS.COutA Device Is Ready ? - bcc .1 - clc no..loop... - rts + bcs .8 no..loop... .1 >LDYA L.MSG.GREETINGS - jsr PRINT.MSG - bcs .9 + >SYSCALL SYS.PSTROutYA - ldy #S.PS.hINDEV - lda (pPs),y - jsr PRBYTE - bcs .9 - lda #',' - - jsr COUT - bcs .9 + bcs .8 unable to send greetings...loop.. ldy #S.PS.hOUTDEV lda (pPs),y - jsr PRBYTE - bcs .9 - + >SYSCALL SYS.HexOutA + bcs .8 + + lda #13 + >SYSCALL SYS.COutA + bcs .8 + ldy #hBinName lda (pData),y - >SYSCALL SYS.ExecProcessNewEnvA + ldy #0 + >SYSCALL SYS.ExecProcessNewEnvYA .9 rts + +.8 clc + rts *-------------------------------------- CS.DOEVENT sec rts @@ -140,53 +130,9 @@ CS.QUIT ldy #hBinName clc rts *-------------------------------------- -* PRIVATE -*-------------------------------------- -PRINT.MSG >STYA ZPTmp1 - ldy #0 -.1 lda (ZPTmp1),y - beq .2 - jsr COUT - bcs .9 - iny - bne .1 -.2 clc -.9 rts -*-------------------------------------- -PRBYTE pha - lsr - lsr - lsr - lsr - ora #$30 - cmp #$3A - bcc .1 - adc #6 -.1 jsr COUT - pla - bcs .9 - and #$0F - ora #$30 - cmp #$3A - bcc .2 - adc #6 -.2 jsr COUT -.9 rts -*-------------------------------------- -CROUT lda #13 -*-------------------------------------- -COUT phx - phy - ldx #DEVMGR.COUT - jsr pDevJmp - ply - plx - rts -pDevJmp jmp (pDev) -*-------------------------------------- CS.END -MSG.USAGE >CSTRING "GETTY " -MSG.GREETINGS >CSTRING "A2osX-GeTTY on Dev=" +MSG.USAGE >PSTRING "GETTY " +MSG.GREETINGS >PSTRING "A2osX-GeTTY on Dev=" hDEVNAME .BS 1 *-------------------------------------- .DUMMY diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt index 17006f7d..26db6b86 100644 --- a/SBIN/GUI.S.txt +++ b/SBIN/GUI.S.txt @@ -10,7 +10,6 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- diff --git a/SBIN/HTTPD.S.txt b/SBIN/HTTPD.S.txt new file mode 100644 index 00000000..e69de29b diff --git a/SBIN/INSDRV.S.txt b/SBIN/INSDRV.S.txt new file mode 100644 index 00000000..16a8f01f --- /dev/null +++ b/SBIN/INSDRV.S.txt @@ -0,0 +1,74 @@ +PR#3 +PREFIX /A2OSX.SRC +NEW +INC 1 +AUTO 6 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF /A2OSX.BOOT/SBIN/INSDRV +*-------------------------------------- + .INB INC/MACROS.I + .INB INC/A2OSX.I + .INB INC/LIBSTR.I +*-------------------------------------- +ZPPTR1 .EQ ZPBIN +ZPPTR2 .EQ ZPBIN+2 +ZPPTR3 .EQ ZPBIN+4 +*-------------------------------------- +* File Header (16 Bytes) +*-------------------------------------- +CS.START cld + jmp (.1,x) + .DA #$61 6502,Level 1 (65c02) + .DA #1 BIN Layout Version 1 + .DA 0 + .DA CS.END-CS.START Code Length To Relocate + .DA 0 Data Segment to Allocate + .DA 0 + .DA 0 +*-------------------------------------- +* Relocation Table +*-------------------------------------- +.1 .DA CS.INIT + .DA CS.RUN + .DA CS.EVENT + .DA CS.QUIT +L.MSG.HELP .DA MSG.HELP +L.MSG.LOADING .DA MSG.LOADING + .DA 0 +*-------------------------------------- +CS.INIT ldy #S.PS.hARGS + lda (pPs),y + bne .1 + >LDYA L.MSG.HELP + >SYSCALL SYS.PSTROutYA + bra .8 + +.1 sta hArgs + >LDYA L.MSG.LOADING + >SYSCALL SYS.PSTROutYA + bcs .9 + + lda hArgs + >SYSCALL SYS.LoadDrvA + + bcs .9 + + +.8 lda #0 tell TSKMGR that all done ok, but +.9 sec we do not want to stay in memory + rts +*-------------------------------------- +CS.RUN +CS.EVENT +CS.QUIT clc + rts +*-------------------------------------- +CS.END +MSG.HELP >PSTRING "Usage: insdrv file.drv \n" +MSG.LOADING >PSTRING "INSDRV:\n" +hArgs .BS 1 +MAN +SAVE SBIN/INSDRV.S +ASM diff --git a/SBIN/LOGIN.S.txt b/SBIN/LOGIN.S.txt index f0578ffe..54d47de9 100644 --- a/SBIN/LOGIN.S.txt +++ b/SBIN/LOGIN.S.txt @@ -10,7 +10,8 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I +*-------------------------------------- +ZPPTR1 .EQ ZPBIN *-------------------------------------- INPUT.BUFFER.SIZE .EQ 16 *-------------------------------------- @@ -56,39 +57,49 @@ CS.RUN lda #0 ldy #hPASSWORD sta (pData),y - jsr CROUT - jsr CROUT + lda #13 + >SYSCALL SYS.COutA + bcs .9 + >LDYA L.MSG.LOGIN - jsr PRINT.MSG + >SYSCALL SYS.PSTROutYA + bcs .9 + lda #0 Echo all caracters jsr INPUT.RESET -.1 jsr A2osX.Sleep +.1 >SYSCALL SYS.Sleep jsr INPUT.LINEIN bcc .1 - jsr CROUT + lda #13 + >SYSCALL SYS.COutA + bcs .9 >LDYA L.MSG.PASSWORD - jsr PRINT.MSG + >SYSCALL SYS.PSTROutYA lda #'*' jsr INPUT.RESET -.2 jsr A2osX.Sleep +.2 >SYSCALL SYS.Sleep jsr INPUT.LINEIN bcc .2 - jsr CROUT + lda #13 + >SYSCALL SYS.COutA + bcs .9 ldy #hSHELL lda (pData),y - >SYSCALL SYS.ExecProcessNewEnvA + ldy #0 + >SYSCALL SYS.ExecProcessNewEnvYA - bcc .8 + bcs .9 - jsr PRBYTE .8 clc - rts + rts +.9 sec + rts *-------------------------------------- CS.DOEVENT ldy #S.EVT.hDEV lda (pEvent),y @@ -113,7 +124,10 @@ CS.DOEVENT ldy #S.EVT.hDEV .99 sec rts *-------------------------------------- -CS.QUIT clc +CS.QUIT ldy #hSHELL + lda (pData),y + >SYSCALL SYS.FreeMemA + clc rts *-------------------------------------- * PRIVATE @@ -133,31 +147,32 @@ INPUT.CHARIN tax saver char... lda #INPUT.BUFFER clc adc pData - sta ZPQuickPtr1 + sta ZPPTR1 lda pData+1 adc /INPUT.BUFFER - sta ZPQuickPtr1+1 + sta ZPPTR1+1 cpx #$20 Control Char? bcc .2 - lda (ZPQuickPtr1) + lda (ZPPTR1) cmp #INPUT.BUFFER.SIZE Buffer full? beq .9 inc - sta (ZPQuickPtr1) + sta (ZPPTR1) tay txa - sta (ZPQuickPtr1),y + sta (ZPPTR1),y ldy #INPUT.STATUS lda (pData),y bne .1 txa -.1 jmp COUT +.1 >SYSCALL SYS.COutA + rts .2 cpx #$0D bne .9 @@ -177,49 +192,10 @@ INPUT.LINEIN ldy #INPUT.STATUS clc .9 rts *-------------------------------------- -PRINT.MSG >STYA ZPQuickPtr1 - ldy #0 -.1 lda (ZPQuickPtr1),y - beq .2 - jsr COUT - iny - bne .1 -.2 rts -*-------------------------------------- -PRBYTE pha - lsr - lsr - lsr - lsr - ora #$30 - cmp #$3A - bcc .1 - adc #6 -.1 jsr COUT - pla - and #$0F - ora #$30 - cmp #$3A - bcc COUT - adc #6 - bra COUT -*-------------------------------------- -CROUT lda #13 -*-------------------------------------- -COUT phx - phy - ldx #DEVMGR.COUT - jsr pDevJmp - ply - plx - rts -pDevJmp jmp (pDev) CS.END -*-------------------------------------- -MSG.LOGIN >CSTRING "login:" -MSG.PASSWORD >CSTRING "password:" -SHELL >PSTRING "SHELL" -*-------------------------------------- +MSG.LOGIN >PSTRING "login:" +MSG.PASSWORD >PSTRING "password:" +SHELL >PSTRING "SBIN/SHELL" .DUMMY .OR 0 DS.START diff --git a/SBIN/SHELL.S.CMD.txt b/SBIN/SHELL.S.CMD.txt index 2e85c783..2a8f6f28 100644 --- a/SBIN/SHELL.S.CMD.txt +++ b/SBIN/SHELL.S.CMD.txt @@ -10,7 +10,8 @@ EXEC.CMD stz hFullCmd stz hEnvPath ldy #hCmdLine - >PUSHB (pData),y + lda (pData),y + >PUSHA >PUSHBI $20 Push SEP=' ' >PUSHBI 0 Push 0 for getting CMD & ARGS >SYSCALL SYS.PStrGetTkn @@ -38,7 +39,7 @@ EXEC.CMD stz hFullCmd lda (ZPPtr1),y cmp #'a' bcc .3 - cmp #'{' + cmp #'z'+1 bcs .3 eor #$20 to Uppercase .3 cmp CMDS,x @@ -60,24 +61,24 @@ EXEC.CMD stz hFullCmd inc ExecCmdIdx bra .1 .99 rts - +*-------------------------------------- +* ZPPtr1 = hExecCmd +*-------------------------------------- EXEC.CMD.EXT ldy #1 lda (ZPPtr1),y cmp #'/' - bne .2 - ldy #hCmdLine - lda (pPs),y - bra .11 + bne .1 + >LDYA ZPPtr1 + >SYSCALL SYS.NewPStrYA + bra .10 -.2 >PUSHW L.ENV.PATH push ENVNAME=PATH - ldy #S.PS.hENV - lda (pPs),y - >PUSHA - >SYSCALL SYS.GetEnvVarP get value for ENV=PATH +.1 >LDYA L.ENV.PATH push ENVNAME=PATH + >SYSCALL SYS.GetEnvVarYA get value for ENV=PATH - bcs EXEC.CMD.ClnUp + bcc .12 + jmp EXEC.CMD.ClnUp - sta hEnvPath +.12 sta hEnvPath >PUSHB hExecCmd >PUSHB hEnvPath >SYSCALL SYS.FileSearch @@ -89,27 +90,55 @@ EXEC.CMD.EXT ldy #1 >PUSHA >SYSCALL SYS.FileSearch - bcs EXEC.CMD.ClnUp +.10 bcs EXEC.CMD.ClnUp -.10 sta hFullCmd -.11 >SYSCALL SYS.MLIGetFileInfoA + sta hFullCmd + >SYSCALL SYS.MLIGetFileInfoA bcs EXEC.CMD.ClnUp >STYA ZPPTR1 ldy #1 Get File Type lda (ZPPTR1),y cmp #$04 TXT File ? - bne .1 + bne .2 + + lda hFullCmd + jsr OpenTxtFileA + bcs EXEC.CMD.ClnUp + + lda hExecArgs + beq .11 + + >SYSCALL SYS.PStrCpyA + bcs EXEC.CMD.ClnUp +.11 ldy #hInputArgs + sta (pData),y + bra EXEC.CMD.ClnUp + +.2 cmp #$06 BIN File ? + bne .4 + + ldy #S.PS.PID + lda (pPs),y + beq .3 0, we are in kernel space + + lda hFullCmd + ldy hExecArgs + >SYSCALL SYS.ExecProcessNewEnvYA + bra EXEC.CMD.ClnUp + +.3 lda hFullCmd + ldy hExecArgs + >SYSCALL SYS.CreateProcessYA + bra EXEC.CMD.ClnUp + +.4 cmp #$ff SYS File ? + bne .5 bra * -.1 jsr EXEC.CMD.ClnUp Discard CMD & ARGS - ldy #hCmdLine - lda (pData),y - >SYSCALL SYS.ExecProcessNewEnvA - - rts - +.5 lda #SYSMGR.ERRSYN + sec EXEC.CMD.ClnUp pha php lda hFullCmd @@ -138,10 +167,9 @@ EXEC.CMD.CD lda hExecArgs bne EXEC.CMD.CD.C ldy #S.PS.hPREFIX lda (pPs),y - >SYSCALL SYS.GetMemPtrA - >PUSHYA - >LIBCALL hLIBSTR,LIBSTR.PRINTP - jsr CROUT + >SYSCALL SYS.PSTROutA + lda #13 + >SYSCALL SYS.COutA clc rts @@ -224,7 +252,7 @@ EXEC.CMD.CD.C >SYSCALL SYS.GetMemPtrA rts *-------------------------------------- EXEC.CMD.SET lda hExecArgs - bne .2 + bne EXEC.CMD.SETVAR ldy #S.PS.hENV lda (pPs),y @@ -233,9 +261,10 @@ EXEC.CMD.SET lda hExecArgs .1 lda (ZPPTR1) beq .8 Ending 0 ? - >PUSHW ZPPTR1 - >LIBCALL hLIBSTR,LIBSTR.PRINTP - jsr CROUT + >LDYA ZPPTR1 + >SYSCALL SYS.PSTROutYA + lda #13 + >SYSCALL SYS.COutA lda ZPPTR1 sec @@ -248,7 +277,7 @@ EXEC.CMD.SET lda hExecArgs .8 clc rts -.2 >PUSHA Push Cmd Line +EXEC.CMD.SETVAR >PUSHA Push Cmd Line >PUSHBI $3D Push SEP='=' >PUSHBI 0 Push Token IDX >SYSCALL SYS.PStrGetTkn @@ -259,46 +288,42 @@ EXEC.CMD.SET lda hExecArgs .3 sta hVarName stx hVarValue txa - bne .7 + beq .31 - lda hExecArgs + >PUSHB hVarValue + >PUSHB hVarName + >SYSCALL SYS.SetEnvVarH + jmp .97 + +.31 lda hExecArgs >SYSCALL SYS.GetMemPtrA >STYA ZPPTR1 lda (ZPPTR1) tay lda (ZPPTR1),y cmp #'=' - beq .7 + bne .4 + + lda hVarName + >SYSCALL SYS.DelEnvVarA + bra .97 - >PUSHB hVarName - ldy #S.PS.hENV - >PUSHB (pPs),y - >SYSCALL SYS.GetEnvVarH +.4 lda hVarName + >SYSCALL SYS.GetEnvVarA bcs .97 sta hVarValue lda hVarName - >SYSCALL SYS.GetMemPtrA - >PUSHYA - >LIBCALL hLIBSTR,LIBSTR.PRINTP - + >SYSCALL SYS.PSTROutA lda #'=' - jsr COUT - + >SYSCALL SYS.COutA lda hVarValue - >SYSCALL SYS.GetMemPtrA - >PUSHYA - >LIBCALL hLIBSTR,LIBSTR.PRINTP - jsr CROUT - - bra .97 - -.7 >PUSHB hVarValue - >PUSHB hVarName - ldy #S.PS.hENV - >PUSHB (pPs),y - >SYSCALL SYS.SetEnvVarH - + >SYSCALL SYS.PSTROutA + lda #13 + >SYSCALL SYS.COutA + + clc + .97 php pha lda hVarValue @@ -314,7 +339,8 @@ EXEC.CMD.DATE >SYSCALL SYS.MLIGetTime bcs .9 >PUSHW DATELO >LIBCALL hLIBSTR,LIBSTR.PRINTDATE - jsr CROUT + lda #13 + >SYSCALL SYS.COutA clc .9 rts *-------------------------------------- @@ -322,7 +348,8 @@ EXEC.CMD.TIME >SYSCALL SYS.MLIGetTime bcs .9 >PUSHW TIMELO >LIBCALL hLIBSTR,LIBSTR.PRINTTIME - jsr CROUT + lda #13 + >SYSCALL SYS.COutA clc .9 rts *-------------------------------------- @@ -332,10 +359,9 @@ EXEC.CMD.ECHO lda hExecArgs bcs .99 pha - >SYSCALL SYS.GetMemPtrA - >PUSHYA - >LIBCALL hLIBSTR,LIBSTR.PRINTP - jsr CROUT + >SYSCALL SYS.PSTROutA + lda #13 + >SYSCALL SYS.COutA pla >SYSCALL SYS.FreeMemA clc @@ -363,7 +389,7 @@ EXEC.CMD.TYPE lda hExecArgs .2 dec ZPPTR2 lda (ZPPTR1) - jsr COUT + >SYSCALL SYS.COutA inc ZPPTR1 bne .1 inc ZPPTR1+1 @@ -378,6 +404,16 @@ EXEC.CMD.TYPE lda hExecArgs sec .99 rts *-------------------------------------- +EXEC.CMD.READ + clc + rts +*-------------------------------------- +EXEC.CMD.PAUSE ldy #bPause + lda #$80 + sta (pData),y + clc + rts +*-------------------------------------- EXEC.CMD.EXIT ldy #bEXIT lda #$FF sta (pData),y diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index 425f118f..b314a032 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -11,7 +11,6 @@ AUTO 6 .INB INC/MACROS.I .INB INC/PRODOS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I .INB INC/LIBSTR.I *-------------------------------------- ZPPTR1 .EQ ZPBIN @@ -41,28 +40,35 @@ CS.START cld *-------------------------------------- L.LIBSTR .DA LIBSTR L.MSG.GREETINGS .DA MSG.GREETINGS -L.MSG.UNKNOWN .DA MSG.UNKNOWN -L.MSG.SYNERR .DA MSG.SYNERR +L.MSG.ERROR .DA MSG.ERROR L.ENV.PATH .DA ENV.PATH J.INTCMDS .DA EXEC.CMD.CD - .DA EXEC.CMD.SET .DA EXEC.CMD.DATE - .DA EXEC.CMD.TIME .DA EXEC.CMD.ECHO - .DA EXEC.CMD.TYPE .DA EXEC.CMD.EXIT + .DA EXEC.CMD.PAUSE + .DA EXEC.CMD.READ + .DA EXEC.CMD.SET + .DA EXEC.CMD.TIME + .DA EXEC.CMD.TYPE .DA 0 *-------------------------------------- -CS.INIT >LDYA L.LIBSTR - >LOADLIBYA +CS.INIT >DEBUG + >LDYA L.LIBSTR + >SYSCALL SYS.LoadLibYA bcs .9 sta hLIBSTR - ldy #S.PS.hARGS Batch mode ? + ldy #S.PS.hARGS Batch file ? lda (pPs),y beq CS.INIT.INTERACTIVE no,continue starting interactive + jsr OpenTxtFileA + bcs .9 + ldy #bExitOnEOF + lda #$FF + sta (pData),y clc .9 rts *-------------------------------------- @@ -70,17 +76,11 @@ CS.INIT.INTERACTIVE jsr History.Init bcs .9 - ldy #S.PS.ID - lda (pPs),y - >PUSHA - ldy #S.PS.hOUTDEV - lda (pPs),y - >PUSHA ldy #S.PS.hINDEV lda (pPs),y >PUSHA - >PUSHW L.MSG.GREETINGS - >LIBCALL hLIBSTR,LIBSTR.PRINTF + >LDYA L.MSG.GREETINGS + >SYSCALL SYS.PSTROutYA lda (pPs) ora #S.PS.F.EVENT Now accept events @@ -92,56 +92,77 @@ CS.INIT.INTERACTIVE CS.RUN lda #0 sta (pData) - lda #"$" - jsr COUT - lda #" " - jsr COUT + ldy #bPause + lda (pData),y + bpl .10 + clc + rts -.1 jsr A2osX.SLEEP +.10 ldy #hInputFile batch mode ? + lda (pData),y + bne .2 + + jsr PrintPrompt + +.1 >SYSCALL SYS.Sleep lda (pData) bpl .1 -.2 and #$7F + and #$7F sta (pData) + bra .3 + +.2 jsr ReadTxtFile + bcs .81 + +.3 lda (pData) beq CS.RUN Empty line + ldy #1 lda (pData),y cmp #'#' Comment beq CS.RUN - jsr History.Add + ldy #hInputFile + lda (pData),y + bne .32 + + ldy #bEchoOff + lda (pData),y + beq .31 >LDYA pData + >SYSCALL SYS.PSTROutYA + +.31 jsr History.Add + +.32 >LDYA pData >SYSCALL SYS.NewPStrYA bcs .99 ldy #hCmdLine sta (pData),y jsr EXEC.CMD - bcc .3 + bcc .4 - pha - lda #"[" - jsr COUT - pla - jsr PRBYTE - lda #"]" - jsr COUT - jsr CROUT + jsr PrintError -.3 ldy #hCmdLine +.4 ldy #hCmdLine lda (pData),y >SYSCALL SYS.FreeMemA ldy #hCmdLine lda #0 sta (pData),y - ldy #bEXIT +.8 ldy #bEXIT lda (pData),y bne .99 clc rts + +.81 jsr CloseTxtFile + bra .8 .99 sec rts @@ -150,8 +171,8 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? lda (pEvent),y ldy #S.PS.hINDEV cmp (pPs),y - bne .9 + lda (pEvent) and #S.EVT.F.KEY is it a KEY event? beq .9 @@ -164,7 +185,37 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? lda (pEvent),y tax - cpx #$20 + ldy #bPause + lda (pData),y + bpl .11 + + lda #0 + sta (pData),y + bra .8 + +.11 ldy #hInputFile Batch mode ? + lda (pData),y + beq .10 + + cpx #3 test Ctrl-c + bne .12 + + jsr CloseTxtFile + ldy #bExitOnEOF + lda (pData),y + ldy #bExit + sta (pData),y + clc + rts + +.12 cpx #19 test Ctrl-s + bne .8 + ldy #bPause + lda #$80 + sta (pData),y + bra .8 + +.10 cpx #$20 bcs .1 jsr CS.EVENT.CTRL.CHAR bra .8 @@ -185,8 +236,7 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? txa sta (pData),y - ora #$80 - jsr COUT + >SYSCALL SYS.COutA .8 clc rts @@ -195,64 +245,89 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? rts *-------------------------------------- CS.EVENT.CTRL.CHAR - cmp #13 CR + cpx #13 CR bne .10 - jsr CROUT + txa + >SYSCALL SYS.COutA lda (pData) CmdBuffer ora #$80 sta (pData) clc rts -.10 cmp #3 +.10 cpx #3 Ctrl-C bne .1 + jsr CmdBuffer.CLR clc rts -.1 cmp #8 BS (left arrow) +.1 cpx #8 BS (left arrow) bne .2 jsr CmdBuffer.DEL clc rts -.2 cmp #10 LF (down arrow) +.2 cpx #10 LF (down arrow) bne .3 jsr HISTORY.GETNEXT clc rts -.3 cmp #11 VT (up arrow) +.3 cpx #11 VT (up arrow) bne .4 jsr HISTORY.GETPREV clc rts -.4 cmp #21 NAK (right arrow) +.4 cpx #21 NAK (right arrow) bne .8 clc rts -.8 jsr PRBYTE - clc +.8 clc rts *-------------------------------------- CS.QUIT jsr History.Quit - lda hLIBSTR + + ldy #hInputFile + lda (pData),y + beq .1 + >SYSCALL SYS.MLICloseA + +.1 ldy #hInputBuffer + lda (pData),y + beq .2 + >SYSCALL SYS.FreeMemA + +.2 lda hLIBSTR >SYSCALL SYS.UnloadLibA clc rts *-------------------------------------- * PRIVATE *-------------------------------------- +PrintPrompt lda #"$" + >SYSCALL SYS.COutA + lda #" " + >SYSCALL SYS.COutA + rts +*-------------------------------------- +PrintError pha + >PUSHA + >LDYA L.MSG.ERROR + >SYSCALL SYS.PSTROutYA + pla + rts +*-------------------------------------- CmdBuffer.PRINT ldy #0 .1 iny lda (pData),y ora #$80 - jsr COUT + >SYSCALL SYS.COutA tya cmp (pData) bne .1 @@ -265,40 +340,92 @@ CmdBuffer.CLR jsr CmdBuffer.DEL CmdBuffer.DEL lda (pData) beq .9 lda #8 - jsr COUT + >SYSCALL SYS.COutA lda (pData) dec sta (pData) .9 rts *-------------------------------------- -PRBYTE pha - lsr - lsr - lsr - lsr - ora #$B0 - cmp #$BA - bcc .1 - adc #6 -.1 jsr COUT +OpenTxtFileA >SYSCALL SYS.MLIOpenA + bcs .9 + + ldy #hInputFile + sta (pData),y + pha + txa + ldy #hInputBuffer + sta (pData),y + + >PUSHBI $0D Line separator for TXT file + >PUSHBI $FF pla - and #$0F - ora #$B0 - cmp #$BA - bcc COUT - adc #6 - bra COUT + >PUSHA + >SYSCALL SYS.MLINewLine + bcc .9 + pha + jsr CloseTxtFile + pla + sec +.9 rts *-------------------------------------- -CROUT lda #13 +ReadTxtFile >PUSHWI 127 + >PUSHWI TmpBuffer256+1 + ldy #hInputFile + lda (pData),y + >PUSHA + >SYSCALL SYS.MLIRead + bcs .9 + + lda TmpBuffer256,y Y,A=Bytes read + cmp #$0D + bne .10 + + dey + +.10 tya + sta (pData) + +.1 lda TmpBuffer256,y + sta (pData),y + dey + bne .1 + + lda #'>' + >SYSCALL SYS.COutA + lda #'"' + >SYSCALL SYS.COutA + >LDYA pData + >SYSCALL SYS.PSTROutYA + lda #'"' + >SYSCALL SYS.COutA + lda #13 + >SYSCALL SYS.COutA + + clc +.9 rts *-------------------------------------- -COUT phx - phy - ldx #DEVMGR.COUT - jsr pDevJmp - ply - plx +CloseTxtFile ldy #hInputArgs + lda (pData),y + beq .1 + >SYSCALL SYS.FreeMemA + +.1 ldy #hInputFile + lda (pData),y + beq .9 + + >SYSCALL SYS.MLICloseA + ldy #hInputBuffer + lda (pData),y + >SYSCALL SYS.FreeMemA + +.9 lda #0 + ldy #hInputArgs + sta (pData),y + ldy #hInputFile + sta (pData),y + ldy #hInputBuffer + sta (pData),y rts -pDevJmp jmp (pDev) *-------------------------------------- .INB SBIN/SHELL.S.CMD .INB SBIN/SHELL.S.HIS @@ -307,18 +434,21 @@ CS.END *-------------------------------------- ENV.PATH >PSTRING "PATH" CMDS >PSTRING "CD" - >PSTRING "SET" >PSTRING "DATE" - >PSTRING "TIME" >PSTRING "ECHO" - >PSTRING "TYPE" >PSTRING "EXIT" + >PSTRING "PAUSE" + >PSTRING "READ" + >PSTRING "SET" + >PSTRING "TIME" + >PSTRING "TYPE" .HS 00 *-------------------------------------- LIBSTR >PSTRING "libstr.o" -MSG.GREETINGS >CSTRING "\nA2osX-Shell on Dev=(%h:%h),PS=%h\n\n" -MSG.UNKNOWN >CSTRING "Command Not Found\n" -MSG.SYNERR >CSTRING "Syntax Error Or Invalid Pathname\n" +MSG.GREETINGS >PSTRING "\nA2osX-Shell on Dev=%h\n\n" +MSG.ERROR >PSTRING "[%h]\n" +*MSG.NOTFOUND >CSTRING "Command Not Found\n" +*MSG.SYNERR >CSTRING "Syntax Error Or Invalid Pathname\n" hLIBSTR .BS 1 hNEWPATH .BS 1 hExecCmd .BS 1 @@ -333,10 +463,16 @@ ExecCmdIdx .BS 1 .OR 0 DS.START CmdBuffer .BS CmdBuffer.MAX+1 -bEXIT .BS 1 +bPause .BS 1 +bExit .BS 1 +bEchoOff .BS 1 hCmdLine .BS 1 hCmdHistory .BS 1 CmdHistory.IDX .BS 1 +bExitOnEOF .BS 1 +hInputFile .BS 1 +hInputArgs .BS 1 +hInputBuffer .BS 1 CmdHistory.END .BS 1 DS.END .ED diff --git a/SBIN/TCPIP.S.txt b/SBIN/TCPIP.S.txt index 5bce549a..68e74dae 100644 --- a/SBIN/TCPIP.S.txt +++ b/SBIN/TCPIP.S.txt @@ -10,8 +10,6 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I - .INB INC/KERNEL.I .INB INC/LIBTCPIP.I *-------------------------------------- ZPFrameBase1 .EQ ZPBIN @@ -20,6 +18,8 @@ ZPFramePtr1 .EQ ZPBIN+4 ZPFrameBase2 .EQ ZPBIN+6 ZPFrameLen2 .EQ ZPBIN+8 ZPFramePtr2 .EQ ZPBIN+10 +ZPIPCfgPtr .EQ ZPBIN+12 +ZPIPDevPtr .EQ ZPBIN+14 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -40,16 +40,26 @@ CS.START cld .DA CS.DOEVENT .DA CS.QUIT L.LIBTCPIP .DA LIBTCPIP +L.MSG.HELP .DA MSG.HELP L.CFGFILENAME .DA CFGFILENAME L.IPCFG .DA IPCFG .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBTCPIP - >LOADLIBYA + >SYSCALL SYS.LoadLibYA bcs .99 - sta hLIBTCPIP - ldx #0 + + ldy #S.PS.hARGS + lda (pPs),y + bne .10 + >LDYA L.MSG.HELP + >SYSCALL SYS.PSTROutYA + lda #0 + sec + rts + +.10 ldx #0 .1 stz IPCFG,x inx cpx #S.IPCFG @@ -103,14 +113,16 @@ CS.INIT.DEV ldy #S.PS.hARGS ldx #DEVMGR.OPEN jsr pDevJmp - + bcs .98 + ldx #DEVMGR.GETINFO jsr pDevJmp - >STYA ZPQuickPtr1 + bcs .98 + >STYA ZPIPDevPtr ldy #1 ldx #S.IPCFG.MAC -.1 lda (ZPQuickPtr1),y +.1 lda (ZPIPDevPtr),y sta IPCFG,x iny inx @@ -138,7 +150,7 @@ CS.INIT.CFGFILE >LDYA L.CFGFILENAME >STYA hCfgFileLen txa >SYSCALL SYS.GetMemPtrA - >STYA ZPQuickPtr1 + >STYA ZPIPCfgPtr @@ -431,11 +443,11 @@ DNSListener ldy #S.DNS.F+1 rts *-------------------------------------- GetIPCFG >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG - >STYA ZPQuickPtr1 + >STYA ZPIPCfgPtr ldy #S.IPCFG .1 dey - lda (ZPQuickPtr1),y + lda (ZPIPCfgPtr),y sta IPCFG,y tya bne .1 @@ -492,11 +504,11 @@ CopyFramePtr12 dey bne CopyFramePtr12 rts *-------------------------------------- -pDevJmp jmp (pDev) CS.END *-------------------------------------- LIBTCPIP >PSTRING "libtcpip.o" -CFGFILENAME >PSTRING "%ETC%TCPIP.CONF" +MSG.HELP >PSTRING "Usage: TCPIP ETHx\n" +CFGFILENAME >PSTRING "${A2OSX}ETC/TCPIP.CONF" DefaultHostName >CSTRING "a2osx-host" hLIBTCPIP .BS 1 hDEVNAME .BS 1 diff --git a/SBIN/TELNETD.S.txt b/SBIN/TELNETD.S.txt index 9a156ab2..d65da292 100644 --- a/SBIN/TELNETD.S.txt +++ b/SBIN/TELNETD.S.txt @@ -10,8 +10,6 @@ AUTO 6 *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I - .INB INC/A2OSX.API.I - .INB INC/KERNEL.I .INB INC/LIBTCPIP.I *-------------------------------------- * File Header (16 Bytes) @@ -36,7 +34,7 @@ L.LIBTCPIP .DA LIBTCPIP .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBTCPIP - >LOADLIBYA + >SYSCALL SYS.LoadLibYA bcs .99 sta hLIBTCPIP diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 673e5cfa..f14bfa46 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -14,6 +14,7 @@ AUTO 6 * X = hMem of Code Segment *-------------------------------------- S.LoadBinA sta S.LoadBinA.hFilename save file path + jsr S.GetMemPtrA >STYA ZPQuickPtr1 @@ -21,12 +22,11 @@ S.LoadBinA sta S.LoadBinA.hFilename save file path tay .1 lda (ZPQuickPtr1),y convert to UPPERCASE - cmp #$61 "a" + cmp #'a' bmi .2 - cmp #$7B "z"+1 + cmp #'z'+1 bpl .2 - sec - sbc #$20 + eor #$20 sta (ZPQuickPtr1),y .2 dey bne .1 diff --git a/SYS/KERNEL.S.CIO.txt b/SYS/KERNEL.S.CIO.txt new file mode 100644 index 00000000..9cb2b7e9 --- /dev/null +++ b/SYS/KERNEL.S.CIO.txt @@ -0,0 +1,201 @@ +PR#3 +PREFIX /A2OSX.SRC +NEW +INC 1 +AUTO 6 + .LIST OFF + .OP 65C02 +*-------------------------------------- +S.DecOutA tay + lda #0 +S.DecOutYA >STYA HEX + stz BCD + stz BCD+1 + stz BCD+2 + + ldx #16 let's roll 16 bits + sed +.2 asl HEX + rol HEX+1 + php cpy will disturb carry while BCD adc + ldy #0 +.3 plp + lda BCD,y + adc BCD,y + sta BCD,y + php + iny + cpy #3 Last byte of BCDBUF? + bne .3 + plp + dex + bne .2 + + cld + + stz bL0Flag + ldx #2 + +.4 lda BCD,x + lsr + lsr + lsr + lsr + bne .5 + bit bL0Flag + bpl .6 +.5 sec + ror bL0Flag + ora #$30 + jsr S.COutA + bcs .9 + +.6 lda BCD,x + and #$0F + bne .7 + bit bL0Flag + bpl .8 +.7 sec + ror bL0Flag + ora #$30 + jsr S.COutA + bcs .9 + +.8 dex + bpl .4 + + bit bL0Flag + bmi .9 + lda #$30 + jsr S.COutA + +.9 rts +*-------------------------------------- +S.HexOutYA phy + jsr S.HexOutA + bcs S.COutA.RTS + pla +*-------------------------------------- +S.HexOutA pha + lsr + lsr + lsr + lsr + ora #$30 + cmp #$3A + bcc .1 + adc #6 +.1 jsr S.COutA + bcs S.COutA.RTS + pla + and #$0F + ora #$30 + cmp #$3A + bcc S.COutA + adc #6 +*-------------------------------------- +S.COutA phx + phy + ldx #DEVMGR.COUT + jsr pDevJmp + ply + plx +S.COutA.RTS rts +*-------------------------------------- +* Mini printf for PSTR +* %d : byte +* %D : word +* %h : hex byte +* %H : hex word +* \n : CR +*-------------------------------------- +S.PSTROutA jsr S.GetMemPtrA +S.PSTROutYA >STYA ZPQuickPtr1 + + ldy #0 + +.1 iny + lda (ZPQuickPtr1),y + cmp #'\' + + bne .2 + tya + cmp (ZPQuickPtr1) + beq .8 + + iny + lda (ZPQuickPtr1),y + cmp #'n' + bne .6 + lda #13 + bra .6 + +.2 cmp #'%' + bne .6 + + tya + cmp (ZPQuickPtr1) + beq .8 + + iny + lda (ZPQuickPtr1),y + cmp #'d' + bne .3 + phy + >PULLA + jsr S.DecOutA + ply + bcc .7 + rts + +.3 cmp #'D' + bne .4 + phy + >PULLYA + jsr S.DecOutYA + ply + bcc .7 + rts + +.4 cmp #'h' + bne .5 + phy + >PULLA + jsr S.HexOutA + ply + bcc .7 + rts + +.5 cmp #'H' + bne .51 + phy + >PULLYA + jsr S.HexOutYA + ply + bcc .7 + rts + +.51 tax + lda #'%' + jsr S.COutA + bcs .9 + txa + +.6 jsr S.COutA + bcs .9 + +.7 tya + cmp (ZPQuickPtr1) + bne .1 + +.8 clc +.9 rts +*-------------------------------------- +HEX .BS 2 +BCD .BS 3 +bL0Flag .BS 1 +*-------------------------------------- +MAN +SAVE SYS/KERNEL.S.CIO +LOAD SYS/KERNEL.S +ASM diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index aced850b..d8cccd3b 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -179,6 +179,7 @@ DevMgr.DevID .BS 1 DevMgr.LastDevID .BS 1 *-------------------------------------- DevMgr.Count .EQ 2 +DevMgr.SYS.BASL0 .EQ $800 *-------------------------------------- DevMgr.NUL cld jmp (DevMgr.NUL.Code,x) @@ -188,7 +189,7 @@ DevMgr.NUL cld .HS 00.00 .HS 00.00.00.00 *-------------------------------------- -DevMgr.SYS cld #S.DEV.F.EVENT +DevMgr.SYS cld jmp (DevMgr.SYS.Code,x) .DA #S.DEV.F.INUSE+S.DEV.F.EVENT+S.DEV.F.SHARE+S.DEV.F.COUT+S.DEV.F.CHAR >PSTRING "SYS" NAME @@ -205,21 +206,59 @@ DevMgr.NUL.Code .DA .8 OPEN .8 clc rts *-------------------------------------- -DevMgr.SYS.Code .DA .8 OPEN +DevMgr.SYS.Code .DA DevMgr.SYS.Open .DA DevMgr.SYS.GetEvent - .DA .8 COUT + .DA DevMgr.SYS.COut .DA .8 CLOSE .DA .8 GETINFO .DA .8 IRQ .8 clc rts *-------------------------------------- +DevMgr.SYS.Open stz DevMgr.SYS.CPULOADI + stz DevMgr.SYS.CH + stz DevMgr.SYS.CV + + ldx #0 + + ldy #0 +.1 lda DevMgr.SYS.TITLE,y + beq .2 + + jsr DevMgr.SYS.SetCharAtYX + iny + bne .1 + +.2 lda #$20 + jsr DevMgr.SYS.SetCharAtYX + iny + cpy #80 + bne .2 + + jsr DevMgr.SYS.Home + + lda A2osX.SCREENS + ora #A2osX.SCREENS.S + sta A2osX.SCREENS + lda #A2osX.SCREENS.S + jsr S.ScreenSelectA + clc + rts +*-------------------------------------- DevMgr.SYS.GetEvent lda A2osX.ASCREEN and #A2osX.SCREENS.S is screen active? beq .9 - jsr S.GetKeyboardEvent + ldx DevMgr.SYS.CPULOADI + lda DevMgr.SYS.CPULOADC,x + sta DevMgr.SYS.BASL0+38 + dec DevMgr.SYS.CPULOADI + bpl .1 + lda #3 + sta DevMgr.SYS.CPULOADI + +.1 jsr S.GetKeyboardEvent bcs .9 rts @@ -227,6 +266,163 @@ DevMgr.SYS.GetEvent sec rts *-------------------------------------- +DevMgr.SYS.COut phx + phy + cmp #13 + bne .1 + jsr DevMgr.SYS.CROut + ply + plx + clc + rts + +.1 ldy DevMgr.SYS.CH + ldx DevMgr.SYS.CV + ora #$80 + jsr DevMgr.SYS.SetCharAtYX + jsr DevMgr.SYS.FSOut + ply + plx + clc + rts +*-------------------------------------- +DevMgr.SYS.FSOut + lda DevMgr.SYS.CH + cmp #79 + beq DevMgr.SYS.CROut1 + inc DevMgr.SYS.CH + rts +*-------------------------------------- +DevMgr.SYS.CROut + jsr DevMgr.SYS.ClrEOL +DevMgr.SYS.CROut1 + stz DevMgr.SYS.CH + ldx DevMgr.SYS.CV + cpx #23 + beq DevMgr.SYS.Scroll + inc DevMgr.SYS.CV + rts +*-------------------------------------- +DevMgr.SYS.ClrEOL + ldx DevMgr.SYS.CV + lda #$A0 + ldy DevMgr.SYS.CH +.1 cpy #79 + beq .2 + jsr DevMgr.SYS.SetCharAtYX + iny + bne .1 +.2 rts +*-------------------------------------- +DevMgr.SYS.Scroll + ldx #1 +.1 lda DevMgr.SYS.BASEL,x + sta ZPDRV + lda DevMgr.SYS.BASEH,x + sta ZPDRV+1 + inx + lda DevMgr.SYS.BASEL,x + sta ZPDRV+2 + lda DevMgr.SYS.BASEH,x + sta ZPDRV+3 + + ldy #39 + sta SETWRITEAUX + sta SETREADAUX +.2 lda (ZPDRV+2),y + sta (ZPDRV),y + dey + bpl .2 + + ldy #39 + sta CLRWRITEAUX + sta CLRREADAUX +.3 lda (ZPDRV+2),y + sta (ZPDRV),y + dey + bpl .3 + + cpx #23 + bne .1 + + ldy #39 + lda #$A0 +.4 sta SETWRITEAUX + sta (ZPDRV+2),y + sta CLRWRITEAUX + sta (ZPDRV+2),y + dey + bpl .4 + rts +*-------------------------------------- +DevMgr.SYS.ClrLineAtX + lda DevMgr.SYS.BASEL,x + sta ZPDRV + lda DevMgr.SYS.BASEH,x + sta ZPDRV+1 + + lda #$A0 + + ldy #39 + sta SETWRITEAUX +.1 sta (ZPDRV),y + dey + bpl .1 + + ldy #39 + sta CLRWRITEAUX +.2 sta (ZPDRV),y + dey + bpl .2 + + rts +*-------------------------------------- +DevMgr.SYS.Home ldx #23 + +.1 jsr DevMgr.SYS.ClrLineAtX + dex + bne .1 + + stz DevMgr.SYS.CH + lda #1 + sta DevMgr.SYS.CV + + rts +*-------------------------------------- +DevMgr.SYS.SetCharAtYX + cmp #$40 + bcc .1 + cmp #$5F + bcs .1 + and #$3F + +.1 phy + pha + lda DevMgr.SYS.BASEL,x + sta ZPDRV + lda DevMgr.SYS.BASEH,x + sta ZPDRV+1 + tya + lsr + tay + bcs .2 + sta SETWRITEAUX + +.2 pla + sta (ZPDRV),y + sta CLRWRITEAUX + ply + rts +*-------------------------------------- +DevMgr.SYS.CH .BS 1 +DevMgr.SYS.CV .BS 1 +DevMgr.SYS.CPULOADI .BS 1 +DevMgr.SYS.CPULOADC .AS -"|/-\" +*-------------------------------------- +DevMgr.SYS.TITLE >CSTRING "A2osX System Screen" +DevMgr.SYS.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0 +DevMgr.SYS.BASEH .HS 08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B +*--------------------------------------*-------------------------------------- DevMgr.End .EQ * MAN SAVE SYS/KERNEL.S.DEV diff --git a/SYS/KERNEL.S.DRV.txt b/SYS/KERNEL.S.DRV.txt index 402fa0ca..b742fdcd 100644 --- a/SYS/KERNEL.S.DRV.txt +++ b/SYS/KERNEL.S.DRV.txt @@ -13,9 +13,6 @@ AUTO 6 * none *-------------------------------------- S.LoadDrvA >PUSHA push Cmd Line for S.PStrGetTkn - >LDYAI MSG.DRVLOAD - jsr S.SysScrPPSTRYA - >PUSHBI $20 Push SEP=' ' >PUSHBI 0 Push 0 for getting CMD And ARGS jsr S.PStrGetTkn @@ -24,17 +21,24 @@ S.LoadDrvA >PUSHA push Cmd Line for S.PStrGetTkn .1 sta LoadDrv.Cmd stx LoadDrv.Args - pha - jsr S.SysScrPPSTRA - pla - jsr S.ExpandPStrA - sta LoadDrv.ExpCmd + + >LDYAI ENV.DRV push ENVNAME=DRV + jsr S.GetEnvVarYA get value for ENV=$DRV + bcs .98 + sta LoadDrv.Path + + >PUSHB LoadDrv.Cmd push CMD for S.FileSearch + >PUSHB LoadDrv.Path + jsr S.FileSearch find File in $DRV + bcs .97 not Found + + sta LoadDrv.FullName jsr S.LoadBinA bcs .96 >STYA pCode stx LoadDrv.hMem - + lda LoadDrv.Args jsr pCodeJmp call Dev.Detect @@ -58,7 +62,12 @@ S.LoadDrvA >PUSHA push Cmd Line for S.PStrGetTkn pla .96 pha - lda LoadDrv.ExpCmd + lda LoadDrv.FullName + jsr S.FreeMemA + pla + +.97 pha + lda LoadDrv.Path jsr S.FreeMemA pla @@ -72,10 +81,10 @@ S.LoadDrvA >PUSHA push Cmd Line for S.PStrGetTkn .99 sec rts *-------------------------------------- -MSG.DRVLOAD >PSTRING "\nLoadDrv:" LoadDrv.Cmd .BS 1 LoadDrv.Args .BS 1 -LoadDrv.ExpCmd .BS 1 +LoadDrv.Path .BS 1 +LoadDrv.FullName .BS 1 LoadDrv.hMem .BS 1 *-------------------------------------- * pCode = .DRV File Loaded Address diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index dd738511..fdc8c29c 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -13,86 +13,133 @@ AUTO 6 * A = hMem to Expanded String (PSTRING) *-------------------------------------- S.ExpandPStrA jsr S.GetMemPtrA -S.ExpandPStrYA >STYA R.AX +S.ExpandPStrYA >STYA ZPQuickPtr3 + stz TmpBuffer256 init Expanded String len=0 - stz R.BL reset "in var" + ldy #0 -.1 iny - lda (R.AX),y - cmp #'%' - beq .10 - jmp .7 -.10 ldx R.BL in var? - bne .2 - sty R.BL no, save start - jmp .8 skip this char -.2 sty R.BH yes, save end - phy save Actual char position - tya - sec - sbc R.BL compute len of %VAR% -1 - tay - lda #0 - >PUSHYA - >PUSHBI 0 - jsr S.GetMem create VARNAME - phx save hMem for discard - >STYA R.CX - lda R.BH - sec - sbc R.BL - dec skip % - sta (R.CX) - ldy R.BL + +.10 stz S.ExpandPStrA.Start + +.1 tya + cmp (ZPQuickPtr3) End of PSTR? + beq .6 + iny -.3 inc R.CL - bne .4 - inc R.CH -.4 lda (R.AX),y Copy string between % to ENVNAME - sta (R.CX) - iny - cpy R.BH - bne .3 - pla - pha Get back ENVNAME hMem - >PUSHA + lda (ZPQuickPtr3),y + + ldx S.ExpandPStrA.Start + bne .3 already in a var? + + cmp #'$' no, found one ? + beq .2 + + inc TmpBuffer256 no, copy char + ldx TmpBuffer256 + sta TmpBuffer256,x + bra .1 + +.2 sty S.ExpandPStrA.Start save var start + stz S.ExpandPStrA.End + bra .1 skip this char + +.3 cmp #'{' in var, "{" after "$"? + beq .2 + + cmp #'}' end of var? + beq .5 + +.4 jsr S.ExpandPStrA.VC valid char ? + bcs .5 no, end here + sty S.ExpandPStrA.End yes, save end + bra .1 + +.5 lda S.ExpandPStrA.End get end + beq .1 empty {} or $/ + + phy save current index + jsr S.ExpandPStrA.AV + ply restore index in string... + bra .10 reset start flag and continue + +.6 sty S.ExpandPStrA.End end of PSTR + lda S.ExpandPStrA.Start are we in a var? + beq .7 no...exit... + + jsr S.ExpandPStrA.AV yes, expand and add to STR + +.7 >LDYAI TmpBuffer256 + jsr S.NewPStrYA + rts +*-------------------------------------- +S.ExpandPStrA.AV ldy #S.PS.hENV lda (pPs),y - >PUSHA - jsr S.GetEnvVarH - bcs .5 - pha save hMem of VALUE jsr S.GetMemPtrA - >STYA R.DX + >STYA ZPQuickPtr1 Store ENV for FindVar + + lda S.ExpandPStrA.End + sec + sbc S.ExpandPStrA.Start compute len of VAR End-Start+1 + + ldx TmpBuffer256 + inx + sta TmpBuffer256,x + + stx ZPQuickPtr2 + lda /TmpBuffer256 + sta ZPQuickPtr2+1 + + ldy S.ExpandPStrA.Start + +.1 iny + inx + lda (ZPQuickPtr3),y + sta TmpBuffer256,x + cpy S.ExpandPStrA.End + bne .1 + + jsr S.FindVar + bcs .9 + ldy #0 -.41 iny - lda (R.DX),y +.2 iny + lda (ZPQuickPtr1),y + cmp #'=' + bne .2 + +.3 iny + lda (ZPQuickPtr1),y inc TmpBuffer256 ldx TmpBuffer256 sta TmpBuffer256,x + tya - cmp (R.DX) - bne .41 - pla - jsr S.FreeMemA discard VALUE hMem -.5 pla - jsr S.FreeMemA discard VARNAME hMem -* ldy R.BL TODO:continue scanning from first % found - stz R.BL reset "in var" - ply - bra .8 -.7 ldx R.BL in var? - bne .8 yes, skip this char - inc TmpBuffer256 - ldx TmpBuffer256 - sta TmpBuffer256,x -.8 tya - cmp (R.AX) last char? - beq .81 - jmp .1 -.81 >LDYAI TmpBuffer256 - jsr S.NewPStrYA + cmp (ZPQuickPtr1) last char? + bne .3 +.9 rts +*-------------------------------------- +S.ExpandPStrA.VC + cmp #'0' + bcc .9 + cmp #'9'+1 + bcc .8 + + cmp #'A' + bcc .9 + cmp #'Z'+1 + bcc .8 + + cmp #'_' + bne .9 + +.8 clc rts +.9 sec + rts +*-------------------------------------- +S.ExpandPStrA.Start .BS 1 +S.ExpandPStrA.End .BS 1 *-------------------------------------- * S.CreateEnv * in : @@ -140,22 +187,21 @@ S.DupEnvA pha clc .9 rts *-------------------------------------- -* S.GetEnvVarH +* S.GetEnvVarA * In: -* PULLB = hENV -* PULLB = hMem to NAME (PSTRING) +* A = hMem to NAME (PSTRING) *-------------------------------------- -* S.GetEnvVarP +* S.GetEnvVarYA * In: -* PULLB = hENV -* PULLW = PTR to NAME (PSTRING) +* Y,A = PTR to NAME (PSTRING) * Out: * A = hMem to VALUE (PSTRING) 0,"" if not exist *-------------------------------------- -S.GetEnvVarH jsr S.FindVarH - bra S.GetEnvVar -S.GetEnvVarP jsr S.FindVarP -S.GetEnvVar bcc .1 +S.GetEnvVarA >PULLA + jsr S.GetMemPtrA +S.GetEnvVarYA >STYA ZPQuickPtr2 + jsr S.FindVar + bcc .1 >LDYAI 1 not found >PUSHYA create "" PSTR >PUSHBI 0 @@ -200,29 +246,25 @@ S.GetEnvVar bcc .1 *-------------------------------------- * S.SetEnvVarH * In: -* PULLB = hENV * PULLB = hMem To Name (PSTRING) * PULLB = hMem To Value (PSTRING) *-------------------------------------- * S.SetEnvVarP * In: -* PULLB = hENV * PULLW = PTR To Name (PSTRING) * PULLW = PTR To Value (PSTRING) * Out: *-------------------------------------- -S.SetEnvVarH jsr S.FindVarH - php +S.SetEnvVarH >PULLA + jsr S.GetMemPtrA + >STYA ZPQuickPtr2 >PULLA jsr S.GetMemPtrA - >STYA ZPQuickPtr3 ZPQuickPtr3 = VALUE bra S.SetEnvVar - -S.SetEnvVarP jsr S.FindVarP - php - >PULLW ZPQuickPtr3 ZPQuickPtr3 = VALUE - -S.SetEnvVar plp +S.SetEnvVarP >PULLW ZPQuickPtr2 + >PULLYA +S.SetEnvVar >STYA ZPQuickPtr3 ZPQuickPtr3 = VALUE + jsr S.FindVar bcs .3 Not Found,ZPQuickPtr1 -> End Of Env lda (ZPQuickPtr1) Found, Discard current NAME definition sec @@ -304,22 +346,20 @@ S.SetEnvVar plp sec rts *-------------------------------------- -* S.DelEnvVarH +* S.DelEnvVarA * In: -* PULLB = hENV * PULLB = hMem To Name (PSTRING) *-------------------------------------- -* S.DelEnvVarP +* S.DelEnvVarYA * In: -* PULLB = hENV * PULLW = PTR To Name (PSTRING) * Out: *-------------------------------------- -S.DelEnvVarH jsr S.FindVarH - bra S.DelEnvVar -S.DelEnvVarP jsr S.FindVarP - -S.DelEnvVar bcs .8 not found, quit +S.DelEnvVarA >PULLA get NAME + jsr S.GetMemPtrA +S.DelEnvVarYA >STYA ZPQuickPtr2 Store VAR Name +S.DelEnvVar jsr S.FindVar + bcs .8 not found, quit lda (ZPQuickPtr1) Found, Discard current NAME definition sec @@ -346,15 +386,9 @@ S.DelEnvVar bcs .8 not found, quit *-------------------------------------- * PRIVATE *-------------------------------------- -* S.FindVarH +* S.FindVar * In: -* PULLB = hENV -* PULLB = hMem to NAME (PSTRING) -*-------------------------------------- -* S.FindVarP -* In: -* PULLB = hENV -* PULLW = PTR to NAME (PSTRING) +* ZPQuickPtr2 -> NAME *-------------------------------------- * Out: * CC: Found @@ -364,20 +398,11 @@ S.DelEnvVar bcs .8 not found, quit * ZPQuickPtr1 -> PTR to Ending 0 * ZPQuickPtr2 -> NAME *-------------------------------------- -S.FindVarH >PULLA get ENV +S.FindVar ldy #S.PS.hENV + lda (pPs),y jsr S.GetMemPtrA >STYA ZPQuickPtr1 Store ENV - >PULLA get NAME - jsr S.GetMemPtrA - >STYA ZPQuickPtr2 Store VAR Name - bra S.FindVar -S.FindVarP >PULLA get ENV - jsr S.GetMemPtrA - >STYA ZPQuickPtr1 Store ENV - >PULLW ZPQuickPtr2 get NAME - -S.FindVar .1 lda (ZPQuickPtr1) beq .9 ldy #0 diff --git a/SYS/KERNEL.S.EXE.txt b/SYS/KERNEL.S.EXE.txt deleted file mode 100644 index 12bfac21..00000000 --- a/SYS/KERNEL.S.EXE.txt +++ /dev/null @@ -1,199 +0,0 @@ -PR#3 -PREFIX /A2OSX.SRC -NEW -INC 1 -AUTO 6 - .LIST OFF - .OP 65C02 -*-------------------------------------- -* S.ExecFileA (R) -* in : -* A = hMem of FilePath (PSTRING) -* out : -* -*-------------------------------------- -S.ExecFileA jsr S.LoadFileA - bcc S.ExecFileAOK - rts - -S.ExecFileAOK >STYA S.ExecFileA.DataLen - stx S.ExecFileA.hData - txa - jsr S.GetMemPtrA - >STYA S.ExecFileA.DataPtr - -.1 stz TmpBuffer256 - -.2 >LDYA S.ExecFileA.DataPtr - >STYA ZPQuickPtr1 - - inc S.ExecFileA.DataPtr - bne .21 - inc S.ExecFileA.DataPtr+1 - -.21 lda S.ExecFileA.DataLen - bne .22 - dec S.ExecFileA.DataLen+1 -.22 dec S.ExecFileA.DataLen - - lda (ZPQuickPtr1) - cmp #$0D - beq .3 - inc TmpBuffer256 - ldx TmpBuffer256 - sta TmpBuffer256,x - - lda S.ExecFileA.DataLen - bne .2 - lda S.ExecFileA.DataLen+1 - bne .2 - -.3 lda TmpBuffer256 - beq .4 - lda TmpBuffer256+1 - cmp #'*' - beq .4 - lda #'-' - jsr S.SysScrCOUTA - lda #'>' - jsr S.SysScrCOUTA - >LDYAI TmpBuffer256 - jsr S.SysScrPPSTRYA - >LDYAI TmpBuffer256 - jsr S.NewPStrYA - bcs .99 - - pha - jsr S.ExecCmdLineA - jsr S.SysScrPRCode - pla - jsr S.FreeMemA - -.4 lda S.ExecFileA.DataLen - bne .1 - lda S.ExecFileA.DataLen+1 - bne .1 - - jsr .99 - clc - rts - -.99 lda S.ExecFileA.hData - jsr S.FreeMemA - sec - rts -*-------------------------------------- -S.ExecCmdLineA >PUSHA Push Cmd Line - >PUSHBI $20 Push SEP=' ' - >PUSHBI 0 Push Token IDX - jsr S.PStrGetTkn - bcs .99 - - sta S.ExecFileA.hCMD - stx S.ExecFileA.hARGS - jsr S.GetMemPtrA - >PUSHYA - >PUSHWI EXECCMDS - jsr S.GetPStrIndex - bcs .98 - - asl - tax - lda S.ExecFileA.hARGS - jsr S.ExecCmdLine - bcs .98 - - jsr .98 - clc - rts - -.98 pha - lda S.ExecFileA.hARGS - jsr S.FreeMemA - lda S.ExecFileA.hCMD - jsr S.FreeMemA - pla -.99 sec - rts -*-------------------------------------- -S.ExecFileA.hData .BS 1 -S.ExecFileA.DataLen .BS 2 -S.ExecFileA.DataPtr .BS 2 -S.ExecFileA.hCMD .BS 1 -S.ExecFileA.hARGS .BS 1 -*-------------------------------------- -EXECCMDS .HS .03 - .AS "SET" - .HS 04 - .AS "LOAD" - .HS 04 - .AS "EXEC" - .DA #0 -*-------------------------------------- -S.ExecCmdLine jmp (.1,x) -.1 .DA S.SetSysEnvA - .DA S.LoadDrvA VCPU!!!! - .DA S.CreateProcessA VCPU!!!! -*-------------------------------------- -* S.GetPStrIndex -* in : -* PULLW = String Table (Array Of PSTR) -* PULLW = String To Search (PSTR) -* out : -* CC: A = String Index In Table -*-------------------------------------- -S.GetPStrIndex >PULLW ZPQuickPtr1 - >PULLW ZPQuickPtr2 - ldx #0 -.1 lda (ZPQuickPtr1) - beq .99 - cmp (ZPQuickPtr2) - bne .3 - tay -.2 lda (ZPQuickPtr1),y - eor (ZPQuickPtr2),y - and #$7F - bne .3 - dey - bne .2 - txa - clc - rts -.3 inx - lda (ZPQuickPtr1) - sec - adc ZPQuickPtr1 - sta ZPQuickPtr1 - bcc .1 - inc ZPQuickPtr1+1 - bra .1 -.99 lda #SYSMGR.ERRSYN - sec - rts -*-------------------------------------- -S.SetSysEnvA >PUSHA Push Cmd Line - >PUSHBI $3D Push SEP='=' - >PUSHBI 0 Push Token IDX - jsr S.PStrGetTkn - bcs * - phx save X,A for discard - pha - pha - txa - >PUSHA - pla - >PUSHA - ldy #S.PS.hENV - lda TSKMGR.TABLE,y - >PUSHA - jsr S.SetEnvVarH - - pla disard NAME - jsr S.FreeMemA - pla discard VALUE - jmp S.FreeMemA -*-------------------------------------- -MAN -SAVE SYS/KERNEL.S.EXE -LOAD SYS/KERNEL.S -ASM diff --git a/SYS/KERNEL.S.FS.txt b/SYS/KERNEL.S.FIO.txt similarity index 86% rename from SYS/KERNEL.S.FS.txt rename to SYS/KERNEL.S.FIO.txt index 1c0787ef..29d8cb63 100644 --- a/SYS/KERNEL.S.FS.txt +++ b/SYS/KERNEL.S.FIO.txt @@ -47,50 +47,59 @@ S.FileSearch >PULLA Get Search path sec rts -.10 sta R.BL Store Expanded path list to search - >PULLB R.AH Store Filename +.10 sta S.FileSearch.hSrch Store Expanded path list to search + + >PULLB S.FileSearch.hFile Store Filename lda #1 - sta R.BH Start At Token 1 + sta S.FileSearch.Idx Start At Token 1 -.1 >PUSHB R.BL push expanded path list - >PUSHBI $3B Push SEP=';' - >PUSHB R.BH Push Token IDX - jsr S.PStrGetTkn Get R.BL token in A +.1 >PUSHB S.FileSearch.hSrch push expanded path list + >PUSHBI $3B Push SEP=';' + >PUSHB S.FileSearch.Idx Push Token IDX + jsr S.PStrGetTkn Get token in A bcs .98 - sta R.CL Store Token path - >PUSHB R.AH push filename - >PUSHB R.CL Push Token path + sta S.FileSearch.hPath Store Token path + >PUSHB S.FileSearch.hFile push filename + >PUSHB S.FileSearch.hPath Push Token path jsr S.PStrCat bcs .97 - sta R.CH Store Full path (Token Path+filename) + sta S.FileSearch.hFull Store Full path (Token Path+filename) + jsr S.MLIGetFileInfoA bcc .8 - lda R.CH Discard this Full Path + lda S.FileSearch.hFull Discard this Full Path jsr S.FreeMemA - lda R.CL Discard Token path + lda S.FileSearch.hPath Discard Token path jsr S.FreeMemA - inc R.BH Try next Token + + inc S.FileSearch.Idx Try next Token bne .1 - beq .98 go to discard Expanded path list + beq .98 go to discard Expanded path list -.97 lda R.CL Discard Token path +.97 lda S.FileSearch.hPath Discard Token path jsr S.FreeMemA -.98 lda R.BL Discard Expanded Path list +.98 lda S.FileSearch.hSrch Discard Expanded hSrch list jsr S.FreeMemA lda #SYSMGR.ERRFNF sec rts -.8 jsr .97 Dicard all except Full Path - lda R.CH +.8 jsr .97 Dicard all except Full Path + lda S.FileSearch.hFull clc rts *-------------------------------------- +S.FileSearch.hSrch .BS 1 +S.FileSearch.hFile .BS 1 +S.FileSearch.Idx .BS 1 +S.FileSearch.hPath .BS 1 +S.FileSearch.hFull .BS 1 +*-------------------------------------- * S.LoadFileA * in : * A = hMem of FilePath (PSTRING) @@ -100,7 +109,9 @@ S.FileSearch >PULLA Get Search path *-------------------------------------- S.LoadFileA jsr S.MLIOpenA bcc S.LoadFile -S.LoadFile.RTS rts + +S.LoadFile.RTS rts + S.LoadFileYA jsr S.MLIOpenYA bcs S.LoadFile.RTS @@ -592,6 +603,6 @@ S.ListDirReadBlock TmpFileName .BS 16 *-------------------------------------- MAN -SAVE SYS/KERNEL.S.FS +SAVE SYS/KERNEL.S.FIO LOAD SYS/KERNEL.S ASM diff --git a/SYS/KERNEL.S.LIB.txt b/SYS/KERNEL.S.LIB.txt index 0af123d5..bcab0a10 100644 --- a/SYS/KERNEL.S.LIB.txt +++ b/SYS/KERNEL.S.LIB.txt @@ -19,13 +19,13 @@ S.LoadLibYA jsr S.NewPStrYA jsr S.LoadLibA php save error status - pha save error code/hMem lda S.LoadLibYA.hLibName jsr S.FreeMemA discard STR hMem pla get back error code/hMem plp ..and error status .99 rts +*-------------------------------------- S.LoadLibYA.hLibName .BS 1 *-------------------------------------- * S.LoadLibA @@ -34,26 +34,22 @@ S.LoadLibYA.hLibName .BS 1 * out : * A = hMem of Loaded Lib *-------------------------------------- -S.LoadLibA >PUSHA push libname for S.FileSearch - >LDYAI MSG.LOADLIB - jsr S.SysScrPPSTRYA - >PUSHWI ENV.LIB push ENVNAME=LIB - ldy #S.PS.hENV - lda (pPs),y - >PUSHA - jsr S.GetEnvVarP get value for ENV=LIB +S.LoadLibA sta S.LoadLibA.hName push libname for S.FileSearch + >LDYAI ENV.LIB push ENVNAME=LIB + jsr S.GetEnvVarYA get value for ENV=LIB bcs .99 - pha save hMem to LIB VALUE - >PUSHA Push %LIB% VALUE - jsr S.FileSearch find libname in %LIB% + + sta S.LoadLibA.hSrch save hMem to LIB VALUE + + >PUSHB S.LoadLibA.hName + >PUSHB S.LoadLibA.hSrch + jsr S.FileSearch find libname in $LIB bcs .98 - pha save hMem to LIB full path - jsr S.SysScrPPSTRA - pla - pha + + sta S.LoadLibA.hPath jsr S.LoadBinA A = hMem of filename full path bcs .97 - phx + stx S.LoadLibA.hMem >STYA pLib ldx #LIBMGR.LOAD @@ -61,22 +57,25 @@ S.LoadLibA >PUSHA push libname for S.FileSearch bcs .97 - plx - pla discard LIB PATH - jsr S.FreeMemA - pla discard LIB VALUE - jsr S.FreeMemA - txa + jsr .97 + + lda S.LoadLibA.hMem clc rts -.97 pla discard LIB PATH - jsr S.FreeMemA -.98 pla discard LIB VALUE - jsr S.FreeMemA +.97 lda S.LoadLibA.hPath discard LIB PATH + jsr S.FreeMemA + +.98 lda S.LoadLibA.hSrch discard LIB VALUE + jsr S.FreeMemA sec .99 rts *-------------------------------------- +S.LoadLibA.hName .BS 1 +S.LoadLibA.hSrch .BS 1 +S.LoadLibA.hPath .BS 1 +S.LoadLibA.hMem .BS 1 +*-------------------------------------- * S.UnloadLibA * in : * A = hMem To Lib @@ -107,8 +106,6 @@ S.UnloadLibA pha pla jmp S.FreeMemA *-------------------------------------- -MSG.LOADLIB >PSTRING "\nLoadLib:" -*-------------------------------------- MAN SAVE SYS/KERNEL.S.LIB LOAD SYS/KERNEL.S diff --git a/SYS/KERNEL.S.SCR.txt b/SYS/KERNEL.S.SCR.txt deleted file mode 100644 index 4bf9acba..00000000 --- a/SYS/KERNEL.S.SCR.txt +++ /dev/null @@ -1,304 +0,0 @@ -PR#3 -PREFIX /A2OSX.SRC -NEW -INC 1 -AUTO 6 - .LIST OFF - .OP 65C02 -*-------------------------------------- -* !!!!!!!! DO NOT USE VCPU16 !!!!!!!! -* !!!!!! DO NOT USE ZPQuickPTRs !!!!! -*-------------------------------------- -SYSSCR.BASL .EQ ZPSysScr COUT -SYSSCR.BASLTMP .EQ ZPSysScr+2 Scrolling -SYSSCR.STRPTR .EQ ZPSysScr+4 PPSTR -*-------------------------------------- -SYSSCR.BASL0 .EQ $800 -*-------------------------------------- -* S.SysScrInit -*-------------------------------------- -S.SysScrInit stz SYSSCR.CPULOADI - stz SYSSCR.CH - stz SYSSCR.CV - - ldx #0 - - ldy #0 -.1 lda SYSSCR.TITLE,y - beq .2 - - jsr S.SysScrSetCharAtYX - iny - bne .1 - -.2 lda #$20 - jsr S.SysScrSetCharAtYX - iny - cpy #80 - bne .2 - - jsr S.SysScrHOME - - lda A2osX.SCREENS - ora #A2osX.SCREENS.S - sta A2osX.SCREENS - lda #A2osX.SCREENS.S - jsr S.ScreenSelectA - clc - rts -*-------------------------------------- -* S.SysScrPRCode -* In: -* CC : Prints [OK] -* CS : [$$] at column 76-79 -*-------------------------------------- -S.SysScrPRCode php save P to keep carry - bcs .1 - lda #0 ensure we have ERR=0 if cc -.1 pha - ldy #76 HTAB to 76 - sty SYSSCR.CH - lda #"[" - jsr S.SysScrCOUTA - pla - pha - bne .2 - - lda #"O" - jsr S.SysScrCOUTA - lda #"K" - jsr S.SysScrCOUTA - bra .3 - -.2 jsr S.SysScrPRBYTEA -.3 lda #"]" - jsr S.SysScrCOUTA - pla - plp - rts -*-------------------------------------- -S.DumpEvent lda (pEvent) - jsr S.SysScrPRBYTEA - ldy #S.EVT.hDEV - lda (pEvent),y - jsr S.SysScrPRBYTEA - ldy #S.EVT.DATALO - lda (pEvent),y - jsr S.SysScrPRBYTEA - ldy #S.EVT.DATAHI - lda (pEvent),y - jsr S.SysScrPRBYTEA - - lda #'.' - jsr S.SysScrCOUTA - ldy #S.EVT.DATAW1 - lda (pEvent),y - jsr S.SysScrPRBYTEA - iny - lda (pEvent),y - jsr S.SysScrPRBYTEA - - lda #'.' - jsr S.SysScrCOUTA - ldy #S.EVT.DATAW2 - lda (pEvent),y - jsr S.SysScrPRBYTEA - iny - lda (pEvent),y - jmp S.SysScrPRBYTEA -*-------------------------------------- -S.SysScrPPSTRA jsr S.GetMemPtrA -S.SysScrPPSTRYA >STYA SYSSCR.STRPTR - lda (SYSSCR.STRPTR) - beq .9 - ldy #0 -.1 iny - lda (SYSSCR.STRPTR),y - cmp #'\' - bne .7 - tya - cmp (SYSSCR.STRPTR) - beq .9 - iny - lda (SYSSCR.STRPTR),y - cmp #'n' - bne .7 - lda #13 -.7 jsr S.SysScrCOUTA -.8 tya - cmp (SYSSCR.STRPTR) - bne .1 -.9 >LDYA SYSSCR.STRPTR - rts -*-------------------------------------- -S.SysScrPRBYTEA pha - lsr - lsr - lsr - lsr - ora #$B0 - cmp #$BA - bcc .1 - adc #6 -.1 jsr S.SysScrCOUTA - pla - and #$0F - ora #$B0 - cmp #$BA - bcc S.SysScrCOUTA - adc #6 -*-------------------------------------- -S.SysScrCOUTA phx - phy - cmp #13 - bne .1 - jsr S.SysScrCROUT - ply - plx - rts - -.1 ldy SYSSCR.CH - ldx SYSSCR.CV - ora #$80 - jsr S.SysScrSetCharAtYX - jsr S.SysScrFSOUT - ply - plx - rts -*-------------------------------------- -S.SysScrFSOUT lda SYSSCR.CH - cmp #79 - beq S.SysScrCROUT1 - inc SYSSCR.CH - rts -*-------------------------------------- -S.SysScrCROUT jsr S.SysScrCLREOL -S.SysScrCROUT1 stz SYSSCR.CH - ldx SYSSCR.CV - cpx #23 - beq S.SysScrScroll - inc SYSSCR.CV - rts -*-------------------------------------- -S.SysScrCLREOL ldx SYSSCR.CV - lda #$A0 - ldy SYSSCR.CH -.1 cpy #79 - beq .2 - jsr S.SysScrSetCharAtYX - iny - bne .1 -.2 rts -*-------------------------------------- -S.SysScrScroll ldx #1 -.1 lda SYSSCR.BASEL,x - sta SYSSCR.BASL - lda SYSSCR.BASEH,x - sta SYSSCR.BASL+1 - inx - lda SYSSCR.BASEL,x - sta SYSSCR.BASLTMP - lda SYSSCR.BASEH,x - sta SYSSCR.BASLTMP+1 - - ldy #39 - sta SETWRITEAUX - sta SETREADAUX -.2 lda (SYSSCR.BASLTMP),y - sta (SYSSCR.BASL),y - dey - bpl .2 - - ldy #39 - sta CLRWRITEAUX - sta CLRREADAUX -.3 lda (SYSSCR.BASLTMP),y - sta (SYSSCR.BASL),y - dey - bpl .3 - - cpx #23 - bne .1 - - ldy #39 - lda #$A0 -.4 sta SETWRITEAUX - sta (SYSSCR.BASLTMP),y - sta CLRWRITEAUX - sta (SYSSCR.BASLTMP),y - dey - bpl .4 - rts -*-------------------------------------- -S.SysScrClrLineAtX - lda SYSSCR.BASEL,x - sta SYSSCR.BASL - lda SYSSCR.BASEH,x - sta SYSSCR.BASL+1 - - lda #$A0 - - ldy #39 - sta SETWRITEAUX -.1 sta (SYSSCR.BASL),y - dey - bpl .1 - - ldy #39 - sta CLRWRITEAUX -.2 sta (SYSSCR.BASL),y - dey - bpl .2 - - rts -*-------------------------------------- -S.SysScrHOME ldx #23 - -.1 jsr S.SysScrClrLineAtX - dex - bne .1 - - stz SYSSCR.CH - lda #1 - sta SYSSCR.CV - - rts -*-------------------------------------- -S.SysScrSetCharAtYX - cmp #$40 - bcc .1 - cmp #$5F - bcs .1 - and #$3F - -.1 phy - pha - lda SYSSCR.BASEL,x - sta SYSSCR.BASL - lda SYSSCR.BASEH,x - sta SYSSCR.BASL+1 - tya - lsr - tay - bcs .2 - sta SETWRITEAUX - -.2 pla - sta (SYSSCR.BASL),y - sta CLRWRITEAUX - ply - rts -*-------------------------------------- -SYSSCR.CH .BS 1 -SYSSCR.CV .BS 1 -SYSSCR.CPULOADI .BS 1 -SYSSCR.CPULOADC .AS -"|/-\" -*-------------------------------------- -SYSSCR.TITLE >CSTRING "A2osX System Screen" -SYSSCR.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0 -SYSSCR.BASEH .HS 08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B -*-------------------------------------- -MAN -SAVE SYS/KERNEL.S.SCR -LOAD SYS/KERNEL.S -ASM diff --git a/SYS/KERNEL.S.TSK.txt b/SYS/KERNEL.S.TSK.txt index e9360c22..aeea637c 100644 --- a/SYS/KERNEL.S.TSK.txt +++ b/SYS/KERNEL.S.TSK.txt @@ -12,35 +12,31 @@ S.TskMgrInit stz TSKMGR.LASTID lda #1 sta TSKMGR.SIZE One Slot Busy (Kernel PS=0) - >LDYAI TskMgr.Table Make PS #0 as current process - >STYA pPs + >LDYAI TskMgr.Table Clear whole process table + >STYA ZPQuickPtr1 ldx #K.PS.MAX .1 lda #0 ldy #S.PS.SIZE-1 -.2 sta (pPs),y +.2 sta (ZPQuickPtr1),y dey bpl .2 - lda pPs + lda ZPQuickPtr1 clc adc #S.PS.SIZE - sta pPs + sta ZPQuickPtr1 bcc .3 - inc pPs+1 + inc ZPQuickPtr1+1 .3 dex bne .1 - - >LDYAI TskMgr.Table Make PS #0 as current process - >STYA pPs - - lda #0 + + lda #1 ldy #S.PS.hINDEV - sta TskMgr.Table,y Make In DEV = NUL - inc + sta TskMgr.Table,y Make In DEV = SYS ldy #S.PS.hOUTDEV sta TskMgr.Table,y Make OUT DEV = SYS ldy #S.PS.hERRDEV @@ -62,16 +58,33 @@ S.TskMgrInit stz TSKMGR.LASTID ldy #S.PS.hPREFIX sta TskMgr.Table,y +S.TskMgrInit.Env >PUSHWI TmpBuffer256 push ENV value >PUSHWI ENV.A2osX push ENV name - ldy #S.PS.hENV - lda TskMgr.Table,y - >PUSHA jsr S.SetEnvVarP - rts + bcs .9 + + >PUSHWI ENV.PATH.VALUE + >PUSHWI ENV.PATH + jsr S.SetEnvVarP + bcs .9 + + >PUSHWI ENV.LIB.VALUE + >PUSHWI ENV.LIB + jsr S.SetEnvVarP + bcs .9 + + >PUSHWI ENV.DRV.VALUE + >PUSHWI ENV.DRV + jsr S.SetEnvVarP + bcs .9 + + jsr S.SelectProcess0 + + ldx #DEVMGR.OPEN + jsr pDevJmp -.9 sec - rts +.9 rts *-------------------------------------- * S.TskMgrRun *-------------------------------------- @@ -209,16 +222,20 @@ S.TskMgrQuit clc *-------------------------------------- * PUBLIC *-------------------------------------- -* S.ExecProcessA (Blocking Parent PID) +* S.ExecProcessNewEnvYA +* S.ExecProcessYA (Blocking Parent PID) +* S.CreateProcessNewEnvYA +* S.CreateProcessYA (Non Blocking) * in : * A = hMem To Cmd Line +* Y = hMem To Args * out : * A = Child PSID *-------------------------------------- -S.ExecProcessNewEnvA - ldy #S.PS.F.ENV - bra S.ExecProcess -S.ExecProcessA ldy #0 +S.ExecProcessNewEnvYA + ldx #S.PS.F.ENV + .HS 2C bit abs +S.ExecProcessYA ldx #0 S.ExecProcess jsr S.CreateProcess bcs .9 terminated, do not set PID as HOLD @@ -233,31 +250,36 @@ S.ExecProcess jsr S.CreateProcess clc .9 rts *-------------------------------------- -* S.CreateProcessA (Non Blocking) -* in : -* A = hMem To Full Cmd Line -* out : -* A = Child PSID -*-------------------------------------- -S.CreateProcessNewEnvA - ldy #S.PS.F.ENV - bra S.CreateProcess -S.CreateProcessA - ldy #0 -S.CreateProcess sty S.CreateChildProcess.Flags +S.CreateProcessNewEnvYA + ldx #S.PS.F.ENV + .HS 2C bit abs +S.CreateProcessYA + ldx #0 +S.CreateProcess stx S.CreateChildProcess.Flags sta S.CreateProcessA.Cmd - >LDYAI MSG.NEWPS - jsr S.SysScrPPSTRYA + sty S.CreateProcessA.Args + +* lda #'|' +* jsr S.CoutA +* lda S.CreateProcessA.Cmd +* jsr S.PSTROutA +* lda #'|' +* jsr S.CoutA +* lda S.CreateProcessA.Args +* beq .1 +* jsr S.PSTROutA +*.1 lda #'|' +* jsr S.CoutA +* lda #13 +* jsr S.CoutA jsr S.CreateChildProcess bcs .99 sta S.CreateProcessA.CPSID - jsr S.SelectProcessA - lda S.CreateProcessA.Cmd - jsr S.InitProcessA + jsr S.InitProcess bcs .98 Init Failed or exit? ldy #S.PS.PID switch back to Parent Process @@ -284,6 +306,7 @@ S.CreateProcess sty S.CreateChildProcess.Flags rts *-------------------------------------- S.CreateProcessA.Cmd .BS 1 +S.CreateProcessA.Args .BS 1 S.CreateProcessA.CPSID .BS 1 *-------------------------------------- * S.GetPSByIDA @@ -469,62 +492,24 @@ S.CreateChildProcess S.CreateChildProcess.Flags .BS 1 *-------------------------------------- -* S.InitProcessA +* S.InitProcess * In : * A = hMem To Full Cmd Line *-------------------------------------- -S.InitProcessA stz S.InitProcessA.hPath - stz S.InitProcessA.hFullPath - >PUSHA Push Cmd Line - >PUSHBI $20 Push SEP=' ' - >PUSHBI 0 Push 0 for getting CMD And ARGS - jsr S.PStrGetTkn - bcc .10 -.99 rts OOM error - -.10 sta S.InitProcessA.hCmd - pha - txa - ldy #S.PS.hARGS +S.InitProcess lda S.CreateProcessA.Args + beq .1 + jsr S.ExpandPStrA +.1 ldy #S.PS.hARGS sta (pPs),y set ARGS hMem (0 if none) + + lda S.CreateProcessA.Cmd + jsr S.ExpandPStrA - pla - jsr S.GetMemPtrA - >STYA ZPQuickPtr1 - lda (ZPQuickPtr1) - cmp #'/' - bne .20 - - lda S.InitProcessA.hCmd - bra .30 - -.20 >PUSHWI ENV.PATH push ENVNAME=PATH - ldy #S.PS.hENV - lda (pPs),y - >PUSHA - jsr S.GetEnvVarP get value for ENV=PATH - bcs .99 - - sta S.InitProcessA.hPath save VALUE hMem for discard - pha - lda S.InitProcessA.hCmd - >PUSHA push CMD for S.FileSearch - pla - >PUSHA A=PStr to ENV Value - jsr S.FileSearch find File in %PATH% - bcs S.InitProcessA.ClnUp - - sta S.InitProcessA.hFullPath save FULLPATH hMem for discard - -.30 jsr S.PStrCpyA ldy #S.PS.hCMD sta (pPs),y - pha - jsr S.SysScrPPSTRA - pla jsr S.LoadBinA A = BinPath hMem - bcs S.InitProcessA.ClnUp + bcs .99 >STYA pCode save PTR to Code Segment txa @@ -537,48 +522,38 @@ S.InitProcessA stz S.InitProcessA.hPath dey ora (pCode),y - beq .1 DS.SIZE=0... + beq .2 DS.SIZE=0... lda (pCode),y >PUSHAX Push DS.SIZE >PUSHBI S.MEM.F.INIT0 Clear DS jsr S.GetMem - bcs S.InitProcessA.ClnUp + bcs .99 >STYA pData txa ldy #S.PS.hDS sta (pPs),y save DS hMem in TSKSLOT -.1 ldx #TSKMGR.INIT +.2 ldx #TSKMGR.INIT jsr pCodeJmp Call INIT function -S.InitProcessA.ClnUp - php save Carry - pha save ERR - lda S.InitProcessA.hFullPath - beq .1 - jsr S.FreeMemA - -.1 lda S.InitProcessA.hPath - beq .2 - jsr S.FreeMemA - -.2 pla - plp - rts -*-------------------------------------- -S.InitProcessA.hCmd .BS 1 -S.InitProcessA.hPath .BS 1 -S.InitProcessA.hFullPath .BS 1 +.99 rts *-------------------------------------- * S.SelectProcessA * In : A=PSID *-------------------------------------- S.SelectProcessA + tay + bne S.SelectProcessN +S.SelectProcess0 + >LDYAI TskMgr.Table Make PS #0 as current process + >STYA pPs + bra S.SelectProcessDev +S.SelectProcessN jsr S.GetPSByIDA bcs * - >STYA pPS + >STYA pPs S.SelectProcess ldy #S.PS.hCS lda (pPs),y @@ -587,12 +562,13 @@ S.SelectProcess ldy #S.PS.hCS ldy #S.PS.hDS lda (pPs),y - beq .1 + beq S.SelectProcessDev jsr S.GetMemPtrA >STYA pData -.1 ldy #S.PS.hOUTDEV +S.SelectProcessDev + ldy #S.PS.hOUTDEV lda (pPs),y beq .8 @@ -658,7 +634,6 @@ TSKMGR.SIZE .BS 1 TSKMGR.COUNT .BS 1 TSKMGR.LASTID .BS 1 *-------------------------------------- -MSG.NEWPS >PSTRING "\nTskMgr:" MAN SAVE SYS/KERNEL.S.TSK LOAD SYS/KERNEL.S diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index 0b6e04af..66e50d88 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -13,6 +13,11 @@ AUTO 6 .INB INC/IO.I .INB INC/PRODOS.I *-------------------------------------- +ZPQuickPtr1 .EQ $0 Temp Ptrs for use in very limited scope +ZPQuickPtr2 .EQ $2 (could be trashed by any JSR) +ZPQuickPtr3 .EQ $4 +ZPQuickPtr4 .EQ $6 +*-------------------------------------- * $D000-D0FF KERNEL.SYSCALL Jmp Table *-------------------------------------- .DA S.GetMem $00 @@ -47,13 +52,13 @@ AUTO 6 *-------------------------------------- .DA S.ExpandPStrA $30 .DA S.ExpandPStrYA - .DA S.GetEnvVarH - .DA S.GetEnvVarP + .DA S.GetEnvVarA + .DA S.GetEnvVarYA .DA S.SetEnvVarH .DA S.SetEnvVarP - .DA S.DelEnvVarH - .DA S.DelEnvVarP + .DA S.DelEnvVarA + .DA S.DelEnvVarYA *-------------------------------------- .DA S.MLICreateFile $40 .DA S.MLICreateDirA @@ -105,10 +110,10 @@ AUTO 6 .DA 0 .DA 0 *-------------------------------------- - .DA S.ExecProcessNewEnvA $90 - .DA S.ExecProcessA - .DA S.CreateProcessNewEnvA - .DA S.CreateProcessA + .DA S.ExecProcessNewEnvYA $90 + .DA S.ExecProcessYA + .DA S.CreateProcessNewEnvYA + .DA S.CreateProcessYA .DA S.GetPSByIDA .DA 0 @@ -137,22 +142,22 @@ AUTO 6 *-------------------------------------- .DA S.ScreenSelectA $C0 .DA 0 - .DA S.SysScrPPSTRA - .DA S.SysScrPPSTRYA + .DA 0 + .DA 0 .DA 0 .DA 0 .DA 0 .DA 0 *-------------------------------------- - .DA 0 $D0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 + .DA S.COutA $D0 + .DA S.PSTROutA + .DA S.PSTROutYA .DA 0 + .DA S.HexOutA + .DA S.HexOutYA + .DA S.DecOutA + .DA S.DecOutYA *-------------------------------------- .DA 0 $E0 .DA 0 @@ -185,73 +190,50 @@ Kernel.Init sei stz A2osX.SCREENS stz A2osX.ASCREEN - jsr S.SysScrInit + jsr S.MemMgrInit + bcs * + jsr S.DevMgrInit + bcs * + jsr S.EvtMgrInit + bcs * + jsr S.TskMgrInit + bcs * + + >DEBUG >LDYAI MSG.Init - jsr S.SysScrPPSTRYA - - >LDYAI MSG.Init.MemMgr - jsr S.SysScrPPSTRYA - jsr S.MemMgrInit - jsr S.SysScrPRCode - bcs .1 - - >LDYAI MSG.Init.TskMgr - jsr S.SysScrPPSTRYA - jsr S.TskMgrInit - jsr S.SysScrPRCode -.1 bcs .2 - - >LDYAI MSG.Init.DevMgr - jsr S.SysScrPPSTRYA - jsr S.DevMgrInit - jsr S.SysScrPRCode -.2 bcs .3 - - >LDYAI MSG.Init.EvtMgr - jsr S.SysScrPPSTRYA - jsr S.EvtMgrInit - jsr S.SysScrPRCode -.3 bcs .99 + jsr S.PSTROutYA >LDYAI MSG.Init.Startup - jsr S.SysScrPPSTRYA - - >LDYAI STARTUP.FILE Build A2osX.STARTUP full path... + jsr S.PSTROutYA + + >LDYAI STARTUP.ARGS Get A2osX.STARTUP full path... jsr S.NewPStrYA - pha save for discard - - >PUSHA - >PUSHWI ENV.A2osX get KRNL root path - ldy #S.PS.hENV - lda TskMgr.Table,y - >PUSHA - jsr S.GetEnvVarP - pha save for discard - >PUSHA - jsr S.PStrCat - pha save for discard - - jsr S.ExecFileA - jsr S.SysScrPRCode + pha + >LDYAI STARTUP.CMD Get A2osX.STARTUP full path... + jsr S.NewPStrYA + ply get back ARGS in Y + phy + pha A=CMH, save for discard + >DEBUG + jsr S.CreateProcessYA bcs * + + >DEBUG pla jsr S.FreeMemA pla jsr S.FreeMemA - pla - jsr S.FreeMemA - -.99 bcs * >LDYAI MSG.Init.OK - jsr S.SysScrPPSTRYA + jsr S.PSTROutYA + >DEBUG + *-------------------------------------- S.KernelRun jsr S.TskMgrRun bcs .98 - jsr S.SysScrCPULoad jsr S.GetEvent bcs S.KernelRun CS=no event @@ -264,7 +246,9 @@ S.KernelRun jsr S.TskMgrRun jsr S.DestroyEvent bra S.KernelRun -.1 lda (pEvent) +.1 jsr S.SelectProcess0 + + lda (pEvent) and #S.EVT.F.KEY any special key? beq .99 @@ -298,16 +282,36 @@ S.KernelRun jsr S.TskMgrRun .98 lda #A2osX.SCREENS.S jsr S.ScreenSelectA >LDYAI MSG.KRNLPANIC - jsr S.SysScrPPSTRYA + jsr S.PSTROutYA bra * -.99 >LDYAI MSG.EVNTPANIC - jsr S.SysScrPPSTRYA - jsr S.DumpEvent +.99 jsr S.DumpEvent jsr S.DestroyEvent jmp S.KernelRun *-------------------------------------- +S.DumpEvent ldy #S.EVT.DATAW2+1 + >PUSHB (pEvent),y + dey + >PUSHB (pEvent),y + + ldy #S.EVT.DATAW1+1 + >PUSHB (pEvent),y + dey + >PUSHB (pEvent),y + + ldy #S.EVT.DATAHI + >PUSHB (pEvent),y + ldy #S.EVT.DATALO + >PUSHB (pEvent),y + + ldy #S.EVT.hDEV + >PUSHB (pEvent),y + + >PUSHB (pEvent) + >LDYAI MSG.DumpEvent + jmp S.PSTROutYA +*-------------------------------------- * S.ScreenSelectA * IN : * A = Screen to display @@ -318,19 +322,19 @@ S.ScreenSelectA and A2osX.SCREENS Screen is available ? cmp #A2osX.SCREENS.S bne .1 sta SETTEXT + sta SETALTCHAR sta SET80DISP sta CLR80STORE sta SETPAGE2 - sta SETALTCHAR bra .8 .1 cmp #A2osX.SCREENS.C bne .2 sta SETTEXT + sta SETALTCHAR sta SET80DISP sta CLR80STORE sta CLRPAGE2 - sta SETALTCHAR bra .8 .2 cmp #A2osX.SCREENS.G @@ -341,6 +345,7 @@ S.ScreenSelectA and A2osX.SCREENS Screen is available ? sta SETHIRES sta CLR80STORE sta CLRPAGE2 + sta SET80STORE sta SETIOUDIS sta SETDHIRES @@ -355,46 +360,35 @@ S.ScreenSelectA and A2osX.SCREENS Screen is available ? .8 sta A2osX.ASCREEN .9 rts *-------------------------------------- -S.SysScrCPULoad ldx SYSSCR.CPULOADI - lda SYSSCR.CPULOADC,x - sta SYSSCR.BASL0+38 - dec SYSSCR.CPULOADI - bpl .1 - lda #3 - sta SYSSCR.CPULOADI -.1 rts -*-------------------------------------- MSG.Init >PSTRING "A2osX[Stage2]:Init\n" -MSG.Init.MemMgr >PSTRING "->MemMgr Init" -MSG.Init.TskMgr >PSTRING "->TskMgr Init" -MSG.Init.DevMgr >PSTRING "->DevMgr Init" -MSG.Init.EvtMgr >PSTRING "->EvtMgr Init" MSG.Init.Startup >PSTRING "EXEC A2osX.Startup...\n" -MSG.Init.OK >PSTRING "A2osX[Stage2]:Complete." - -MSG.EVNTPANIC >PSTRING "\nEVT:F/hDev/DATA/W1/W2=" +MSG.Init.OK >PSTRING "A2osX[Stage2]:Complete.\n" +MSG.DumpEvent >PSTRING "\nEVT:F=%h,hDev=%d,DATA=%H,W1=%H,W2=%H" MSG.KRNLPANIC >PSTRING "\n\n!!!Kernel Panic!!!" *-------------------------------------- -STARTUP.FILE >PSTRING "A2osX.STARTUP" +STARTUP.CMD >PSTRING "${A2OSX}SBIN/SHELL" +STARTUP.ARGS >PSTRING "${A2OSX}A2osX.STARTUP" *-------------------------------------- ENV.A2osX >PSTRING "A2OSX" ENV.PATH >PSTRING "PATH" +ENV.PATH.VALUE >PSTRING "${A2OSX}SBIN/;${A2OSX}BIN/" ENV.LIB >PSTRING "LIB" +ENV.LIB.VALUE >PSTRING "${A2OSX}LIB/" +ENV.DRV >PSTRING "DRV" +ENV.DRV.VALUE >PSTRING "${A2OSX}DRV/" *-------------------------------------- .INB SYS/KERNEL.S.MEM - .INB SYS/KERNEL.S.SCR .INB SYS/KERNEL.S.STR - .INB SYS/KERNEL.S.FS + .INB SYS/KERNEL.S.CIO + .INB SYS/KERNEL.S.FIO .INB SYS/KERNEL.S.MLI .INB SYS/KERNEL.S.BIN .INB SYS/KERNEL.S.DRV .INB SYS/KERNEL.S.LIB .INB SYS/KERNEL.S.NET -* .INB SYS/KERNEL.S.RDR .INB SYS/KERNEL.S.ENV .INB SYS/KERNEL.S.TSK .INB SYS/KERNEL.S.EVT - .INB SYS/KERNEL.S.EXE *-------------------------------------- .INB SYS/KERNEL.S.DEV *-------------------------------------- diff --git a/_Make_SYS.txt b/_Make_SYS.txt index 38e1825e..d4df1824 100644 --- a/_Make_SYS.txt +++ b/_Make_SYS.txt @@ -1,9 +1,10 @@ PR#3 -PREFIX /A2OSX.BOOT +PREFIX /A2OSX.SRC NEW INC 1 AUTO 6 -BLOAD A +PREFIX /A2OSX.BOOT +BLOAD A2OSX BSAVE A2OSX.SYSTEM,TSYS,A$2000,L$1300 -A2OSX.SYSTEM MAN