From a7dc53d00fa98c0cb816ac0c11c84c6dc7c5ef23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Thu, 23 Jul 2020 18:48:45 +0200 Subject: [PATCH] Kernel 0.94 --- .Docs/.HELLOWORLD.Z.txt | 6 +- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes .Floppies/A2OSX.TEST.po | Bin 819200 -> 819200 bytes BIN/LC.S.txt | 350 +++++++++++++++++++++++++++++++++++++ INC/IO.D2.I.txt | 2 +- LIB/LIBBLKDEV.S.D2.txt | 13 +- ProDOS.FX/ProDOS.S.LDR.txt | 2 +- ProDOS.FX/ProDOS.S.XRW.txt | 13 +- 8 files changed, 361 insertions(+), 25 deletions(-) create mode 100644 BIN/LC.S.txt diff --git a/.Docs/.HELLOWORLD.Z.txt b/.Docs/.HELLOWORLD.Z.txt index 90124445..1de27b53 100644 --- a/.Docs/.HELLOWORLD.Z.txt +++ b/.Docs/.HELLOWORLD.Z.txt @@ -5,7 +5,7 @@ NEW .OR $2000 usually $2000, any value > $100 ok .TF root/helloworldz *-------------------------------------- - .INB INC/A2OSX.I + .INB inc/a2osx.i *-------------------------------------- * Zero Page Segment, up to 32 bytes *-------------------------------------- @@ -18,7 +18,7 @@ ZS.END .ED * File Header (16 Bytes) *-------------------------------------- CS.START ccf - jp (.1) + jp (HL) TODO .....Z80 jmp table .DA #$80 Z80 .DA #1 BIN Layout Version 1 .DA #0 S.PS.F.EVENT @@ -89,4 +89,4 @@ DS.START DS.END .ED *-------------------------------------- MAN -SAVE ROOT/HELLOWORLD.Z +SAVE root/helloworld.z diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 84f47fc0891b87f8f742b6a231ff7dc1caeecaf4..94e13ced883da31e4620badfbdb97989507c920b 100644 GIT binary patch delta 18703 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 GSN}iYL~G;# delta 20244 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 diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index 2fb2c6d3ff5300e9831ead91a5a46eb00b0a9457..0a49da8244f5714755b9f17f341f332b3d0fd51c 100644 GIT binary patch delta 7462 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 delta 7396 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 diff --git a/BIN/LC.S.txt b/BIN/LC.S.txt new file mode 100644 index 00000000..e9f3c987 --- /dev/null +++ b/BIN/LC.S.txt @@ -0,0 +1,350 @@ +NEW + AUTO 3,1 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF bin/lc +*-------------------------------------- + .INB inc/macros.i + .INB inc/a2osx.i + .INB inc/kernel.i + .INB inc/mli.i + .INB inc/mli.e.i +*-------------------------------------- +X.ENTER.SUBDIR .EQ 0 +X.COPY.TO.DEST .EQ 0 +X.DELETE.SOURCE .EQ 0 +*-------------------------------------- + .DUMMY + .OR ZPBIN +ZS.START +ZPPtr1 .BS 2 +ZPPtr2 .BS 2 +ZPFileName .BS 2 +ZPFileStat .BS 2 + +ZPFullPath .BS 2 +ZPNewPath .BS 2 + +ZPLineBuf .BS 2 + +bPause .BS 1 + +bContinue .BS 1 +bRecurse .BS 1 + +ZS.END .ED +*-------------------------------------- +* File Header (16 Bytes) +*-------------------------------------- +CS.START cld + jmp (.1,x) + .DA #$61 6502,Level 1 (65c02) + .DA #1 BIN Layout Version 1 + .DA 0 + .DA CS.END-CS.START Code Size (without Constants) + .DA DS.END-DS.START Data SegmentSize + .DA #64 Stack Size + .DA #ZS.END-ZS.START Zero Page Size + .DA 0 +*-------------------------------------- +* Relocation Table +*-------------------------------------- +.1 .DA CS.INIT + .DA CS.RUN + .DA CS.DOEVENT + .DA CS.QUIT +L.MSG.USAGE .DA MSG.USAGE +L.MSG.DIR .DA MSG.DIR +L.MSG.FILE .DA MSG.FILE +L.MSG.OK .DA MSG.OK +L.MSG.ERR .DA MSG.ERR + .DA 0 +*-------------------------------------- +CS.INIT clc + rts +*-------------------------------------- +CS.RUN >INC.G ArgIndex + >SYSCALL ArgV + bcs .5 + >STYA ZPPtr1 + lda (ZPPtr1) + cmp #'-' + bne .4 + jsr CS.RUN.CheckOpt + bcc CS.RUN + +.9 >PUSHW L.MSG.USAGE + >PUSHBI 0 + >SYSCALL PrintF + lda #E.SYN + sec + rts + +.4 >LDA.G hSrcBasePath + bne .9 + >LDYA ZPPtr1 + jsr InitSrcDirYA + bcc CS.RUN +.99 rts +*-------------------------------------- +.5 >LDYAI 256 + >SYSCALL GetMem + bcs .99 + >STYA ZPFullPath + txa + >STA.G hSrcFullPath + + >LDYAI 256 + >SYSCALL GetMem + bcs .99 + >STYA ZPNewPath + txa + >STA.G hSrcNewPath +*-------------------------------------- +CS.RUN.LOOP ldy #S.PS.hStdIn + lda (pPS),y + >SYSCALL feof + bcs .99 + + tay + bne .1 + + >SYSCALL GetChar + bcs .99 + + cmp #$03 Ctrl-C + beq .99 Abort.... + + cmp #$13 Ctrl-S + bne .1 + + lda bPause + eor #$ff + sta bPause + bne CS.RUN.LOOP + +.1 lda bPause + bne CS.RUN.LOOP Pause... +*-------------------------------------- + jsr GetEntry + bcs CS.RUN.LEAVE + + ldy #S.STAT.MODE+1 + lda (ZPFileStat),y + and #$70 + bne .5 REG file ? + + jsr CS.RUN.FILE + bcc CS.RUN.NEXT + rts + +.5 cmp /S.STAT.MODE.DIR DIR ? + beq .6 + + cmp /S.STAT.MODE.BDEV VOL ? + bne .9 + +.6 jsr CS.RUN.DIR + bcc CS.RUN.NEXT + rts + +.9 lda #MLI.E.UNSUPST + sec +.99 rts +*-------------------------------------- +CS.RUN.NEXT jsr GetNextEntry + bcc CS.RUN.LOOP + +CS.RUN.LEAVE jsr LeaveSubDir + bcs .90 + + jsr BasePath.. + + jmp CS.RUN.NEXT + +.90 lda #0 + sec +.99 rts +*-------------------------------------- +CS.RUN.DIR lda (ZPFileName) + cmp #'.' + bne .1 + + ldy #1 + lda (ZPFileName),y + beq .8 + + cmp #'.' + bne .1 + + iny + lda (ZPFileName),y + beq .8 + +.1 jsr FilterMatch + bcs .8 + + jsr CS.RUN.GetFilePath + + >PUSHW L.MSG.DIR + >PUSHW ZPFullPath + >PUSHBI 2 + >SYSCALL PrintF + bcs .9 + + >PUSHW ZPFullPath + jsr CS.RUN.GetNewPath + >PUSHYA + >SYSCALL Rename + jsr CS.RUN.CheckErr + bcs .9 + + lda bRecurse + bpl .8 + + >LDYA ZPFileName is now lowercase + jmp EnterSubDirYA + +.8 clc +.9 rts +*-------------------------------------- +CS.RUN.FILE jsr FilterMatch + bcs .8 no match, skip.... + + jsr CS.RUN.GetFilePath + >PUSHW L.MSG.FILE + >PUSHW ZPFullPath + >PUSHBI 2 + >SYSCALL PrintF + bcs .9 + + >PUSHW ZPFullPath + jsr CS.RUN.GetNewPath + >PUSHYA + >SYSCALL Rename + jsr CS.RUN.CheckErr + +.8 clc +.9 rts +*-------------------------------------- +CS.RUN.CheckErr bcs .1 + >LDYA L.MSG.OK + >SYSCALL PutS + rts + +.1 pha + >PUSHW L.MSG.ERR + pla + pha + >PUSHA + >PUSHBI 1 + >SYSCALL PrintF + lda bContinue + eor #$80 + asl + pla + rts +*-------------------------------------- +CS.RUN.GetFilePath + >LDA.G hSrcBasePath + >SYSCALL GetMemPtr + >PUSHYA + >LDYA ZPFullPath + >SYSCALL StrCpy + >PUSHW ZPFileName + >LDYA ZPFullPath + >SYSCALL StrCat + rts +*-------------------------------------- +CS.RUN.GetNewPath + >LDA.G hSrcBasePath + >SYSCALL GetMemPtr + >PUSHYA + >LDYA ZPNewPath + >SYSCALL StrCpy + + >LDYA ZPFileName + >SYSCALL strlwr + + >PUSHW ZPFileName + >LDYA ZPNewPath + >SYSCALL StrCat + rts +*-------------------------------------- +CS.DOEVENT sec + rts +*-------------------------------------- +CS.QUIT jsr LeaveSubDir + bcc CS.QUIT + + >LDA.G hFilter + beq .1 + + >SYSCALL FreeMem +.1 >LDA.G hSrcFullPath + beq .2 + + >SYSCALL FreeMem + +.2 >LDA.G hSrcNewPath + beq .8 + + >SYSCALL FreeMem + +.8 clc + rts +*-------------------------------------- +CS.RUN.CheckOpt ldy #1 + lda (ZPPtr1),y + + ldx #OptionVars-OptionList-1 + +.2 cmp OptionList,x + beq .3 + dex + bpl .2 + + sec + rts + +.3 ldy OptionVars,x + lda #$ff + sta 0,y + clc + rts +*-------------------------------------- + .INB usr/src/bin/x.fileenum.s +*-------------------------------------- +CS.END +*-------------------------------------- +OptionList .AS "CRcr" +OptionVars .DA #bContinue,#bRecurse + .DA #bContinue,#bRecurse +*-------------------------------------- +MSG.USAGE .AS "Usage : LC File(s) (*,? wildcards allowed)\r\n" + .AS " -C : Continue on error\r\n" + .AS " -R : Recurse subdirectories\r\n" +MSG.OK .AZ "[OK]" +MSG.ERR .AZ "[%h]\r\n" +MSG.DIR .AZ "Dir :%s..." +MSG.FILE .AZ "File:%s..." +*-------------------------------------- + .DUMMY + .OR 0 +DS.START +ArgIndex .BS 1 + +hSrcFullPath .BS 1 +hSrcNewPath .BS 1 +hFile .BS 1 +hMem .BS 1 + + .INB usr/src/bin/x.fileenum.g + +DS.END + .ED +*-------------------------------------- +MAN +SAVE usr/src/bin/lc.s +ASM diff --git a/INC/IO.D2.I.txt b/INC/IO.D2.I.txt index 92997275..6b1fa5cf 100644 --- a/INC/IO.D2.I.txt +++ b/INC/IO.D2.I.txt @@ -2,7 +2,7 @@ NEW AUTO 3,1 .LIST OFF *-------------------------------------- -IO.D2.SeekTime .EQ 60 +IO.D2.SeekTime .EQ 110 *-------------------------------------- IO.D2.Ph0Off .EQ $C080 IO.D2.Ph0On .EQ $C081 diff --git a/LIB/LIBBLKDEV.S.D2.txt b/LIB/LIBBLKDEV.S.D2.txt index 797e4acd..4d6b1cbe 100644 --- a/LIB/LIBBLKDEV.S.D2.txt +++ b/LIB/LIBBLKDEV.S.D2.txt @@ -85,11 +85,7 @@ D2MoveHead.1 tay lda IO.D2.Ph0On,x - nop - nop lda IO.D2.Ph0On,y - nop - nop lda #IO.D2.SeekTime jsr D2.Wait100usecA @@ -112,17 +108,14 @@ D2MoveHead.1 sta MoveFrom - jsr .8 + lda IO.D2.Ph0Off,y + lda IO.D2.Ph0Off,x bra .1 .7 jsr D2.Wait25600usec -.8 lda IO.D2.Ph0Off,y - nop - nop + lda IO.D2.Ph0Off,y lda IO.D2.Ph0Off,x - nop - nop rts *-------------------------------------- D2.Wait25600usec diff --git a/ProDOS.FX/ProDOS.S.LDR.txt b/ProDOS.FX/ProDOS.S.LDR.txt index 2d2c2ca1..d8c46b45 100644 --- a/ProDOS.FX/ProDOS.S.LDR.txt +++ b/ProDOS.FX/ProDOS.S.LDR.txt @@ -825,7 +825,7 @@ LDR.MountSPDevs ldx #LDR.DEVPTRS.CNT-1 LDR.SPStatusCall sta LDR.SPStatus.U device = 2 for SCSI LDR.SPStatusCall.U -LDR.SPVect jsr $0000 self modifying +LDR.SPVect jsr $0000 self modifying .HS 00 .DA LDR.SPStatus.P rts diff --git a/ProDOS.FX/ProDOS.S.XRW.txt b/ProDOS.FX/ProDOS.S.XRW.txt index ba87735f..b20dc9dc 100644 --- a/ProDOS.FX/ProDOS.S.XRW.txt +++ b/ProDOS.FX/ProDOS.S.XRW.txt @@ -760,11 +760,7 @@ XRW.Seek ldx XRW.UnitIndex tay lda IO.D2.Ph0On,x - nop - nop lda IO.D2.Ph0On,y - nop - nop jsr XRW.WaitSeekTime @@ -786,17 +782,14 @@ XRW.Seek ldx XRW.UnitIndex sta XRW.CurrentQTrack - jsr .8 + lda IO.D2.Ph0Off,y + lda IO.D2.Ph0Off,x bra .1 .7 jsr XRW.Wait25600usec -.8 lda IO.D2.Ph0Off,y - nop - nop + lda IO.D2.Ph0Off,y lda IO.D2.Ph0Off,x - nop - nop rts *-------------------------------------- XRW.AllPhasesOff