diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 7272aed0..e5ec8cac 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/FORMAT.S.txt b/BIN/FORMAT.S.txt index 8a785fa3..422f82fe 100644 --- a/BIN/FORMAT.S.txt +++ b/BIN/FORMAT.S.txt @@ -23,7 +23,7 @@ CS.START cld .DA 0 .DA CS.END-CS.START CS .DA DS.END-DS.START DS - .DA #16 SS + .DA #32 SS .DA #6 ZP .DA 0 *-------------------------------------- @@ -343,5 +343,5 @@ DIB .BS S.DIB DS.END .ED *-------------------------------------- MAN -SAVE USR/SRC/BIN/BIN/FORMAT.S +SAVE USR/SRC/BIN/FORMAT.S ASM diff --git a/BIN/PS.S.txt b/BIN/PS.S.txt index c516c9c3..ed78f8e5 100644 --- a/BIN/PS.S.txt +++ b/BIN/PS.S.txt @@ -141,5 +141,5 @@ DS.END .ED *-------------------------------------- MAN -SAVE USR/SRC/BIN/BIN/PS.S +SAVE USR/SRC/BIN/PS.S ASM diff --git a/BIN/SHELL.S.CL.txt b/BIN/SHELL.S.CL.txt index 28ee2359..c78d08f8 100644 --- a/BIN/SHELL.S.CL.txt +++ b/BIN/SHELL.S.CL.txt @@ -264,8 +264,13 @@ CL.PrintCmdBuf >LDYA ZPCLBuf CL.GetLine >LDYA ZPFileBufPtr >STYA.G CMD.FileBufPtr + lda #"a" + sta $815 + lda (ZPFileBufPtr) beq .9 + + inc $815 ldx #0 not in " @@ -273,7 +278,7 @@ CL.GetLine >LDYA ZPFileBufPtr .1 lda (ZPFileBufPtr),y beq .7 - + inc $815 cmp #C.CR beq .6 diff --git a/BIN/SHELL.S.txt b/BIN/SHELL.S.txt index 20e4f194..06cad22a 100644 --- a/BIN/SHELL.S.txt +++ b/BIN/SHELL.S.txt @@ -166,24 +166,50 @@ J.CMD.Eval.TOKEN4 .DA M32.Add L.M32.Printf .DA M32.Printf L.ERR.Codes .DA ERR.Codes L.ERR.Messages .DA ERR.Messages +L.MSG.DEBUG .DA MSG.DEBUG .DO CSH=1 .INB USR/SRC/BIN/SHELL.R.CSH .FIN .DA 0 *-------------------------------------- +CS.DEBUG >PUSHWI K.VER + >PUSHBI 2 + >LDYA L.MSG.GREETINGS + >SYSCALL printf + + lda #0 + >SYSCALL ArgV + >PUSHYA + >PUSHBI 2 + >LDYA L.MSG.DEBUG + >SYSCALL printf + + lda #1 + >SYSCALL ArgV + >PUSHYA + >PUSHBI 2 + >LDYA L.MSG.DEBUG + >SYSCALL printf + rts +*-------------------------------------- CS.INIT clc CS.INIT.RTS rts *-------------------------------------- -CS.RUN jsr CMD.Init +CS.RUN lda #"I" + sta $819 + sta $817 + + jsr CMD.Init bcs CS.INIT.RTS ldy #S.PS.ARGC lda (pPS),y beq .1 no arg, continue starting interactive + jsr CS.DEBUG + lda #1 >SYSCALL ArgV - >SYSCALL LoadTxtFile bcs CS.INIT.RTS @@ -209,7 +235,7 @@ CS.RUN jsr CMD.Init >PUSHBI 2 >LDYA L.MSG.GREETINGS >SYSCALL printf - bcs CS.INIT.RTS +* bcs CS.INIT.RTS *-------------------------------------- CS.RUN.LOOP jsr CL.Reset jsr IO.Reset @@ -259,7 +285,7 @@ CS.RUN.LOOP jsr CL.Reset bne .7 .62 >LDA.G hFileBuf batch mode ? - beq CS.RUN.INTERCATIVE + beq CS.RUN.INTERACTIVE jmp CS.RUN.BATCH .7 jmp CS.RUN.READ @@ -267,7 +293,7 @@ CS.RUN.LOOP jsr CL.Reset .9 sec rts *-------------------------------------- -CS.RUN.INTERCATIVE +CS.RUN.INTERACTIVE jsr CL.PrintPrompt bcs .9 @@ -356,10 +382,13 @@ CS.RUN.BATCH >SYSCALL GetChar jsr CL.GetLine .FIN bcc .7 - + cmp #C.EOF bne .3 + lda #"\" + sta $819 + lda #$ff >STA.G bExit inc @@ -369,7 +398,8 @@ CS.RUN.BATCH >SYSCALL GetChar .3 sec bra CS.RUN.LOOP.END -.7 >LDA.G CL.bExec +.7 inc $817 + >LDA.G CL.bExec bpl CS.RUN.LOOP.80 lda (ZPCLBuf) @@ -564,6 +594,7 @@ ENV.PATH .AZ "PATH" ENV.PWD .AZ "PWD" ENV.PS1 .AZ "PS1" ENV.HOME .AZ "HOME" +MSG.DEBUG .AZ "{%s}\r\n" *-------------------------------------- * https://www.tldp.org/LDP/abs/html/io-redirection.html *-------------------------------------- diff --git a/DRV/CONSOLE.DRV.S.txt b/DRV/CONSOLE.DRV.S.txt index 81521fbe..557acfcf 100644 --- a/DRV/CONSOLE.DRV.S.txt +++ b/DRV/CONSOLE.DRV.S.txt @@ -149,7 +149,12 @@ STATUS >STYA ZPIOCTL OPEN sta A2osX.SCRNDEVS DEV.ID in A lda #S.DIB.S.OPENED - tsb DIB+S.DIB.S + ora DIB+S.DIB.S + sta DIB+S.DIB.S + + lda #"C" + sta $417 + sta $817 stz OutPtr stz OutCnt @@ -163,6 +168,9 @@ CONTROL sta SETTEXT sta CLRPAGE2 lda #1 sta A2osX.ASCREEN + lda #"c" + sta $417 + sta $817 clc rts *-------------------------------------- diff --git a/INC/KERNEL.I.txt b/INC/KERNEL.I.txt index 0f7b9018..e5ac81df 100644 --- a/INC/KERNEL.I.txt +++ b/INC/KERNEL.I.txt @@ -3,94 +3,6 @@ PREFIX AUTO 4,1 .LIST OFF *-------------------------------------- -ZPKERNEL .EQ $0 -ZPMEMMGR .EQ $10 -*-------------------------------------- -ZPPtr1 .EQ ZPKERNEL -ZPPtr2 .EQ ZPKERNEL+2 -ZPPtr3 .EQ ZPKERNEL+4 -ZPPtr4 .EQ ZPKERNEL+6 - -pFD .EQ ZPKERNEL+10 -pDRV .EQ ZPKERNEL+12 -pIOCTL .EQ ZPKERNEL+12 -pIOBuf .EQ ZPKERNEL+14 -*-------------------------------------- -SYS.BASL0 .EQ $800 -*-------------------------------------- -* AuxMove / XFer -*-------------------------------------- -A1L .EQ $3C -A2L .EQ $3E -A4L .EQ $42 - -XFer.JMP .EQ $3ED - -AuxMove .EQ $C311 -XFer .EQ $C314 CS:M->X, VS:Use Aux ZP -*-------------------------------------- -* $42-$47 ProDOS Block Device Drivers Main -*-------------------------------------- -DRV.BLK.Cmd .EQ $42 -DRV.BLK.UnitNum .EQ $43 -DRV.BLK.Buf .EQ $44 -DRV.BLK.BlkNum .EQ $47 -*-------------------------------------- -* $5E-$C8 RESERVED APPLESOFT Main/Aux (ROM Call, no need to switch back MainZP) -*-------------------------------------- -SIGNFLG .EQ $16 COS,SIN,TAN -INDEX .EQ $5E ->$5F -FORPNT .EQ $85 ->$86 -FAC .EQ $9D ->$A1 -FAC.SIGN .EQ $A2 -ARG .EQ $A5 -> $A9 (5 bytes) -ARG.SIGN .EQ $AA -*FAC.EXTENSION .EQ $AC -TXTPTR .EQ $B8 -*-------------------------------------- -* ROM Entry Point -*-------------------------------------- -ROM.FSUB .EQ 0 -ROM.FADD .EQ 2 -ROM.LTOF .EQ 4 -ROM.LOG .EQ 6 -ROM.FMULT .EQ 8 -ROM.SETARG .EQ 10 -ROM.FDIV .EQ 12 -ROM.SETFAC .EQ 14 - -ROM.GETFAC .EQ 16 Copy FAC to (FORPNT) -ROM.FCOMP .EQ 18 -ROM.QINT .EQ 20 -ROM.FIN .EQ 22 -ROM.FOUT .EQ 24 -ROM.SQR .EQ 26 -ROM.PWR .EQ 28 -ROM.EXP .EQ 30 - -ROM.COS .EQ 32 -ROM.SIN .EQ 34 -ROM.TAN .EQ 36 -ROM.ATAN .EQ 38 -*-------------------------------------- -* Memory Map -*-------------------------------------- -A2osX.SaveSM .EQ $100 Aux -A2osX.SaveSX .EQ $101 Aux -*-------------------------------------- -* Main $200 -> 2FF : (Used By ProDOS,Clock DRV....) -* Main $300 -> 3EF : -* Main $3F0 -> 3FF : SYS Vectors (reset,IRQ...) -* Aux $200 -> 3FD : /RAM Driver -* Aux $3FE -> 3FF : IRQ Vector -*-------------------------------------- -K.S.STAT .EQ $0300 S.STAT for internal kernel operations -K.S.IOCTL .EQ K.S.STAT+S.STAT 9 bytes -K.MLI.PATH .EQ K.S.IOCTL+S.IOCTL 64+1 -K.MLI.PARAMS .EQ K.MLI.PATH+MLI.MAXPATH+1 Main, 18 bytes min for GetFileInfo (ATLK needs MORE!!!...32 max for now) -*-------------------------------------- -K.STACKTOP .EQ $03ED XFer !!! down to $3E0 -*-------------------------------------- *** $3F0-$3FF IRQ Handler.... *** *-------------------------------------- * Main/Aux $400 -> $7FF : TXT PAGE1 Console Screen @@ -112,58 +24,9 @@ PS.Table.Stats .EQ $0CE0 K.PS.MAX OF.Table.hPath .EQ $0D00 K.OF.MAX OF.Table.hFD .EQ $0D20 K.OF.MAX *-------------------------------------- -Evt.Table .EQ $0D40 K.EVT.MAX*S.EVT.SIZE=4*8=32b +Evt.Table .EQ $0D40 K.EVT.MAX*S.EVT=4*8=32b *-------------------------------------- -Flt.Table .EQ $0D60 K.FLT.MAX*S.FLT.SIZE=4*32=128b -*-------------------------------------- -K.Buf256 .EQ $0E00 -*-------------------------------------- -K.IOBuf .EQ $0F00 -*-------------------------------------- -*** Z80 Reserved $1000-10FF*** -*-------------------------------------- -Z80CODE .EQ $1000 (00000h) Up To $10FF -Z80STACK .EQ $10FF (000FFh) Down to $1000 -*-------------------------------------- -* CORE $1100->$17FF = $700 Main -*-------------------------------------- -* MemMgr : $1800->$1FFF MAIN/AUX (2 kBytes) -*-------------------------------------- -Mem.Table .EQ $1800 Slot 0 is Reserved -Mem.LoMem .EQ $1800 -Mem.Free .EQ $1802 -Mem.HiMem .EQ $1804 -Mem.LastSlot .EQ $1806 -*-------------------------------------- -Mem.MLoMem .EQ $2000 -Mem.MHiMem .EQ $BD00 -Mem.XLoMem .EQ $2000 -Mem.XHiMem .EQ $C000 -*-------------------------------------- -DevMgr.HiMem .EQ $FFFA Protect IRQ vectors in Aux LC -*-------------------------------------- -H.BIN.T .EQ 0 -H.BIN.T.DRV65 .EQ $4CD8 6502:cld,jmp abs -H.BIN.T.LIB65 .EQ $7CD8 6502:cld,jmp (abs,x) -H.BIN.T.BIN65 .EQ $7CD8 6502:cld,jmp (abs,x) -*H.BIN.T.LIB80 .EQ $A28D Z80: -*H.BIN.T.BIN80 .EQ $A28D Z80: -H.BIN.JMP .EQ 2 -H.BIN.CPU .EQ 4 -H.BIN.CPU.6502 .EQ $60 -H.BIN.CPU.65C02 .EQ $61 -H.BIN.CPU.65R02 .EQ $62 -H.BIN.CPU.65816 .EQ $63 -H.BIN.V .EQ 5 -H.BIN.F .EQ 6 -H.BIN.CS.SIZE .EQ 8 -H.BIN.DS.SIZE .EQ 10 -H.BIN.SS.SIZE .EQ 12 -H.BIN.ZP.SIZE .EQ 13 -* -H.BIN.EXE.REL.TABLE .EQ 16 -* -H.BIN.DRV.REL.TABLE .EQ 2 Including main jmp +Flt.Table .EQ $0D60 K.FLT.MAX*S.FLT=4*32=128b *-------------------------------------- MAN SAVE INC/KERNEL.I diff --git a/SYS/KERNEL.S.DEF.txt b/SYS/KERNEL.S.DEF.txt index a4f99467..786c781b 100644 --- a/SYS/KERNEL.S.DEF.txt +++ b/SYS/KERNEL.S.DEF.txt @@ -91,31 +91,6 @@ K.MLI.PARAMS .EQ $03AA Main, 18 bytes min for GetFileInfo (ATLK needs MORE!!! *-------------------------------------- K.STACKTOP .EQ $03ED XFer !!! down to $3E0 *-------------------------------------- -*** $3F0-$3FF IRQ Handler.... *** -*-------------------------------------- -* Main/Aux $400 -> $7FF : TXT PAGE1 Console Screen -* Main/Aux $800 -> $BFF : TXT PAGE2 System Screen -*-------------------------------------- -* free $0C00->$17FF = $C00 (3072) Aux -*-------------------------------------- -Dev.Table.hPath .EQ $0C00 K.Dev.MAX -Dev.Table.hFD .EQ $0C20 K.Dev.MAX -*-------------------------------------- -Nod.Table.hPath .EQ $0C40 K.NOD.MAX -Nod.Table.hFD .EQ $0C60 K.NOD.MAX -*-------------------------------------- -PS.Table.PID .EQ $0C80 K.PS.MAX -PS.Table.hPS .EQ $0CA0 K.PS.MAX -PS.Table.Hits .EQ $0CC0 K.PS.MAX -PS.Table.Stats .EQ $0CE0 K.PS.MAX -*-------------------------------------- -OF.Table.hPath .EQ $0D00 K.OF.MAX -OF.Table.hFD .EQ $0D20 K.OF.MAX -*-------------------------------------- -Evt.Table .EQ $0D60 K.EVT.MAX*S.EVT.SIZE=4*8=32b -*-------------------------------------- -Flt.Table .EQ $0D80 K.FLT.MAX*S.FLT.SIZE=4*32=128b -*-------------------------------------- K.Buf256 .EQ $0E00 *-------------------------------------- K.IOBuf .EQ $0F00 @@ -166,6 +141,6 @@ H.BIN.EXE.REL.TABLE .EQ 16 H.BIN.DRV.REL.TABLE .EQ 2 Including main jmp *-------------------------------------- MAN -SAVE INC/KERNEL.I +SAVE USR/SRC/SYS/KERNEL.S.DEF LOAD USR/SRC/SYS/KERNEL.S ASM diff --git a/SYS/KERNEL.S.DRV.txt b/SYS/KERNEL.S.DRV.txt index 8b6c1199..eab41e27 100644 --- a/SYS/KERNEL.S.DRV.txt +++ b/SYS/KERNEL.S.DRV.txt @@ -244,7 +244,9 @@ DRV.SYS cld DRV.SYS.STATUS >LDYAI DRV.SYS.DIB jmp DRV.STATUS.YA *-------------------------------------- -DRV.SYS.Open lda #DEVID.SYS +DRV.SYS.Open lda #"S" + sta $423 + lda #DEVID.SYS sta A2osX.SCRNDEVS+1 jsr DRV.SYS.FF *-------------------------------------- diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 8cbf0cd7..6c0845ab 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -102,7 +102,7 @@ Kernel.Init3 sta SETALTZP sta IRQ.InKernel jsr SysScrInit - lda #"1" + lda #"A" sta $427 jsr MemMgrInit >LDYAI FD.NULL @@ -118,20 +118,24 @@ Kernel.Init3 sta SETALTZP sta $427 bra * -.10 >LDYAI MSG.Init3 +.10 inc $427 + >LDYAI MSG.Init3 >SYSCALL puts - + inc $427 jsr CPU.Init.6502 + inc $427 jsr CPU.Init.Z80 + inc $427 jsr DevMgrInit - + inc $427 jsr IrqMgrInit bcs * - + inc $427 jsr EvtMgrInit - + inc $427 jsr TskMgrInit bcs * + inc $427 ldy #S.PS.hPREFIX lda (pPs),y @@ -142,6 +146,7 @@ Kernel.Init3 sta SETALTZP >PUSHBI 2 >LDYAI MSG.Prefix >SYSCALL printf + inc $427 lda KBD bpl .1 @@ -167,7 +172,7 @@ Kernel.Init3 sta SETALTZP .8 >SYSCALL ExecL - bcs .9 + bcs Kernel.Init3.Err >PUSHBI 0 >LDYAI MSG.Init3.OK @@ -177,7 +182,8 @@ Kernel.Init3 sta SETALTZP jmp CORE.Run -.9 >PUSHA +Kernel.Init3.Err + >PUSHA >PUSHBI 1 >LDYAI MSG.StartupErr >SYSCALL printf @@ -534,7 +540,12 @@ MemMgrInit >LDYAI Mem.MHiMem dex bpl .4 - stz Evt.Table + ldx #K.EVT.MAX*S.EVT-1 + +.5 stz Evt.Table,x + dex + bpl .5 + stz Flt.Table rts diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index eace7bc8..a2eab023 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -186,12 +186,16 @@ K.IO.OPEN.REG.E >LDYAI S.FD.REG IO.OPEN.CDEV sta .1+1 A=DEVID pha jsr K.IOCTL.GetPDrv + lda #"C" + sta $425 ldx #IOCTL.OPEN pla pass A=DEVID To Driver jsr K.IOCTL.pDrvJmp + inc $425 bcs .9 - + inc $425 + .1 ldx #$ff SELF MODIFIED lda Dev.Table.hFD,x .9 rts diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index cb1e590a..050ac079 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -60,10 +60,12 @@ K.ExecV >STYA PS.ArgV PS.Exec jsr PS.CreateChild A=PID,Child S.PS at ZPPtr3,PS.Load.hMem bcs .9 sta .8+1 - + lda #"A" + sta $821 stz K.IOBuf jsr PS.Load bcs .90 + inc $821 jsr PS.AddArgV bcc .8 @@ -76,6 +78,7 @@ PS.Exec jsr PS.CreateChild A=PID,Child S.PS at ZPPtr3,PS.Load.hMem rts .8 lda #$ff SELF MODIFIED + inc $821 .9 rts *-------------------------------------- * PS.CreateChild diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 3759fec5..cc0eb810 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -989,16 +989,21 @@ K.SScanF.Fwd tya Y=char count parsed * CC : A = hFILE * CS : A = EC *\-------------------------------------- -K.FOpen jsr PFT.CheckPathYA +K.FOpen pha + lda #"O" + sta $426 + pla + jsr PFT.CheckPathYA + inc $426 bcs .99 - + inc $426 >PULLB K.Open.FLAGS >PULLB K.Open.TYPE >PULLW K.Open.AUXTYPE jsr IO.Open.I bcs .9 - + inc $426 tax stx .1+1 save hFD @@ -1006,7 +1011,9 @@ K.FOpen jsr PFT.CheckPathYA >LDYAI K.Buf256 jsr STDIO.NewHFileYAX + inc $426 bcc .9 + inc $426 pha save MLI error .1 lda #$ff SELF MODIFIED diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index d3b589a8..4f0a4231 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -16,6 +16,7 @@ AUTO 4,1 .INB INC/KERNEL.I + .INB USR/SRC/SYS/KERNEL.S.DEF .INB USR/SRC/SYS/KERNEL.S.INIT .INB USR/SRC/X.PRINTF.S