diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index feb8860e..c2916fe4 100644 Binary files a/A2OSX.BOOT.po and b/A2OSX.BOOT.po differ diff --git a/A2OSX.DEV.po b/A2OSX.DEV.po index c55c67cc..129e9731 100644 Binary files a/A2OSX.DEV.po and b/A2OSX.DEV.po differ diff --git a/A2OSX.SRC.po b/A2OSX.SRC.po index c7eddb71..36ce459d 100644 Binary files a/A2OSX.SRC.po and b/A2OSX.SRC.po differ diff --git a/A2osX.S.QC.txt b/A2osX.S.QC.txt index d3e30125..faf944f7 100644 --- a/A2osX.S.QC.txt +++ b/A2osX.S.QC.txt @@ -151,7 +151,7 @@ MLIOPEN00 .DA #3 MLIREAD00 .DA #4 .BS 1 .DA MLIREAD00.ADDR - .DA $2FFA + .DA $8000 .BS 2 MLICLOSE00 .DA #1 .BS 1 diff --git a/A2osX.STARTUP.txt b/A2osX.STARTUP.txt index 3da4b2fb..59dafc51 100644 --- a/A2osX.STARTUP.txt +++ b/A2osX.STARTUP.txt @@ -17,20 +17,20 @@ STARTPROC GETTY CON ${A2OSX}SBIN/LOGIN #STARTPROC GETTY COM2 ${A2OSX}SBIN/LOGIN #INSDRV PIC.DRV # Network Section -INSDRV UTHERNET.DRV 000E3A123456 +#INSDRV UTHERNET.DRV 000E3A123456 #INSDRV UTHERNET2.DRV 0008DC123456 #INSDRV UTHER2.AI.DRV 0008DC123456 #INSDRV LANCEGS.DRV -STARTPROC TCPIP -STARTPROC DHCPCLNT +#STARTPROC TCPIP +#STARTPROC DHCPCLNT #STARTPROC HTTPD #TELNETD #NFSMOUNT 192.168.1.5:/A2OSX /MNT/A2OSX #CIFSMOUNT 192.168.1.5:/MSSHARE /MNT/MSSHARE # End Network Section # GUI Section -INSDRV MOUSE.DRV -INSDRV DHGR.DRV +#INSDRV MOUSE.DRV +#INSDRV DHGR.DRV #STARTPROC DESKTOP # End GUI Section ECHO *** End A2osX Startup file *** diff --git a/BIN/ARP.S.txt b/BIN/ARP.S.txt index 9d1f8250..2480d1e3 100644 --- a/BIN/ARP.S.txt +++ b/BIN/ARP.S.txt @@ -170,7 +170,7 @@ CS.DOEVENT lda (pEvent) ldy #S.EVT.hDEV is Event from active IN device? lda (pEvent),y - ldy #S.PS.hINDEV + ldy #S.PS.hStdIn cmp (pPs),y bne .9 diff --git a/BIN/ASM.S.FIO.txt b/BIN/ASM.S.FIO.txt index df10c127..93075833 100644 --- a/BIN/ASM.S.FIO.txt +++ b/BIN/ASM.S.FIO.txt @@ -71,7 +71,7 @@ FIO.OpenFileA sta FIO.hFileName .10 >PUSHWI 0 >PUSHBI 4 - >PUSHBI SYS.FOPEN.R+SYS.FOPEN.T + >PUSHBI SYS.FOpen.R+SYS.FOpen.T lda FIO.hFileName >SYSCALL GetMemPtrA >PUSHYA @@ -270,7 +270,7 @@ FIO.LOAD.ASM.T ldy #ASM.T.hMem >PUSHWI 0 Aux type >PUSHBI 6 S.FILEINFO.TYPE.BIN - >PUSHBI SYS.FOPEN.R + >PUSHBI SYS.FOpen.R >PUSHW L.ASM.T.FILENAME >SYSCALL LoadFile bcs .9 diff --git a/BIN/ASM.S.SRC.txt b/BIN/ASM.S.SRC.txt index 6f760bf8..37b1c675 100644 --- a/BIN/ASM.S.SRC.txt +++ b/BIN/ASM.S.SRC.txt @@ -32,14 +32,14 @@ SRC.PrintLineErr ldx #0 .1 lda UsrBuf256,x beq .2 phx - >SYSCALL COutA + >SYSCALL PutCA plx inx bcc .1 rts .2 lda #13 - >SYSCALL COutA + >SYSCALL PutCA bcs .9 ldx #0 @@ -50,19 +50,19 @@ SRC.PrintLineErr ldx #0 beq .4 phx lda #'-' - >SYSCALL COutA + >SYSCALL PutCA plx bcs .9 bra .3 .4 lda #'^' phx - >SYSCALL COutA + >SYSCALL PutCA plx bcs .9 .5 lda #13 - >SYSCALL COutA + >SYSCALL PutCA .9 rts *--------------------------------------- SRC.ParseLine ldx UsrBuf256 @@ -326,12 +326,12 @@ SRC.ParseLine.OpCode .21 inx lda SRC.AM.StrBuf,x phx - >SYSCALL COutA + >SYSCALL PutCA plx cpx SRC.AM.StrBuf bne .21 lda #13 - >SYSCALL COutA + >SYSCALL PutCA .20 ldy #ASM.PC diff --git a/BIN/ASM.S.SYM.txt b/BIN/ASM.S.SYM.txt index 989f5a35..dd1405a3 100644 --- a/BIN/ASM.S.SYM.txt +++ b/BIN/ASM.S.SYM.txt @@ -121,7 +121,7 @@ SYM.Dump >LDYA L.MSG.SYMBOLS rts .5 lda #13 - >SYSCALL COutA + >SYSCALL PutCA ldy #SYM.DumpCount lda (pData),y diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index bbcefee7..951a42e7 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -258,7 +258,7 @@ CS.RUN ldy #bCANCEL *-------------------------------------- CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? lda (pEvent),y - ldy #S.PS.hINDEV + ldy #S.PS.hStdIn cmp (pPs),y bne .9 lda (pEvent) diff --git a/BIN/CAT.S.txt b/BIN/CAT.S.txt index 89bbfe0e..5ec9595c 100644 --- a/BIN/CAT.S.txt +++ b/BIN/CAT.S.txt @@ -236,7 +236,7 @@ CS.RUN.PRINT sty BytesRead Y,A = Bytes read bra .7 -.6 >SYSCALL COutA +.6 >SYSCALL PutCA bcs .9 .7 inc ByteIndex @@ -272,11 +272,11 @@ CS.RUN.OPEN >SYSCALL GetFullPathYA >PUSHWI 0 Aux type >PUSHBI 4 S.FILEINFO.TYPE.TXT - >PUSHBI SYS.FOPEN.R+SYS.FOPEN.T + >PUSHBI SYS.FOpen.R+SYS.FOpen.T pla >PUSHYA - >SYSCALL FOPEN + >SYSCALL FOpen bcs .99 jsr .99 @@ -299,7 +299,7 @@ CS.RUN.OPEN >SYSCALL GetFullPathYA *-------------------------------------- CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? lda (pEvent),y - ldy #S.PS.hINDEV + ldy #S.PS.hStdIn cmp (pPs),y bne .9 diff --git a/BIN/CHTYP.S.txt b/BIN/CHTYP.S.txt index 0f779e7c..48f585fe 100644 --- a/BIN/CHTYP.S.txt +++ b/BIN/CHTYP.S.txt @@ -187,7 +187,7 @@ CS.RUN ldy #bCANCEL *-------------------------------------- CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? lda (pEvent),y - ldy #S.PS.hINDEV + ldy #S.PS.hStdIn cmp (pPs),y bne .9 diff --git a/BIN/DEVDUMP.S.txt b/BIN/DEVDUMP.S.txt index ee6cca4d..c7a75caf 100644 --- a/BIN/DEVDUMP.S.txt +++ b/BIN/DEVDUMP.S.txt @@ -48,11 +48,11 @@ CS.INIT >SYSCALL GetArgC >STYA pDev txa - ldy #S.PS.hINDEV + ldy #S.PS.hStdIn sta (pPs),y -* ldy #S.PS.hOUTDEV +* ldy #S.PS.hStdOut * sta (pPs),y -* ldy #S.PS.hERRDEV +* ldy #S.PS.hStdErr * sta (pPs),y ldx #DEVMGR.OPEN @@ -76,7 +76,7 @@ CS.RUN clc *-------------------------------------- CS.DOEVENT ldy #S.EVT.hDEV lda (pEvent),y - ldy #S.PS.hINDEV + ldy #S.PS.hStdIn cmp (pPs),y bne .99 diff --git a/BIN/EDIT.S.CTRL.txt b/BIN/EDIT.S.CTRL.txt index ee18f121..114b9bec 100644 --- a/BIN/EDIT.S.CTRL.txt +++ b/BIN/EDIT.S.CTRL.txt @@ -56,7 +56,7 @@ Ctrl.A ldy #PromptMode >SYSCALL CPrintFYA bcs .9 lda #13 - >SYSCALL COutA + >SYSCALL PutCA sec lda (ZPPTR1) diff --git a/BIN/EDIT.S.SCRN.txt b/BIN/EDIT.S.SCRN.txt index 14c038f9..02ac9823 100644 --- a/BIN/EDIT.S.SCRN.txt +++ b/BIN/EDIT.S.SCRN.txt @@ -13,7 +13,7 @@ SCRN.Init ldy #ScreenH >SYSCALL CPrintFYA bcs .9 lda #12 - >SYSCALL COutA + >SYSCALL PutCA bcs .9 lda #0 @@ -160,7 +160,7 @@ SCRN.UpdateLineAtALenY pla bcs .11 - >SYSCALL COutA + >SYSCALL PutCA .11 ply plx bcs .9 @@ -412,10 +412,10 @@ SCRN.UpdateViewPort .9 jmp Ctrl.Q *-------------------------------------- SCRN.scrollUp lda #$1B - >SYSCALL COutA + >SYSCALL PutCA bcs .9 lda #'M' - >SYSCALL COutA + >SYSCALL PutCA bcs .9 ldy #ScreenY+1 @@ -439,10 +439,10 @@ SCRN.scrollUp lda #$1B .9 jmp Ctrl.Q *-------------------------------------- SCRN.scrollDn lda #$1B - >SYSCALL COutA + >SYSCALL PutCA bcs .9 lda #'D' - >SYSCALL COutA + >SYSCALL PutCA bcs .9 ldy #ScreenY+1 diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt index 1608c01b..f30cd89b 100644 --- a/BIN/EDIT.S.txt +++ b/BIN/EDIT.S.txt @@ -168,7 +168,7 @@ CS.RUN ldy #bCancel *-------------------------------------- CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? lda (pEvent),y - ldy #S.PS.hINDEV + ldy #S.PS.hStdIn cmp (pPs),y bne .9 @@ -345,12 +345,12 @@ CS.QUIT ldy #hBuffer >SYSCALL CPrintFYA bcs .9 lda #12 - >SYSCALL COutA + >SYSCALL PutCA .9 rts *-------------------------------------- LoadFile >PUSHWI 0 Aux type >PUSHBI 4 S.FILEINFO.TYPE.TXT - >PUSHBI SYS.FOPEN.R + >PUSHBI SYS.FOpen.R ldy #hFileName lda (pData),y @@ -426,7 +426,7 @@ SaveFile ldy #hBuffer >PUSHWI 0 Aux type >PUSHBI 4 S.FILEINFO.TYPE.TXT - >PUSHBI SYS.FOPEN.X+SYS.FOPEN.W + >PUSHBI SYS.FOpen.X+SYS.FOpen.W ldy #hFileName lda (pData),y diff --git a/BIN/FORMAT.S.txt b/BIN/FORMAT.S.txt index 74c15e7e..d83fb405 100644 --- a/BIN/FORMAT.S.txt +++ b/BIN/FORMAT.S.txt @@ -141,7 +141,7 @@ CS.RUN ldy #bCANCEL *-------------------------------------- CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? lda (pEvent),y - ldy #S.PS.hINDEV + ldy #S.PS.hStdIn cmp (pPs),y bne .9 diff --git a/BIN/IPCONFIG.S.txt b/BIN/IPCONFIG.S.txt index c3d5653c..abada5f0 100644 --- a/BIN/IPCONFIG.S.txt +++ b/BIN/IPCONFIG.S.txt @@ -146,7 +146,7 @@ CS.INIT.LINK >PUSHW L.MSG1.LINK.OK .4 phx lda #'0' - >SYSCALL COutA + >SYSCALL PutCA plx dex bne .4 diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index 897fe058..071a1deb 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -227,7 +227,7 @@ CS.RUN.DIR ldy #bAllmostAll .1 lda #' ' phx - >SYSCALL COutA + >SYSCALL PutCA plx bcs .9 dex @@ -377,7 +377,7 @@ CS.RUN.NewLine ldy #ColCount beq CS.RUN.NewLine.8 CS.RUN.NewLine.1 lda #13 - >SYSCALL COutA + >SYSCALL PutCA rts CS.RUN.NewLine.8 clc @@ -394,7 +394,7 @@ CS.RUN.ENTER.MSG *-------------------------------------- CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? lda (pEvent),y - ldy #S.PS.hINDEV + ldy #S.PS.hStdIn cmp (pPs),y bne .9 diff --git a/BIN/LSDEV.S.txt b/BIN/LSDEV.S.txt index d8b3b0f9..2e0a34b9 100644 --- a/BIN/LSDEV.S.txt +++ b/BIN/LSDEV.S.txt @@ -35,251 +35,81 @@ CS.START cld .DA CS.QUIT L.MSG0 .DA MSG0 L.MSG1 .DA MSG1 -L.MSG2 .DA MSG2 -L.MSG3 .DA MSG3 -L.RAM .DA RAM -L.DISK2 .DA DISK2 -L.GENERIC .DA GENERIC +L.DEV.NAME .DA DEV.NAME .DA 0 *-------------------------------------- -CS.INIT jsr DumpA2osXDev - bcs .9 - - jsr DumpProDOSDev - bcs .9 - - lda #0 tell TSKMGR that all done ok, but -.9 sec we do not want to stay in memory +CS.INIT clc rts *-------------------------------------- -DumpA2osXDev >LDYA L.MSG0 +CS.RUN >LDYA L.MSG0 >SYSCALL CPrintFYA >LDYAI DevMgr.Table >STYA ZPPTR1 stz DEV.ID -.2 lda (ZPPTR1) - cmp #$D8 - bne .8 +.1 lda DEV.ID + + >SYSCALL GetDevByIDA + bcs .8 + >STYA ZPPTR1 ldy #S.DEV.JMP+1 >PUSHB (ZPPTR1),y dey >PUSHB (ZPPTR1),y - lda ZPPTR1 - clc - adc #S.DEV.NAME - tay - lda ZPPTR1+1 - adc #0 - >PUSHYA + ldy #S.DEV.F + lda (ZPPTR1),y + and #S.DEV.F.LEN + sta DEV.NAME + tax + iny + +.2 lda (ZPPTR1),y + sta DEV.NAME-S.DEV.F,y + iny + dex + bne .2 + + >PUSHW L.DEV.NAME ldy #S.DEV.F >PUSHB (ZPPTR1),y - ldy #S.DEV.ID + + ldy #S.DEV.S >PUSHB (ZPPTR1),y + + >PUSHB DEV.ID + >LDYA L.MSG1 >SYSCALL CPrintFYA + inc DEV.ID + lda ZPPTR1 clc adc #S.DEV sta ZPPTR1 - bcc .3 + bcc .1 inc ZPPTR1+1 + bra .1 -.3 inc DEV.ID - lda DEV.ID - cmp #K.DEV.MAX - bne .2 -.8 clc +.8 lda #0 tell TSKMGR that all done ok, but +.9 sec we do not want to stay in memory rts *-------------------------------------- -DumpProDOSDev >LDYA L.MSG2 - >SYSCALL CPrintFYA - - stz BLKCALL.PARAMS CmdNum = 0, STATUS Call - stz BLKCALL.PARAMS+4 ask for Block 0 - stz BLKCALL.PARAMS+5 (in case driver check block validity before checking CmdNum) - - ldx DEVCNT - stx DEV.ID - -.1 ldx DEV.ID - - ldy #1 - - lda DEVLST,x - bpl .2 - - iny - -.2 sty Drive - - and #$F0 - sta BLKCALL.PARAMS+1 UnitNum for BLKCALL, if needed - lsr - lsr - lsr - tay Y = DSSS*2 - - lsr - and #$7 - sta Slot - - stz ZPPTR1 make Ptr1 = Cn00 - lda DEVPTRS,y - sta ZPPTR2 make Ptr2 = Cnxx (prodos BLK entry point) - - lda DEVPTRS+1,y - sta ZPPTR1+1 - sta ZPPTR2+1 - - cmp #$C1 - bcc .6 3rd Party Driver loaded in RAM... - - cmp #$C8 - bcs .4 In ProDOS Space.../RAM or DisK II - - ldx #SmartPort.SIG-SmartPort.OFS - -.3 ldy SmartPort.OFS-1,x Check if there is a smartport firmware - lda (ZPPTR1),y - cmp SmartPort.SIG-1,x - bne .6 not a smartport...go check $CnFE - dex - bne .3 - - jsr GO.SmartPort Perform a Smartpot STATUS call - bcs .8 - - jsr PrintDevStatus - - bra .8 - -.4 cmp #$ff RAM ? - bne .5 - >LDYA L.RAM - bra .7 - -.5 >LDYA L.DISK2 - bra .7 - -.6 >LDYA L.GENERIC - -.7 >STYA .71+1 - ldy #16 -.71 lda $ffff,y - sta UsrBuf256+S.SPSTAT.NAME,y - dey - bpl .71 - - >LDYA ZPPTR2 Get Block device PTR - jsr A2osX.BLKCALL - - bcs .8 - stx UsrBuf256+S.SPSTAT.BLKNUM - sty UsrBuf256+S.SPSTAT.BLKNUM+1 - stz UsrBuf256+S.SPSTAT.BLKNUM+2 - - jsr PrintDevStatus - -.8 dec DEV.ID - bmi .9 - jmp .1 - -.9 clc - rts -*-------------------------------------- -S.SPSTAT.STATUS .EQ 0 -S.SPSTAT.STATUS.BLK .EQ %10000000 -S.SPSTAT.STATUS.WRT .EQ %01000000 -S.SPSTAT.STATUS.RD .EQ %00100000 -S.SPSTAT.STATUS.ONL .EQ %00010000 -S.SPSTAT.STATUS.FMT .EQ %00001000 -S.SPSTAT.STATUS.WRP .EQ %00000100 -S.SPSTAT.STATUS.IRQ .EQ %00000010 -S.SPSTAT.STATUS.OPN .EQ %00000001 -S.SPSTAT.BLKNUM .EQ 1 -S.SPSTAT.NAME .EQ 4 -S.SPSTAT.TYPE .EQ 21 -S.SPSTAT.SUBTYP .EQ 22 -S.SPSTAT.VER .EQ 23 -S.SPSTAT .EQ 25 -*-------------------------------------- -GO.SmartPort ldy #$ff - lda (ZPPTR1),y - - inc - inc - inc - sta .2+1 Entrypoint Offset=+3 - - lda ZPPTR1+1 Get $Cn - sta .2+2 - - and #$0f - cmp Slot Driver Slot match Dev Slot ? - beq .1 yes... - - inc Slot - inc Slot - inc Slot - inc Drive no... - inc Drive Must have been remapped by ProDOS - -.1 stz .3 CMD=Status - lda Drive - sta SMP.Params+1 UnitNum - -.2 jsr $ffff -.3 lda SMP.Params will be relocated - rts -*-------------------------------------- -PrintDevStatus >PUSHW UsrBuf256+S.SPSTAT.BLKNUM - - ldy #S.SPSTAT.NAME - lda /UsrBuf256 - >PUSHYA - - >PUSHB Drive - >PUSHB Slot - >PUSHB UsrBuf256 STATUS - >PUSHB Dev.ID - - >LDYA L.MSG3 - >SYSCALL CPrintFYA - rts -*-------------------------------------- -CS.RUN CS.EVENT CS.QUIT clc rts *-------------------------------------- CS.END -SmartPort.OFS .HS 01030507 -SmartPort.SIG .HS 20000300 -DiskII.OFS .HS 010305FF -DiskII.SIG .HS 20000300 -MSG0 >CSTR "ID Flags Name Address\n" -MSG1 >CSTR "%03d %b %4S $%H\n" -MSG2 >CSTR "ID Flags Name Description Size\n" -MSG3 >CSTR "%03d %b S%dD%d %S %05D\n" -RAM >PSTR "ProDOS Ram Disk " -DISK2 >PSTR "Apple Disk ][ " -GENERIC >PSTR "Generic Blk Dev " -*-------------------------------------- -SMP.Params .DA #3 Param Count - .BS 1 unitNumber - .DA UsrBuf256 - .DA #3 Return DIB +MSG0 >CSTR "ID Status Flags Name Address\n" +MSG1 >CSTR "%03d %b %b %4S $%H\n" *-------------------------------------- DEV.ID .BS 1 -Slot .BS 1 -Drive .BS 1 +DEV.NAME .BS 5 MAN SAVE BIN/LSDEV.S ASM diff --git a/BIN/MEMDUMP.S.txt b/BIN/MEMDUMP.S.txt index 1d6984bb..191fc757 100644 --- a/BIN/MEMDUMP.S.txt +++ b/BIN/MEMDUMP.S.txt @@ -248,7 +248,7 @@ CS.RUN.PRINTMEM ldy #S.MEM.LEN *-------------------------------------- CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? lda (pEvent),y - ldy #S.PS.hINDEV + ldy #S.PS.hStdIn cmp (pPs),y bne .9 diff --git a/BIN/NSCUTIL.S.txt b/BIN/NSCUTIL.S.txt index 1466c6ef..5c18f106 100644 --- a/BIN/NSCUTIL.S.txt +++ b/BIN/NSCUTIL.S.txt @@ -287,11 +287,11 @@ NSC.Dump ldx #1 lda DS1216E.DATA+2 jsr PrintBCD lda #'/' - >SYSCALL COutA + >SYSCALL PutCA lda DS1216E.DATA+1 jsr PrintBCD lda #'/' - >SYSCALL COutA + >SYSCALL PutCA lda DS1216E.DATA jsr PrintBCD @@ -304,15 +304,15 @@ NSC.Dump ldx #1 .4 and #$3F jsr PrintBCD lda #':' - >SYSCALL COutA + >SYSCALL PutCA lda DS1216E.DATA+5 jsr PrintBCD lda #':' - >SYSCALL COutA + >SYSCALL PutCA lda DS1216E.DATA+6 jsr PrintBCD lda #'.' - >SYSCALL COutA + >SYSCALL PutCA lda DS1216E.DATA+7 jsr PrintBCD rts @@ -323,12 +323,12 @@ PrintBCD pha lsr lsr ora #$30 - >SYSCALL COutA + >SYSCALL PutCA bcs .9 pla and #$0f ora #$30 - >SYSCALL COutA + >SYSCALL PutCA .9 rts *-------------------------------------- GetBCD lda (ZPPtr1),y diff --git a/BIN/PING.S.txt b/BIN/PING.S.txt index e5d4ad11..f4e0c166 100644 --- a/BIN/PING.S.txt +++ b/BIN/PING.S.txt @@ -272,7 +272,7 @@ CS.DOEVENT lda (pEvent) ldy #S.EVT.hDEV is Event from active IN device? lda (pEvent),y - ldy #S.PS.hINDEV + ldy #S.PS.hStdIn cmp (pPs),y bne .9 diff --git a/BIN/RM.S.txt b/BIN/RM.S.txt index ad4e5185..dcc4fec0 100644 --- a/BIN/RM.S.txt +++ b/BIN/RM.S.txt @@ -269,7 +269,7 @@ CS.RUN.PRINT.RC pha *-------------------------------------- CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? lda (pEvent),y - ldy #S.PS.hINDEV + ldy #S.PS.hStdIn cmp (pPs),y bne .9 diff --git a/BIN/RPCDUMP.S.txt b/BIN/RPCDUMP.S.txt index 1e049bfa..9f399bdf 100644 --- a/BIN/RPCDUMP.S.txt +++ b/BIN/RPCDUMP.S.txt @@ -171,7 +171,7 @@ CS.DOEVENT lda (pEvent) ldy #S.EVT.hDEV is Event from active IN device? lda (pEvent),y - ldy #S.PS.hINDEV + ldy #S.PS.hStdIn cmp (pPs),y bne .9 diff --git a/BIN/X.CPMV.S.txt b/BIN/X.CPMV.S.txt index 1d21e1eb..cb83b96e 100644 --- a/BIN/X.CPMV.S.txt +++ b/BIN/X.CPMV.S.txt @@ -346,7 +346,7 @@ CS.RUN.PRINT.RC pha *-------------------------------------- CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? lda (pEvent),y - ldy #S.PS.hINDEV + ldy #S.PS.hStdIn cmp (pPs),y bne .9 diff --git a/DRV/CONSOLE.DRV.S.txt b/DRV/CONSOLE.DRV.S.txt index 39427967..f9b63018 100644 --- a/DRV/CONSOLE.DRV.S.txt +++ b/DRV/CONSOLE.DRV.S.txt @@ -11,6 +11,7 @@ AUTO 6 .INB /A2OSX.DEV/INC/MACROS.I .INB /A2OSX.DEV/INC/A2OSX.I .INB /A2OSX.DEV/INC/IO.I + .INB /A2OSX.DEV/INC/PRODOS.I *-------------------------------------- CURSOR.BLINK.SPEED .EQ 8 ESCSEQ.MAXLEN .EQ 16 @@ -45,25 +46,27 @@ MSG.DETECT >CSTR "Apple IIe/IIc 80 Col Driver.\n" *-------------------------------------- * Device Header (16 Bytes) *-------------------------------------- -DEV.HEADER cld - jmp (DRV.CS.START,x) - .HS 00 DevID - .DA #S.DEV.F.EVENT+S.DEV.F.COUT+S.DEV.F.CHAR - >PSTR "CON" NAME +DEV.HEADER .DA DRV.CS.START + .DA #S.DEV.S.WRITE+S.DEV.S.READ + .DA #3 + .AS "CON" NAME .HS 00 NAME must Be 5 bytes long - .HS 00 - .HS 00.00.00.00 *-------------------------------------- * Driver Code *-------------------------------------- -DRV.CS.START .DA OPEN - .DA GETEVENT - .DA COUT +DRV.CS.START cld + jmp (.1,x) +.1 .DA STATUS + .DA BADCALL + .DA BADCALL + .DA BADCALL + .DA CONTROL + .DA BADCALL + .DA OPEN .DA CLOSE - .DA GETINFO - .DA IRQ - .DA SELECT -L.DEVINFO .DA DEVINFO + .DA READ + .DA WRITE +L.STAT .DA STAT *-------------------------------------- J.CtrlChars .DA BS 8 .DA LF 10 @@ -82,6 +85,14 @@ J.EscSequences .DA Esc.DispAttr m .DA Esc.Home H .DA 0 end of relocation *-------------------------------------- +BADCALL lda #MLI.ERR.BADCALL + sec + rts +*-------------------------------------- +STATUS >LDYA L.STAT + clc + rts +*-------------------------------------- OPEN stz CURON stz bEscMode @@ -90,20 +101,27 @@ OPEN stz CURON stz OutPtr stz OutCnt - ldy #S.DEV.ID - lda (pDev),y - sta A2osX.SCRNDEVS + sta A2osX.SCRNDEVS DEV.ID in A - jsr SELECT - lda #1 - sta A2osX.ASCREEN jsr RESET jsr HOME +*-------------------------------------- +CONTROL sta SETTEXT + sta SETALTCHAR + sta SET80DISP + sta CLR80STORE + sta CLRPAGE2 + lda #1 + sta A2osX.ASCREEN clc rts *-------------------------------------- -GETEVENT jsr Char.Out.Get - bcc .7 no char in output buffer... +CLOSE stz A2osX.SCRNDEVS + clc + rts +*-------------------------------------- +READ jsr Char.Out.Get + bcc .8 IF cs,no char in output buffer... lda A2osX.ASCREEN cmp #1 is CON active? @@ -129,7 +147,7 @@ GETEVENT jsr Char.Out.Get beq .3 dex bne .2 - bra .7 + bra .8 .3 lda KeyRemappedIdx,x tay @@ -141,23 +159,15 @@ GETEVENT jsr Char.Out.Get bra .4 .6 jsr Char.Out.Get - -.7 ldy #S.EVT.DATALO - sta (pEvent),y - iny S.EVT.DATAHI - lda #0 - sta (pEvent),y - lda #S.EVT.F.KEY - sta (pEvent) .8 clc rts -.9 lda #0 Error = no event +.9 lda #0 Error = char sec rts *-------------------------------------- -COUT bit bEscMode +WRITE bit bEscMode bmi COUT.EscMode pha @@ -172,14 +182,6 @@ COUT bit bEscMode jsr SetCharAtXY jmp FSOUT *-------------------------------------- -SELECT sta SETTEXT - sta SETALTCHAR - sta SET80DISP - sta CLR80STORE - sta CLRPAGE2 - clc - rts -*-------------------------------------- COUT.Ctrl ldy #0 ldx #0 @@ -308,14 +310,6 @@ COUT.ExecEscSeq stz EscSeqParamCnt .5 jmp (J.EscSequences,x) *-------------------------------------- -CLOSE stz A2osX.SCRNDEVS - clc - rts -*-------------------------------------- -GETINFO >LDYA L.DEVINFO -IRQ clc - rts -*-------------------------------------- * PRIVATE *-------------------------------------- RESET lda #0 @@ -394,9 +388,6 @@ FSOUT ldx CH rts *-------------------------------------- CROUT jsr CLREOL - stz CH - clc - rts CROUT1 stz CH LF ldy CV cpy #23 @@ -804,7 +795,12 @@ EscSeqParamTmp .BS 2 EscSeqParamCnt .BS 1 EscSeqParam .BS 4 *-------------------------------------- -DEVINFO .DA #S.DEVINFO.TYPE.CHAR +STAT .DA #S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ + .DA #0,#0,#0 + >PSTR "ANSI 80c Console" + .DA #0 + .DA #0 + .DA 0900 *-------------------------------------- MAN SAVE DRV/CONSOLE.DRV.S diff --git a/DRV/UTHERNET.DRV.S.txt b/DRV/UTHERNET.DRV.S.txt index 93e9fe60..f4d9d462 100644 --- a/DRV/UTHERNET.DRV.S.txt +++ b/DRV/UTHERNET.DRV.S.txt @@ -11,8 +11,19 @@ AUTO 6 .INB /A2OSX.DEV/INC/MACROS.I .INB /A2OSX.DEV/INC/A2OSX.I .INB /A2OSX.DEV/INC/LIBTCPIP.I + .INB /A2OSX.DEV/INC/PRODOS.I *-------------------------------------- ZPTmpPTR .EQ ZPDRV +*-------------------------------------- +*S.DEVINFO.NET.FLAGS.ARPOFFLOAD .EQ %00000001 +*S.DEVINFO.NET.FLAGS.IPOFFLOAD .EQ %00000010 +*S.DEVINFO.NET.MAC .EQ 2 +*S.DEVINFO.NET.STATUS .EQ 8 +*S.DEVINFO.NET.STATUS.OK .EQ $80 +*S.DEVINFO.NET.STATUS.FD .EQ $40 +*S.DEVINFO.NET.STATUS.10 .EQ $01 +*S.DEVINFO.NET.STATUS.100 .EQ $02 +*S.DEVINFO.NET.STATUS.1000 .EQ $03 *-------------------------------------- .INB DRV/X.NET.8900A.S *-------------------------------------- @@ -60,7 +71,7 @@ Dev.Detect >STYA ARGS >LDYA L.MSG.DETECT.KO >SYSCALL CPrintFYA - lda #DEVMGR.ERRNOHW + lda #MLI.ERR.NODEV sec rts @@ -108,67 +119,68 @@ ARGS .BS 2 *-------------------------------------- * Device Header (16 Bytes) *-------------------------------------- -DEV.HEADER cld - jmp (DRV.CS.START,x) - .HS 00 - .DA #S.DEV.F.SHARE+S.DEV.F.EVENT -DEV.HEADER.NAME >PSTR "ETH1" NAME - .HS 00 - .HS 00.00.00.00 +DEV.HEADER .DA DRV.CS.START + .DA #S.DEV.S.BLOCK+S.DEV.S.WRITE+S.DEV.S.READ +DEV.HEADER.NAME .DA #4 + .AS "ETHx" NAME *-------------------------------------- * Driver Code *-------------------------------------- -DRV.CS.START .DA OPEN - .DA GETEVENT - .DA COUT +DRV.CS.START .DA STATUS + .DA READBLOCK + .DA WRITEBLOCK + .DA BADCALL + .DA BADCALL + .DA BADCALL + .DA OPEN .DA CLOSE - .DA GETINFO - .DA IRQ - .DA SEND - .DA SETIPCFG -L.DEVINFO .DA DEVINFO + .DA BADCALL + .DA BADCALL +L.DEVSTAT .DA DEVSTAT .DA 0 end or relocation *-------------------------------------- -OPEN jsr Reset - >LDYAI PP.RxCTL - >STYA PacketPagePTR,x - >LDYAI PP.RxCTL.LID+PP.RxCTL.RxOKA+PP.RxCTL.IA+PP.RxCTL.BroadcastA - >STYA PacketPageDATA,x +BADCALL lda #MLI.ERR.BADCALL + sec + rts +*-------------------------------------- +STATUS lda #S.DEVINFO.NET.STATUS.10 + sta LINK.STATUS - >LDYAI PP.MAC + ldx DEVSLOTx0 + >LDYAI PP.LineST >STYA PacketPagePTR,x - >LDYA MAC - >STYA PacketPageDATA,x - >LDYAI PP.MAC+2 + >LDYA PacketPageDATA,x + tya + and #PP.LineST.LinkOK + bne .1 + lda LINK.STATUS + ora #S.DEVINFO.NET.STATUS.OK + sta LINK.STATUS + +.1 >LDYAI PP.TestCTL >STYA PacketPagePTR,x - >LDYA MAC+2 - >STYA PacketPageDATA,x - >LDYAI PP.MAC+4 - >STYA PacketPagePTR,x - >LDYA MAC+4 - >STYA PacketPageDATA,x + >LDYA PacketPageDATA,x + and /PP.TestCTL.FDX + bne .2 + lda LINK.STATUS + ora #S.DEVINFO.NET.STATUS.FD + sta LINK.STATUS - >LDYAI PP.LineCTL - >STYA PacketPagePTR,x - >LDYAI PP.LineCTL.LID+PP.LineCTL.SerRxOn+PP.LineCTL.SerTxOn+PP.LineCTL.Auto - >STYA PacketPageDATA,x +.2 >LDYA L.DEVSTAT clc rts *-------------------------------------- -GETEVENT ldx DEVSLOTx0 +READBLOCK ldx DEVSLOTx0 >LDYAI PP.RxEvent >STYA PacketPagePTR,x >LDYA PacketPageDATA,x and /PP.RxEvent.RxOK+PP.RxEvent.Brdcast+PP.RxEvent.IA - bne GETEVENT.RxOK + bne READBLOCK.RxOK lda #ERR.DEV.NOFRAME -COUT -IRQ -SETIPCFG -GETEVENT.Err sec +READBLOCK.Err sec rts -GETEVENT.RxOK and /PP.RxEvent.Brdcast +READBLOCK.RxOK and /PP.RxEvent.Brdcast beq .10 lda #$80 .10 ldy #S.EVT.DATAHI @@ -190,7 +202,7 @@ GETEVENT.RxOK and /PP.RxEvent.Brdcast .11 >PUSHYA Size+2 >PUSHBI 0 >SYSCALL GetMem - bcs GETEVENT.Err + bcs READBLOCK.Err >STYA ZPTmpPTR txa ldy #S.EVT.DATALO @@ -239,38 +251,7 @@ GETEVENT.RxOK and /PP.RxEvent.Brdcast .8 clc rts *-------------------------------------- -CLOSE jsr Reset - clc - rts -*-------------------------------------- -GETINFO lda #S.DEVINFO.NET.STATUS.10 - sta LINK.STATUS - - ldx DEVSLOTx0 - >LDYAI PP.LineST - >STYA PacketPagePTR,x - >LDYA PacketPageDATA,x - tya - and #PP.LineST.LinkOK - bne .1 - lda LINK.STATUS - ora #S.DEVINFO.NET.STATUS.OK - sta LINK.STATUS - -.1 >LDYAI PP.TestCTL - >STYA PacketPagePTR,x - >LDYA PacketPageDATA,x - and /PP.TestCTL.FDX - bne .2 - lda LINK.STATUS - ora #S.DEVINFO.NET.STATUS.FD - sta LINK.STATUS - -.2 >LDYA L.DEVINFO - clc - rts -*-------------------------------------- -SEND >PULLW ZPTmpPTR +WRITEBLOCK >PULLW ZPTmpPTR lda (ZPTmpPTR) sta Size @@ -296,7 +277,7 @@ SEND >PULLW ZPTmpPTR bne .9 lda PacketPageDATA+1,x and /PP.BusST.Rdy4TxNOW - bne SENDPREADY + bne WRITEBLOCK.1 lda #0 .2 dec @@ -309,7 +290,7 @@ SEND >PULLW ZPTmpPTR sec rts -SENDPREADY ldy #S.ETH.SRCMAC+5 +WRITEBLOCK.1 ldy #S.ETH.SRCMAC+5 ldx #5 .10 lda MAC,x sta (ZPTmpPTR),y @@ -346,6 +327,36 @@ SENDPREADY ldy #S.ETH.SRCMAC+5 .8 clc rts *-------------------------------------- +OPEN jsr Reset + >LDYAI PP.RxCTL + >STYA PacketPagePTR,x + >LDYAI PP.RxCTL.LID+PP.RxCTL.RxOKA+PP.RxCTL.IA+PP.RxCTL.BroadcastA + >STYA PacketPageDATA,x + + >LDYAI PP.MAC + >STYA PacketPagePTR,x + >LDYA MAC + >STYA PacketPageDATA,x + >LDYAI PP.MAC+2 + >STYA PacketPagePTR,x + >LDYA MAC+2 + >STYA PacketPageDATA,x + >LDYAI PP.MAC+4 + >STYA PacketPagePTR,x + >LDYA MAC+4 + >STYA PacketPageDATA,x + + >LDYAI PP.LineCTL + >STYA PacketPagePTR,x + >LDYAI PP.LineCTL.LID+PP.LineCTL.SerRxOn+PP.LineCTL.SerTxOn+PP.LineCTL.Auto + >STYA PacketPageDATA,x + clc + rts +*-------------------------------------- +CLOSE jsr Reset + clc + rts +*-------------------------------------- Reset ldx DEVSLOTx0 >LDYAI PP.SelfCTL >STYA PacketPagePTR,x @@ -357,8 +368,7 @@ DRV.CS.END DEVSLOTx0 .BS 1 Size .BS 2 Counter .BS 2 -DEVINFO .DA #S.DEVINFO.TYPE.NET -DEVFLAGS .DA #0 +DEVSTAT .BS S.DEVSTAT MAC .BS 6 LINK.STATUS .BS 1 OK/DUPLEX/SPEED MAN diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 08f38e69..8ed2d344 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -33,7 +33,7 @@ pEvent .EQ $2E ZPDRV .EQ $30 ZPBIN .EQ $40 *-------------------------------------- -* $3A-$3F ProDOS Block Device Drivers Main +* $42-$47 ProDOS Block Device Drivers Main *-------------------------------------- * $5E-$C8 RESERVED APPLESOFT Main/Aux (ROM Call, no need to switch back MainZP) *-------------------------------------- @@ -77,7 +77,7 @@ Z80JMP .EQ $1000 (00000h) Up To $10FF *-------------------------------------- EvtMgr.Table .EQ $1100 K.EVT.MAX*S.EVT.SIZE=32*8=256b *-------------------------------------- -DevMgr.Table .EQ $1200 K.DEV.MAX*S.DEV.SIZE=16*16=256b +DevMgr.Table .EQ $1200 K.DEV.MAX*S.DEV.SIZE=32*8=256b *-------------------------------------- FltMgr.Table .EQ $1300 K.FLT.MAX*S.FLT.SIZE=8*32=256b *-------------------------------------- @@ -129,7 +129,7 @@ A2osX.RANDOM16 .EQ $BEEE * $BEF0->$BEFF : Kernel Config Block *-------------------------------------- A2osX.HZ .EQ $BEF0 -A2osX.RAMDRVDIS .EQ $BEF8 If $80, prevent CHrooting to /RAMx +A2osX.RAMDRVDIS .EQ $BEF8 If $80, prevent ChRooting to /RAMx A2osX.SLOTS .EQ $BEF8 $BEF9->$BEFF, 7 slots *-------------------------------------- H.BIN.HEADER .EQ 0 @@ -149,7 +149,7 @@ H.BIN.EXE.REL.TABLE .EQ 16 H.BIN.DRV.HEADER.O .EQ 10 H.BIN.DRV.CODE.O .EQ 12 H.BIN.DRV.CODE.LEN .EQ 14 -H.BIN.DRV.REL.TABLE .EQ 0 +H.BIN.DRV.REL.TABLE .EQ 2 *-------------------------------------- * A2osX.SYSCALL Functions Indexes *-------------------------------------- @@ -167,56 +167,49 @@ SYS.LoadDrvYA .EQ $10 SYS.LoadLibYA .EQ $12 SYS.UnloadLibA .EQ $14 SYS.LoadExeYA .EQ $16 - SYS.TimeYA .EQ $18 SYS.CTime2Time .EQ $1A SYS.PTime2Time .EQ $1C * .EQ $1E *-------------------------------------- -SYS.FOPEN .EQ $20 -SYS.FOPEN.R .EQ $01 Open For Read -SYS.FOPEN.W .EQ $02 Open For Write -SYS.FOPEN.A .EQ $04 Append -SYS.FOPEN.T .EQ $08 Open/Append in Text mode -SYS.FOPEN.X .EQ $80 Create if not exists - +SYS.FOpen .EQ $20 +SYS.FOpen.R .EQ $01 Open For Read +SYS.FOpen.W .EQ $02 Open For Write +SYS.FOpen.A .EQ $04 Append +SYS.FOpen.T .EQ $08 Open/Append in Text mode +SYS.FOpen.X .EQ $80 Create if not exists SYS.FCloseA .EQ $22 -SYS.FREAD .EQ $24 -SYS.FWRITE .EQ $26 - -SYS.FFLUSH .EQ $28 -SYS.FSEEK .EQ $2A -SYS.FSEEK.SET .EQ $00 -SYS.FSEEK.CUR .EQ $01 -SYS.FSEEK.END .EQ $02 -SYS.FTELL .EQ $2C +SYS.FRead .EQ $24 +SYS.FWrite .EQ $26 +SYS.FFlush .EQ $28 +SYS.FSeek .EQ $2A +SYS.FSeek.SET .EQ $00 +SYS.FSeek.CUR .EQ $01 +SYS.FSeek.END .EQ $02 +SYS.FTell .EQ $2C SYS.FEOF .EQ $2E - SYS.RemoveYA .EQ $30 SYS.Rename .EQ $32 SYS.STAT .EQ $34 * .EQ $36 - -SYS.OPENDIRYA .EQ $38 +SYS.OpenDirYA .EQ $38 SYS.ReadDirA .EQ $3A SYS.CloseDirA .EQ $3C SYS.MKDirYA .EQ $3E *-------------------------------------- -SYS.COutA .EQ $40 +* .EQ $40 SYS.SScanF .EQ $42 SYS.PPrintFYA .EQ $44 SYS.CPrintFYA .EQ $46 - -SYS.FPUTCA .EQ $48 -SYS.FGETC .EQ $4A -SYS.FPUTSYA .EQ $4C -SYS.FGETS .EQ $4E +* .EQ $48 +* .EQ $4A +* .EQ $4C +* .EQ $4E *-------------------------------------- SYS.NewPStrYA .EQ $50 SYS.PStrCpy .EQ $52 SYS.PStrCat .EQ $54 SYS.PStrMatch .EQ $56 - SYS.PStrUprYA .EQ $58 SYS.PStrLwrYA .EQ $5A SYS.PStrFTime .EQ $5C @@ -226,7 +219,6 @@ SYS.ExecProcessNewEnvYA .EQ $60 SYS.ExecProcessYA .EQ $62 SYS.CreateProcessNewEnvYA .EQ $64 SYS.CreateProcessYA .EQ $66 - SYS.GetPSByIDA .EQ $68 * .EQ $6A SYS.Sleep .EQ $6C @@ -236,7 +228,6 @@ SYS.GetArgC .EQ $70 SYS.GetArgA .EQ $72 SYS.ExpandPStrYA .EQ $74 * .EQ $76 - SYS.PutEnvYA .EQ $78 SYS.SetEnv .EQ $7A SYS.GetEnvYA .EQ $7C @@ -244,9 +235,8 @@ SYS.UnsetEnvYA .EQ $7E *-------------------------------------- SYS.GetDevByIDA .EQ $80 SYS.GetDevByNameYA .EQ $82 -SYS.GetDevInfoA .EQ $84 +SYS.GetDevStatusA .EQ $84 * .EQ $86 -*-------------------------------------- SYS.MKNodYA .EQ $88 SYS.MKNodA .EQ $8A SYS.MKFIFO .EQ $8C @@ -256,14 +246,28 @@ SYS.GetMem .EQ $90 SYS.FreeMemA .EQ $92 SYS.GetMemPtrA .EQ $94 SYS.GetMemByIDA .EQ $96 - * .EQ $98 -SYS.LoadStockObjectYA .EQ $9A -SYS.GetStockObjectA .EQ $9C -SYS.FreeStockObject .EQ $9E +SYS.LoadStkObjYA .EQ $9A +SYS.GetStkObjA .EQ $9C +SYS.FreeStkObjA .EQ $9E *-------------------------------------- SYS.SetLoMem .EQ $A0 SYS.GetMemStatYA .EQ $A2 +* .EQ $A4 +* .EQ $A6 +* .EQ $A8 +* .EQ $AA +* .EQ $AC +* .EQ $AE +*-------------------------------------- +SYS.FPutCAY .EQ $B0 +SYS.PutCA .EQ $B2 +SYS.FGetCA .EQ $B4 +SYS.GetC .EQ $B6 +SYS.FPutS .EQ $B8 +SYS.PutSYA .EQ $BA +SYS.FGetS .EQ $BC +SYS.GetSYA .EQ $BE *-------------------------------------- * ProDOS ERROR CODES : $00->$5F * Lib ERROR CODES : $80->$BF @@ -275,9 +279,6 @@ MEMMGR.ERROOH .EQ $FE Out Of Handle Error DEVMGR.ERROOM .EQ $EF Out Of Memory Error DEVMGR.ERROOH .EQ $EE Out Of Handle Error DEVMGR.ERRICL .EQ $ED Invalid Command Line -DEVMGR.ERRNOHW .EQ $EC No Hardware -DEVMGR.ERRDNF .EQ $EB Device Not Found Error -DEVMGR.ERRUNSUP .EQ $EA Unsupported Function *-------------------------------------- TSKMGR.ERROOH .EQ $DF Out Of Handle Error TSKMGR.ERRNSP .EQ $DD No Such Process Error @@ -319,107 +320,140 @@ S.MEMSTAT.DH .EQ 20 * S.MEMSTAT .EQ 24 *-------------------------------------- -S.DEVINFO.TYPE .EQ 0 -S.DEVINFO.TYPE.CHAR .EQ %00000001 -S.DEVINFO.TYPE.XY .EQ %00000010 -S.DEVINFO.TYPE.NET .EQ %00000011 -S.DEVINFO.TYPE.GFX .EQ %00000100 -S.DEVINFO.FLAGS .EQ 1 -S.DEVINFO.NET.FLAGS.ARPOFFLOAD .EQ %00000001 -S.DEVINFO.NET.FLAGS.IPOFFLOAD .EQ %00000010 -S.DEVINFO.NET.MAC .EQ 2 -S.DEVINFO.NET.STATUS .EQ 8 -S.DEVINFO.NET.STATUS.OK .EQ $80 -S.DEVINFO.NET.STATUS.FD .EQ $40 -S.DEVINFO.NET.STATUS.10 .EQ $01 -S.DEVINFO.NET.STATUS.100 .EQ $02 -S.DEVINFO.NET.STATUS.1000 .EQ $03 +* DEVMGR (old API) +*-------------------------------------- +*S.DEV.CODE .EQ 0 cld,jmp... +*S.DEV.JMP .EQ 2 ...(code,x) +*S.DEV.ID .EQ 4 +*S.DEV.F .EQ 5 +*S.DEV.F.INUSE .EQ %10000000 +*S.DEV.F.BUSY .EQ %01000000 +*S.DEV.F.SHARE .EQ %00100000 Device is shareable +*S.DEV.F.IRQ .EQ %00010000 Device is irq driven +*S.DEV.F.EVENT .EQ %00001000 Device is event driven +*S.DEV.F.COUT .EQ %00000100 Device supports Char OUT +*S.DEV.F.BLOCK .EQ %00000010 +*S.DEV.F.CHAR .EQ %00000001 +*S.DEV.NAME .EQ 6 5 Bytes : LEN+NUL KBD CON COMx LPTx ETHx +* +*S.DEV .EQ 16 +*-------------------------------------- +*S.DEVINFO.TYPE .EQ 0 +*S.DEVINFO.TYPE.CHAR .EQ %00000001 +*S.DEVINFO.TYPE.XY .EQ %00000010 +*S.DEVINFO.TYPE.NET .EQ %00000011 +*S.DEVINFO.TYPE.GFX .EQ %00000100 +*S.DEVINFO.FLAGS .EQ 1 +*S.DEVINFO.NET.FLAGS.ARPOFFLOAD .EQ %00000001 +*S.DEVINFO.NET.FLAGS.IPOFFLOAD .EQ %00000010 +*S.DEVINFO.NET.MAC .EQ 2 +*S.DEVINFO.NET.STATUS .EQ 8 +*S.DEVINFO.NET.STATUS.OK .EQ $80 +*S.DEVINFO.NET.STATUS.FD .EQ $40 +*S.DEVINFO.NET.STATUS.10 .EQ $01 +*S.DEVINFO.NET.STATUS.100 .EQ $02 +*S.DEVINFO.NET.STATUS.1000 .EQ $03 *-------------------------------------- * Generic Driver Functions *-------------------------------------- -DEVMGR.OPEN .EQ 0 -DEVMGR.GETEVENT .EQ 2 -DEVMGR.COUT .EQ 4 -DEVMGR.CLOSE .EQ 6 -DEVMGR.GETINFO .EQ 8 -DEVMGR.IRQ .EQ 10 +*DEVMGR.OPEN .EQ 0 +*DEVMGR.GETEVENT .EQ 2 +*DEVMGR.COUT .EQ 4 +*DEVMGR.CLOSE .EQ 6 +*DEVMGR.GETINFO .EQ 8 +*DEVMGR.IRQ .EQ 10 *-------------------------------------- -DEVMGR.SELECT .EQ 12 +*DEVMGR.SELECT .EQ 12 *-------------------------------------- * 'NET' Class Driver Functions *-------------------------------------- -DEVMGR.NET.SEND .EQ 12 -DEVMGR.SETIPCFG .EQ 14 +*DEVMGR.NET.SEND .EQ 12 +*DEVMGR.SETIPCFG .EQ 14 *-------------------------------------- * 'GFX' Class Driver Functions *-------------------------------------- -DEVMGR.GFX.SETPIXEL .EQ 14 -DEVMGR.GFX.GETPIXEL .EQ 16 -DEVMGR.GFX.HLINE .EQ 18 -DEVMGR.GFX.VLINE .EQ 20 -DEVMGR.GFX.BITBLT .EQ 22 -*-------------------------------------- -* DEVMGR (old API) -*-------------------------------------- -S.DEV.CODE .EQ 0 cld,jmp... -S.DEV.JMP .EQ 2 ...(code,x) -S.DEV.ID .EQ 4 -S.DEV.F .EQ 5 -S.DEV.F.INUSE .EQ %10000000 -S.DEV.F.BUSY .EQ %01000000 -S.DEV.F.SHARE .EQ %00100000 Device is shareable -S.DEV.F.IRQ .EQ %00010000 Device is irq driven -S.DEV.F.EVENT .EQ %00001000 Device is event driven -S.DEV.F.COUT .EQ %00000100 Device supports Char OUT -S.DEV.F.BLOCK .EQ %00000010 -S.DEV.F.CHAR .EQ %00000001 -S.DEV.NAME .EQ 6 5 Bytes : LEN+NUL KBD CON COMx LPTx ETHx -* -S.DEV .EQ 16 +*DEVMGR.GFX.SETPIXEL .EQ 14 +*DEVMGR.GFX.GETPIXEL .EQ 16 +*DEVMGR.GFX.HLINE .EQ 18 +*DEVMGR.GFX.VLINE .EQ 20 +*DEVMGR.GFX.BITBLT .EQ 22 *-------------------------------------- * DEVMGR (new API) = Smartport *-------------------------------------- -* JMP : -* DEVID : +* JMP : (A=Device) +* DRV : AUXLC entry point +* BLK : ROM Entry point Cn($Cnff) +* PRT : ROM Entry point Cn($Cnff)+3 +* ID : * 00->0F : NUL,SYS & loadable drivers -* X0 : X=Slot : Controller -* XY : X=Slot, Y=Device (<$80) -* > $80 : IDs for PIPE,SOCK.... +* X0 : X=Slot (Controller board) +* XY : X=Slot, Y=Device +* NAME: +* *-------------------------------------- -*S.DEV.JMP .EQ 0 -*S.DEV.DEVID .EQ 2 -*S.DEV.F .EQ 3 -*S.DEV.F.BLOCK .EQ %10000000 -*S.DEV.F.WRITE .EQ %01000000 -*S.DEV.F.READ .EQ %00100000 -*S.DEV.F.ONLINE .EQ %00010000 -*S.DEV.F.NOFMT .EQ %00001000 -*S.DEV.F.WENABL .EQ %00000100 -*S.DEV.F.IRQ .EQ %00000010 -*S.DEV.F.OPENED .EQ %00000001 - -*S.DEV.NAME .EQ 4 -*S.DEV .EQ 8 +S.DEV.JMP .EQ 0 +S.DEV.S .EQ 2 +S.DEV.S.BLOCK .EQ %10000000 +S.DEV.S.WRITE .EQ %01000000 +S.DEV.S.READ .EQ %00100000 +S.DEV.S.ONLINE .EQ %00010000 +S.DEV.S.NOFMT .EQ %00001000 +S.DEV.S.WENABL .EQ %00000100 +S.DEV.S.IRQ .EQ %00000010 +S.DEV.S.OPENED .EQ %00000001 +S.DEV.F .EQ 3 +S.DEV.F.IRQ .EQ %10000000 Device is irq driven +S.DEV.F.EVENT .EQ %01000000 Device is event driven +S.DEV.F.LEN .EQ %00000111 Len +S.DEV.NAME .EQ 4 4 MAX +* +S.DEV .EQ 8 +*----------- Smartport ---------------- +DEVMGR.STATUS .EQ 0 +DEVMGR.READBLOCK .EQ 2 +DEVMGR.WRITEBLOCK .EQ 4 +DEVMGR.FORMAT .EQ 6 +DEVMGR.CONTROL .EQ 8 +DEVMGR.INIT .EQ 10 +DEVMGR.OPEN .EQ 12 +DEVMGR.CLOSE .EQ 14 +DEVMGR.READ .EQ 16 +DEVMGR.WRITE .EQ 18 *-------------------------------------- -*DEVMGR..STATUS .EQ 0 -*DEVMGR..READBLOCK .EQ 1 -*DEVMGR..WRITEBLOCK .EQ 2 -*DEVMGR..FORMAT .EQ 3 -*DEVMGR..CONTROL .EQ 4 -*DEVMGR..INIT .EQ 5 -*DEVMGR..OPEN .EQ 6 -*DEVMGR..CLOSE .EQ 7 -*DEVMGR..READ .EQ 8 -*DEVMGR..WRITE .EQ 9 -*-------------------------------------- -*S.DEVSTAT.F .EQ 0 same as S.DEV.F.* bitmasks -*S.DEVSTAT.SIZE .EQ 1 3 bytes -*S.DEVSTAT.IDSTRING .EQ 4 1 (LEN) + 16 MAX -*S.DEVSTAT.TYPE .EQ 21 -*S.DEVSTAT.SUBTYPE .EQ 22 -*S.DEVSTAT.VERSION .EQ 23 -*-------------------------------------- - +S.DEVSTAT.S .EQ 0 +S.DEVSTAT.S.BLOCK .EQ %10000000 +S.DEVSTAT.S.WRITE .EQ %01000000 +S.DEVSTAT.S.READ .EQ %00100000 +S.DEVSTAT.S.ONLINE .EQ %00010000 +S.DEVSTAT.S.NOFMT .EQ %00001000 +S.DEVSTAT.S.WENABL .EQ %00000100 +S.DEVSTAT.S.IRQ .EQ %00000010 +S.DEVSTAT.S.OPENED .EQ %00000001 +S.DEVSTAT.SIZE .EQ 1 3 bytes +S.DEVSTAT.IDSTRING .EQ 4 1 (LEN) + 16 MAX +S.DEVSTAT.TYPE .EQ 21 +* $00: Memory Expansion Card (RAM disk) +* $01: 3.5" disk +* $02: ProFile-type hard disk +* $03: Generic SCSI +* $04: ROM disk +* $05: SCSI CD-ROM +* $06: SCSI tape or other SCSI sequential device +* $07: SCSI hard disk +* $08: Reserved +* $09: SCSI printer +* $0A: 5-1/4" disk +* $0B: Reserved +* $0C: Reserved +* $0D: Printer +* $0E: Clock +* $0F: Modem +S.DEVSTAT.SUBTYPE .EQ 22 +S.DEVSTAT.SUBTYPE.EXT .EQ $80 +S.DEVSTAT.SUBTYPE.DSKSW .EQ $40 +S.DEVSTAT.SUBTYPE.NOREM .EQ $20 +S.DEVSTAT.VERSION .EQ 23 +S.DEVSTAT .EQ 25 *-------------------------------------- * PS STRUCT *-------------------------------------- @@ -430,21 +464,18 @@ S.PS.F.HOLD .EQ %00100000 S.PS.F.SLEEP .EQ %00010000 S.PS.F.EVENT .EQ %00001000 S.PS.F.ENV .EQ %00000100 -S.PS.PID .EQ 1 -S.PS.PPID .EQ 2 -S.PS.hCS .EQ 3 -S.PS.hDS .EQ 4 -S.PS.hPREFIX .EQ 5 -S.PS.hENV .EQ 6 -S.PS.hCMDLINE .EQ 7 -S.PS.UID .EQ 8 -S.PS.hINDEV .EQ 9 -S.PS.hStdIn .EQ 9 -S.PS.hOUTDEV .EQ 10 -S.PS.hStdOut .EQ 10 -S.PS.hERRDEV .EQ 11 -S.PS.hStdErr .EQ 11 -S.PS.CPID .EQ 12 +S.PS.PPID .EQ 1 +S.PS.PID .EQ 2 +S.PS.CPID .EQ 3 +S.PS.hCS .EQ 4 +S.PS.hDS .EQ 5 +S.PS.hPREFIX .EQ 6 +S.PS.hENV .EQ 7 +S.PS.hCMDLINE .EQ 8 +S.PS.UID .EQ 9 +S.PS.hStdIn .EQ 10 +S.PS.hStdOut .EQ 11 +S.PS.hStdErr .EQ 12 S.PS.RC .EQ 13 S.PS.PC .EQ 14 * @@ -572,8 +603,9 @@ S.NODE.DIR.FC .EQ 6 word S.NODE.DIR .EQ 8 *-------------------------------------- S.NODE.DEV.ID .EQ 2 +S.NODE.DEV.JMP .EQ 3 word * -S.NODE.DEV .EQ 3 +S.NODE.DEV .EQ 5 *-------------------------------------- * S.NODE.LNK *-------------------------------------- @@ -584,7 +616,7 @@ S.NODE.FIFO.hMem .EQ 3 S.NODE.FIFO.Tail .EQ 4 S.NODE.FIFO.Head .EQ 5 * -S.NODE.FIFO .EQ 5 +S.NODE.FIFO .EQ 6 *-------------------------------------- MAN SAVE /A2OSX.DEV/INC/A2OSX.I diff --git a/INC/APPLESOFT.I.txt b/INC/APPLESOFT.I.txt index 29270ff9..ab5cdaba 100644 --- a/INC/APPLESOFT.I.txt +++ b/INC/APPLESOFT.I.txt @@ -11,11 +11,13 @@ AUTO 6 SIGNFLG .EQ $16 FLAGS SIGN IN TAN INDEX .EQ $5E Ptr Used by Math routines RESULT .EQ $62 -> $66, RESULT OF LAST * OR / +EXPSGN .EQ $9C 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 +FAC.EXTENSION .EQ $AC FAC EXTENSION BYTE CHRGET .EQ $B1 -> $C8 CHRGOT .EQ $B7 TXTPTR .EQ $B8 diff --git a/INC/IO.I.txt b/INC/IO.I.txt index b0a94ee1..0d5e5503 100644 --- a/INC/IO.I.txt +++ b/INC/IO.I.txt @@ -14,12 +14,12 @@ CLRREADAUX .EQ $C002 W SETREADAUX .EQ $C003 W CLRWRITEAUX .EQ $C004 W SETWRITEAUX .EQ $C005 W -CLRCXROM .EQ $C006 W -SETCXROM .EQ $C007 W +*CLRCXROM .EQ $C006 W +*SETCXROM .EQ $C007 W CLRALTZP .EQ $C008 W SETALTZP .EQ $C009 W -CLRC3ROM .EQ $C00A W -SETC3ROM .EQ $C00B W +*CLRC3ROM .EQ $C00A W +*SETC3ROM .EQ $C00B W CLR80DISP .EQ $C00C W SET80DISP .EQ $C00D W CLRALTCHAR .EQ $C00E W @@ -29,9 +29,9 @@ RDLCBNK2 .EQ $C011 R RDLCRAM .EQ $C012 R RDREADAUX .EQ $C013 R RDWRITEAUX .EQ $C014 R -RDCXROM .EQ $C015 R +*RDCXROM .EQ $C015 R RDALTZP .EQ $C016 R -RDC3ROM .EQ $C017 R +*RDC3ROM .EQ $C017 R RD80STORE .EQ $C018 R VBL .EQ $C019 R RDTEXT .EQ $C01A R @@ -40,9 +40,9 @@ RDPAGE2 .EQ $C01C R RDHIRES .EQ $C01D R RDALTCHAR .EQ $C01E R RD80DISP .EQ $C01F R -TAPEOUT .EQ $C020 W +*TAPEOUT .EQ $C020 W SPEAKER .EQ $C030 W, toggle speaker diaphragm -STROBE .EQ $C040 R, generate .5 uS low pulse @ Game pin 5 +*STROBE .EQ $C040 R, generate .5 uS low pulse @ Game pin 5 EMUBYTE .EQ $C04F WRR, Write once then Read EMUL, Read Version @@ -55,29 +55,29 @@ SETPAGE2 .EQ $C055 W CLRHIRES .EQ $C056 W SETHIRES .EQ $C057 W -SETAN0 .EQ $C058 W, Set annunciator-0 output to 0 -CLRAN0 .EQ $C059 W, Set annunciator-0 output to 1 -SETAN1 .EQ $C05A W, Set annunciator-1 output to 0 -CLRAN1 .EQ $C05B W, Set annunciator-1 output to 1 +*SETAN0 .EQ $C058 W, Set annunciator-0 output to 0 +*CLRAN0 .EQ $C059 W, Set annunciator-0 output to 1 +*SETAN1 .EQ $C05A W, Set annunciator-1 output to 0 +*CLRAN1 .EQ $C05B W, Set annunciator-1 output to 1 ENBVBLIIC .EQ $C05B W, Enable VBL switch (IIc) -SETAN2 .EQ $C05C W, Set annunciator-2 output to 0 -CLRAN2 .EQ $C05D W, Set annunciator-2 output to 1 -SETAN3 .EQ $C05E W, Set annunciator-3 output to 0 +*SETAN2 .EQ $C05C W, Set annunciator-2 output to 0 +*CLRAN2 .EQ $C05D W, Set annunciator-2 output to 1 +*SETAN3 .EQ $C05E W, Set annunciator-3 output to 0 SETDHIRES .EQ $C05E W, if IOUDIS Set, turn on double-hires -CLRAN3 .EQ $C05F W, Set annunciator-3 output to 1 +*CLRAN3 .EQ $C05F W, Set annunciator-3 output to 1 CLRDHIRES .EQ $C05F W, if IOUDIS Set, turn off double-hires -TAPEIN .EQ $C060 R +*TAPEIN .EQ $C060 R OPENAPPLE .EQ $C061 R SOLIDAPPLE .EQ $C062 R -PB2 .EQ $C063 R +*PB2 .EQ $C063 R -PADDLE0 .EQ $C064 R, bit 7 = status of pdl-0 timer -PADDLE1 .EQ $C065 R, bit 7 = status of pdl-1 timer -PADDLE2 .EQ $C066 R, bit 7 = status of pdl-2 timer -PADDLE3 .EQ $C067 R, bit 7 = status of pdl-3 timer -PDLTRIG .EQ $C070 W, trigger paddles +*PADDLE0 .EQ $C064 R, bit 7 = status of pdl-0 timer +*PADDLE1 .EQ $C065 R, bit 7 = status of pdl-1 timer +*PADDLE2 .EQ $C066 R, bit 7 = status of pdl-2 timer +*PADDLE3 .EQ $C067 R, bit 7 = status of pdl-3 timer +*PDLTRIG .EQ $C070 W, trigger paddles SETIOUDIS .EQ $C07E W, enable DHIRES & disable $C058-5F RDIOUDIS .EQ $C07E R, bit 7 = IOUDIS status @@ -92,6 +92,6 @@ RROMWRAMBNK1 .EQ $C089 RR RROMBNK1 .EQ $C08A R RRAMWRAMBNK1 .EQ $C08B RR *-------------------------------------- -CLRC8ROM .EQ $CFFF R, Release C800-CFFF Rom Space for all cards +*CLRC8ROM .EQ $CFFF R, Release C800-CFFF Rom Space for all cards MAN SAVE /A2OSX.DEV/INC/IO.I diff --git a/INC/MACROS.I.txt b/INC/MACROS.I.txt index e84a18e3..d1ae3312 100644 --- a/INC/MACROS.I.txt +++ b/INC/MACROS.I.txt @@ -47,7 +47,7 @@ AUTO 6 .DO ]1=MLIDESTROY lda #1 .FIN - .DO ]1=MLIRENAME + .DO ]1=MLIRename lda #2 .FIN .DO ]1=MLISETFILEINFO diff --git a/INC/MONITOR.I.txt b/INC/MONITOR.I.txt index 0bc143d0..93a0b5bd 100644 --- a/INC/MONITOR.I.txt +++ b/INC/MONITOR.I.txt @@ -10,8 +10,8 @@ AUTO 1000 BRKVECT .EQ $3F0 POWERUP .EQ $3F2 POWERUPBYTE .EQ $3F4 -USRJMP .EQ $3F8 jmp $xxxx -NMIJMP .EQ $3FB jmp $xxxx +*USRJMP .EQ $3F8 jmp $xxxx +*NMIJMP .EQ $3FB jmp $xxxx IRQVECT .EQ $3FE *-------------------------------------- COL80FIRM .EQ $C300 diff --git a/INC/PRODOS.I.txt b/INC/PRODOS.I.txt index a8a0e8f1..ebea88c0 100644 --- a/INC/PRODOS.I.txt +++ b/INC/PRODOS.I.txt @@ -20,7 +20,7 @@ MLIWRITEBLOCK .EQ $81 MLIGETTIME .EQ $82 MLICREATE .EQ $C0 MLIDESTROY .EQ $C1 -MLIRENAME .EQ $C2 +MLIRename .EQ $C2 MLISETFILEINFO .EQ $C3 MLIGETFILEINFO .EQ $C4 MLIONLINE .EQ $C5 @@ -71,6 +71,7 @@ S.FILEINFO .EQ $12 *$28 - No Device Connected *$2B - Write Protected *$2E - Disk Switched +*$2F - Device Offline *$40 - Invalid Pathname *$42 - Maximum Number of Files Open *$43 - Invalid Reference Number @@ -94,8 +95,8 @@ S.FILEINFO .EQ $12 *$5A - File Structure Damaged *-------------------------------------- MLI.ERR.BADCALL .EQ $01 -MLI.ERR.BADCNT .EQ $04 -MLI.ERR.IRQFULL .EQ $25 +*MLI.ERR.BADCNT .EQ $04 +*MLI.ERR.IRQFULL .EQ $25 MLI.ERR.IO .EQ $27 MLI.ERR.NODEV .EQ $28 MLI.ERR.WRTPROT .EQ $2B @@ -152,15 +153,15 @@ TIMELO .EQ $BF92 *SPARE1 .EQ $BF96 MACHID .EQ $BF98 MACHID.TYPE .EQ %11001000 -MACHID.TYPE.II .EQ %00000000 -MACHID.TYPE.IIp .EQ %01000000 +*MACHID.TYPE.II .EQ %00000000 +*MACHID.TYPE.IIp .EQ %01000000 MACHID.TYPE.IIe .EQ %10000000 MACHID.TYPE.IIc .EQ %10001000 -MACHID.TYPE.III .EQ %11000000 +*MACHID.TYPE.III .EQ %11000000 MACHID.RAM .EQ %00110000 MACHID.RAM.128 .EQ %00110000 -MACHID.RAM.64 .EQ %00100000 -MACHID.RAM.48 .EQ %00010000 +*MACHID.RAM.64 .EQ %00100000 +*MACHID.RAM.48 .EQ %00010000 *MACHID.SPARE .EQ %00000100 MACHID.COL80 .EQ %00000010 MACHID.CLK .EQ %00000001 @@ -176,10 +177,10 @@ MACHID.CLK .EQ %00000001 *BNKBYT1 .EQ $BFF4 *BNKBYT2 .EQ $BFF5 *SYS.RTS .EQ $BFF6 code -> $BFFB -IBAKVER .EQ $BFFC -IVERSION .EQ $BFFD -KBAKVER .EQ $BFFE -KVERSION .EQ $BFFF +*IBAKVER .EQ $BFFC +*IVERSION .EQ $BFFD +*KBAKVER .EQ $BFFE +*KVERSION .EQ $BFFF *-------------------------------------- MAN SAVE /A2OSX.DEV/INC/PRODOS.I diff --git a/INC/ZP.I.txt b/INC/ZP.I.txt index 0df1ae6f..5ae53226 100644 --- a/INC/ZP.I.txt +++ b/INC/ZP.I.txt @@ -28,15 +28,5 @@ KSWH .EQ $39 INPUT CHARACTER HOOK HIGH RNDL .EQ $4E RANDOM NUMBER LOW RNDH .EQ $4F RANDOM NUMBER HIGH *-------------------------------------- -* Applesoft FP Registers -*-------------------------------------- -EXPSGN .EQ $9C -FAC .EQ $9D -> A1, MAIN FLT PT ACCUMULATOR -FAC.SIGN .EQ $A2 HOLDS UNPACKED SIGN -ARG .EQ $A5 -> A9, SECONDARY FP ACC -ARG.SIGN .EQ $AA -SGNCPR .EQ $AB FLAGS OPP SIGN IN FP ROUT. -FAC.EXTENSION .EQ $AC FAC EXTENSION BYTE -*-------------------------------------- MAN SAVE /A2OSX.DEV/INC/ZP.I diff --git a/SBIN/DHCPCLNT.S.txt b/SBIN/DHCPCLNT.S.txt index 3ebd8f8f..47991b99 100644 --- a/SBIN/DHCPCLNT.S.txt +++ b/SBIN/DHCPCLNT.S.txt @@ -236,7 +236,7 @@ CS.DOEVENT lda (pEvent) ldy #S.EVT.hDEV is Event from active IN device? lda (pEvent),y - ldy #S.PS.hINDEV + ldy #S.PS.hStdIn cmp (pPs),y bne .9 diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index 05165747..80605df2 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -47,51 +47,37 @@ CS.INIT >SYSCALL GetArgC .1 lda #1 >SYSCALL GetArgA - >SYSCALL GetDevByNameYA - bcs .98 + + >SYSCALL MkNodYA + bcs .9 - >STYA pDev - txa - ldy #S.PS.hINDEV + ldy #S.PS.hStdIn sta (pPs),y - ldy #S.PS.hOUTDEV + ldy #S.PS.hStdOut sta (pPs),y - ldy #S.PS.hERRDEV + ldy #S.PS.hStdErr sta (pPs),y - ldx #DEVMGR.OPEN - jsr pDevJmp - bcs .99 - lda #2 >SYSCALL GetArgA - bcs .99 + bcs .9 >SYSCALL ExpandPStrYA - bcs .99 + bcs .9 txa ldy #hBinName sta (pData),y clc - rts - -.98 sec -.99 rts +.9 rts *-------------------------------------- CS.RUN lda #13 try send a CR... - >SYSCALL COutA Device Is Ready ? + >SYSCALL PutCA Device Is Ready ? bcs .8 no..loop... - lda pDev - clc - adc #S.DEV.NAME - tay - lda pDev+1 - adc /S.DEV.NAME >PUSHYA >LDYA L.MSG.GREETINGS >SYSCALL CPrintFYA @@ -123,7 +109,7 @@ CS.QUIT ldy #hBinName *-------------------------------------- CS.END MSG.USAGE >CSTR "GETTY " -MSG.GREETINGS >CSTR "\e[12h\nA2osX-GeTTY on Dev=%S\n" +MSG.GREETINGS >CSTR "\e[12h\nA2osX-GeTTY\n" *-------------------------------------- .DUMMY .OR 0 diff --git a/SBIN/LOGIN.S.txt b/SBIN/LOGIN.S.txt index 7c1daf94..af97a6ff 100644 --- a/SBIN/LOGIN.S.txt +++ b/SBIN/LOGIN.S.txt @@ -58,6 +58,9 @@ CS.RUN lda #0 jsr INPUT.RESET .1 >SYSCALL Sleep + >SYSCALL GetC + bcs .1 no char + jsr INPUT.CHARIN jsr INPUT.LINEIN bcc .1 @@ -69,11 +72,14 @@ CS.RUN lda #0 jsr INPUT.RESET .2 >SYSCALL Sleep + >SYSCALL GetC + bcs .2 no char + jsr INPUT.CHARIN jsr INPUT.LINEIN bcc .2 lda #13 - >SYSCALL COutA + >SYSCALL PutCA bcs .9 >LDYA L.SHELL @@ -94,27 +100,8 @@ CS.RUN lda #0 .8 clc .9 rts *-------------------------------------- -CS.DOEVENT ldy #S.EVT.hDEV - lda (pEvent),y - ldy #S.PS.hINDEV - cmp (pPs),y - bne .99 - - lda (pEvent) - and #S.EVT.F.KEY - beq .99 - - ldy #S.EVT.DATAHI - lda (pEvent),y - bne .99 - - ldy #S.EVT.DATALO - lda (pEvent),y - jsr INPUT.CHARIN - clc - rts - -.99 sec +CS.DOEVENT + sec rts *-------------------------------------- CS.QUIT clc @@ -131,7 +118,7 @@ INPUT.RESET ldy #INPUT.PassChar sta (pData),y rts *-------------------------------------- -INPUT.CHARIN tax saver char... +INPUT.CHARIN tax save char... ldy #INPUT.Status lda (pData),y bmi .9 @@ -163,7 +150,7 @@ INPUT.CHARIN tax saver char... lda (pData),y bne .1 txa -.1 >SYSCALL COutA +.1 >SYSCALL PutCA rts .2 cpx #13 CR diff --git a/SBIN/SHELL.S.CMD.txt b/SBIN/SHELL.S.CMD.txt index 2304c552..c4df4365 100644 --- a/SBIN/SHELL.S.CMD.txt +++ b/SBIN/SHELL.S.CMD.txt @@ -197,7 +197,7 @@ Cmd.Exec.PWD ldy #S.PS.hPREFIX >SYSCALL PPrintFYA bcs .9 lda #13 - >SYSCALL COutA + >SYSCALL PutCA .9 rts Cmd.Exec.CD1 stz UsrBuf256 @@ -424,7 +424,7 @@ Cmd.Exec.TIME clc >SYSCALL PPrintFYA bcs .9 lda #13 - >SYSCALL COutA + >SYSCALL PutCA .9 rts *-------------------------------------- Cmd.Exec.ECHO lda ARGS @@ -435,7 +435,7 @@ Cmd.Exec.ECHO lda ARGS bcs .9 .1 lda #13 - >SYSCALL COutA + >SYSCALL PutCA .9 rts *-------------------------------------- diff --git a/SBIN/SHELL.S.TXT.txt b/SBIN/SHELL.S.TXT.txt index f119f869..e07414a5 100644 --- a/SBIN/SHELL.S.TXT.txt +++ b/SBIN/SHELL.S.TXT.txt @@ -8,11 +8,11 @@ AUTO 6 TXT.OpenFileYA pha >PUSHWI 0 Aux type >PUSHBI 4 S.FILEINFO.TYPE.TXT - >PUSHBI SYS.FOPEN.R+SYS.FOPEN.T + >PUSHBI SYS.FOpen.R+SYS.FOpen.T pla >PUSHYA - >SYSCALL FOPEN + >SYSCALL FOpen bcs .9 ldy #hInputFile @@ -24,7 +24,7 @@ TXT.ReadFile >PUSHWI UsrBuf256+1 ldy #hInputFile lda (pData),y >PUSHA - >SYSCALL FREAD + >SYSCALL FRead bcs .9 tya diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index 582826c0..846e53bd 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -88,9 +88,6 @@ CS.INIT.INTERACTIVE jsr HIS.Init bcs .9 - ldy #S.PS.hINDEV - lda (pPs),y - >PUSHA >LDYA L.MSG.GREETINGS >SYSCALL CPrintFYA @@ -124,9 +121,14 @@ CS.RUN lda #0 bcs .99 .1 >SYSCALL Sleep + >SYSCALL GetC + bcs .1 no char + + jsr CS.CHARIN + lda (pData) bpl .1 - + and #$7F sta (pData) bra .3 @@ -170,37 +172,11 @@ CS.RUN lda #0 .99 sec rts *-------------------------------------- -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 - - ldy #S.EVT.DATAHI is it an O or SAPPLE key ? - lda (pEvent),y - bne .9 - - ldy #S.EVT.DATALO - lda (pEvent),y - tax - - ldy #bPause - lda (pData),y - bpl .11 - - lda #0 - sta (pData),y - clc +CS.DOEVENT sec rts - -.9 sec - rts - -.11 ldy #hInputFile Batch mode ? +*-------------------------------------- +CS.CHARIN tax + ldy #hInputFile Batch mode ? lda (pData),y beq .10 * Batch Mode @@ -248,7 +224,7 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? .13 cpx #$20 bcs .1 - jsr CS.EVENT.CTRL.CHAR + jsr CS.CHARIN.CTRL bra .8 .1 cpx #$7f @@ -268,16 +244,15 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? txa sta (pData),y - >SYSCALL COutA + >SYSCALL PutCA .8 clc rts *-------------------------------------- -CS.EVENT.CTRL.CHAR - cpx #13 CR +CS.CHARIN.CTRL cpx #13 CR bne .10 txa - >SYSCALL COutA + >SYSCALL PutCA lda (pData) CmdBuffer ora #$80 sta (pData) @@ -418,7 +393,7 @@ CmdBuffer.Normalize.Next CmdBuffer.PRINT ldy #0 .1 iny lda (pData),y - >SYSCALL COutA + >SYSCALL PutCA tya cmp (pData) bne .1 @@ -431,7 +406,7 @@ CmdBuffer.CLR jsr CmdBuffer.DEL CmdBuffer.DEL lda (pData) beq .9 lda #8 - >SYSCALL COutA + >SYSCALL PutCA lda (pData) dec sta (pData) @@ -459,7 +434,7 @@ CMDS >PSTR "CD" >PSTR "TIME" .HS 00 *-------------------------------------- -MSG.GREETINGS >CSTR "\nA2osX-Shell on Dev=%h\n\n" +MSG.GREETINGS >CSTR "\nA2osX-Shell\n\n" MSG.PROMPT >CSTR "%S$ " MSG.ECHO >CSTR ">%S\n" MSG.ERROR >CSTR "%S ($%h)\n" diff --git a/SBIN/TCPIP.S.CFG.txt b/SBIN/TCPIP.S.CFG.txt index 845ea47e..0b29f7f6 100644 --- a/SBIN/TCPIP.S.CFG.txt +++ b/SBIN/TCPIP.S.CFG.txt @@ -56,7 +56,7 @@ CFG.Read.HOSTNAME >PUSHWI 0 Aux type >PUSHBI 4 S.FILEINFO.TYPE.TXT - >PUSHBI SYS.FOPEN.R + >PUSHBI SYS.FOpen.R pla >PUSHYA >SYSCALL LoadFile @@ -111,7 +111,7 @@ CFG.Read.TCPIP.CONF >PUSHWI 0 Aux type >PUSHBI 4 S.FILEINFO.TYPE.TXT - >PUSHBI SYS.FOPEN.R + >PUSHBI SYS.FOpen.R pla >PUSHYA >SYSCALL LoadFile @@ -179,7 +179,7 @@ CFG.Read.TCPIP.CONF *-------------------------------------- CFG.Read.HOSTS >PUSHWI 0 Aux type >PUSHBI 4 S.FILEINFO.TYPE.TXT - >PUSHBI SYS.FOPEN.R + >PUSHBI SYS.FOpen.R >PUSHW L.HOSTS >SYSCALL LoadFile bcs .99 diff --git a/SYS/KERNEL.S.ARG.txt b/SYS/KERNEL.S.ARG.txt index 6ddf5735..cbe8bca3 100644 --- a/SYS/KERNEL.S.ARG.txt +++ b/SYS/KERNEL.S.ARG.txt @@ -16,7 +16,7 @@ K.GetArgC jsr ARG.InitArgPtr1 ldx #0 -.1 lda (ZPQuickPtr1) +.1 lda (ZPPtr1) beq .8 jsr ARG.NextArgPtr1 @@ -42,7 +42,7 @@ K.GetArgA sta .2+1 ldx #0 -.1 lda (ZPQuickPtr1) +.1 lda (ZPPtr1) beq .9 .2 cpx #$ff Self Modified @@ -52,7 +52,7 @@ K.GetArgA sta .2+1 inx bra .1 -.8 >LDYA ZPQuickPtr1 +.8 >LDYA ZPPtr1 clc rts @@ -62,15 +62,15 @@ K.GetArgA sta .2+1 ARG.InitArgPtr1 ldy #S.PS.hCMDLINE lda (pPs),y jsr K.GetMemPtrA - >STYA ZPQuickPtr1 + >STYA ZPPtr1 rts *-------------------------------------- -ARG.NextArgPtr1 lda ZPQuickPtr1 +ARG.NextArgPtr1 lda ZPPtr1 sec - adc (ZPQuickPtr1) - sta ZPQuickPtr1 + adc (ZPPtr1) + sta ZPPtr1 bcc .8 - inc ZPQuickPtr1+1 + inc ZPPtr1+1 .8 rts *-------------------------------------- MAN diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 25669cd4..4d8d9489 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -17,11 +17,11 @@ K.LoadEXEYA >STYA K.LoadEXEYA.Filename jsr MEM.GetMemByNameYA bcs K.LoadEXEYA.1 not already loaded - >STYA ZPQuickPtr1 Save base address + >STYA ZPPtr1 Save base address ldy #S.MEM.REFCNT - lda (ZPQuickPtr1),y + lda (ZPPtr1),y inc - sta (ZPQuickPtr1),y + sta (ZPPtr1),y txa jmp K.GetMemPtrA X=hMem from K.GetMemByNameA @@ -36,7 +36,7 @@ K.LoadEXEYA.1 >PUSHWI KrnBuf256 >PUSHYA Push AUXTYPE >PUSHBI 6 S.FILEINFO.TYPE.BIN - >PUSHBI SYS.FOPEN.R + >PUSHBI SYS.FOpen.R >PUSHW K.LoadEXEYA.Filename jsr K.LoadFile @@ -56,26 +56,26 @@ K.LoadEXEYA.1 >PUSHWI KrnBuf256 txa jsr K.GetMemPtrA - >STYA ZPQuickPtr1 set ZPQuickPtr1 -> Code start + >STYA ZPPtr1 set ZPPtr1 -> Code start pha YA = actual load address tya sec sbc BIN.Relocate.Start - sta BIN.Relocate.Offset Offset=ZPQuickPtr1-AUXTYPE + sta BIN.Relocate.Offset Offset=ZPPtr1-AUXTYPE pla sbc BIN.Relocate.Start+1 sta BIN.Relocate.Offset+1 ldy #H.BIN.CODE.LEN get Code Len - lda (ZPQuickPtr1),y + lda (ZPPtr1),y clc - adc ZPQuickPtr1 - sta ZPQuickPtr2 Make ZPQuickPtr2 = ZPQuickPtr1 + CodeLen + adc ZPPtr1 + sta ZPPtr2 Make ZPPtr2 = ZPPtr1 + CodeLen iny - lda (ZPQuickPtr1),y - adc ZPQuickPtr1+1 - sta ZPQuickPtr2+1 + lda (ZPPtr1),y + adc ZPPtr1+1 + sta ZPPtr2+1 jsr BIN.RelocateEXE @@ -85,15 +85,15 @@ K.LoadEXEYA.1 >PUSHWI KrnBuf256 lda K.LoadEXEYA.hMem Keep X=hMem jsr K.GetMemByIDA X unmodified - >STYA ZPQuickPtr1 + >STYA ZPPtr1 - lda (ZPQuickPtr1) + lda (ZPPtr1) ora #S.MEM.F.CODE This is a code segment - sta (ZPQuickPtr1) + sta (ZPPtr1) txa Get Back hMem ldy #S.MEM.BIN - sta (ZPQuickPtr1),y + sta (ZPPtr1),y lda K.LoadEXEYA.hMem tax return hMEM to Caller... @@ -164,8 +164,7 @@ BIN.InstallDRV ldy #H.BIN.DRV.CODE.O sbc /DevMgr.HiMem bcs .9 No More Room to load Driver.... - lda DevMgr.LastDevID - inc + lda DevMgr.Count cmp #K.DEV.MAX bne .10 No Device Handle Left @@ -177,53 +176,48 @@ BIN.InstallDRV ldy #H.BIN.DRV.CODE.O sec rts -.10 sta DevMgr.LastDevID - +.10 inc DevMgr.Count >SYSCALL GetDevByIDA - >STYA ZPQuickPtr2 setup Ptr2 to dest HEADER + >STYA ZPPtr2 setup Ptr2 to dest HEADER ldy #H.BIN.DRV.HEADER.O lda (pDrv),y clc adc pDrv - sta ZPQuickPtr1 + sta ZPPtr1 iny lda (pDrv),y adc pDrv+1 - sta ZPQuickPtr1+1 set Ptr1 to Src HEADER + sta ZPPtr1+1 set Ptr1 to Src HEADER ldy #S.DEV-1 -.1 lda (ZPQuickPtr1),y copy header to DevMgr.Table - sta (ZPQuickPtr2),y +.1 lda (ZPPtr1),y copy header to DevMgr.Table + sta (ZPPtr2),y dey bpl .1 - ldy #S.DEV.ID - lda DevMgr.LastDevID - sta (ZPQuickPtr2),y - - dey #S.DEV.JMP+1 Setup Main JMP + ldy #S.DEV.JMP+1 Setup Main JMP lda DevMgr.Free+1 - sta (ZPQuickPtr2),y + sta (ZPPtr2),y tax - dey #S.DEV.JMP + dey #S.DEV.JMP lda DevMgr.Free - sta (ZPQuickPtr2),y + sta (ZPPtr2),y - sta ZPQuickPtr2 set Ptr2 to Dest CODE - stx ZPQuickPtr2+1 + sta ZPPtr2 set Ptr2 to Dest CODE + stx ZPPtr2+1 ldy #H.BIN.DRV.CODE.O lda (pDrv),y clc adc pDrv - sta ZPQuickPtr1 + sta ZPPtr1 iny lda (pDrv),y adc pDrv+1 - sta ZPQuickPtr1+1 set Ptr1 to Src CODE + sta ZPPtr1+1 set Ptr1 to Src CODE lda BIN.InstallDRV.DrvLen+1 eor #$ff @@ -241,31 +235,32 @@ BIN.InstallDRV ldy #H.BIN.DRV.CODE.O beq .4 pha -.3 lda (ZPQuickPtr1),y - sta (ZPQuickPtr2),y +.3 lda (ZPPtr1),y + sta (ZPPtr2),y iny bne .2 - inc ZPQuickPtr1+1 - inc ZPQuickPtr2+1 + inc ZPPtr1+1 + inc ZPPtr2+1 bra .2 .4 ldy #H.BIN.DRV.CODE.LEN lda DevMgr.Free Make Ptr1 = code start - sta ZPQuickPtr1 + sta ZPPtr1 clc adc (pDrv),y - sta ZPQuickPtr2 + sta ZPPtr2 iny lda DevMgr.Free+1 - sta ZPQuickPtr1+1 + sta ZPPtr1+1 adc (pDrv),y - sta ZPQuickPtr2+1 Make ZPQuickPtr2 = ZPQuickPtr1 + CodeLen + sta ZPPtr2+1 Make ZPPtr2 = ZPPtr1 + CodeLen jsr BIN.RelocateDRV >LDYA BIN.InstallDRV.DrvEnd >STYA DevMgr.Free + clc rts *-------------------------------------- @@ -274,15 +269,15 @@ BIN.InstallDRV.DrvEnd .BS 2 *-------------------------------------- * BIN.Relocate___ : * In : -* ZPQuickPtr1 = Ptr to Code -* ZPQuickPtr2 = End Of Code +* ZPPtr1 = Ptr to Code +* ZPPtr2 = End Of Code *-------------------------------------- BIN.Relocate.Start .BS 2 BIN.Relocate.End .BS 2 BIN.Relocate.Offset .BS 2 *-------------------------------------- BIN.RelocateEXE ldy #H.BIN.HEADER+1 - lda (ZPQuickPtr1),y + lda (ZPPtr1),y cmp /H.BIN.HEADER.BIN65 beq .1 cmp /H.BIN.HEADER.DRV65 @@ -293,15 +288,15 @@ BIN.RelocateEXE ldy #H.BIN.HEADER+1 rts .1 ldy #H.BIN.JMP relocate Main JMP - lda (ZPQuickPtr1),y + lda (ZPPtr1),y clc adc BIN.Relocate.Offset - sta (ZPQuickPtr1),y + sta (ZPPtr1),y iny - lda (ZPQuickPtr1),y + lda (ZPPtr1),y adc BIN.Relocate.Offset+1 - sta (ZPQuickPtr1),y + sta (ZPPtr1),y ldy #H.BIN.EXE.REL.TABLE skip Header, CS.SIZE & DS.SIZE... (16 bytes) @@ -309,22 +304,22 @@ BIN.RelocateEXE ldy #H.BIN.HEADER+1 *-------------------------------------- BIN.RelocateDRV ldy #H.BIN.DRV.REL.TABLE -.1 lda (ZPQuickPtr1),y Start Relocate JMP table +.1 lda (ZPPtr1),y Start Relocate JMP table tax LO in X iny - ora (ZPQuickPtr1),y ORA with HI + ora (ZPPtr1),y ORA with HI beq .2 $0000 = end of table dey txa get back LO clc adc BIN.Relocate.Offset - sta (ZPQuickPtr1),y + sta (ZPPtr1),y iny - lda (ZPQuickPtr1),y + lda (ZPPtr1),y adc BIN.Relocate.Offset+1 - sta (ZPQuickPtr1),y + sta (ZPPtr1),y iny @@ -334,12 +329,12 @@ BIN.RelocateDRV ldy #H.BIN.DRV.REL.TABLE sec + 1 to skip last 00 from beq .2 - adc ZPQuickPtr1 - sta ZPQuickPtr1 + adc ZPPtr1 + sta ZPPtr1 bcc .3 - inc ZPQuickPtr1+1 ZPQuickPtr1=Current Code PTR + inc ZPPtr1+1 ZPPtr1=Current Code PTR -.3 lda (ZPQuickPtr1) get OPCODE +.3 lda (ZPPtr1) get OPCODE lsr /2 tax lda BIN.OPCODES,x get OPCODE definition @@ -357,19 +352,19 @@ BIN.RelocateDRV ldy #H.BIN.DRV.REL.TABLE pha ldy #1 - lda (ZPQuickPtr1),y Get LO + lda (ZPPtr1),y Get LO tax save LO in X iny make Y point to HI cpx BIN.Relocate.Start - lda (ZPQuickPtr1),y Get HI + lda (ZPPtr1),y Get HI sbc BIN.Relocate.Start+1 bcc .5 addr < BIN.Relocate.Start, out of range txa Get back LO cpx BIN.Relocate.End - lda (ZPQuickPtr1),y Get HI + lda (ZPPtr1),y Get HI sbc BIN.Relocate.End+1 bcs .5 addr > BIN.Relocate.End, out of range @@ -377,24 +372,24 @@ BIN.RelocateDRV ldy #H.BIN.DRV.REL.TABLE * clc CC from bcs .6 adc BIN.Relocate.Offset add Offset to abs address dey - sta (ZPQuickPtr1),y store relocated addr LO + sta (ZPPtr1),y store relocated addr LO iny - lda (ZPQuickPtr1),y Get HI + lda (ZPPtr1),y Get HI adc BIN.Relocate.Offset+1 - sta (ZPQuickPtr1),y store relocated addr HI + sta (ZPPtr1),y store relocated addr HI .5 pla get back Opcode length... .6 clc A = OPCODE length - adc ZPQuickPtr1 - sta ZPQuickPtr1 + adc ZPPtr1 + sta ZPPtr1 bcc .7 - inc ZPQuickPtr1+1 + inc ZPPtr1+1 -.7 eor ZPQuickPtr2 A = ZPQuickPtr1 +.7 eor ZPPtr2 A = ZPPtr1 bne .3 - lda ZPQuickPtr1+1 - eor ZPQuickPtr2+1 + lda ZPPtr1+1 + eor ZPPtr2+1 bne .3 next opcode.... .8 rts diff --git a/SYS/KERNEL.S.CHR.txt b/SYS/KERNEL.S.CHR.txt new file mode 100644 index 00000000..038c5780 --- /dev/null +++ b/SYS/KERNEL.S.CHR.txt @@ -0,0 +1,203 @@ +PR#3 +PREFIX /A2OSX.SRC +NEW +INC 1 +AUTO 6 + .LIST OFF +*/-------------------------------------- +* #FPutCAY +* Print A (char) to File +* ##In: +* A : char to print +* Y = hFILE +* ##Out: +* CC = success +*\-------------------------------------- +K.FPutCAY sta K.PutC.Char + sty K.PutC.Node + tya + phy + bne K.PutCA.1 +K.PutCA.8 ply + clc + rts +*/-------------------------------------- +* #PutCA +* Print A (char) to StdOut +* ##In: +* A : char to print +* ##Out: +* CC = success +*\-------------------------------------- +K.PutCA sta K.PutC.Char + phy + ldy #S.PS.hStdOut + lda (pPs),y + beq K.PutCA.8 NUL + + phx + +K.PutCA.1 sta K.PutC.Node + jsr K.GetMemPtrA + >STYA pDev + + ldy #S.NODE.T + lda (pDev),y + asl + tax + jsr K.PutCA.Jmp + + plx + ply + rts +*-------------------------------------- +K.PutCA.Jmp jmp (.1,x) +.1 .DA K.PutCA.REG + .DA K.CHR.IOERR DIR + .DA K.PutCA.CDEV + .DA K.CHR.IOERR BDEV + .DA K.CHR.IOERR LNK + .DA K.CHR.IOERR DSOCK + .DA K.PutCA.SSOCK + .DA K.PutCA.FIFO +*-------------------------------------- +K.PutCA.REG lda K.PutC.Node + ldy K.PutC.Char + jmp K.FWriteAY +*-------------------------------------- +K.PutCA.CDEV ldy #S.NODE.DEV.JMP + lda (pDev),y + sta .1+1 + iny + lda (pDev),y + sta .1+2 + lda K.PutC.Char + ldx #DEVMGR.WRITE +.1 jmp $ffff +*-------------------------------------- +K.PutCA.SSOCK sec + rts +*-------------------------------------- +K.PutCA.FIFO ldy #S.NODE.FIFO.S + lda (pDev),y + beq .9 Remote PS did not opened yet the pipe + cmp #S.NODE.FIFO.S.Closed + beq .99 Remote PS closed the Pipe + + ldy #S.NODE.FIFO.hMem + lda (pDev),y + jsr K.GetMemPtrA + >STYA .1+2 + + ldy #S.NODE.FIFO.Head + lda (pDev),y + inc + dey #S.NODE.FIFO.Tail + cmp (pDev),y + beq .9 FIFO is full + iny + sta (pDev),y + tay + lda K.PutC.Char +.1 sta $ffff,y + clc + rts + +.9 lda #MLI.ERR.VOLFULL + sec + rts + +.99 lda #MLI.ERR.EOF + sec + rts +*-------------------------------------- +K.PutC.Char .BS 1 +K.PutC.Node .BS 1 +*/-------------------------------------- +* #FGetCA +* Get char from File +* ##In: +* A = hFILE +* ##Out: +* CC = success +* A = char +*\-------------------------------------- +K.FGetCA +*/-------------------------------------- +* #GetC +* Get char from StdIn +* ##In: +* none. +* ##Out: +* CC = success +* A = char +*\-------------------------------------- +K.GetC ldy #S.PS.hStdIn + lda (pPs),y + + sta K.PutC.Node + jsr K.GetMemPtrA + >STYA pDev + + ldy #S.NODE.T + lda (pDev),y + asl + tax + jmp (.1,x) + +.1 .DA K.GetC.REG + .DA K.CHR.IOERR DIR + .DA K.GetC.CDEV + .DA K.CHR.IOERR BDEV + .DA K.CHR.IOERR LNK + .DA K.CHR.IOERR DSOCK + .DA K.GetC.SSOCK + .DA K.GetC.FIFO +*-------------------------------------- +K.GetC.REG +*-------------------------------------- +K.GetC.CDEV ldx #DEVMGR.READ + ldy #S.NODE.DEV.JMP + lda (pDev),y + sta .1+1 + iny + lda (pDev),y + sta .1+2 +.1 jmp $ffff +*-------------------------------------- +K.GetC.SSOCK +*-------------------------------------- +K.GetC.FIFO +*/-------------------------------------- +* #FPutS +* Print String to FILE +* ##In: +* PUSHW : CPtr +* PUSHB : hFILE +* ##Out: +* CC = success +*\-------------------------------------- +K.FPutS +*/-------------------------------------- +* #PutSYA +* Print String to StdOut +* ##In: +* Y,A : CPtr +* ##Out: +* CC = success +*\-------------------------------------- +K.PutSYA +*-------------------------------------- +K.FGetS +*-------------------------------------- +K.GetSYA + bra * +*-------------------------------------- +K.CHR.IOERR lda #MLI.ERR.IO + sec + rts +*-------------------------------------- +MAN +SAVE SYS/KERNEL.S.CHR +LOAD SYS/KERNEL.S +ASM diff --git a/SYS/KERNEL.S.CIO.txt b/SYS/KERNEL.S.CIO.txt index 5212e6aa..e871b52e 100644 --- a/SYS/KERNEL.S.CIO.txt +++ b/SYS/KERNEL.S.CIO.txt @@ -18,23 +18,23 @@ K.SScanF jsr PullPtr1Ptr2Ptr3 ldy #0 Y = PTR in pattern - lda (ZPQuickPtr1) + lda (ZPPtr1) beq .9 tax X = COUNT to scan - inc ZPQuickPtr1 + inc ZPPtr1 bne .1 - inc ZPQuickPtr1+1 + inc ZPPtr1+1 .1 txa End Of String? beq .8 tya - cmp (ZPQuickPtr2) End of pattern? + cmp (ZPPtr2) End of pattern? beq .8 iny - lda (ZPQuickPtr2),y + lda (ZPPtr2),y cmp #'%' Escape? beq .2 - cmp (ZPQuickPtr1) Same char? + cmp (ZPPtr1) Same char? bne .9 jsr K.SScanF.IncPtr1 bne .1 @@ -42,16 +42,16 @@ K.SScanF jsr PullPtr1Ptr2Ptr3 rts .2 tya - cmp (ZPQuickPtr2) unexpected End of pattern after "%" ? + cmp (ZPPtr2) unexpected End of pattern after "%" ? beq .9 iny - lda (ZPQuickPtr2),y + lda (ZPPtr2),y cmp #'d' BYTE ? bne .3 stz ASCBUF -.20 lda (ZPQuickPtr1) +.20 lda (ZPPtr1) jsr K.SScanF.IsDigit bcs .21 phx @@ -64,10 +64,10 @@ K.SScanF jsr PullPtr1Ptr2Ptr3 .21 jsr DEC2HEX lda HEXBUF - sta (ZPQuickPtr3) - inc ZPQuickPtr3 + sta (ZPPtr3) + inc ZPPtr3 bne .1 - inc ZPQuickPtr3+1 + inc ZPPtr3+1 bra .1 .3 cmp #'D' WORD ? @@ -89,9 +89,9 @@ K.SScanF jsr PullPtr1Ptr2Ptr3 K.SScanF.IncPtr1 dex beq .1 - inc ZPQuickPtr1 + inc ZPPtr1 bne .1 - inc ZPQuickPtr1+1 never Zero + inc ZPPtr1+1 never Zero .1 rts *-------------------------------------- K.SScanF.IsDigit @@ -144,7 +144,7 @@ K.SScanF.IsDigit K.PPrintFYA ldx #$01 PSTR .HS 2C bit abs K.CPrintFYA ldx #$00 CSTR - >STYA ZPQuickPtr1 + >STYA ZPPtr1 stx CIO.GetCharAtPtr1Y+1 ldy #0 @@ -218,7 +218,7 @@ K.CPrintFYA ldx #$00 CSTR .13 lda PrintFTBL2.OUT,x -.20 jsr K.COutA +.20 jsr K.PutCA bcc .1 .99 rts *-------------------------------------- @@ -249,7 +249,7 @@ PrintF.A >PULLW HEXBUF lsr tax lda TYPES,x - jsr K.COutA + jsr K.PutCA bcs .9 ldx #0 @@ -259,7 +259,7 @@ PrintF.A >PULLW HEXBUF bcc .2 lda ACCESS,x -.2 jsr K.COutA +.2 jsr K.PutCA bcs .9 inx @@ -271,7 +271,7 @@ PrintF.A >PULLW HEXBUF bcc .4 lda ACCESS,x -.4 jmp K.COutA +.4 jmp K.PutCA .9 rts *-------------------------------------- @@ -290,7 +290,7 @@ PrintF.B.1 ldx #8 pha lda #'0' adc #0 add Carry - jsr K.COutA + jsr K.PutCA pla bcs PrintF.BB.RTS dex @@ -306,10 +306,10 @@ PrintF.DD.1 stz HEXBUF+2 stz HEXBUF+3 bra PrintF.U.1 -PrintF.U >PULLW ZPQuickPtr2 +PrintF.U >PULLW ZPPtr2 ldy #3 -.1 lda (ZPQuickPtr2),y +.1 lda (ZPPtr2),y sta HEXBUF,y dey bpl .1 @@ -318,10 +318,10 @@ PrintF.U.1 stz SIGN jsr HEX2DEC jmp PrintDEC *-------------------------------------- -PrintF.E >PULLW ZPQuickPtr2 +PrintF.E >PULLW ZPPtr2 rts *-------------------------------------- -PrintF.F >PULLW ZPQuickPtr2 +PrintF.F >PULLW ZPPtr2 rts *-------------------------------------- PrintF.HH >PULLA @@ -367,10 +367,10 @@ PrintF.II.1 stz HEXBUF+2 stz HEXBUF+3 bra PrintF.L.1 -PrintF.L >PULLW ZPQuickPtr2 +PrintF.L >PULLW ZPPtr2 ldy #3 -.1 lda (ZPQuickPtr2),y +.1 lda (ZPPtr2),y sta HEXBUF,y dey bpl .1 @@ -378,227 +378,6 @@ PrintF.L >PULLW ZPQuickPtr2 PrintF.L.1 ror SIGN jsr HEX2DEC - jmp PrintDEC -*-------------------------------------- -PrintF.N >PULLA -PrintF.N.1 and #$0F - bra PrintF.NN.2 - -PrintF.NN >PULLA -PrintF.NN.1 lsr - lsr - lsr - lsr - -PrintF.NN.2 ora #$30 - cmp #$3A - bcc .1 - adc #6 -.1 jmp K.COutA -*-------------------------------------- -* CStr -*-------------------------------------- -PrintF.S >PULLW ZPQuickPtr2 - - ldy #0 - -.1 lda (ZPQuickPtr2),y - beq .2 - - jsr K.COutA - bcs .9 - iny - lda PADLEN - - beq .1 - cpy PADLEN - bne .1 - rts - -.2 lda PADLEN - beq .8 - -.3 lda PADCHAR - jsr K.COutA - bcs .9 - iny - cpy PADLEN - bne .3 - -.8 clc -.9 rts -*-------------------------------------- -* PStr -*-------------------------------------- -PrintF.SS >PULLW ZPQuickPtr2 - - ldy #0 - lda (ZPQuickPtr2),y - tax - beq .8 - -.1 iny - lda (ZPQuickPtr2),y - jsr K.COutA - bcs .9 - lda PADLEN - - beq .2 - cpy PADLEN - beq .8 - -.2 dex - bne .1 - - lda PADLEN - beq .8 - -.3 lda PADCHAR - jsr K.COutA - bcs .9 - iny - cpy PADLEN - bne .3 - -.8 clc -.9 rts -*-------------------------------------- -CIO.GetCharAtPtr1Y - lda #$ff Self Modified PSTR/CSTR - bne .1 - - lda (ZPQuickPtr1),y CSTR - beq .9 - iny advance to next char... - bne .9 - inc ZPQuickPtr1+1 Allow >256 CStrings - rts - - -.1 tya PSTR - cmp (ZPQuickPtr1) - beq .9 - iny - lda (ZPQuickPtr1),y NZ - -.9 clc no error, but end of string - rts -*-------------------------------------- -K.COutA phx - phy - cmp #13 - bne .1 - ldx #DEVMGR.COUT - jsr pDevJmp - bcs .2 - lda #10 -.1 ldx #DEVMGR.COUT - jsr pDevJmp -.2 ply - plx - rts -*/-------------------------------------- -* #FPutCAY -* Print A (char) to File -* ##In: -* A : char to print -* Y = hFILE -* none. -* ##Out: -* CC = success -*\-------------------------------------- -K.FPutCAY sta K.PutC.Char - sty K.PutC.Node - tya - bne K.PutCA.1 -K.PutCA.8 clc - rts -*/-------------------------------------- -* #PutCA -* Print A (char) to StdOut -* ##In: -* A : char to print -* none. -* ##Out: -* CC = success -*\-------------------------------------- -K.PutCA sta K.PutC.Char - ldy #S.PS.hStdOut - lda (pPs),y - beq K.PutCA.8 NUL - -K.PutCA.1 sta K.PutC.Node - jsr K.GetMemPtrA - >STYA pNode - - ldy #S.NODE.T - lda (pNode),y - asl - tax - jmp (K.PutCA.Jmp,x) -*-------------------------------------- -K.PutCA.Jmp .DA K.PutCA.REG - .DA K.PutCA.IOERR DIR - .DA K.PutCA.CDEV - .DA K.PutCA.IOERR BDEV - .DA K.PutCA.IOERR LNK - .DA K.PutCA.IOERR DSOCK - .DA K.PutCA.SSOCK - .DA K.PutCA.FIFO -*-------------------------------------- -K.PutCA.REG lda K.PutC.Node - ldy K.PutC.Char - jmp K.FWriteAY -*-------------------------------------- -K.PutCA.CDEV -*-------------------------------------- -K.PutCA.SSOCK -*-------------------------------------- -K.PutCA.FIFO ldy #S.NODE.FIFO.S - lda (pNode),y - beq .9 Remote PS did not opened yet the pipe - cmp #S.NODE.FIFO.S.Closed - beq .99 Remote PS closed the Pipe - - ldy #S.NODE.FIFO.hMem - lda (pNode),y - jsr K.GetMemPtrA - >STYA .1+2 - - ldy #S.NODE.FIFO.Head - lda (pNode),y - inc - iny - cmp (pNode),y - beq .9 FIFO is full - dey - sta (pNode),y - tay - lda K.PutC.Char -.1 sta $ffff,y - clc - rts - -.9 lda #MLI.ERR.VOLFULL - sec - rts - -.99 lda #MLI.ERR.EOF - sec - rts -*-------------------------------------- -K.PutCA.IOERR lda #MLI.ERR.IO - sec - rts -*-------------------------------------- -K.PutC.Char .BS 1 -K.PutC.Node .BS 1 -*-------------------------------------- -K.FGetC -*-------------------------------------- -K.FPutSYA -*-------------------------------------- -K.FGetS *-------------------------------------- PRINTDEC lda PADLEN any Len format ? beq .1 no @@ -630,11 +409,11 @@ PRINTDEC lda PADLEN any Len format ? bpl .5 pha yes, save whatever we have to print.... lda #'-' - jsr K.COutA + jsr K.PutCA stz SIGN reset flag for next char... pla -.5 jsr K.COutA +.5 jsr K.PutCA bcs .9 .6 inx @@ -644,6 +423,89 @@ PRINTDEC lda PADLEN any Len format ? clc .9 rts *-------------------------------------- +PrintF.N >PULLA +PrintF.N.1 and #$0F + bra PrintF.NN.2 + +PrintF.NN >PULLA +PrintF.NN.1 lsr + lsr + lsr + lsr + +PrintF.NN.2 ora #$30 + cmp #$3A + bcc .1 + adc #6 +.1 jmp K.PutCA +*-------------------------------------- +PrintF.S ldy #$ff CSTR + .HS 2C bit abs +PrintF.SS ldy #$00 PSTR + + >PULLW ZPPtr2 + + lda (ZPPtr2) if CSTR:last char=0, if PSTR:len=0 + beq .8 + + sty .1+1 + +.1 lda #$ff Self Modified + bne .11 CSTR + + tya PSTR + cmp (ZPPtr2) len check + beq .2 + +.11 iny + + lda (ZPPtr2),y + beq .2 + + jsr K.PutCA + bcs .9 + + lda PADLEN + beq .1 + + cpy PADLEN + bne .1 + rts + +.2 lda PADLEN + beq .8 + +.3 lda PADCHAR + jsr K.PutCA + bcs .9 + iny + cpy PADLEN + bne .3 + +.8 clc +.9 rts +*-------------------------------------- +CIO.GetCharAtPtr1Y + lda #$ff Self Modified PSTR/CSTR + bne .1 + + lda (ZPPtr1),y CSTR + beq .9 + iny advance to next char... + bne .9 + inc ZPPtr1+1 Allow >256 CStrings + rts + + +.1 tya PSTR + cmp (ZPPtr1) + beq .9 + iny + lda (ZPPtr1),y NZ + +.9 clc no error, but end of string + rts +*-------------------------------------- TYPES .AS "-dbclssp" ACCESS .AS "rwxrwxrwx" SIGN .BS 1 diff --git a/SYS/KERNEL.S.CNV.txt b/SYS/KERNEL.S.CNV.txt index f10c0598..a31ada79 100644 --- a/SYS/KERNEL.S.CNV.txt +++ b/SYS/KERNEL.S.CNV.txt @@ -17,10 +17,7 @@ HEX2DEC ldx #4 ldx #32 let's roll 32 bits -.2 asl HEXBUF - rol HEXBUF+1 - rol HEXBUF+2 - rol HEXBUF+3 +.2 jsr HEXBUF.ROL ldy #4 @@ -75,19 +72,13 @@ DEC2HEX stz HEXBUF lda HEXBUF pha - asl HEXBUF HEXBUF * 2 -> HEXBUF - rol HEXBUF+1 - rol HEXBUF+2 - rol HEXBUF+3 + jsr HEXBUF.ROL HEXBUF * 2 -> HEXBUF * bcs .9 overflow!!! - asl HEXBUF HEXBUF * 4 -> HEXBUF - rol HEXBUF+1 - rol HEXBUF+2 - rol HEXBUF+3 + jsr HEXBUF.ROL HEXBUF * 4 -> HEXBUF * bcs .9 overflow!!! - pla HEXBUF * 4 + HEXBUF -> HEXBUF + pla HEXBUF * 4 + HEXBUF -> HEXBUF adc HEXBUF sta HEXBUF pla @@ -101,10 +92,7 @@ DEC2HEX stz HEXBUF sta HEXBUF+3 * bcs .99 overflow!!! - asl HEXBUF HEXBUF * 10 -> HEXBUF - rol HEXBUF+1 - rol HEXBUF+2 - rol HEXBUF+3 + jsr HEXBUF.ROL HEXBUF * 10 -> HEXBUF * bcs .99 overflow!!! inx @@ -130,6 +118,12 @@ DEC2HEX stz HEXBUF * pla *.99 rts *-------------------------------------- +HEXBUF.ROL asl HEXBUF + rol HEXBUF+1 + rol HEXBUF+2 + rol HEXBUF+3 + rts +*-------------------------------------- HEXBUF .BS 4 32 bits max BCDBUF .BS 5 5, enough to handle 10 digits (32bits) ASCBUF .BS 12 LEN + sign + 10 digits ($FFFFFFFF=4.294.967.295) diff --git a/SYS/KERNEL.S.D01.txt b/SYS/KERNEL.S.D01.txt index 3f81d2ab..b8b5d616 100644 --- a/SYS/KERNEL.S.D01.txt +++ b/SYS/KERNEL.S.D01.txt @@ -5,31 +5,52 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -DevMgr.Count .EQ 2 DevMgr.SYS.BASL0 .EQ $800 *-------------------------------------- -DevMgr.NUL.Code .DA DevMgr.Unsup OPEN - .DA DevMgr.Unsup GETEVENT - .DA .8 COUT - .DA DevMgr.Unsup CLOSE - .DA DevMgr.Unsup GETINFO - .DA DevMgr.Unsup IRQ - .DA DevMgr.Unsup SELECT +DevMgr.NUL.Code cld + jmp (.1,x) +.1 .DA DevMgr.BADCALL STATUS + .DA DevMgr.BADCALL READBLOCK + .DA DevMgr.BADCALL WRITEBLOCK + .DA DevMgr.BADCALL FORMAT + .DA DevMgr.BADCALL CONTROL + .DA DevMgr.BADCALL INIT + .DA DevMgr.BADCALL OPEN + .DA DevMgr.BADCALL CLOSE + .DA DevMgr.BADCALL READ + .DA .8 WRITE .8 clc rts *-------------------------------------- -DevMgr.SYS.Code .DA DevMgr.SYS.Open - .DA DevMgr.SYS.GetEvent - .DA DevMgr.SYS.COut - .DA DevMgr.Unsup CLOSE - .DA DevMgr.Unsup GETINFO - .DA DevMgr.Unsup IRQ - .DA DevMgr.SYS.Select +DevMgr.SYS.Code cld + jmp (.1,x) +.1 .DA DevMgr.SYS.Status + .DA DevMgr.BADCALL READBLOCK + .DA DevMgr.BADCALL WRITEBLOCK + .DA DevMgr.BADCALL FORMAT + .DA DevMgr.SYS.Control + .DA DevMgr.BADCALL INIT + .DA DevMgr.SYS.Open + .DA DevMgr.BADCALL CLOSE + .DA DevMgr.SYS.Read + .DA DevMgr.SYS.Write *-------------------------------------- -DevMgr.Unsup lda #DEVMGR.ERRUNSUP +DevMgr.BADCALL lda #MLI.ERR.BADCALL sec rts *-------------------------------------- +DevMgr.SYS.Status + >LDYA DevMgr.SYS.Stat + clc + rts +*-------------------------------------- +DevMgr.SYS.Stat .DA #S.DEV.S.WRITE+S.DEV.S.READ + .DA #0,#0,#0 + >PSTR "A2osX SYS Screen" + .DA #0 + .DA #0 + .DA 0900 +*-------------------------------------- DevMgr.SYS.Open stz DevMgr.SYS.CPULOADI stz DevMgr.SYS.CH stz DevMgr.SYS.CV @@ -53,9 +74,9 @@ DevMgr.SYS.Open stz DevMgr.SYS.CPULOADI jsr DevMgr.SYS.Home lda #1 - sta A2osX.SCRNDEVS+1 fall in SELECT + sta A2osX.SCRNDEVS+1 fall in Control *-------------------------------------- -DevMgr.SYS.Select +DevMgr.SYS.Control sta SETTEXT sta SETALTCHAR sta SET80DISP @@ -66,8 +87,7 @@ DevMgr.SYS.Select clc rts *-------------------------------------- -DevMgr.SYS.GetEvent - lda A2osX.ASCREEN +DevMgr.SYS.Read lda A2osX.ASCREEN cmp #2 is SYS active? bne .9 @@ -102,7 +122,8 @@ DevMgr.SYS.GetEvent sec rts *-------------------------------------- -DevMgr.SYS.COut phx +DevMgr.SYS.Write + phx phy cmp #' ' bcc .1 @@ -141,8 +162,6 @@ DevMgr.SYS.FSOut *-------------------------------------- DevMgr.SYS.CROut jsr DevMgr.SYS.ClrEOL - stz DevMgr.SYS.CH - rts *-------------------------------------- DevMgr.SYS.LF1 stz DevMgr.SYS.CH DevMgr.SYS.LF ldx DevMgr.SYS.CV diff --git a/SYS/KERNEL.S.DAT.txt b/SYS/KERNEL.S.DAT.txt index 6d9eef24..b4d0cc58 100644 --- a/SYS/KERNEL.S.DAT.txt +++ b/SYS/KERNEL.S.DAT.txt @@ -8,9 +8,15 @@ AUTO 6 DevMgr.Stat .DA DevMgr.LoMem Lomem DevMgr.Free .DA DevMgr.LoMem Free .DA DevMgr.HiMem -DevMgr.LastDevID .DA #DevMgr.Count-1 -TSKMGR.SIZE .BS 1 -TSKMGR.LASTID .BS 1 +DevMgr.Count .DA #2 NUL,SYS +*-------------------------------------- +EvtMgr.VBLState .BS 1 +EvtMgr.10TH.CNT .BS 1 +EvtMgr.HZ.CNT .BS 1 +EvtMgr.Count .BS 1 +*-------------------------------------- +TskMgr.Count .DA #1 One Slot Busy (Kernel PS=0) +TskMgr.LastID .DA #0 *-------------------------------------- ENV.DRV >PSTR "DRV" ENV.LIB >PSTR "LIB" diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index 5505b80b..6d5fdb92 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -13,29 +13,27 @@ AUTO 6 * Y,A = DEVSLOT * note: X Unmodified *\-------------------------------------- -K.GetDevByIDA cmp DevMgr.LastDevID - beq .1 +K.GetDevByIDA cmp DevMgr.Count bcs K.GetDevDNF -.1 pha save ID + pha save ID asl asl asl - asl adc #DevMgr.Table tay + pla php lsr lsr lsr - lsr plp adc /DevMgr.Table rts CC */-------------------------------------- -* #GetDevIDByNameYA +* #GetDevByNameYA * ##IN: * Y,A = Ptr to device name (PStr) * ##OUT: @@ -44,71 +42,93 @@ K.GetDevByIDA cmp DevMgr.LastDevID * Y,A = DEVSLOT *\-------------------------------------- K.GetDevByNameYA - >STYA ZPQuickPtr1 - >LDYAI DevMgr.Table+S.DEV.NAME - >STYA ZPQuickPtr2 + >STYA ZPPtr1 + >LDYAI DevMgr.Table+S.DEV.F + >STYA ZPPtr2 ldx #0 -.1 lda (ZPQuickPtr1) - cmp (ZPQuickPtr2) +.1 lda (ZPPtr2) + and #S.DEV.F.LEN + cmp (ZPPtr1) bne .3 tay -.2 lda (ZPQuickPtr1),y - cmp (ZPQuickPtr2),y +.2 lda (ZPPtr1),y + cmp (ZPPtr2),y bne .3 dey bne .2 - lda ZPQuickPtr2 + lda ZPPtr2 sec - sbc #S.DEV.NAME + sbc #S.DEV.F tay - lda ZPQuickPtr2+1 - sbc /S.DEV.NAME + lda ZPPtr2+1 + sbc /S.DEV.F clc rts -.3 lda ZPQuickPtr2 +.3 lda ZPPtr2 clc adc #S.DEV - sta ZPQuickPtr2 + sta ZPPtr2 bcc .4 - inc ZPQuickPtr2+1 + inc ZPPtr2+1 -.4 cpx DevMgr.LastDevID - inx - bcc .1 +.4 inx + cpx DevMgr.Count + bne .1 -K.GetDevDNF lda #DEVMGR.ERRDNF +K.GetDevDNF lda #MLI.ERR.NODEV CS from cpx/beq rts */-------------------------------------- -* #GetDevInfoA +* #GetDevStatusA * ##IN: * A = DevID * ##OUT: * CC = OK, CS = ERROR * Y,A = Ptr to S.DEVINFO *\-------------------------------------- -K.GetDevInfoA jsr K.GetDevByIDA +K.GetDevStatusA jsr K.GetDevByIDA bcs K.GetDevDNF - >STYA ZPQuickPtr1 - ldx #DEVMGR.GETINFO - jmp (ZPQuickPtr1) + >STYA ZPPtr1 + ldx #DEVMGR.STATUS + jmp (ZPPtr1) */-------------------------------------- * #MkNodYA -* return a S.FILE from a given Device +* return a S.FILE for a given Device NAME * ##IN: * Y,A=DevName * ##OUT: * CC = OK, CS = ERROR * A = hFILE *\-------------------------------------- -K.MkNodYA jsr K.GetDevByNameYA Ptr1=NAME,Ptr2=DEVSLOT +K.MkNodYA jsr K.GetDevByNameYA Ptr1=NAME + bcs .9 + >STYA pDev + stx .1+1 + + ldy #S.DEV.S + lda (pDev),y + bit #S.DEV.S.BLOCK + bne .99 + + lda (pDev) + sta .2+1 + sta .4+1 + + ldy #1 + lda (pDev),y + sta .3+1 + sta .4+2 + + txa Pass DEV.ID to OPEN + ldx #DEVMGR.OPEN + jsr .4 bcs .9 >PUSHWI S.NODE.DEV @@ -116,27 +136,43 @@ K.MkNodYA jsr K.GetDevByNameYA Ptr1=NAME,Ptr2=DEVSLOT jsr K.GetMem bcs .9 - >STYA ZPQuickPtr3 Ptr3=S.NODE - - ldy #S.DEV.DEVID - lda (ZPQuickPtr2),y - pha - - iny #S.DEV.F - lda (ZPQuickPtr2),y - asl CS if Block device + >STYA ZPPtr3 Ptr3=S.NODE ldy #S.NODE.T lda #S.NODE.T.CDEV - adc #0 add CS if blok - sta (ZPQuickPtr3),y + sta (ZPPtr3),y iny #S.NODE.DEV.ID - pla - sta (ZPQuickPtr3),y +.1 lda #$ff Self Modified + sta (ZPPtr3),y + + iny #S.NODE.DEV.JMP +.2 lda #$ff + sta (ZPPtr3),y + + iny ##S.NODE.DEV.JMP+1 +.3 lda #$ff + sta (ZPPtr3),y + txa clc .9 rts + +.99 lda #MLI.ERR.IO + sec + rts +.4 jmp $ffff +*/-------------------------------------- +* #MkNodA +* return a S.FILE for a given Socket +* ##IN: +* A=hSocket +* ##OUT: +* CC = OK, CS = ERROR +* A = hFILE +*\-------------------------------------- +K.MkNodA sec + rts */-------------------------------------- * #MKFIFO * return a S.FILE to a new FIFO @@ -146,7 +182,7 @@ K.MkNodYA jsr K.GetDevByNameYA Ptr1=NAME,Ptr2=DEVSLOT * A = hFILE *\-------------------------------------- K.MKFIFO >PUSHWI 256 - >PUSHBI S.MEM.F.INIT0 + >PUSHBI 0 jsr K.GetMem bcs .99 @@ -158,15 +194,15 @@ K.MKFIFO >PUSHWI 256 bcs .9 - >STYA ZPQuickPtr1 + >STYA ZPPtr1 ldy #S.NODE.T lda #S.NODE.T.FIFO - sta (ZPQuickPtr1),y + sta (ZPPtr1),y iny S.NODE.FIFO.hMem pla - sta (ZPQuickPtr1),y + sta (ZPPtr1),y txa clc rts diff --git a/SYS/KERNEL.S.DIR.txt b/SYS/KERNEL.S.DIR.txt index 77fbb2ec..c05ff97e 100644 --- a/SYS/KERNEL.S.DIR.txt +++ b/SYS/KERNEL.S.DIR.txt @@ -15,7 +15,7 @@ AUTO 6 * A = EC *\-------------------------------------- K.OpenDirYA jsr PFT.CheckPathYA - >STYA ZPQuickPtr2 + >STYA ZPPtr2 >STYA MLICALL.PARAMS+1 For GETFILEINFO,MLIOPEN >PUSHWI S.NODE.DIR @@ -23,14 +23,14 @@ K.OpenDirYA jsr PFT.CheckPathYA jsr K.GetMem bcs .9 - >STYA ZPQuickPtr1 + >STYA ZPPtr1 stx K.ReadDirA.hDir - lda (ZPQuickPtr2) + lda (ZPPtr2) cmp #1 One char ? bne .7 No, Go open dir.... tay Y=1 - lda (ZPQuickPtr2),y + lda (ZPPtr2),y cmp #'/' Root required ? beq .8 Yes, Go for ONLINE Call (S.DIR.PRODOS.REF=0) @@ -44,22 +44,16 @@ K.OpenDirYA jsr PFT.CheckPathYA cmp #$0F Directory ? bne .98 - >PUSHWI 1024 get a ProDOS IOBUF - >PUSHBI S.MEM.F.ALIGN+S.MEM.F.NOMOVE - jsr K.GetMem + jsr FILE.SetIOBUF + bcs .98 - >STYA MLICALL.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call - txa - ldy #S.NODE.DIR.IOBUF - sta (ZPQuickPtr1),y - >MLICALL MLIOPEN bcs .98 lda MLICALL.PARAMS+5 get ref_num ldy #S.NODE.DIR.REF - sta (ZPQuickPtr1),y + sta (ZPPtr1),y .8 lda K.ReadDirA.hDir clc @@ -95,10 +89,10 @@ K.ReadDirA.EC .BS 2 K.ReadDirA jsr PFT.CheckNodeA sta K.ReadDirA.hDir jsr K.GetMemPtrA - >STYA ZPQuickPtr1 + >STYA ZPPtr1 ldy #S.NODE.DIR.REF - lda (ZPQuickPtr1),y + lda (ZPPtr1),y beq K.ReadDirA.ROOT jmp K.ReadDirA.DIR @@ -108,14 +102,14 @@ K.ReadDirA.NoMore rts *-------------------------------------- K.ReadDirA.ROOT ldy #S.NODE.DIR.FC did we already returned something ? - lda (ZPQuickPtr1),y + lda (ZPPtr1),y bne K.ReadDirA.NoMore stz MLICALL.PARAMS+1 All Volumes >LDYAI KrnBuf256 >STYA MLICALL.PARAMS+2 - >STYA ZPQuickPtr2 + >STYA ZPPtr2 >MLICALL MLIONLINE bcc .10 @@ -131,7 +125,7 @@ K.ReadDirA.ROOT ldy #S.NODE.DIR.FC did we already returned something ? ldy #0 -.1 lda (ZPQuickPtr2),y +.1 lda (ZPPtr2),y and #$0F beq .2 @@ -154,7 +148,7 @@ K.ReadDirA.ROOT ldy #S.NODE.DIR.FC did we already returned something ? jsr K.ReadDirA.GetBuf bcs .99 -.3 lda (ZPQuickPtr2) +.3 lda (ZPPtr2) and #$0F beq .88 @@ -166,7 +160,7 @@ K.ReadDirA.ROOT ldy #S.NODE.DIR.FC did we already returned something ? sta KrnOut256+1 ldy #1 -.4 lda (ZPQuickPtr2),y +.4 lda (ZPPtr2),y sta KrnOut256+1,y jsr K.ReadDirA.AddToBuf iny @@ -175,7 +169,7 @@ K.ReadDirA.ROOT ldy #S.NODE.DIR.FC did we already returned something ? jsr K.ReadDirA.ClrStat - lda (ZPQuickPtr2) + lda (ZPPtr2) asl DRIVE in Carry pha @@ -205,21 +199,21 @@ K.ReadDirA.ROOT ldy #S.NODE.DIR.FC did we already returned something ? .80 jsr K.ReadDirA.ADDSTAT -.88 lda ZPQuickPtr2 +.88 lda ZPPtr2 clc adc #16 - sta ZPQuickPtr2 + sta ZPPtr2 bcc .89 - inc ZPQuickPtr2+1 + inc ZPPtr2+1 .89 dec K.ReadDirA.EC bne .3 * lda #0 done by S.MEM.F.INIT0 -* sta (ZPQuickPtr4) Ending 0 +* sta (ZPPtr4) Ending 0 ldy #S.NODE.DIR.FC lda #16 - sta (ZPQuickPtr1),y Flag that we returned somthing for next time + sta (ZPPtr1),y Flag that we returned somthing for next time lda K.ReadDirA.hDIRENT tax @@ -239,13 +233,13 @@ K.ReadDirA.DIR sta MLICALL.PARAMS+1 A=#S.DIR.PRODOS.REF tya * clc CC from K.GetMem adc #4 Skip 4 bytes linked list - sta ZPQuickPtr2 PTR to Buffer for PASS #1 - sta ZPQuickPtr3 PTR to Buffer for PASS #2 + sta ZPPtr2 PTR to Buffer for PASS #1 + sta ZPPtr3 PTR to Buffer for PASS #2 pla adc #0 - sta ZPQuickPtr2+1 PTR to Buffer for PASS #1 - sta ZPQuickPtr3+1 PTR to Buffer for PASS #2 + sta ZPPtr2+1 PTR to Buffer for PASS #1 + sta ZPPtr3+1 PTR to Buffer for PASS #2 >LDYAI 512 >STYA MLICALL.PARAMS+4 @@ -253,13 +247,13 @@ K.ReadDirA.DIR sta MLICALL.PARAMS+1 A=#S.DIR.PRODOS.REF bcs .98 ldy #S.NODE.DIR.EL Check if first run.... - lda (ZPQuickPtr1),y + lda (ZPPtr1),y bne .2 no, we have all we need.... ldy #$1f+3 ldx #3 -.1 lda (ZPQuickPtr2),y Get K.ReadDirA.EL.... From Block +.1 lda (ZPPtr2),y Get K.ReadDirA.EL.... From Block sta K.ReadDirA.EL,x dey dex @@ -277,7 +271,7 @@ K.ReadDirA.DIR sta MLICALL.PARAMS+1 A=#S.DIR.PRODOS.REF .2 ldy #S.NODE.DIR.EL+3 ldx #3 -.3 lda (ZPQuickPtr1),y get this session parameters from S.DIR +.3 lda (ZPPtr1),y get this session parameters from S.DIR sta K.ReadDirA.EL,x dey dex @@ -304,7 +298,7 @@ K.ReadDirA.DIR sta MLICALL.PARAMS+1 A=#S.DIR.PRODOS.REF sta K.ReadDirA.BufSize stz K.ReadDirA.BufSize+1 -K.ReadDirA.DIR1 lda (ZPQuickPtr2) X = EntryCount In This Block +K.ReadDirA.DIR1 lda (ZPPtr2) X = EntryCount In This Block beq .7 Free slot....goto next and #$F0 get storage_type @@ -314,7 +308,7 @@ K.ReadDirA.DIR1 lda (ZPQuickPtr2) X = EntryCount In This Block cmp #$E0 directory header ? beq .2 - lda (ZPQuickPtr2) regular DIR or File, get LEN + lda (ZPPtr2) regular DIR or File, get LEN and #$F compute filename len sec add "#" + S.STAT @@ -338,24 +332,24 @@ K.ReadDirA.DIR1 lda (ZPQuickPtr2) X = EntryCount In This Block iny bra K.ReadDirA.DIR2 we reached last entry in whole DIR -.7 lda ZPQuickPtr2 +.7 lda ZPPtr2 clc adc K.ReadDirA.EL - sta ZPQuickPtr2 + sta ZPPtr2 bcc .8 - inc ZPQuickPtr2+1 + inc ZPPtr2+1 .8 dec K.ReadDirA.ECIB bne K.ReadDirA.DIR1 -* pass #2 Fill Buffer...(ZPQuickPtr1 & Ptr2 can now be trashed) +* pass #2 Fill Buffer...(ZPPtr1 & Ptr2 can now be trashed) K.ReadDirA.DIR2 jsr K.ReadDirA.GetBuf bcs .9 lda K.ReadDirA.EPB sta K.ReadDirA.ECIB -.1 lda (ZPQuickPtr3) +.1 lda (ZPPtr3) beq .7 Empty slot, skip and #$F0 @@ -373,7 +367,7 @@ K.ReadDirA.DIR2 jsr K.ReadDirA.GetBuf .3 jsr K.ReadDirA.AddFNToBuf jsr K.ReadDirA.ClrStat - lda (ZPQuickPtr3) + lda (ZPPtr3) and #$F0 cmp #$D0 Directory ? bne .5 @@ -396,12 +390,12 @@ K.ReadDirA.DIR2 jsr K.ReadDirA.GetBuf .7 dec K.ReadDirA.ECIB 0! no more file in block beq .8 - lda ZPQuickPtr3 + lda ZPPtr3 clc adc K.ReadDirA.EL - sta ZPQuickPtr3 + sta ZPPtr3 bcc .1 - inc ZPQuickPtr3+1 + inc ZPPtr3+1 bra .1 .9 jsr K.ReadDirA.CLN @@ -410,17 +404,17 @@ K.ReadDirA.DIR2 jsr K.ReadDirA.GetBuf .8 * lda #0 S.MEM.F.INIT0 already did this -* sta (ZPQuickPtr4) Ending 0 +* sta (ZPPtr4) Ending 0 - lda K.ReadDirA.hDir Restore ZPQuickPtr1 trashed by STR API calls + lda K.ReadDirA.hDir Restore ZPPtr1 trashed by STR API calls jsr K.GetMemPtrA - >STYA ZPQuickPtr1 + >STYA ZPPtr1 ldx #3 ldy #S.NODE.DIR.EL+3 .81 lda K.ReadDirA.EL,x Store back this session prameters to S.DIR - sta (ZPQuickPtr1),y + sta (ZPPtr1),y dey dex bpl .81 @@ -443,7 +437,7 @@ K.ReadDirA.GetBuf jsr K.GetMem bcs .9 stx K.ReadDirA.hDIRENT - >STYA ZPQuickPtr4 + >STYA ZPPtr4 .9 rts *-------------------------------------- K.ReadDirA.ADD. ldx #1 filename="1." @@ -461,10 +455,10 @@ K.ReadDirA.ADD.. jsr K.ReadDirA.ClrStat * ldy #$25 total_blocks -* lda (ZPQuickPtr3),y +* lda (ZPPtr3),y * sta KrnSTAT+S.STAT.BLOCKS * iny -* lda (ZPQuickPtr3),y +* lda (ZPPtr3),y * sta KrnSTAT+S.STAT.BLOCKS+1 *-------------------------------------- K.ReadDirA.ADDD lda #$0F @@ -480,7 +474,7 @@ K.ReadDirA.ADDF lda /S.STAT.MODE.REG ldx #ADDF.DST-ADDF.SRC .1 ldy ADDF.SRC-1,x - lda (ZPQuickPtr3),y + lda (ZPPtr3),y ldy ADDF.DST-1,x sta KrnSTAT,y dex @@ -488,7 +482,7 @@ K.ReadDirA.ADDF lda /S.STAT.MODE.REG *-------------------------------------- K.ReadDirA.AddAccess ldy #$1E ProDOS Access - lda (ZPQuickPtr3),y + lda (ZPPtr3),y ldx #0 bit #$01 ProDOS R @@ -517,16 +511,16 @@ K.ReadDirA.AddStat ldy #S.STAT-1 .1 lda KrnSTAT,y - sta (ZPQuickPtr4),y + sta (ZPPtr4),y dey bpl .1 - lda ZPQuickPtr4 + lda ZPPtr4 clc adc #S.STAT - sta ZPQuickPtr4 + sta ZPPtr4 bcc .8 - inc ZPQuickPtr4+1 + inc ZPPtr4+1 .8 rts *-------------------------------------- K.ReadDirA.ClrStat @@ -538,14 +532,14 @@ K.ReadDirA.ClrStat rts *-------------------------------------- K.ReadDirA.AddFNToBuf - lda (ZPQuickPtr3) + lda (ZPPtr3) and #$0F get filename len tax jsr K.ReadDirA.AddToBuf ldy #1 -.1 lda (ZPQuickPtr3),y +.1 lda (ZPPtr3),y jsr K.ReadDirA.AddToBuf iny dex @@ -553,17 +547,17 @@ K.ReadDirA.AddFNToBuf rts *-------------------------------------- K.ReadDirA.AddToBuf - sta (ZPQuickPtr4) - inc ZPQuickPtr4 + sta (ZPPtr4) + inc ZPPtr4 bne .8 - inc ZPQuickPtr4+1 + inc ZPPtr4+1 .8 rts *-------------------------------------- K.ReadDirA.ConvertTime clc - adc ZPQuickPtr3 + adc ZPPtr3 tay - lda ZPQuickPtr3+1 + lda ZPPtr3+1 adc #0 >PUSHYA jmp K.PTime2Time Will destroy Ptr1 & Ptr2 !!!! @@ -579,24 +573,28 @@ ADDF.DST .DA #S.STAT.P.TYPE,#S.STAT.BLOCKS,#S.STAT.BLOCKS+1 * ##Out: * none, always succeed. *\------------------------------------- -K.CloseDirA jsr PFT.CheckNodeA - sta K.ReadDirA.hDir - jsr K.GetMemPtrA - >STYA ZPQuickPtr1 +K.CloseDirA .EQ K.FCloseA + +* jsr PFT.CheckNodeA +* sta K.ReadDirA.hDir +* jsr K.GetMemPtrA +* >STYA ZPPtr1 -K.CloseDirA.1 ldy #S.NODE.DIR.REF - lda (ZPQuickPtr1),y - beq .1 - sta MLICALL.PARAMS+1 - >MLICALL MLICLOSE +K.CloseDirA.1 .EQ K.FCloseA.1 -.1 ldy #S.NODE.DIR.IOBUF - lda (ZPQuickPtr1),y - beq .2 - jsr K.FreeMemA +* ldy #S.NODE.DIR.REF +* lda (ZPPtr1),y +* beq .1 +* sta MLICALL.PARAMS+1 +* >MLICALL MLICLOSE -.2 ldaK.ReadDirA.hDir - jmp K.FreeMemA +*.1 ldy #S.NODE.DIR.IOBUF +* lda (ZPPtr1),y +* beq .2 +* jsr K.FreeMemA +* +*.2 lda K.ReadDirA.hDir +* jmp K.FreeMemA */------------------------------------- * #MKDirYA * ##In: diff --git a/SYS/KERNEL.S.DRV.txt b/SYS/KERNEL.S.DRV.txt index 8e82137e..5299a2fb 100644 --- a/SYS/KERNEL.S.DRV.txt +++ b/SYS/KERNEL.S.DRV.txt @@ -32,16 +32,16 @@ K.LoadDrvYA >STYA K.LoadDrv.CmdArray stx K.LoadDrv.hMem >LDYA K.LoadDrv.CmdArray Advance to ARG[1] - >STYA ZPQuickPtr1 + >STYA ZPPtr1 - lda ZPQuickPtr1 + lda ZPPtr1 sec - adc (ZPQuickPtr1) - sta ZPQuickPtr1 + adc (ZPPtr1) + sta ZPPtr1 bcc .1 - inc ZPQuickPtr1+1 + inc ZPPtr1+1 -.1 >LDYA ZPQuickPtr1 +.1 >LDYA ZPPtr1 jsr pDrvJmp call Dev.Detect @@ -50,10 +50,6 @@ K.LoadDrvYA >STYA K.LoadDrv.CmdArray jsr BIN.InstallDRV bcs .97 - ldy #S.DEV.F - lda (pDev),y - ora #S.DEV.F.INUSE - sta (pDev),y jsr .97 Cleanup... diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index abc40878..2ec1ccee 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -14,7 +14,7 @@ AUTO 6 *\-------------------------------------- K.ExpandPStrYA stz K.ExpandPStr.hPStr Reset Intermediate string... -.11 >STYA ZPQuickPtr2 +.11 >STYA ZPPtr2 stz KrnBuf256 init Expanded String len=0 stz K.ExpandPStr.bFound No var found yet @@ -25,11 +25,11 @@ K.ExpandPStrYA stz K.ExpandPStr.hPStr Reset Intermediate string... .10 stz K.ExpandPStr.Start .1 tya - cmp (ZPQuickPtr2) End of PSTR? + cmp (ZPPtr2) End of PSTR? beq .6 iny - lda (ZPQuickPtr2),y + lda (ZPPtr2),y cmp #''' bne .21 @@ -111,15 +111,15 @@ K.ExpandPStr.AV lda K.ExpandPStr.End inx sta KrnBuf256,x - stx ZPQuickPtr1 Make Ptr1 -> Var NAME + stx ZPPtr1 Make Ptr1 -> Var NAME lda /KrnBuf256 - sta ZPQuickPtr1+1 + sta ZPPtr1+1 ldy K.ExpandPStr.Start .1 iny inx - lda (ZPQuickPtr2),y + lda (ZPPtr2),y sta KrnBuf256,x cpy K.ExpandPStr.End bne .1 @@ -132,19 +132,19 @@ K.ExpandPStr.AV lda K.ExpandPStr.End jsr ENV.NextEnvPtr3 Skip NAME -.2 lda (ZPQuickPtr3) +.2 lda (ZPPtr3) beq .9 in case CheckSysVarPtr1 returned a NUL string ldy #0 ldx KrnBuf256 .3 iny - lda (ZPQuickPtr3),y + lda (ZPPtr3),y inx sta KrnBuf256,x tya - cmp (ZPQuickPtr3) last char? + cmp (ZPPtr3) last char? bne .3 stx KrnBuf256 @@ -179,14 +179,14 @@ K.ExpandPStr.hPStr .BS 1 * Y,A = PTR to String NAME=VALUE (PSTR) * ##Out: *\-------------------------------------- -K.PutEnvYA >STYA ZPQuickPtr1 NAME=VALUE +K.PutEnvYA >STYA ZPPtr1 NAME=VALUE - lda (ZPQuickPtr1) + lda (ZPPtr1) beq .9 sta KrnBuf256 tay -.1 lda (ZPQuickPtr1),y copy PSTR to KrnBuf256 +.1 lda (ZPPtr1),y copy PSTR to KrnBuf256 sta KrnBuf256,y dey bne .1 @@ -216,12 +216,12 @@ K.PutEnvYA >STYA ZPQuickPtr1 NAME=VALUE sbc KrnBuf256 VALUE len sta KrnBuf256,y save it at "=" POS - stz ZPQuickPtr1 #KrnBuf256 - sty ZPQuickPtr2 + stz ZPPtr1 #KrnBuf256 + sty ZPPtr2 lda /KrnBuf256 - sta ZPQuickPtr1+1 - sta ZPQuickPtr2+1 + sta ZPPtr1+1 + sta ZPPtr2+1 bra K.SetEnvPtr1Ptr2 @@ -239,59 +239,59 @@ K.SetEnv jsr PullPtr1Ptr2 Ptr1=NAME,Ptr2=VALUE K.SetEnvPtr1Ptr2 jsr S.UnsetEnvPtr1 - jsr ENV.InitEnvPtr3 ZPQuickPtr3 -> Env + jsr ENV.InitEnvPtr3 ZPPtr3 -> Env - lda ZPQuickPtr3 Compute ENV UPPER LIMIT in Ptr4 + lda ZPPtr3 Compute ENV UPPER LIMIT in Ptr4 clc adc #K.ENV.SIZE - sta ZPQuickPtr4 + sta ZPPtr4 - lda ZPQuickPtr3+1 + lda ZPPtr3+1 adc /K.ENV.SIZE - sta ZPQuickPtr4+1 + sta ZPPtr4+1 - ldy ZPQuickPtr3+1 - lda ZPQuickPtr3 Compute New Env Upper limit in A,Y + ldy ZPPtr3+1 + lda ZPPtr3 Compute New Env Upper limit in A,Y sec - adc (ZPQuickPtr1) add NAME len +1 + adc (ZPPtr1) add NAME len +1 bcc .1 iny .1 sec - adc (ZPQuickPtr2) add VALUE len +1 + adc (ZPPtr2) add VALUE len +1 bcc .2 iny -.2 cmp ZPQuickPtr4 GE than hMem Upper limit ? +.2 cmp ZPPtr4 GE than hMem Upper limit ? tya - sbc ZPQuickPtr4+1 + sbc ZPPtr4+1 bcs .99 -.3 lda (ZPQuickPtr3) Scan until ending 0... +.3 lda (ZPPtr3) Scan until ending 0... beq .4 - inc ZPQuickPtr3 + inc ZPPtr3 bne .3 - inc ZPQuickPtr3+1 + inc ZPPtr3+1 bne .3 -.4 lda (ZPQuickPtr1) - sta (ZPQuickPtr3) +.4 lda (ZPPtr1) + sta (ZPPtr3) tay -.5 lda (ZPQuickPtr1),y - sta (ZPQuickPtr3),y +.5 lda (ZPPtr1),y + sta (ZPPtr3),y dey bne .5 jsr ENV.NextEnvPtr3 - lda (ZPQuickPtr2) - sta (ZPQuickPtr3) + lda (ZPPtr2) + sta (ZPPtr3) tay -.6 lda (ZPQuickPtr2),y - sta (ZPQuickPtr3),y +.6 lda (ZPPtr2),y + sta (ZPPtr3),y dey bne .6 @@ -299,7 +299,7 @@ K.SetEnvPtr1Ptr2 .8 lda #0 - sta (ZPQuickPtr3) + sta (ZPPtr3) clc rts @@ -314,14 +314,14 @@ K.SetEnvPtr1Ptr2 * CC : Y,A = PTR to VALUE (PSTR) * CS : not found *\-------------------------------------- -K.GetEnvYA >STYA ZPQuickPtr1 +K.GetEnvYA >STYA ZPPtr1 jsr ENV.CheckSysVarPtr1 bcc .8 jsr ENV.FindVarPtr1 bcs .9 jsr ENV.NextEnvPtr3 Skip NAME - >LDYA ZPQuickPtr3 + >LDYA ZPPtr3 clc just in case ADC in NextEnvPtr1 disturb CC .8 rts @@ -333,7 +333,7 @@ K.GetEnvYA >STYA ZPQuickPtr1 * Y,A = PTR To Name (PSTR) * ##Out: *\-------------------------------------- -K.UnsetEnvYA >STYA ZPQuickPtr1 Store VAR Name +K.UnsetEnvYA >STYA ZPPtr1 Store VAR Name S.UnsetEnvPtr1 jsr ENV.FindVarPtr1 bcs .8 not found, quit @@ -346,26 +346,26 @@ S.UnsetEnvPtr1 jsr ENV.FindVarPtr1 *-------------------------------------- * ENV.CheckSysVarPtr1 * In: -* ZPQuickPtr1 -> NAME +* ZPPtr1 -> NAME * Out: * CC: Found * YA -> VALUE * CS: Not Found *-------------------------------------- ENV.CheckSysVarPtr1 - lda (ZPQuickPtr1) + lda (ZPPtr1) cmp #1 is name 1 char? bne .9 ldy #1 - lda (ZPQuickPtr1),y + lda (ZPPtr1),y cmp #'0'-1 $0...$9 ?? bcc .1 cmp #'9'+1 bcs .1 and #$0F jsr K.GetArgA - >STYA ZPQuickPtr3 + >STYA ZPPtr3 rts .1 ldx #ENV.SysVarsJmp-ENV.SysVars-1 @@ -398,23 +398,23 @@ ENV.SysVarsArgs lda #1 ldx #0 -.1 lda (ZPQuickPtr1) +.1 lda (ZPPtr1) beq ENV.SysVarsExit ldy #0 .2 iny inx - lda (ZPQuickPtr1),y + lda (ZPPtr1),y sta KrnOut256,x tya - cmp (ZPQuickPtr1) + cmp (ZPPtr1) bne .2 - adc ZPQuickPtr1 CS from beq .2 - sta ZPQuickPtr1 + adc ZPPtr1 CS from beq .2 + sta ZPPtr1 bcc .3 - inc ZPQuickPtr1+1 + inc ZPPtr1+1 .3 lda #' ' inx beq ENV.SysVarsExit make sure not overlapping buf 256 @@ -462,34 +462,34 @@ ENV.SysVarsA sta HEXBUF ENV.SysVarsExit stx KrnOut256 >LDYAI KrnOut256 - >STYA ZPQuickPtr3 + >STYA ZPPtr3 clc rts *-------------------------------------- * ENV.FindVarPtr1 * In: -* ZPQuickPtr1 -> NAME +* ZPPtr1 -> NAME * Out: * CC: Found -* ZPQuickPtr1 -> NAME -* ZPQuickPtr3 -> ENV.NAME +* ZPPtr1 -> NAME +* ZPPtr3 -> ENV.NAME * CS: Not Found -* ZPQuickPtr1 -> NAME -* ZPQuickPtr3 -> PTR to Ending 0 +* ZPPtr1 -> NAME +* ZPPtr3 -> PTR to Ending 0 *-------------------------------------- ENV.FindVarPtr1 jsr ENV.InitEnvPtr3 Store ENV bcs .99 - lda (ZPQuickPtr3) + lda (ZPPtr3) beq .9 end of ENV -.1 cmp (ZPQuickPtr1) Same len as NAME? +.1 cmp (ZPPtr1) Same len as NAME? bne .3 tay -.2 lda (ZPQuickPtr1),y - cmp (ZPQuickPtr3),y +.2 lda (ZPPtr1),y + cmp (ZPPtr3),y bne .3 dey bne .2 @@ -498,7 +498,7 @@ ENV.FindVarPtr1 jsr ENV.InitEnvPtr3 Store ENV .3 jsr ENV.NextEnvPtr3 Skip NAME jsr ENV.NextEnvPtr3 Skip VALUE - lda (ZPQuickPtr3) + lda (ZPPtr3) bne .1 .9 sec @@ -506,33 +506,33 @@ ENV.FindVarPtr1 jsr ENV.InitEnvPtr3 Store ENV *-------------------------------------- * ENV.DiscardVarPtr3 * In: -* ZPQuickPtr3 -> ENV.NAME to Discard +* ZPPtr3 -> ENV.NAME to Discard *-------------------------------------- ENV.DiscardVarPtr3 - lda ZPQuickPtr3 Discard current NAME & VALUE definition - sec ZPQuickPtr3 -> NAME - adc (ZPQuickPtr3) add NAME+1 to ZPQuickPtr3 - sta ZPQuickPtr4 store it in ZPQuickPtr4 + lda ZPPtr3 Discard current NAME & VALUE definition + sec ZPPtr3 -> NAME + adc (ZPPtr3) add NAME+1 to ZPPtr3 + sta ZPPtr4 store it in ZPPtr4 lda #0 - adc ZPQuickPtr3+1 - sta ZPQuickPtr4+1 + adc ZPPtr3+1 + sta ZPPtr4+1 - lda ZPQuickPtr4 add VALUE+1 to ZPQuickPtr4 + lda ZPPtr4 add VALUE+1 to ZPPtr4 sec - adc (ZPQuickPtr4) - sta ZPQuickPtr4 + adc (ZPPtr4) + sta ZPPtr4 bcc .1 - inc ZPQuickPtr4+1 + inc ZPPtr4+1 .1 ldy #0 -.2 lda (ZPQuickPtr4),y Move back tail... - sta (ZPQuickPtr3),y +.2 lda (ZPPtr4),y Move back tail... + sta (ZPPtr3),y beq .8 ...until we move ending 0 iny bne .2 - inc ZPQuickPtr3+1 - inc ZPQuickPtr4+1 + inc ZPPtr3+1 + inc ZPPtr4+1 bra .2 .8 rts @@ -540,15 +540,15 @@ ENV.DiscardVarPtr3 ENV.InitEnvPtr3 ldy #S.PS.hENV lda (pPs),y jsr K.GetMemPtrA - >STYA ZPQuickPtr3 Store ENV + >STYA ZPPtr3 Store ENV rts *-------------------------------------- -ENV.NextEnvPtr3 lda ZPQuickPtr3 +ENV.NextEnvPtr3 lda ZPPtr3 sec - adc (ZPQuickPtr3) - sta ZPQuickPtr3 + adc (ZPPtr3) + sta ZPPtr3 bcc .8 - inc ZPQuickPtr3+1 + inc ZPPtr3+1 .8 rts *-------------------------------------- MAN diff --git a/SYS/KERNEL.S.EVT.txt b/SYS/KERNEL.S.EVT.txt index da10b7aa..3e2561dd 100644 --- a/SYS/KERNEL.S.EVT.txt +++ b/SYS/KERNEL.S.EVT.txt @@ -13,15 +13,15 @@ AUTO 6 * (pEvent) *-------------------------------------- EVT.GetEvents stz pEvent point to start of event list - stz EVTMGR.COUNT reset Size + stz EvtMgr.Count reset Size lda VBL get VLINE status tax - eor EVTMGR.VBLSTATE - bpl EVT.GetEvents.DEV no change,no tick + eor EvtMgr.VBLState + bpl EVT.GetEvents.DEV no change,no tick txa - sta EVTMGR.VBLSTATE save new - bpl EVT.GetEvents.DEV Up2down transition,no tick + sta EvtMgr.VBLState save new + bpl EVT.GetEvents.DEV Up2down transition,no tick * sta PDLTRIG clr VBL (IIc) * lda RDIOUDIS clr VBL (IIc) @@ -30,19 +30,19 @@ EVT.GetEvents stz pEvent point to start of event list bne .1 inc A2osX.TIMER16+1 -.1 dec EVTMGR.HZ.CNT +.1 dec EvtMgr.HZ.CNT bne EVT.GetEvents.DEV not yet 100ms ldx A2osX.HZ - stx EVTMGR.HZ.CNT + stx EvtMgr.HZ.CNT lda #S.EVT.F.T10TH - dec EVTMGR.10TH.CNT + dec EvtMgr.10TH.CNT bne .2 ldx #10 - stx EVTMGR.10TH.CNT + stx EvtMgr.10TH.CNT ora #S.EVT.F.T1SEC @@ -53,29 +53,25 @@ EVT.GetEvents.DEV >LDYAI DevMgr.Table >STYA pDev - stz EvtMgr.DevID + stz EvtMgr.Idx .1 ldy #S.DEV.F - lda (pDev),y get S.DEV.F - bit #S.DEV.F.EVENT - beq .2 EVENT enabled ? +* lda (pDev),y get S.DEV.F +* bit #S.DEV.F.EVENT +* beq .2 EVENT enabled ? - lda (pDev) - cmp #H.BIN.HEADER.DRV65 - bne * +* ldx #DEVMGR.GETEVENT - ldx #DEVMGR.GETEVENT - - jsr pDevJmp Call DRV GetEvent function - bcs .2 no event +* jsr pDevJmp Call DRV GetEvent function +* bcs .2 no event - ldy #S.EVT.hDEV - lda EvtMgr.DevID - sta (pEvent),y +* ldy #S.EVT.hDEV +* lda EvtMgr.Idx +* sta (pEvent),y - jsr EVT.GetEvents.Add +* jsr EVT.GetEvents.Add - bcs .8 Event Q is full, exit now with CC +* bcs .8 Event Q is full, exit now with CC .2 lda pDev clc @@ -84,19 +80,19 @@ EVT.GetEvents.DEV bcc .3 inc pDev+1 -.3 lda EvtMgr.DevID - inc EvtMgr.DevID - cmp DevMgr.LastDevID +.3 lda EvtMgr.Idx + inc EvtMgr.Idx + cmp DevMgr.Count bne .1 - lda EVTMGR.COUNT if 0, exit with CS (from cmp), and A=0 "no event" + lda EvtMgr.Count if 0, exit with CS (from cmp), and A=0 "no event" beq .9 .8 clc .9 rts *-------------------------------------- EVT.GetEvents.Add - inc EVTMGR.COUNT Add one event to Queue + inc EvtMgr.Count Add one event to Queue lda pEvent clc @@ -126,14 +122,10 @@ EVT.DestroyEvent .2 lda #0 sta (pEvent) - dec EVTMGR.COUNT + dec EvtMgr.Count .9 rts *-------------------------------------- -EVTMGR.VBLSTATE .BS 1 -EVTMGR.10TH.CNT .BS 1 -EVTMGR.HZ.CNT .BS 1 -EVTMGR.COUNT .BS 1 -EvtMgr.DevID .BS 1 +EvtMgr.Idx .BS 1 *-------------------------------------- MAN SAVE SYS/KERNEL.S.EVT diff --git a/SYS/KERNEL.S.FILE.txt b/SYS/KERNEL.S.FILE.txt index 04159ee9..418c10ff 100644 --- a/SYS/KERNEL.S.FILE.txt +++ b/SYS/KERNEL.S.FILE.txt @@ -15,33 +15,33 @@ AUTO 6 * PUSHW = AUXTYPE * PUSHB = TYPE * PUSHB = MODE -* SYS.FOPEN.R : if R and !exists -> ERROR -* SYS.FOPEN.W : if W and !exists -> CREATE -* SYS.FOPEN.A : Append -* SYS.FOPEN.T : Open/Append in Text mode -* SYS.FOPEN.X : Create if not exists +* SYS.FOpen.R : if R and !exists -> ERROR +* SYS.FOpen.W : if W and !exists -> CREATE +* SYS.FOpen.A : Append +* SYS.FOpen.T : Open/Append in Text mode +* SYS.FOpen.X : Create if not exists * PUSHW = PATH (PSTR) * ##Out : * CC : A = hFILE * CS : A = EC *\-------------------------------------- -K.FOPEN jsr PFT.CheckPathSTK +K.FOpen jsr PFT.CheckPathSTK >PULLW MLICALL.PARAMS+1 - >PULLB K.FOPEN.MODE - >PULLB K.FOPEN.TYPE - >PULLW K.FOPEN.AUXTYPE + >PULLB K.FOpen.MODE + >PULLB K.FOpen.TYPE + >PULLW K.FOpen.AUXTYPE >MLICALL MLIGETFILEINFO - bcc K.FOPEN.10 Already Exists + bcc K.FOpen.10 Already Exists - bit K.FOPEN.MODE Create if not exists ? - bpl K.FOPEN.9 No, return MLI error + bit K.FOpen.MODE Create if not exists ? + bpl K.FOpen.9 No, return MLI error lda #S.FILEINFO.ACCESS.FULL Yes, Create... sta MLICALL.PARAMS+3 Access - lda K.FOPEN.TYPE + lda K.FOpen.TYPE sta MLICALL.PARAMS+4 File type - >LDYA K.FOPEN.AUXTYPE + >LDYA K.FOpen.AUXTYPE >STYA MLICALL.PARAMS+5 Aux type lda #S.FILEINFO.STORETYPE.STD sta MLICALL.PARAMS+7 @@ -55,41 +55,34 @@ K.FOPEN jsr PFT.CheckPathSTK bpl .1 >MLICALL MLICREATE - bcc K.FOPEN.10 -K.FOPEN.9 rts + bcc K.FOpen.10 +K.FOpen.9 rts -K.FOPEN.10 >PUSHWI S.NODE.REG +K.FOpen.10 >PUSHWI S.NODE.REG >PUSHBI S.MEM.F.INIT0 jsr K.GetMem - bcs K.FOPEN.9 + bcs K.FOpen.9 - >STYA ZPQuickPtr1 + >STYA ZPPtr1 stx hFILE - >PUSHWI 1024 get a ProDOS IOBUF - >PUSHBI S.MEM.F.ALIGN+S.MEM.F.NOMOVE - jsr K.GetMem + jsr FILE.SetIOBUF bcs .98 - >STYA MLICALL.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call - txa - ldy #S.NODE.REG.IOBUF - sta (ZPQuickPtr1),y - >MLICALL MLIOPEN bcs .98 lda MLICALL.PARAMS+5 get ref_num ldy #S.NODE.REG.REF - sta (ZPQuickPtr1),y + sta (ZPPtr1),y sta MLICALL.PARAMS+1 Next MLI Calls are REF_NUM based - lda K.FOPEN.MODE - bit #SYS.FOPEN.W + lda K.FOpen.MODE + bit #SYS.FOpen.W beq .20 Write mode ? - and #SYS.FOPEN.A Append ? + and #SYS.FOpen.A Append ? bne .11 yes, go to end of file stz MLICALL.PARAMS+2 @@ -105,8 +98,8 @@ K.FOPEN.10 >PUSHWI S.NODE.REG >MLICALL MLISETMARK bcs .98 -.20 lda K.FOPEN.MODE - and #SYS.FOPEN.T Text Mode ? +.20 lda K.FOpen.MODE + and #SYS.FOpen.T Text Mode ? beq .30 lda #$FF @@ -117,7 +110,7 @@ K.FOPEN.10 >PUSHWI S.NODE.REG .30 ldy #S.NODE.T lda #S.NODE.T.REG - sta (ZPQuickPtr1),y + sta (ZPPtr1),y lda hFILE clc rts CC @@ -128,9 +121,9 @@ K.FOPEN.10 >PUSHWI S.NODE.REG sec rts *-------------------------------------- -K.FOPEN.MODE .BS 1 -K.FOPEN.TYPE .BS 1 -K.FOPEN.AUXTYPE .BS 2 +K.FOpen.MODE .BS 1 +K.FOpen.TYPE .BS 1 +K.FOpen.AUXTYPE .BS 2 hFILE .BS 1 */-------------------------------------- * #FCloseA @@ -140,24 +133,23 @@ hFILE .BS 1 * ##Out : *\-------------------------------------- K.FCloseA jsr PFT.CheckNodeA - sta hFILE + sta K.FCloseA.2+1 jsr K.GetMemPtrA - >STYA ZPQuickPtr1 + >STYA ZPPtr1 K.FCloseA.1 ldy #S.NODE.REG.REF - lda (ZPQuickPtr1),y + lda (ZPPtr1),y beq .1 sta MLICALL.PARAMS+1 >MLICALL MLICLOSE .1 ldy #S.NODE.REG.IOBUF - lda (ZPQuickPtr1),y - beq .2 + lda (ZPPtr1),y + beq K.FCloseA.2 jsr K.FreeMemA -.2 lda hFILE - jsr K.FreeMemA - rts +K.FCloseA.2 lda #$ff Self Modified + jmp K.FreeMemA */-------------------------------------- * #FReadA * Read ONE byte from file @@ -245,13 +237,13 @@ K.FFlushA jsr PFT.CheckNodeA K.FSeek jsr PFT.CheckNodeSTK >PULLA jsr FILE.SetupPrt1A - >PULLB K.FSEEK.FROM - >PULLW K.FSEEK.OFFSET - >PULLW K.FSEEK.OFFSET+2 + >PULLB K.FSeek.FROM + >PULLW K.FSeek.OFFSET + >PULLW K.FSeek.OFFSET+2 - lda K.FSEEK.FROM + lda K.FSeek.FROM -* cmp #SYS.FSEEK.SET =0 +* cmp #SYS.FSeek.SET =0 bne .1 stz MLICALL.PARAMS+2 @@ -259,25 +251,25 @@ K.FSeek jsr PFT.CheckNodeSTK stz MLICALL.PARAMS+4 bra .8 -.1 cmp #SYS.FSEEK.CUR +.1 cmp #SYS.FSeek.CUR bne .2 >MLICALL MLIGETMARK bcc .8 rts -.2 cmp #SYS.FSEEK.END +.2 cmp #SYS.FSeek.END bne .98 >MLICALL MLIGETEOF bcs .9 .8 lda MLICALL.PARAMS+2 - adc K.FSEEK.OFFSET + adc K.FSeek.OFFSET sta MLICALL.PARAMS+2 lda MLICALL.PARAMS+3 - adc K.FSEEK.OFFSET+1 + adc K.FSeek.OFFSET+1 sta MLICALL.PARAMS+3 lda MLICALL.PARAMS+4 - adc K.FSEEK.OFFSET+2 + adc K.FSeek.OFFSET+2 sta MLICALL.PARAMS+4 bcs .99 Offset out of range! @@ -291,8 +283,8 @@ K.FSeek jsr PFT.CheckNodeSTK sec rts *-------------------------------------- -K.FSEEK.FROM .BS 1 -K.FSEEK.OFFSET .BS 4 +K.FSeek.FROM .BS 1 +K.FSeek.OFFSET .BS 4 */-------------------------------------- * #FTellA * ##In: @@ -319,7 +311,7 @@ K.FTellA.1 jsr FILE.SetupPrt1A *\-------------------------------------- K.FEOFA jsr PFT.CheckNodeA jsr FILE.SetupPrt1A - jsr K.FTELLA.1 + jsr K.FTellA.1 bcs .9 >STYA K.FEOFA.MARK stx K.FEOFA.MARK+2 @@ -357,7 +349,7 @@ K.RemoveYA jsr PFT.CheckPathYA K.Rename jsr PFT.CheckPathSTK >PULLW MLICALL.PARAMS+1 >PULLW MLICALL.PARAMS+3 - >MLICALL MLIRENAME + >MLICALL MLIRename rts */-------------------------------------- * #Stat @@ -369,22 +361,32 @@ K.Rename jsr PFT.CheckPathSTK *\-------------------------------------- K.Stat jsr PFT.CheckPathSTK >PULLW MLICALL.PARAMS+1 - >PULLW ZPQuickPtr2 + >PULLW ZPPtr2 >MLICALL MLIGETFILEINFO bcs .9 jsr FILE.MLI2STAT clc .9 rts *-------------------------------------- +FILE.SetIOBUF >PUSHWI 1024 get a ProDOS IOBUF + >PUSHBI S.MEM.F.ALIGN+S.MEM.F.NOMOVE + jsr K.GetMem + bcs .9 + + >STYA MLICALL.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call + txa + ldy #S.NODE.REG.IOBUF + sta (ZPPtr1),y +.9 rts +*-------------------------------------- FILE.SetupPrt1A jsr K.GetMemPtrA - >STYA ZPQuickPtr1 + >STYA ZPPtr1 ldy #S.NODE.REG.REF - lda (ZPQuickPtr1),y + lda (ZPPtr1),y sta MLICALL.PARAMS+1 rts *-------------------------------------- -FILE.MLI2STAT - lda MLICALL.PARAMS+S.FILEINFO.ACCESS +FILE.MLI2STAT lda MLICALL.PARAMS+S.FILEINFO.ACCESS cmp #S.FILEINFO.ACCESS.FULL bne .1 @@ -396,13 +398,13 @@ FILE.MLI2STAT lda #S.STAT.MODE.XO+S.STAT.MODE.RO .2 ldy #S.STAT.MODE - sta (ZPQuickPtr2),y + sta (ZPPtr2),y ldx #2 ldy #S.STAT.P.TYPE+2 .3 lda MLICALL.PARAMS+S.FILEINFO.TYPE,x - sta (ZPQuickPtr2),y + sta (ZPPtr2),y dey dex bpl .3 diff --git a/SYS/KERNEL.S.FIO.txt b/SYS/KERNEL.S.FIO.txt index 13a136af..9dd9c1ee 100644 --- a/SYS/KERNEL.S.FIO.txt +++ b/SYS/KERNEL.S.FIO.txt @@ -17,13 +17,13 @@ AUTO 6 * X = hMem to FilePath * CS : not found *\-------------------------------------- -K.FileSearch >PULLW ZPQuickPtr4 ZPQuickPtr1 trashed by ExpandPStrYA +K.FileSearch >PULLW ZPPtr4 ZPPtr1 trashed by ExpandPStrYA >PULLYA Get Search list >SYSCALL ExpandPStrYA Expand it (SYSCALL to BNK1) bcs .99 stx K.FileSearch.hSrch - >STYA ZPQuickPtr3 ZPQuickPtr2 trashed by K.STAT !!! expanded search list ; + >STYA ZPPtr3 ZPPtr2 trashed by K.STAT !!! expanded search list ; stz K.FileSearch.Index @@ -33,10 +33,10 @@ K.FileSearch >PULLW ZPQuickPtr4 ZPQuickPtr1 trashed by ExpandPStrYA ldy K.FileSearch.Index .2 tya - cmp (ZPQuickPtr3) end of src string ? + cmp (ZPPtr3) end of src string ? beq .3 end of string, try it.... iny - lda (ZPQuickPtr3),y + lda (ZPPtr3),y cmp #';' beq .3 inx @@ -51,11 +51,11 @@ K.FileSearch >PULLW ZPQuickPtr4 ZPQuickPtr1 trashed by ExpandPStrYA ldy #0 .4 iny - lda (ZPQuickPtr4),y Append Fiename... + lda (ZPPtr4),y Append Fiename... inx sta KrnBuf256,x tya - cmp (ZPQuickPtr4) + cmp (ZPPtr4) bne .4 stx KrnBuf256 set string length @@ -88,14 +88,14 @@ K.FileSearch.Index .BS 1 * X = hMem of FullPath * CS : A = Error Code *\-------------------------------------- -K.GetFullPathYA >STYA ZPQuickPtr3 Ptr1 & 2 used by StrCpy - lda (ZPQuickPtr3) +K.GetFullPathYA >STYA ZPPtr3 Ptr1 & 2 used by StrCpy + lda (ZPPtr3) beq K.GetFullPathYA.9 stz KrnBuf256 ldy #1 - lda (ZPQuickPtr3),y + lda (ZPPtr3),y cmp #'/' full path starting with '/'? beq .1 yes, do not append to current prefix @@ -106,7 +106,7 @@ K.GetFullPathYA >STYA ZPQuickPtr3 Ptr1 & 2 used by StrCpy >PUSHWI KrnBuf256 >SYSCALL PStrCpy -.1 >PUSHW ZPQuickPtr3 +.1 >PUSHW ZPPtr3 >PUSHWI KrnBuf256 >SYSCALL PStrCat K.GetFullPathYA.NewStr @@ -123,22 +123,22 @@ K.GetFullPathYA.9 * PUSHW = AUXTYPE (Handled by.... * PUSHB = TYPE ... * PUSHB = MODE ... -* PUSHW = PATH ...FOPEN) +* PUSHW = PATH ...FOpen) * ##Out: * Y,A = File Length * X = hMem of Loaded File *\-------------------------------------- -K.LoadFile jsr K.FOPEN +K.LoadFile jsr K.FOpen bcs .9 sta K.LoadFile.hFile - ldx #SYS.FSEEK.END + ldx #SYS.FSeek.END jsr K.LoadFile.Seek bcs .99 lda K.LoadFile.hFile - jsr K.FTELLA + jsr K.FTellA bcs .99 >STYA K.LoadFile.Len phx @@ -152,14 +152,14 @@ K.LoadFile jsr K.FOPEN >STYA K.LoadFile.Mem stx K.LoadFile.hMem - ldx #SYS.FSEEK.SET + ldx #SYS.FSeek.SET jsr K.LoadFile.Seek bcs .97 >PUSHW K.LoadFile.Mem >PUSHW K.LoadFile.Len >PUSHB K.LoadFile.hFile - jsr K.FREAD + jsr K.FRead bcs .97 jsr .99 @@ -189,7 +189,7 @@ K.LoadFile.Seek >PUSHWI 0 txa >PUSHA >PUSHB K.LoadFile.hFile - jmp K.FSEEK + jmp K.FSeek */-------------------------------------- * #SaveFile * ##In: @@ -198,15 +198,15 @@ K.LoadFile.Seek >PUSHWI 0 * PUSHW = AUXTYPE (Handled by.... * PUSHB = TYPE ... * PUSHB = MODE ... -* PUSHW = PATH ...FOPEN) +* PUSHW = PATH ...FOpen) *\-------------------------------------- -K.SaveFile jsr K.FOPEN +K.SaveFile jsr K.FOpen bcs .9 sta K.LoadFile.hFile >PUSHB K.LoadFile.hFile - jsr K.FWRITE + jsr K.FWrite bcs .99 jsr .99 diff --git a/SYS/KERNEL.S.GP.txt b/SYS/KERNEL.S.GP.txt index 367d3d2f..390a0c19 100644 --- a/SYS/KERNEL.S.GP.txt +++ b/SYS/KERNEL.S.GP.txt @@ -128,10 +128,19 @@ A2osX.BLKCALL1 >STYA .2+1 setup device entry point $Cnxx *-------------------------------------- * Smartport Call *-------------------------------------- -A2osX.PRTCALL1 - - clc +A2osX.PRTCALL1 >STYA .1+1 + txa + lsr + sta .2 + tax + lda A2osX.PRTCALL.Cnt,x + sta PRTCALL.PARAMS +.1 jsr $ffff +.2 .BS 1 CMD + .DA PRTCALL.PARAMS rts +A2osX.PRTCALL.Cnt + .HS 03030301030101010404 *-------------------------------------- GO.ProDOS lda $D000 We re coming from AUXLC, saving bank... sta GO.A2osX.BNK+1 diff --git a/SYS/KERNEL.S.INIT2.txt b/SYS/KERNEL.S.INIT2.txt index f7d004b6..d2cfc7fc 100644 --- a/SYS/KERNEL.S.INIT2.txt +++ b/SYS/KERNEL.S.INIT2.txt @@ -11,11 +11,11 @@ Kernel.Init2 sei jsr PrintCStrAX >LDYAI A2osX.GP - >STYA ZPQuickPtr1 + >STYA ZPPtr1 >LDYAI A2osX.SYSCALL - >STYA ZPQuickPtr2 + >STYA ZPPtr2 >LDYAI A2osX.GP.SIZE^$FFFF - >STYA ZPQuickPtr3 + >STYA ZPPtr3 jsr Kernel.Move sta CLRALTZP @@ -29,11 +29,11 @@ Kernel.Init2 sei lda RRAMWRAMBNK2 >LDYAI A2osX.D002 - >STYA ZPQuickPtr1 + >STYA ZPPtr1 >LDYAI $D000 - >STYA ZPQuickPtr2 + >STYA ZPPtr2 >LDYAI A2osX.D002.SIZE^$FFFF - >STYA ZPQuickPtr3 + >STYA ZPPtr3 jsr Kernel.Move sta CLRALTZP @@ -47,11 +47,11 @@ Kernel.Init2 sei lda RRAMWRAMBNK1 >LDYAI A2osX.D001 - >STYA ZPQuickPtr1 + >STYA ZPPtr1 >LDYAI $D000 - >STYA ZPQuickPtr2 + >STYA ZPPtr2 >LDYAI A2osX.D001.SIZE^$FFFF - >STYA ZPQuickPtr3 + >STYA ZPPtr3 jsr Kernel.Move sta CLRALTZP @@ -65,11 +65,11 @@ Kernel.Init2 sei lda RRAMWRAMBNK1 >LDYAI A2osX.E000 - >STYA ZPQuickPtr1 + >STYA ZPPtr1 >LDYAI $E000 - >STYA ZPQuickPtr2 + >STYA ZPPtr2 >LDYAI A2osX.E000.SIZE^$FFFF - >STYA ZPQuickPtr3 + >STYA ZPPtr3 jsr Kernel.Move >LDYAI D.STACK.TOP @@ -239,15 +239,15 @@ DetectZ80 ldx #Z80Code.Size dex bne .1 - stz ZPQuickPtr1 + stz ZPPtr1 lda #$C1 - sta ZPQuickPtr1+1 + sta ZPPtr1+1 -.2 sta (ZPQuickPtr1) +.2 sta (ZPPtr1) lda $100D bmi .8 - inc ZPQuickPtr1+1 - lda ZPQuickPtr1+1 + inc ZPPtr1+1 + lda ZPPtr1+1 cmp #$C8 beq .9 CS clc @@ -255,7 +255,7 @@ DetectZ80 ldx #Z80Code.Size sta $100A bra .2 -.8 lda ZPQuickPtr1+1 +.8 lda ZPPtr1+1 and #$0F clc .9 rts @@ -289,18 +289,18 @@ MSG.Z80.OK >CSTR "Detected In Slot %d.\n" MSG.Z80.KO >CSTR "Not Detected.\n" *-------------------------------------- Kernel.Move ldy #0 -.1 inc ZPQuickPtr3 +.1 inc ZPPtr3 bne .2 - inc ZPQuickPtr3+1 + inc ZPPtr3+1 beq .9 -.2 lda (ZPQuickPtr1),y - sta (ZPQuickPtr2),y +.2 lda (ZPPtr1),y + sta (ZPPtr2),y iny bne .1 - inc ZPQuickPtr1+1 - inc ZPQuickPtr2+1 + inc ZPPtr1+1 + inc ZPPtr2+1 bne .1 .9 rts MAN diff --git a/SYS/KERNEL.S.INIT3.txt b/SYS/KERNEL.S.INIT3.txt index 3aa38f3d..2c6dd661 100644 --- a/SYS/KERNEL.S.INIT3.txt +++ b/SYS/KERNEL.S.INIT3.txt @@ -5,52 +5,36 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -Kernel.Init3 ldx #S.DEV*DevMgr.Count - -.1 lda DevMgr.NUL-1,x - sta DevMgr.Table-1,x - dex - bne .1 - - stz DevMgr.Table+S.DEV*DevMgr.Count +Kernel.Init3 jsr MemMgrInit + jsr PS0Init + bcs * - lda #1 SYS device - >SYSCALL GetDevByIDA - >STYA pDev - ldx #DEVMGR.OPEN - jsr pDevJmp - >LDYAI MSG.Init3 >SYSCALL CPrintFYA >LDYAI MSG.IRQ >SYSCALL CPrintFYA - jsr K.IrqMgrInit - bcs * - - >LDYAI MSG.MEM - >SYSCALL CPrintFYA - jsr K.MemMgrInit +* jsr IrqMgrInit bcs * >LDYAI MSG.DEV >SYSCALL CPrintFYA - jsr K.DevMgrInit + jsr DevMgrInit bcs * >LDYAI MSG.EVT >SYSCALL CPrintFYA - jsr K.EvtMgrInit + jsr EvtMgrInit bcs * >LDYAI MSG.FLT >SYSCALL CPrintFYA - jsr K.FltMgrInit + jsr FltMgrInit bcs * >LDYAI MSG.TSK >SYSCALL CPrintFYA - jsr K.TskMgrInit + jsr TskMgrInit bcs * ldy #S.PS.hPREFIX @@ -80,6 +64,7 @@ Kernel.Init3 ldx #S.DEV*DevMgr.Count >STYA pPs >DEBUGOA + bit RRAMWRAMBNK2 bit RRAMWRAMBNK2 jmp K.KernelRun @@ -89,23 +74,71 @@ Kernel.Init3 ldx #S.DEV*DevMgr.Count >SYSCALL CPrintFYA bra * No need to discard Expanded CMDLINE *-------------------------------------- -DevMgr.NUL cld - jmp (DevMgr.NUL.Code,x) - .DA #0 DevID=0 - .DA #S.DEV.F.INUSE+S.DEV.F.SHARE+S.DEV.F.COUT+S.DEV.F.CHAR - >PSTR "NUL" NAME - .HS 00 NAME must Be 5 bytes long - .HS 00 - .HS 00.00.00.00 +MemMgrInit >LDYAI MemMgr.MHiMem + >STYA MemMgr.HiMem + >STYA MemMgr.Free + >LDYAI MemMgr.MLoMem + >STYA MemMgr.LoMem + stz MemMgr.LastSlot Reserve Slot #0 + + sta SETWRITEAUX + + >LDYAI MemMgr.XHiMem + >STYA MemMgr.HiMem + >STYA MemMgr.Free + >LDYAI MemMgr.XLoMem + >STYA MemMgr.LoMem + stz MemMgr.LastSlot Reserve Slot #0 + + sta CLRWRITEAUX + + rts *-------------------------------------- -DevMgr.SYS cld - jmp (DevMgr.SYS.Code,x) - .DA #1 DevID=1 - .DA #S.DEV.F.INUSE+S.DEV.F.EVENT+S.DEV.F.SHARE+S.DEV.F.COUT+S.DEV.F.CHAR - >PSTR "SYS" NAME - .HS 00 NAME must Be 5 bytes long - .HS 00 - .HS 00.00.00.00 +PS0Init ldx #S.DEV*2 NUL,SYS + +.1 lda DevMgr.NUL-1,x + sta DevMgr.Table-1,x + dex + bne .1 + + lda #2 + sta DevMgr.Count + + >LDYAI TskMgr.Table Select Process 0 (Kernel) + >STYA pPs + + ldy #S.PS-1 + lda #0 + +.2 sta (pPs),y Blank PS0 + dey + bpl .2 + + >LDYAI DEV.SYS + >SYSCALL MkNodYA + bcs .9 + + ldy #S.PS.hStdIn + sta (pPs),y + ldy #S.PS.hStdOut + sta (pPs),y + ldy #S.PS.hStdErr + sta (pPs),y + + clc +.9 rts +*-------------------------------------- +DevMgr.NUL .DA DevMgr.NUL.Code + .DA #S.DEV.S.WRITE+S.DEV.S.READ+S.DEV.S.OPENED + .DA #3 + .AS "NUL" NAME + .HS 00 NAME must Be 4 bytes long +*-------------------------------------- +DevMgr.SYS .DA DevMgr.SYS.Code + .DA #S.DEV.S.WRITE+S.DEV.S.READ+3 + .DA #3 + .AS "SYS" NAME + .HS 00 NAME must Be 4 bytes long *-------------------------------------- * Setup MainLC ($3FE) * @@ -113,7 +146,7 @@ DevMgr.SYS cld * Setup AuxLC $FFFE->Kernel IRQ Handler * if irq not handled, jmp (S.IrqMgrOldFFFE) *-------------------------------------- -K.IrqMgrInit php +IrqMgrInit php sei >LDYA $FFFE cpy #K.IrqHandlerAuxLC @@ -134,83 +167,140 @@ K.IrqMgrInit php clc rts *-------------------------------------- -K.MemMgrInit >LDYAI MemMgr.MHiMem - >STYA MemMgr.HiMem - >STYA MemMgr.Free - >LDYAI MemMgr.MLoMem - >STYA MemMgr.LoMem - stz MemMgr.LastSlot Reserve Slot #0 - - sta SETWRITEAUX - - >LDYAI MemMgr.XHiMem - >STYA MemMgr.HiMem - >STYA MemMgr.Free - >LDYAI MemMgr.XLoMem - >STYA MemMgr.LoMem - stz MemMgr.LastSlot Reserve Slot #0 - - sta CLRWRITEAUX - - clc - rts -*-------------------------------------- -K.DevMgrInit stz ZPQuickPtr1 +DevMgrInit stz ZPPtr1 lda #$C1 - sta ZPQuickPtr1+1 + sta ZPPtr1+1 + lda #'1' + sta SP.DEV+5 S1Dy .1 ldx #SmartPort.SIG-SmartPort.OFS-1 .2 ldy SmartPort.OFS,x Check if there is a smartport firmware - lda (ZPQuickPtr1),y + lda (ZPPtr1),y cmp SmartPort.SIG,x bne .3 not a smartport... dex bpl .2 *SmartPort!!! - jsr K.DevMgrInit.AddDev - - + jsr DevMgrInit.SP bra .7 - * Disk II, or Block device ? .3 dex if x=0, only first SIG byte failed bpl .8 ldy #$ff - lda (ZPQuickPtr1),y - beq .4 $0, Disk II, 16sect + lda (ZPPtr1),y + bne .4 $0, Disk II, 16sect - inc - beq .8 $ff, Disk II, 13sect + jsr DevMgrInit.DII + bra .7 + +.4 inc + beq .7 $ff, Disk II, 13sect, ignore dec - -.4 +* Block device + jsr DevMgrInit.BLK -.7 lda ZPQuickPtr1+1 +.7 lda ZPPtr1+1 and #$0f tax lda #$80 sta A2osX.SLOTS,x -.8 inc ZPQuickPtr1+1 - lda ZPQuickPtr1+1 +.8 inc SP.DEV+5 + inc ZPPtr1+1 + lda ZPPtr1+1 cmp #$C8 bne .1 clc rts *-------------------------------------- -K.DevMgrInit.AddCtrl +DevMgrInit.SP ldy #$ff + lda (ZPPtr1),y + clc + adc #3 Compute smartport entry point + sta .1+1 + sta .3+1 + sta SP.DEV+S.DEV.JMP + lda ZPPtr1+1 + sta .1+2 + sta .3+2 + sta SP.DEV+S.DEV.JMP+1 + +.1 jsr $ffff Self Modified + .DA #0 Status + .DA SP.CTRL.STATUS + bcs .9 + lda SP.STATUS1 + beq .9 no device + +.2 lda #1 + sta SP.DEV.STATUS+1 + lda #'1' + sta SP.DEV+7 SxD1 + +.3 jsr $ffff Self Modified + .DA #0 Status + .DA SP.DEV.STATUS + bcs .7 + lda SP.STATUS2+S.DEVSTAT.S + sta SP.DEV+S.DEV.S + + + + + + +.7 inc SP.DEV+7 + dec SP.STATUS1 + bne .3 + +.9 rts +*-------------------------------------- +DevMgrInit.DII rts *-------------------------------------- -K.DevMgrInit.AddDev +DevMgrInit.BLK + rts +*-------------------------------------- +DevMgrInit.AddDev + lda DevMgr.Count + inc DevMgr.Count + jsr K.GetDevByIDA + >STYA ZPPtr1 rts *-------------------------------------- SmartPort.OFS .HS 07010305 SmartPort.SIG .HS 00200003 *-------------------------------------- -K.EvtMgrInit +SP.CTRL.STATUS .DA #3 + .DA #0 + .DA SP.STATUS1 + .DA #0 return S only +SP.DEV.STATUS .DA #3 + .BS 1 + .DA SP.STATUS2 + .DA #3 return DIB +SP.STATUS1 .BS 4 +SP.STATUS2 .BS S.DEVSTAT +*-------------------------------------- +SP.DEV .BS 2 JMP + .BS 1 S + >PSTR "S1D1" 5 bytes +*-------------------------------------- +SP.DRV cld + ldy #7 + lda (pDev),y + and #$f + sta PRTCALL.PARAMS+1 dev +SP.DRV.lo ldy #$ff +SP.DRV.hi lda #$ff + jmp A2osX.PRTCALL +*-------------------------------------- +BLK.DRV +*-------------------------------------- +EvtMgrInit * lda #10 * sta EVTMGR.10TH.CNT WARNING!!!! WRONG BANK!!! @@ -230,50 +320,35 @@ K.EvtMgrInit clc rts *-------------------------------------- -K.FltMgrInit stz FltMgr.Table +FltMgrInit stz FltMgr.Table clc rts *-------------------------------------- -K.TskMgrInit stz TSKMGR.LASTID - lda #1 - sta TSKMGR.SIZE One Slot Busy (Kernel PS=0) - - >LDYAI TskMgr.Table Clear whole process table - >STYA pPs +TskMgrInit >LDYAI TskMgr.Table+S.PS Clear whole process table except PS0 + >STYA .2+1 - ldx #K.PS.MAX + ldx #K.PS.MAX-1 .1 lda #0 ldy #S.PS-1 -.2 sta (pPs),y +.2 sta $ffff,y Self Modified dey bpl .2 - lda pPs + lda .2+1 clc adc #S.PS - sta pPs + sta .2+1 bcc .3 - inc pPs+1 + inc .2+2 .3 dex bne .1 - >LDYAI TskMgr.Table Select Process 0 (Kernel) - >STYA pPs - - lda #1 - ldy #S.PS.hINDEV - sta (pPs),y Make In DEV = SYS - ldy #S.PS.hOUTDEV - sta (pPs),y Make OUT DEV = SYS - ldy #S.PS.hERRDEV - sta (pPs),y Make ERR DEV = SYS - >PUSHWI K.ENV.SIZE get a buffer for ENV >PUSHBI S.MEM.F.INIT0 make sure blank - >SYSCALL GetMem create it... + >SYSCALL GetMem create it... bcs .9 txa @@ -293,7 +368,7 @@ K.TskMgrInit stz TSKMGR.LASTID ldy #S.PS.hPREFIX sta (pPs),y - >PUSHWI UsrBuf256 push ENV value + >PUSHWI UsrBuf256 push ENV value >PUSHWI I.ENV.A2osX push ENV name >SYSCALL SetEnv bcs .9 @@ -310,6 +385,7 @@ K.TskMgrInit stz TSKMGR.LASTID >SYSCALL PutEnvYA .9 rts *-------------------------------------- +DEV.SYS >PSTR "SYS" I.ENV.A2osX >PSTR "A2OSX" I.ENV.PATH >PSTR "PATH=${A2OSX}SBIN/;${A2OSX}BIN/" I.ENV.LIB >PSTR "LIB=${A2OSX}LIB/" @@ -318,7 +394,6 @@ STARTUP.CMDLINE >PSTR "${A2OSX}SBIN/SHELL ${A2OSX}A2osX.STARTUP" *-------------------------------------- MSG.Init3 >CSTR "A2osX[Stage3]:Init\n" MSG.IRQ >CSTR "-Interrupt Manager...\n" -MSG.MEM >CSTR "-Memory Manager...\n" MSG.DEV >CSTR "-Device Manager...\n" MSG.EVT >CSTR "-Event Manager...\n" MSG.FLT >CSTR "-Path Filter...\n" diff --git a/SYS/KERNEL.S.IRQ.txt b/SYS/KERNEL.S.IRQ.txt index 505e8a0b..c25ede25 100644 --- a/SYS/KERNEL.S.IRQ.txt +++ b/SYS/KERNEL.S.IRQ.txt @@ -74,7 +74,7 @@ K.IrqHandlerAuxLC bcs .82 rti -K.IrqHandlerJMP ldx #DEVMGR.IRQ +K.IrqHandlerJMP ldx #DEVMGR.READ jmp ($fe) *-------------------------------------- K.IrqMgrOldFFFE .BS 2 diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index 61b5d71d..a610d622 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -29,27 +29,27 @@ KERNEL.SYSCALL .DA K.PTime2Time .DA 0 *-------------------------------------- - .DA K.FOPEN $20 + .DA K.FOpen $20 .DA K.FCloseA - .DA K.FREAD - .DA K.FWRITE - .DA K.FFLUSHA - .DA K.FSEEK - .DA K.FTELLA + .DA K.FRead + .DA K.FWrite + .DA K.FFlushA + .DA K.FSeek + .DA K.FTellA .DA K.FEOFA *-------------------------------------- - .DA K.REMOVEYA $30 - .DA K.RENAME + .DA K.RemoveYA $30 + .DA K.Rename .DA K.STAT .DA 0 - .DA K.OPENDIRYA + .DA K.OpenDirYA .DA K.ReadDirA .DA K.CloseDirA .DA K.MKDirYA *-------------------------------------- * Bank 2 *-------------------------------------- - .DA K.COutA $40 + .DA 0 $40 .DA K.SScanF .DA K.PPrintFYA .DA K.CPrintFYA @@ -87,11 +87,11 @@ KERNEL.SYSCALL *-------------------------------------- .DA K.GetDevByIDA $80 .DA K.GetDevByNameYA - .DA K.GetDevInfoA - .DA 0 - .DA 0 - .DA 0 + .DA K.GetDevStatusA .DA 0 + .DA K.MKNodYA + .DA K.MKNodA + .DA K.MKFIFO .DA 0 *-------------------------------------- * $E000 @@ -101,12 +101,27 @@ KERNEL.SYSCALL .DA K.GetMemPtrA .DA K.GetMemByIDA .DA 0 - .DA K.LoadStockObjectYA - .DA K.GetStockObjectA - .DA K.FreeStockObject + .DA K.LoadStkObjYA + .DA K.GetStkObjA + .DA K.FreeStkObjA *-------------------------------------- .DA K.SetLoMem $A0 .DA K.GetMemStatYA + .DA 0 + .DA 0 + .DA 0 + .DA 0 + .DA 0 + .DA 0 +*-------------------------------------- + .DA K.FPutCAY + .DA K.PutCA + .DA K.FGetCA + .DA K.GetC + .DA K.FPutS + .DA K.PutSYA + .DA K.FGetS + .DA K.GetSYA *-------------------------------------- * LO Byte : * #RRAMWRAMBNK1 or #RRAMWRAMBNK2 @@ -286,11 +301,25 @@ KERNEL.SYSCALL.FLAGS .DA 0 .DA 0 .DA 0 - +*-------------------------------------- .DA 0 $A0 .DA 0 + .DA 0 + .DA 0 + .DA 0 + .DA 0 + .DA 0 + .DA 0 +*-------------------------------------- + .DA 0 $B0 + .DA 0 + .DA 0 + .DA 0 + .DA 0 + .DA 0 + .DA 0 + .DA 0 *-------------------------------------- - MAN SAVE SYS/KERNEL.S.JMP LOAD SYS/KERNEL.S diff --git a/SYS/KERNEL.S.LIB.txt b/SYS/KERNEL.S.LIB.txt index 8be5af09..19537003 100644 --- a/SYS/KERNEL.S.LIB.txt +++ b/SYS/KERNEL.S.LIB.txt @@ -66,22 +66,22 @@ K.LoadLib.hMem .BS 1 *-------------------------------------- K.UnloadLibA pha jsr K.GetMemByIDA - >STYA ZPQuickPtr1 + >STYA ZPPtr1 ldy #S.MEM.REFCNT - lda (ZPQuickPtr1),y Get count of those referencing this lib + lda (ZPPtr1),y Get count of those referencing this lib dec only one left ? beq .1 - sta (ZPQuickPtr1),y + sta (ZPPtr1),y pla clc rts .1 ldy #S.MEM.PTR - lda (ZPQuickPtr1),y + lda (ZPPtr1),y sta pLib iny - lda (ZPQuickPtr1),y + lda (ZPPtr1),y sta pLib+1 ldx #LIBMGR.UNLOAD diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 0f3cb940..047f53ec 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -5,7 +5,7 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -* !!!!!! DO NOT USE ZPQuickPTRs !!!!! +* !!!!!! DO NOT USE ZPPtrs !!!!! *-------------------------------------- ZPMemMgrSPtr .EQ ZPMEMMGR Pointer To Slot selected ZPMemMgrTmp1 .EQ ZPMEMMGR+2 @@ -307,7 +307,7 @@ K.FreeMemA phy bit RRAMWRAMBNK2 jsr PS.Select0 - jsr DevMgr.SYS.Select + jsr DevMgr.SYS.Control pla Get PC and sub 2 for calling address sec @@ -394,11 +394,11 @@ K.GetMemByIDA sta ZPMemMgrSPtr * sta ZPMemMgrSPtr+1 * rts *-------------------------------------- -K.LoadStockObjectYA +K.LoadStkObjYA *-------------------------------------- -K.GetStockObjectA +K.GetStkObjA *-------------------------------------- -K.FreeStockObject +K.FreeStkObjA *-------------------------------------- K.SetLoMem clc diff --git a/SYS/KERNEL.S.PFT.txt b/SYS/KERNEL.S.PFT.txt index 546e620d..27583d5f 100644 --- a/SYS/KERNEL.S.PFT.txt +++ b/SYS/KERNEL.S.PFT.txt @@ -34,49 +34,49 @@ PFT.CheckPathSTK ply PFT.CheckPathYA stx S.PFT.SYSCALL save #SYSCALL - >STYA ZPQuickPtr1 + >STYA ZPPtr1 >LDYAI FltMgr.Table - >STYA ZPQuickPtr2 + >STYA ZPPtr2 -.1 lda (ZPQuickPtr2) Get Filter Len +.1 lda (ZPPtr2) Get Filter Len beq .9 End Of Table, Exit tay - lda (ZPQuickPtr1),y is there a "/" at this point in SRC path? + lda (ZPPtr1),y is there a "/" at this point in SRC path? cmp #'/' bne .8 -.2 lda (ZPQuickPtr1),y - cmp (ZPQuickPtr2),y +.2 lda (ZPPtr1),y + cmp (ZPPtr2),y bne .8 dey bne .2 ldy #S.PFT.HANDLER - lda (ZPQuickPtr2),y get hLib + lda (ZPPtr2),y get hLib jsr K.GetMemPtrA >STYA .3+1 lda S.PFT.SYSCALL getback #SYSCALL sec - sbc #SYS.FOPEN-4 0=Lib.load, 2=Lib.Unload + sbc #SYS.FOpen-4 0=Lib.load, 2=Lib.Unload tax pla discard JSR return @ pla - >LDYA ZPQuickPtr1 restore passed params + >LDYA ZPPtr1 restore passed params .3 jmp $ffff -.8 lda ZPQuickPtr2 +.8 lda ZPPtr2 clc - adc (ZPQuickPtr2) Add STR len + adc (ZPPtr2) Add STR len adc #S.PFT - sta ZPQuickPtr2 + sta ZPPtr2 bcc .1 -.9 >LDYA ZPQuickPtr1 restore passed params +.9 >LDYA ZPPtr1 restore passed params ldx S.PFT.SYSCALL rts *-------------------------------------- @@ -90,8 +90,8 @@ PFT.CheckNodeSTK PFT.CheckNodeA stx S.PFT.SYSCALL save #SYSCALL sta S.PFT.hFILE jsr K.GetMemPtrA X = unmidified - >STYA ZPQuickPtr1 - lda (ZPQuickPtr1) + >STYA ZPPtr1 + lda (ZPPtr1) beq .9 Handler is 0, back to kernel.... jsr K.GetMemPtrA @@ -99,7 +99,7 @@ PFT.CheckNodeA stx S.PFT.SYSCALL save #SYSCALL lda S.PFT.SYSCALL getback #SYSCALL sec - sbc #SYS.FOPEN-4 0=Lib.load, 2=Lib.Unload + sbc #SYS.FOpen-4 0=Lib.load, 2=Lib.Unload tax pla discard JSR return @ diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index 072eea53..c812f561 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -30,24 +30,23 @@ K.CreateProcessYA jsr PS.CreateChild bcs .9 - sta K.CreateProcess.CPSID + sta .8+1 jsr PS.Init bcc .8 pha save error code - lda K.CreateProcess.CPSID + lda .8+1 jsr PS.FreeA pla get back error code sec rts -.8 lda K.CreateProcess.CPSID +.8 lda #$ff self modified .9 rts *-------------------------------------- K.CreateProcess.Flags .BS 1 K.CreateProcess.CmdLine .BS 2 -K.CreateProcess.CPSID .BS 1 */-------------------------------------- * #GetPSByIDA * ##In : @@ -57,7 +56,7 @@ K.CreateProcess.CPSID .BS 1 *\-------------------------------------- K.GetPSByIDA pha >LDYAI TskMgr.Table - >STYA ZPQuickPtr1 + >STYA ZPPtr1 pla beq .8 @@ -65,29 +64,29 @@ K.GetPSByIDA pha ldx #0 .1 inx - lda ZPQuickPtr1 + lda ZPPtr1 clc adc #S.PS - sta ZPQuickPtr1 + sta ZPPtr1 bcc .2 - inc ZPQuickPtr1+1 + inc ZPPtr1+1 -.2 lda (ZPQuickPtr1) +.2 lda (ZPPtr1) bpl .3 ldy #S.PS.PID - lda (ZPQuickPtr1),y + lda (ZPPtr1),y .20 cmp #$ff Self Modified beq .8 -.3 cpx TSKMGR.SIZE +.3 cpx TskMgr.Count bne .1 .9 lda #TSKMGR.ERRNSP sec rts -.8 >LDYA ZPQuickPtr1 +.8 >LDYA ZPPtr1 clc rts */-------------------------------------- @@ -118,26 +117,26 @@ K.Sleep pla get PC LO * in : * out : * A = PSID -* we cannot use ZPQuickPtrs1 & 2 +* we cannot use ZPPtrs1 & 2 * because of calling K.NewPStrYA & S.DupEnvA *-------------------------------------- PS.CreateChild >LDYAI TskMgr.Table+S.PS - >STYA ZPQuickPtr3 + >STYA ZPPtr3 ldx #0 .1 inx - cpx TSKMGR.SIZE + cpx TskMgr.Count beq .2 - lda (ZPQuickPtr3) Found an empty slot + lda (ZPPtr3) Found an empty slot bpl .3 - lda ZPQuickPtr3 + lda ZPPtr3 clc adc #S.PS - sta ZPQuickPtr3 + sta ZPPtr3 bcc .1 - inc ZPQuickPtr3+1 + inc ZPPtr3+1 bra .1 @@ -148,7 +147,7 @@ PS.CreateChild >LDYAI TskMgr.Table+S.PS sec rts -.3 inc TSKMGR.SIZE +.3 inc TskMgr.Count .4 inc TSKMGR.LASTID Get a PSID not alredy running beq .4 not = 0 @@ -158,12 +157,12 @@ PS.CreateChild >LDYAI TskMgr.Table+S.PS ldy #S.PS.PID lda TSKMGR.LASTID - sta (ZPQuickPtr3),y + sta (ZPPtr3),y lda #0 ldy #S.PS.hCS -.5 sta (ZPQuickPtr3),y Blank Everything in this S.PS +.5 sta (ZPPtr3),y Blank Everything in this S.PS iny cpy #S.PS bne .5 @@ -172,7 +171,7 @@ PS.CreateChild >LDYAI TskMgr.Table+S.PS bit K.CreateProcess.Flags need to create ENV & Prefix ? beq .6 no... - sta (ZPQuickPtr3) Mark this PS with ENV flag + sta (ZPPtr3) Mark this PS with ENV flag ldy #S.PS.hPREFIX copy hPREFIX... lda (pPs),y @@ -182,7 +181,7 @@ PS.CreateChild >LDYAI TskMgr.Table+S.PS txa ldy #S.PS.hPREFIX - sta (ZPQuickPtr3),y + sta (ZPPtr3),y ldy #S.PS.hENV ...and hENV from parent PS lda (pPs),y @@ -190,34 +189,30 @@ PS.CreateChild >LDYAI TskMgr.Table+S.PS bcs .9 ldy #S.PS.hENV - sta (ZPQuickPtr3),y + sta (ZPPtr3),y bra .8 .6 ldy #S.PS.hPREFIX reuse same hPREFIX... lda (pPs),y - sta (ZPQuickPtr3),y + sta (ZPPtr3),y ldy #S.PS.hENV ...and hENV from parent PS lda (pPs),y - sta (ZPQuickPtr3),y + sta (ZPPtr3),y -.8 ldy #S.PS.hINDEV +.8 ldy #S.PS.hStdIn .81 lda (pPs),y - sta (ZPQuickPtr3),y + sta (ZPPtr3),y iny - cpy #S.PS.hERRDEV+1 + cpy #S.PS.hStdErr+1 bne .81 ldy #S.PS.PID lda (pPs),y ldy #S.PS.PPID - sta (ZPQuickPtr3),y - - ldy #S.PS.CPID - lda TSKMGR.LASTID - sta (pPs),y + sta (ZPPtr3),y lda #S.PS.F.HOLD bit K.CreateProcess.Flags @@ -227,9 +222,13 @@ PS.CreateChild >LDYAI TskMgr.Table+S.PS sta (pPs) HOLD parent PS if ExecProcess .82 lda #S.PS.F.INUSE+S.PS.F.INIT - ora (ZPQuickPtr3) - sta (ZPQuickPtr3) Make this PS Init.... + ora (ZPPtr3) + sta (ZPPtr3) Make this PS Init.... + + ldy #S.PS.CPID lda TSKMGR.LASTID + sta (pPs),y + clc Exit with A=PSID .9 rts *-------------------------------------- @@ -242,27 +241,27 @@ PS.Init >LDYA K.CreateProcess.CmdLine txa ldy #S.PS.hCMDLINE - sta (ZPQuickPtr3),y + sta (ZPPtr3),y pla Restore PTR... ply - >SYSCALL LoadExeYA Y,A=filename full path + >SYSCALL LoadExeYA Y,A=filename full path bcs .9 - >STYA ZPQuickPtr4 save PTR to Code Segment + >STYA ZPPtr4 save PTR to Code Segment txa ldy #S.PS.hCS - sta (ZPQuickPtr3),y save CS hMem in TSKSLOT + sta (ZPPtr3),y save CS hMem in TSKSLOT ldy #H.BIN.EXE.DS.SIZE+1 - lda (ZPQuickPtr4),y Load DS.SIZE HI + lda (ZPPtr4),y Load DS.SIZE HI tax dey - ora (ZPQuickPtr4),y + ora (ZPPtr4),y beq .2 DS.SIZE=0... - lda (ZPQuickPtr4),y + lda (ZPPtr4),y >PUSHAX Push DS.SIZE >PUSHBI S.MEM.F.INIT0 Clear DS jsr K.GetMem @@ -270,7 +269,7 @@ PS.Init >LDYA K.CreateProcess.CmdLine txa ldy #S.PS.hDS - sta (ZPQuickPtr3),y save DS hMem in TSKSLOT + sta (ZPPtr3),y save DS hMem in TSKSLOT .2 @@ -280,48 +279,35 @@ PS.Init >LDYA K.CreateProcess.CmdLine * PS.FreeA * In : A = PID to free *-------------------------------------- -PS.FreeA jsr K.GetPSByIDA - bcs * -* >STYA ZPQuickPtr1 Already in ZPQuickPtr1 +PS.FreeA jsr K.GetPSByIDA PS in ZPPtr1 ldy #S.PS.hCMDLINE - lda (ZPQuickPtr1),y - beq .2 - - jsr K.FreeMemA + jsr PS.FreeA.PsY - lda (ZPQuickPtr1) get S.PS.F + lda (ZPPtr1) get S.PS.F and #S.PS.F.ENV do we have to discard duplicated env & prefix ? - beq .4 + beq .1 -.2 ldy #S.PS.hENV - lda (ZPQuickPtr1),y - beq .3 + ldy #S.PS.hENV + jsr PS.FreeA.PsY - jsr K.FreeMemA + ldy #S.PS.hPREFIX + jsr PS.FreeA.PsY -.3 ldy #S.PS.hPREFIX - lda (ZPQuickPtr1),y - beq .4 +.1 ldy #S.PS.hDS + jsr PS.FreeA.PsY - jsr K.FreeMemA + ldy #S.PS.hCS + jsr PS.FreeA.PsY -.4 ldy #S.PS.hDS - lda (ZPQuickPtr1),y - beq .5 - - jsr K.FreeMemA - -.5 ldy #S.PS.hCS - lda (ZPQuickPtr1),y - beq .8 - - jsr K.FreeMemA - -.8 lda #0 - sta (ZPQuickPtr1) Mark TSKSLOT as free + lda #0 + sta (ZPPtr1) Mark TSKSLOT as free clc - rts +PS.FreeA.RTS rts +*-------------------------------------- +PS.FreeA.PsY lda (ZPPtr1),y + beq PS.FreeA.RTS + jmp K.FreeMemA *-------------------------------------- * PS.SelectA * In : A=PSID @@ -345,7 +331,7 @@ PS.Select ldy #S.PS.hCS jsr K.GetMemPtrA >STYA pData -.1 ldy #S.PS.hOUTDEV +.1 ldy #S.PS.hStdOut lda (pPs),y beq .8 @@ -362,23 +348,23 @@ PS.Select ldy #S.PS.hCS * A = hMem to new ENV *-------------------------------------- PS.DupEnvA jsr K.GetMemPtrA - >STYA ZPQuickPtr1 + >STYA ZPPtr1 >PUSHWI K.ENV.SIZE >PUSHBI 0 jsr K.GetMem bcs .9 - >STYA ZPQuickPtr2 + >STYA ZPPtr2 ldy #0 -.1 lda (ZPQuickPtr1),y - sta (ZPQuickPtr2),y +.1 lda (ZPPtr1),y + sta (ZPPtr2),y beq .8 iny bne .1 - inc ZPQuickPtr1+1 - inc ZPQuickPtr2+1 + inc ZPPtr1+1 + inc ZPPtr2+1 bra .1 .8 txa diff --git a/SYS/KERNEL.S.RUN.txt b/SYS/KERNEL.S.RUN.txt index 68cee14a..5f387437 100644 --- a/SYS/KERNEL.S.RUN.txt +++ b/SYS/KERNEL.S.RUN.txt @@ -6,10 +6,10 @@ AUTO 6 .LIST OFF *-------------------------------------- K.KernelRun jsr TSK.TskMgrRun - bcs .9 + bcs * jsr EVT.GetEvents - bcs K.KernelRun CS=no event + bcs .4 CS=no event jsr TSK.DispatchEvents bcc .4 CC=All Events Dispatched @@ -45,8 +45,8 @@ K.KernelRun jsr TSK.TskMgrRun .4 bit OPENAPPLE bpl K.KernelRun - lda KBD inc A2osX.RANDOM16 + lda KBD sta A2osX.RANDOM16+1 bpl K.KernelRun @@ -72,16 +72,22 @@ K.KernelRun jsr TSK.TskMgrRun stx A2osX.ASCREEN >STYA pDev - ldx #DEVMGR.SELECT - jsr pDevJmp - bra K.KernelRun + lda (pDev) + sta .5+1 + ldy #1 + lda (pDev),y + sta .5+2 + ldx #DEVMGR.CONTROL + jsr .5 + jmp K.KernelRun +.5 jmp $ffff *-------------------------------------- -.9 jsr DevMgr.SYS.Select +.9 jsr DevMgr.SYS.Control >LDYAI MSG.KRNLPANIC jsr K.CPrintFYA bra * *-------------------------------------- -MSG.DumpEvent >CSTR "!Unhandled Evt:F=%b,DevID=$%h,DATALO=$%h,DATAHI=$%h,W1=$%H,W2=$%H\n" +MSG.DumpEvent >CSTR "!Evt:F=%b,Dev=$%h,LO=$%h,HI=$%h,W1=$%H,W2=$%H\n" MSG.KRNLPANIC >CSTR "\n!!!Kernel Panic!!!\n" *-------------------------------------- MAN diff --git a/SYS/KERNEL.S.STR.txt b/SYS/KERNEL.S.STR.txt index 647f627b..989d9650 100644 --- a/SYS/KERNEL.S.STR.txt +++ b/SYS/KERNEL.S.STR.txt @@ -16,8 +16,8 @@ AUTO 6 * CS : error * A = SYS error code *\-------------------------------------- -K.NewPStrYA >STYA ZPQuickPtr2 - lda (ZPQuickPtr2) +K.NewPStrYA >STYA ZPPtr2 + lda (ZPPtr2) inc tay lda #0 Y,A = len of new string @@ -26,11 +26,11 @@ K.NewPStrYA >STYA ZPQuickPtr2 jsr K.GetMem bcs .9 - >STYA ZPQuickPtr1 + >STYA ZPPtr1 jsr K.PStrCpyPtr2Ptr1 - >LDYA ZPQuickPtr1 + >LDYA ZPPtr1 clc .9 rts @@ -46,13 +46,13 @@ K.NewPStrYA >STYA ZPQuickPtr2 K.PStrCpy jsr PullPtr1Ptr2 K.PStrCpyPtr2Ptr1 - lda (ZPQuickPtr2) - sta (ZPQuickPtr1) + lda (ZPPtr2) + sta (ZPPtr1) tay beq .2 -.1 lda (ZPQuickPtr2),y - sta (ZPQuickPtr1),y +.1 lda (ZPPtr2),y + sta (ZPPtr1),y dey bne .1 @@ -69,10 +69,10 @@ K.PStrCpyPtr2Ptr1 *\-------------------------------------- K.PStrCat jsr PullPtr1Ptr2 - lda (ZPQuickPtr2) + lda (ZPPtr2) tax - lda (ZPQuickPtr1) + lda (ZPPtr1) tay .1 cpy #255 @@ -80,17 +80,17 @@ K.PStrCat jsr PullPtr1Ptr2 iny - inc ZPQuickPtr2 + inc ZPPtr2 bne .2 - inc ZPQuickPtr1+1 + inc ZPPtr1+1 -.2 lda (ZPQuickPtr2) - sta (ZPQuickPtr1),y +.2 lda (ZPPtr2) + sta (ZPPtr1),y dex bne .1 .8 tya - sta (ZPQuickPtr1) + sta (ZPPtr1) clc rts */-------------------------------------- @@ -105,59 +105,59 @@ K.PStrCat jsr PullPtr1Ptr2 *\-------------------------------------- K.PStrMatch jsr PullPtr1Ptr2 - lda (ZPQuickPTR2) Keep Pattern Length in X + lda (ZPPtr2) Keep Pattern Length in X tax beq .8 Match always if empty ldy #0 -.1 inc ZPQuickPTR2 Make PTR1 advance to next char +.1 inc ZPPtr2 Make PTR1 advance to next char bne .2 - inc ZPQuickPTR2+1 + inc ZPPtr2+1 -.2 lda (ZPQuickPTR2) get pattern char +.2 lda (ZPPtr2) get pattern char cmp #'*' beq .5 .3 tya we must match ? or regular char - cmp (ZPQuickPTR1) check if at end of string + cmp (ZPPtr1) check if at end of string beq .9 yes, no char left, exit with error iny advance to next char to compare - lda (ZPQuickPTR2) get back pattern char + lda (ZPPtr2) get back pattern char cmp #'?' beq .4 no need to compare, any char will match - cmp (ZPQuickPTR1),y Regular Char, compare with string at Y + cmp (ZPPtr1),y Regular Char, compare with string at Y bne .9 no match, exit .4 dex char matched, check if end of pattern bne .1 continue if remaining char in pattern tya end of pattern, but end of string ? - cmp (ZPQuickPTR1) end of string ? + cmp (ZPPtr1) end of string ? beq .8 yes, string matched entirely bra .9 no, remaining char in string, no match .5 dex we have '*', last char of pattern ? beq .8 yes, match everything, including empty string - inc ZPQuickPTR2 Make PTR1 advance to next char + inc ZPPtr2 Make PTR1 advance to next char bne .6 - inc ZPQuickPTR2+1 + inc ZPPtr2+1 -.6 lda (ZPQuickPTR2) get next char of pattern +.6 lda (ZPPtr2) get next char of pattern cmp #'*' another '*' ? beq .5 yes, '**' = '*', go next char cmp #'?' '*?' ??? we must match a least one char beq .3 .7 tya we need at least one remaining char in string, - cmp (ZPQuickPTR1) check if at end of string + cmp (ZPPtr1) check if at end of string beq .9 no chance to match ? or regular char iny - lda (ZPQuickPTR2) get again char in pattern - cmp (ZPQuickPTR1),y compare with char in string + lda (ZPPtr2) get again char in pattern + cmp (ZPPtr1),y compare with char in string bne .7 not equal to next non wildcard in pattern bra .4 go check remaining char in pattern... @@ -178,21 +178,21 @@ K.PStrMatch jsr PullPtr1Ptr2 K.PStrUprYA ldx #0 .HS 2C bit abs K.PStrLwrYA ldx #2 - >STYA ZPQuickPtr1 + >STYA ZPPtr1 pha save Y,A to restore them at exit phy - lda (ZPQuickPtr1) + lda (ZPPtr1) tay -.1 lda (ZPQuickPtr1),y +.1 lda (ZPPtr1),y cmp K.PStrUprLwr,x bcc .2 cmp K.PStrUprLwr+1,x bcs .2 eor #$20 - sta (ZPQuickPtr1),y + sta (ZPPtr1),y .2 dey bne .1 @@ -229,12 +229,12 @@ K.PStrUprLwr .AS "azAZ" K.PStrFTime jsr PullPtr1Ptr2Ptr3 lda #0 - sta (ZPQuickPtr3) Reset target PSTR length + sta (ZPPtr3) Reset target PSTR length tay .1 iny - lda (ZPQuickPtr2),y + lda (ZPPtr2),y cmp #'%' beq .2 @@ -242,18 +242,18 @@ K.PStrFTime jsr PullPtr1Ptr2Ptr3 jsr K.PStrFTime.addChar ply .10 tya - cmp (ZPQuickPtr2) + cmp (ZPPtr2) bne .1 rts .2 tya - cmp (ZPQuickPtr2) + cmp (ZPPtr2) beq .8 iny ldx #K.PStrFTime.JMPL-K.PStrFTime.Tbl-1 -.3 lda (ZPQuickPtr2),y +.3 lda (ZPPtr2),y cmp K.PStrFTime.Tbl,x beq .4 dex @@ -307,7 +307,7 @@ K.PStrFTime.A ldx #3 Short day of week, 3 chars... K.PStrFTime.AA ldx #15 full DoW >LDYAI K.PStrFTime.DAY - >STYA ZPQuickPtr4 + >STYA ZPPtr4 ldy #S.Time.WDAY bra K.PStrFTime.STR @@ -316,31 +316,31 @@ K.PStrFTime.B ldx #3 Short Month, 3 chars.... K.PStrFTime.BB ldx #15 full Month.... >LDYAI K.PStrFTime.MON - >STYA ZPQuickPtr4 + >STYA ZPPtr4 ldy #S.Time.MONTH -K.PStrFTime.STR lda (ZPQuickPtr1),y get required S.Time field value +K.PStrFTime.STR lda (ZPPtr1),y get required S.Time field value tay beq .9 Illegal value .1 dey range 0..x beq .2 - lda (ZPQuickPtr4) + lda (ZPPtr4) sec - adc ZPQuickPtr4 - sta ZPQuickPtr4 + adc ZPPtr4 + sta ZPPtr4 bcc .1 - inc ZPQuickPtr4+1 + inc ZPPtr4+1 bra .1 .2 ldy #0 .3 iny - lda (ZPQuickPtr4),y + lda (ZPPtr4),y phy jsr K.PStrFTime.addChar pla - cmp (ZPQuickPtr4) + cmp (ZPPtr4) beq .8 tay @@ -360,7 +360,7 @@ K.PStrFTime.D ldy #S.Time.DAY K.PStrFTime.HH ldy #S.Time.HOUR bra K.PStrFTime.addDecPtr1Y K.PStrFTime.II ldy #S.Time.HOUR - lda (ZPQuickPtr1),y + lda (ZPPtr1),y cmp #12 bcc .1 sbc #12 @@ -370,7 +370,7 @@ K.PStrFTime.M ldy #S.Time.MONTH K.PStrFTime.MM ldy #S.Time.MINUTE bra K.PStrFTime.addDecPtr1Y K.PStrFTime.P ldy #S.Time.HOUR - lda (ZPQuickPtr1),y + lda (ZPPtr1),y cmp #12 bcc .1 lda #'p' @@ -388,7 +388,7 @@ K.PStrFTime.YY ldy #S.Time.CENTURY K.PStrFTime.Y ldy #S.Time.YEAR *-------------------------------------- K.PStrFTime.addDecPtr1Y - lda (ZPQuickPtr1),y + lda (ZPPtr1),y K.PStrFTime.addDecA sta K.PStrFTime.BIN stz K.PStrFTime.DEC @@ -421,12 +421,12 @@ K.PStrFTime.addDecA *-------------------------------------- K.PStrFTime.addChar pha - lda (ZPQuickPtr3) + lda (ZPPtr3) inc - sta (ZPQuickPtr3) + sta (ZPPtr3) tay pla - sta (ZPQuickPtr3),y + sta (ZPPtr3),y rts *-------------------------------------- K.PStrFTime.DAY >PSTR "Monday" @@ -465,8 +465,8 @@ K.PStrFTime.DEC .BS 1 always < 100 * A = SYS error code *\-------------------------------------- K.PStr2StrArrayYA - >STYA ZPQuickPtr1 - lda (ZPQuickPtr1) Get mem size STRLEN+1 + >STYA ZPPtr1 + lda (ZPPtr1) Get mem size STRLEN+1 ldx #0 inc bne .1 @@ -479,18 +479,18 @@ K.PStr2StrArrayYA phx save hMem phy save PTR.LO pha save PTR.HI - >STYA ZPQuickPtr2 + >STYA ZPPtr2 - lda (ZPQuickPtr1) + lda (ZPPtr1) tax count in src string beq .8 ldy #0 reset index in dst token -.3 inc ZPQuickPtr1 get... +.3 inc ZPPtr1 get... bne .4 - inc ZPQuickPtr1+1 -.4 lda (ZPQuickPtr1) ...next char + inc ZPPtr1+1 +.4 lda (ZPPtr1) ...next char cmp #' ' found a space ? bne .6 @@ -498,18 +498,18 @@ K.PStr2StrArrayYA tya in a token ? beq .7 no, skip & go to next char - sta (ZPQuickPtr2) yes, set this token len + sta (ZPPtr2) yes, set this token len sec - adc ZPQuickPtr2 advance to next token - sta ZPQuickPtr2 + adc ZPPtr2 advance to next token + sta ZPPtr2 bcc .5 - inc ZPQuickPtr2+1 + inc ZPPtr2+1 .5 ldy #0 reset index in dst token bra .7 .6 iny add char to token - sta (ZPQuickPtr2),y + sta (ZPPtr2),y .7 dex end of src string? bne .3 no...next char... @@ -517,15 +517,15 @@ K.PStr2StrArrayYA tya yes, are we in a token ? beq .8 - sta (ZPQuickPtr2) yes, set last token len + sta (ZPPtr2) yes, set last token len sec - adc ZPQuickPtr2 advance to next token - sta ZPQuickPtr2 + adc ZPPtr2 advance to next token + sta ZPPtr2 bcc .8 - inc ZPQuickPtr2+1 + inc ZPPtr2+1 .8 lda #0 - sta (ZPQuickPtr2) set Array Ending 0 + sta (ZPPtr2) set Array Ending 0 pla get back PTR.HI ply get back PTR.LO diff --git a/SYS/KERNEL.S.TIME.txt b/SYS/KERNEL.S.TIME.txt index 423acd30..2ca7ae37 100644 --- a/SYS/KERNEL.S.TIME.txt +++ b/SYS/KERNEL.S.TIME.txt @@ -18,10 +18,10 @@ DAY0 .EQ 4 day 0 was a thursday * Out : * S.TIME filled with System date/time *-------------------------------------- -K.TimeYA >STYA ZPQuickPtr2 +K.TimeYA >STYA ZPPtr2 >MLICALL MLIGETTIME >LDYAI DATELO - >STYA ZPQuickPtr1 + >STYA ZPPtr1 bra K.PTime2Time.1 *-------------------------------------- * In : @@ -31,13 +31,13 @@ K.TimeYA >STYA ZPQuickPtr2 K.PTime2Time jsr PullPtr1Ptr2 K.PTime2Time.1 ldy #1 - lda (ZPQuickPtr1),y Get Year + lda (ZPPtr1),y Get Year lsr C is high bit of month ldy #S.Time.YEAR - sta (ZPQuickPtr2),y set year + sta (ZPPtr2),y set year sta K.CTime.Year for conputing Century/WDAY later - lda (ZPQuickPtr1) Get Month/day + lda (ZPPtr1) Get Month/day pha save Day ror lsr @@ -45,12 +45,12 @@ K.PTime2Time.1 ldy #1 lsr lsr ldy #S.Time.MONTH - sta (ZPQuickPtr2),y set month + sta (ZPPtr2),y set month pla get back day and #$1F iny - sta (ZPQuickPtr2),y set day + sta (ZPPtr2),y set day lda K.CTime.Year get back year @@ -59,23 +59,23 @@ K.PTime2Time.1 ldy #1 rol get back C in bit 0 eor #1 toggle C adc #19 set date before 1970 -> 20xx - sta (ZPQuickPtr2) set Century + sta (ZPPtr2) set Century sta K.CTime.Century for conputing WDAY later ldy #2 - lda (ZPQuickPtr1),y Get Min + lda (ZPPtr1),y Get Min tax iny - lda (ZPQuickPtr1),y Get Hour + lda (ZPPtr1),y Get Hour ldy #S.Time.HOUR - sta (ZPQuickPtr2),y set hour + sta (ZPPtr2),y set hour iny txa - sta (ZPQuickPtr2),y set min + sta (ZPPtr2),y set min iny lda #0 - sta (ZPQuickPtr2),y set seconds (ProDOS does not provide it) + sta (ZPPtr2),y set seconds (ProDOS does not provide it) * 1/1/1970 was Thursday...if not leap, add one, if leap add 2 @@ -117,7 +117,7 @@ K.ComputeWDAY lda #3 Thursday : 4 (-1 for mod 7) bra .1 .4 ldy #S.Time.MONTH - lda (ZPQuickPtr2),y get month + lda (ZPPtr2),y get month tax .5 lda K.StrFTime.MDAY-1,x get day count in this month @@ -144,7 +144,7 @@ K.ComputeWDAY lda #3 Thursday : 4 (-1 for mod 7) pla ldy #S.Time.DAY - adc (ZPQuickPtr2),y get month (1..31) + adc (ZPPtr2),y get month (1..31) dec adjust range 0.31 for MOD 7 .8 cmp #7 MOD 7 @@ -154,7 +154,7 @@ K.ComputeWDAY lda #3 Thursday : 4 (-1 for mod 7) .80 inc adjust range 1..7 ldy #S.Time.WDAY - sta (ZPQuickPtr2),y + sta (ZPPtr2),y clc rts @@ -168,7 +168,7 @@ K.CTime2Time jsr PullPtr1Ptr2 ldy #3 -.1 lda (ZPQuickPtr1),y +.1 lda (ZPPtr1),y sta K.CTime.DWORD,y dey bpl .1 @@ -245,7 +245,7 @@ K.CTime2Time jsr PullPtr1Ptr2 pla lda K.CTime.Mod ldy #S.Time.SECOND - sta (ZPQuickPtr2),y + sta (ZPPtr2),y stz K.CTime.Div3600 @@ -272,11 +272,11 @@ K.CTime2Time jsr PullPtr1Ptr2 lda K.CTime.Mod dey ldy #S.Time.MINUTE - sta (ZPQuickPtr2),y + sta (ZPPtr2),y lda K.CTime.Div3600 dey ldy #S.Time.HOUR - sta (ZPQuickPtr2),y + sta (ZPPtr2),y lda K.CTime.DivDay WDAY computation : (DivDay + DAY0) mod 7 clc @@ -297,7 +297,7 @@ K.CTime2Time jsr PullPtr1Ptr2 lda K.CTime.Mod ldy #S.Time.WDAY - sta (ZPQuickPtr2),y + sta (ZPPtr2),y lda #CENTURY0 sta K.CTime.Century @@ -330,10 +330,10 @@ K.CTime2Time.Year .2 pla lda K.CTime.Century * ldy #S.Time.CENTURY - sta (ZPQuickPtr2) + sta (ZPPtr2) ldy #S.Time.YEAR lda K.CTime.Year - sta (ZPQuickPtr2),y + sta (ZPPtr2),y clc rts diff --git a/SYS/KERNEL.S.TSK.txt b/SYS/KERNEL.S.TSK.txt index 420d911e..b4561bf7 100644 --- a/SYS/KERNEL.S.TSK.txt +++ b/SYS/KERNEL.S.TSK.txt @@ -10,10 +10,10 @@ AUTO 6 TSK.TskMgrRun >LDYAI TskMgr.Table+S.PS skip PS 0 >STYA pPs - lda TSKMGR.SIZE - sta TSKMGR.COUNT + lda TskMgr.Count + sta TskMgr.Idx -.1 dec TSKMGR.COUNT skip PS 0 +.1 dec TskMgr.Idx skip PS 0 beq .8 lda (pPs) get S.PS.F @@ -58,16 +58,16 @@ TSK.TskMgrRun >LDYAI TskMgr.Table+S.PS skip PS 0 pha save RC ldy #S.PS.PPID Notify Parent Process for exit code... lda (pPs),y - jsr K.GetPSByIDA will set ZPQuickPtr1 if success + jsr K.GetPSByIDA will set ZPPtr1 if success bcs .5 parent is dead.....skipping... - lda (ZPQuickPtr1) Parent PS is HOLD? + lda (ZPPtr1) Parent PS is HOLD? and #S.PS.F.HOLD beq .5 no... pla yes, probably waiting for this PS to terminate.... ldy #S.PS.RC - sta (ZPQuickPtr1),y + sta (ZPPtr1),y .HS B0 BCS .5 pla @@ -115,10 +115,10 @@ TSK.DispatchEvents >LDYAI TskMgr.Table+S.PS >STYA pPs - lda TSKMGR.SIZE Number of actual processes... - sta TSKMGR.COUNT ...to give event list + lda TskMgr.Count Number of actual processes... + sta TskMgr.Idx ...to give event list -.1 dec TSKMGR.COUNT skip PS 0 +.1 dec TskMgr.Idx skip PS 0 beq .9 lda (pPs) get S.PS.F @@ -181,7 +181,7 @@ TSK.DispatchEvents TSK.TskMgrQuit clc rts *-------------------------------------- -TSKMGR.COUNT .BS 1 +TskMgr.Idx .BS 1 TSKMGR.EVENTCNT .BS 1 *-------------------------------------- MAN diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index c4e9d3ec..d9e305ca 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -1,6 +1,6 @@ PR#3 PREFIX /A2OSX.SRC -NEW +LOMEM $A00 INC 1 AUTO 6 .LIST OFF @@ -14,10 +14,10 @@ AUTO 6 .INB /A2OSX.DEV/INC/PRODOS.I *-------------------------------------- TmpPtr1 .EQ $0 for X.PRINTF.S -ZPQuickPtr1 .EQ ZPKERNEL Temp Ptrs for use in very limited scope -ZPQuickPtr2 .EQ ZPKERNEL+2 (could be trashed by any JSR) -ZPQuickPtr3 .EQ ZPKERNEL+4 -ZPQuickPtr4 .EQ ZPKERNEL+6 +ZPPtr1 .EQ ZPKERNEL Temp Ptrs for use in very limited scope +ZPPtr2 .EQ ZPKERNEL+2 (could be trashed by any JSR) +ZPPtr3 .EQ ZPKERNEL+4 +ZPPtr4 .EQ ZPKERNEL+6 *-------------------------------------- * Kernel Init Stage 2 *-------------------------------------- @@ -93,21 +93,22 @@ A2osX.D002.END .EQ * *-------------------------------------- * LC AUX $E000 API Calls $80-$FE *-------------------------------------- -A2osX.E000 .EQ * +A2osX.E000 .EQ * .PH $E000 .INB SYS/KERNEL.S.JMP .INB SYS/KERNEL.S.DAT .INB SYS/KERNEL.S.IRQ .INB SYS/KERNEL.S.MEM + .INB SYS/KERNEL.S.CHR *-------------------------------------- PullPtr1Ptr2Ptr3 sec .HS 90 bcc PullPtr1Ptr2 clc - >PULLW ZPQuickPtr1 - >PULLW ZPQuickPtr2 + >PULLW ZPPtr1 + >PULLW ZPPtr2 bcc .9 - >PULLW ZPQuickPtr3 + >PULLW ZPPtr3 .9 rts *-------------------------------------- * Make sure KERNEL.S.D01 is the last one @@ -128,17 +129,17 @@ A2osX.E000.SIZE .EQ A2osX.E000.END-A2osX.E000 .LIST OFF .DO A2osX.GP.SIZE>$1E0 .LIST ON -* !!!!!!!!!!!!! ERROR:GP too big !!!!!!!!!!!! +* !!!!!!!!! ERROR:GP too big !!!!!!!!!! .LIST OFF .FIN .DO A2osX.D001.SIZE>$1000 .LIST ON -* !!!!!!!!!!!!! ERROR:BNK1 too big !!!!!!!!!! +* !!!!!!!!! ERROR:BNK1 too big !!!!!!!! .LIST OFF .FIN .DO A2osX.D002.SIZE>$1000 .LIST ON -* !!!!!!!!!!!!! ERROR:BNK2 too big !!!!!!!!!! +* !!!!!!!!! ERROR:BNK2 too big !!!!!!!! .LIST OFF .FIN *-------------------------------------- diff --git a/BIN/HWINFO.S.txt b/SYS/KM.ATLK.txt similarity index 100% rename from BIN/HWINFO.S.txt rename to SYS/KM.ATLK.txt diff --git a/SYS/KM.VSDRIVE.S.txt b/SYS/KM.VSDRIVE.S.txt index a68efe24..5c3e7524 100644 --- a/SYS/KM.VSDRIVE.S.txt +++ b/SYS/KM.VSDRIVE.S.txt @@ -237,9 +237,19 @@ DRV .EQ * cld DRV.Slotn0 ldx #$ff Self Modified lda DRV.COMMAND S=0,R=1,W=2,F=3 - beq .8 Status - cmp #3 - beq .81 Format .... + bne .1 + + ldx #$ff return Status + ldy #$ff +.8 lda #0 + clc + rts + +.9 lda #MLI.ERR.IO + rts + +.1 cmp #3 + beq .8 Format .... bcs .9 more....IO error ora #2 W=2,R=3 @@ -247,19 +257,7 @@ DRV.Slotn0 ldx #$ff Self Modified bpl .1 adc #2 CC from bcs .9 -.1 jsr DRV.DO.CMD - bcs .9 - -.8 ldx #$ff return Status - ldy #$ff -.81 lda #0 - clc - rts - -.9 lda #MLI.ERR.IO - rts -*-------------------------------------- -DRV.DO.CMD sta DRV.CmdBuf.Cmd store cmd + sta DRV.CmdBuf.Cmd store cmd eor #VS.CMD eor DRV.BLKNUM eor DRV.BLKNUM+1 @@ -280,103 +278,89 @@ DRV.DO.CMD sta DRV.CmdBuf.Cmd store cmd * send CMD+CS ldy #4 Send 5 bytes including Sum -.1 lda DRV.CmdBuf.Sum,y +.2 lda DRV.CmdBuf.Sum,y jsr DRV.SSCSend - bcs .9 dey - bpl .1 + bpl .2 * read back CMD ldy #3 Read Back and check 4 bytes -.2 jsr DRV.SSCGet - bcs .9 - cmp DRV.CmdBuf.BlkHi,y - bne .9 +.3 jsr DRV.SSCGet + eor DRV.CmdBuf.BlkHi,y + bne DRV.DO.CMD.ERR dey - bpl .2 + bpl .3 * Get ProDOS Date/time send from server if READ (3 or 5) lda DRV.COMMAND dec 1-1=0 if read - bne .6 go write - + bne DRV.DO.CMD.W go write +*-------------------------------------- * Read block : Discard ProDOS time recieved from Server (4 bytes) - - ldy #4 Read 4 bytes +*-------------------------------------- +DRV.DO.CMD.R ldy #4 Read 4 bytes -.3 jsr DRV.SSCGet - bcs .9 +.1 jsr DRV.SSCGet eor DRV.CmdBuf.Sum sta DRV.CmdBuf.Sum dey - bne .3 + bne .1 * recieve Header Sum and check jsr DRV.SSCGet - bcs .9 eor DRV.CmdBuf.Sum - bne .9 + bne DRV.DO.CMD.ERR * tay Y=0 from dey/bne -.4 jsr DRV.SSCGet - bcs .9 +.2 jsr DRV.SSCGet sta (DRV.BUFF),y iny - bne .4 + bne .2 -.5 jsr DRV.SSCGet - bcs .9 +.3 jsr DRV.SSCGet sta (DRV.A1L),y iny - bne .5 + bne .3 jsr DRV.BufCheckSum - sta DRV.CmdBuf.Sum jsr DRV.SSCGet - bcs .9 eor DRV.CmdBuf.Sum - bne .9 - rts A=0,CC from bcs .9 - -* Write Block -.6 ldy #0 - -.7 lda (DRV.BUFF),y - jsr DRV.SSCSend - bcs .9 - iny - bne .7 + bne DRV.DO.CMD.ERR +.9 rts A=0,CC from bcs .9 -.8 lda (DRV.A1L),y +DRV.DO.CMD.ERR sec +DRV.DO.CMD.RTS rts +*-------------------------------------- +* Write Block +*-------------------------------------- +DRV.DO.CMD.W ldy #0 + +.1 lda (DRV.BUFF),y jsr DRV.SSCSend - bcs .9 iny - bne .8 + bne .1 + +.2 lda (DRV.A1L),y + jsr DRV.SSCSend + iny + bne .2 jsr DRV.BufCheckSum - sta DRV.CmdBuf.Sum Save Block CheckSum for comparing later jsr DRV.SSCSend - bcs .9 ldy #4 Read 5 bytes (echo from server) -.81 jsr DRV.SSCGet - bcs .9 +.3 jsr DRV.SSCGet eor DRV.CmdBuf.Sum,y Check 5 bytes (including block Sum) - bne .9 + bne DRV.DO.CMD.ERR dey - bpl .81 - - rts - -.9 -DRV.CS sec + bpl .3 rts *-------------------------------------- DRV.CmdBuf.Sum .BS 1 Reverse order for dey @@ -389,37 +373,42 @@ DRV.BufCheckSum lda #0 tay .1 eor (DRV.BUFF),y - eor (DRV.A2L),y + eor (DRV.A1L),y iny bne .1 + sta DRV.CmdBuf.Sum rts *-------------------------------------- DRV.SSCSend sta .2+1 + .1 lda SSC.STATUS,x bit #SSC.STATUS.DCD+SSC.STATUS.DSR - beq DRV.CS - + beq DRV.IOERR + and #SSC.STATUS.TDRE Outgoing char? beq .1 .2 lda #$ff sta SSC.DATA,x - clc rts *-------------------------------------- -DRV.SSCGet -.1 lda SSC.STATUS,x +DRV.SSCGet lda SSC.STATUS,x bit #SSC.STATUS.DCD+SSC.STATUS.DSR - beq DRV.CS + beq DRV.IOERR and #SSC.STATUS.RDRF incoming char? - beq .1 + beq DRV.SSCGet lda SSC.DATA,x - clc rts -*-------------------------------------- +*-------------------------------------- +DRV.IOERR pla + pla + lda #MLI.ERR.IO + sec + rts +*-------------------------------------- .EP *-------------------------------------- .LIST ON diff --git a/_Docs/KERNEL.md b/_Docs/KERNEL.md index 1dac1699..5bfa4606 100644 --- a/_Docs/KERNEL.md +++ b/_Docs/KERNEL.md @@ -19,6 +19,64 @@ Returns argument count in the process command line. + Y,A = PStr To Arg[A] + CS : Out Of Bound +#FPutCAY +Print A (char) to File + +##In: ++ A : char to print ++ Y = hFILE + +##Out: ++ CC = success + +#PutCA +Print A (char) to StdOut + +##In: ++ A : char to print + +##Out: ++ CC = success + +#FGetCA +Get char from File + +##In: ++ A = hFILE + +##Out: ++ CC = success + + A = char + +#GetC +Get char from StdIn + +##In: ++ none. + +##Out: ++ CC = success + + A = char + +#FPutCS +Print String to FILE + +##In: ++ PUSHW : CPtr ++ PUSHB : hFILE + +##Out: ++ CC = success + +#PutCSYA +Print String to StdOut + +##In: ++ Y,A : CPtr + +##Out: ++ CC = success + #SScanF Scan a PStr (in progress) @@ -70,27 +128,6 @@ Prints Pascal/C-Style String + CC : success + CS : I/O error from COut -#FPutCAY -Print A (char) to File - -##In: -+ A : char to print -+ Y = hFILE -+ none. - -##Out: -+ CC = success - -#PutCA -Print A (char) to StdOut - -##In: -+ A : char to print -+ none. - -##Out: -+ CC = success - #GetDevByIDA ##IN: @@ -101,7 +138,7 @@ Print A (char) to StdOut + Y,A = DEVSLOT + note: X Unmodified -#GetDevIDByNameYA +#GetDevByNameYA ##IN: + Y,A = Ptr to device name (PStr) @@ -111,7 +148,7 @@ Print A (char) to StdOut + X = DEVID + Y,A = DEVSLOT -#GetDevInfoA +#GetDevStatusA ##IN: + A = DevID @@ -121,7 +158,7 @@ Print A (char) to StdOut + Y,A = Ptr to S.DEVINFO #MkNodYA -return a S.FILE from a given Device +return a S.FILE for a given Device NAME ##IN: + Y,A=DevName @@ -228,11 +265,11 @@ Open a file + PUSHW = AUXTYPE + PUSHB = TYPE + PUSHB = MODE - + SYS.FOPEN.R : if R and exists -> ERROR - + SYS.FOPEN.W : if W and exists -> CREATE - + SYS.FOPEN.A : Append - + SYS.FOPEN.T : Open/Append in Text mode - + SYS.FOPEN.X : Create if not exists + + SYS.FOpen.R : if R and exists -> ERROR + + SYS.FOpen.W : if W and exists -> CREATE + + SYS.FOpen.A : Append + + SYS.FOpen.T : Open/Append in Text mode + + SYS.FOpen.X : Create if not exists + PUSHW = PATH (PSTR) ##Out : @@ -369,7 +406,7 @@ And return, if found, the full path to it. + PUSHW = AUXTYPE (Handled by.... + PUSHB = TYPE ... + PUSHB = MODE ... -+ PUSHW = PATH ...FOPEN) ++ PUSHW = PATH ...FOpen) ##Out: + Y,A = File Length @@ -383,7 +420,7 @@ And return, if found, the full path to it. + PUSHW = AUXTYPE (Handled by.... + PUSHB = TYPE ... + PUSHB = MODE ... -+ PUSHW = PATH ...FOPEN) ++ PUSHW = PATH ...FOpen) #GetMem