diff --git a/.Docs/ASM.md b/.Docs/ASM.md index 722f01c7..dbaebcbc 100644 --- a/.Docs/ASM.md +++ b/.Docs/ASM.md @@ -4,46 +4,59 @@ Multi-CPU macro assembler based on S-C MASM 3.0 dialect +Supported CPUs: + ++ 6502 ++ 65C02 ++ 65R02 ++ 65816 ++ Z80 ++ SWEET16 + +Table-driven, add your favorite CPU creating a new CPU asm.xxxx file. + ## Difference with S-C MASM 3.0 -Symbols are case sensitive -no .AC support ++ Symbols are case sensitive ++ No .AC support ++ PC and global addresses are 32 bits ++ Local / Private labels are 16 bits range and from .1 to .255 ## Directives | Code | Description | Compatibility | Status | Syntax | Comment | |-|-|-|-|-|-| | .AC | Ascii Compressed string| S-C | NOT IMPL. | | As strings are supposed to be printed with A2osX API, Printf cannot handle 'AC' compressed strings | -| .AS | Ascii String | S-C,A2osX | Working | `.AS dTEXTd` where d is any delimiter `.AS -"TEXT"`produce ascii code with b7=1 | | -| .AT | Ascii string Terminated | S-C,A2osX | Working | (same as above) | | -| .AZ | Ascii string Zero terminated | S-C,A2osX | Working | (same as above) | | -| .BS | Block (Byte) Storage | S-C,A2osX | Working | `.BS count[,value]` | Reserves `count` bytes in output and sets them to `value` (or zero if omitted) | -| .CS | C-string | S-C 3.1,A2osX | Working | | | -| .CZ | C-String Zero terminated| S-C 3.1,A2osX | Working | | | -| .DA | DAta value | S-C,A2osX | Working | `.DA value` | 2-byte address: `.DA $1234` only high byte: `.DA /$1234` only low byte: `.DA #$1234` | -| .DO | conditional start | S-C,A2osX | Working | | | -| .DU,.DUMMY | begin DUmmy section | S-C,A2osX | Working | | | -| .ED | End Dummy section | S-C,A2osX | Working | | | -| .ELSE | conditional ELSE | S-C,A2osX | Working | | | -| .EM | End Macro | S-C,A2osX | Working | | | -| .EN | ENd of source code | S-C,A2osX | IGNORED | | | -| .EP | End Phase | S-C,A2osX | Working | `.EP` | Conclude temporary addressing range started with `.PH` and resume prior assembly addressing | -| .EQ | EQuate | S-C,A2osX | Working | | | -| .FIN | conditional end| S-C,A2osX | Working | | | -| .HS | Hex String storage | S-C,A2osX | Working | `HS FE1A78` delimiter allowed : `HS 00.11,22` | | -| .IN,.INB,.INBx | INline source | S-C,A2osX | Working | `.INB MYFILE` | `.IN` inlines full text, `.INB` inlines 1 block at a time during assembly | -| .LI,.LIST | | S-C,A2osX | Working | `.LIST ON/OFF CON/COFF MON/MOFF XON/XOFF` | | -| .MA | MAcro deffinition | S-C,A2osX | Working | `.MA >MYMACRO` | | -| .OP | OPCode | S-C,A2osX | Working | `.OP cpu` where cpu is one of 6502,65C02,65R02,65816,Z80,SW16 | | -| .OR | ORigin | S-C,A2osX | Working | `.OR address` | Set initial output address (only one allowed per assembly) | -| .PG | PaGe control | S-C,A2osX | IGNORED | | | -| .PH | PHase start | S-C,A2osX | Working | `.PH address` | Start a temporary addressing range | -| .CS | Pascal-string | S-C 3.1,A2osX | Working | | | -| .SE | | S-C,A2osX | Working | | | -| .TA | Target Address| S-C,A2osX | IGNORED | | | -| .TF | Target File | S-C,A2osX | Working | `.TF TargetFile[,Txxx]` | only ,TSYS supported | -| .TI | TItle | S-C,A2osX | IGNORED | | | -| .US | USer defined | S-C,A2osX | IGNORED | | | +| .AS | Ascii String | S-C, A2osX | Working | `.AS dTEXTd` where d is any delimiter `.AS -"TEXT"`produce ascii code with b7=1 | | +| .AT | Ascii string Terminated | S-C, A2osX | Working | (same as above) | | +| .AZ | Ascii string Zero terminated | S-C, A2osX | Working | (same as above) | | +| .BS | Block (Byte) Storage | S-C, A2osX | Working | `.BS count[,value]` | Reserves `count` bytes in output and sets them to `value` (or zero if omitted) | +| .CS | C-string | S-C 3.1, A2osX | Working | `.CS "text\a\b\e\f\n\r\n\r\t\v"` | | +| .CZ | C-String Zero terminated| S-C 3.1, A2osX | Working | (same as above) | ZERO-terminated | +| .DA | DAta value | S-C, A2osX | Working | `.DA value` | 2-byte address: `.DA $1234` only high byte: `.DA /$1234` only low byte: `.DA #$1234` | +| .DO | conditional start | S-C, A2osX | Working | | | +| .DU,.DUMMY | begin DUmmy section | S-C, A2osX | Working | | | +| .ED | End Dummy section | S-C, A2osX | Working | | | +| .ELSE | conditional ELSE | S-C, A2osX | Working | | | +| .EM | End Macro | S-C, A2osX | Working | | | +| .EN | ENd of source code | S-C, A2osX | IGNORED | | | +| .EP | End Phase | S-C, A2osX | Working | `.EP` | Conclude temporary addressing range started with `.PH` and resume prior assembly addressing | +| .EQ | EQuate | S-C, A2osX | Working | | | +| .FIN | conditional end| S-C, A2osX | Working | | | +| .HS | Hex String storage | S-C, A2osX | Working | `HS FE1A78` delimiter allowed : `HS 00.11,22` | | +| .IN,.INB,.INBx | INline source | S-C, A2osX | Working | `.INB MYFILE` | `.IN` inlines full text, `.INB` inlines 1 block at a time during assembly | +| .LI,.LIST | | S-C, A2osX | Working | `.LIST ON/OFF CON/COFF MON/MOFF XON/XOFF` | | +| .MA | MAcro deffinition | S-C, A2osX | Working | `.MA >MYMACRO` | | +| .OP | OPCode | S-C, A2osX | Working | `.OP cpu` where cpu is one of 6502,65C02,65R02,65816,Z80,SW16 | | +| .OR | ORigin | S-C, A2osX | Working | `.OR address` | Set initial output address (only one allowed per assembly) | +| .PG | PaGe control | S-C, A2osX | IGNORED | | | +| .PH | PHase start | S-C, A2osX | Working | `.PH address` | Start a temporary addressing range | +| .PS | Pascal-string | S-C 3.1, A2osX | Working | | | +| .SE | | S-C, A2osX | Working | | | +| .TA | Target Address| S-C, A2osX | IGNORED | | | +| .TF | Target File | S-C, A2osX | Working | `.TF TargetFile[,Txxx]` | only ,TSYS supported | +| .TI | TItle | S-C, A2osX | IGNORED | | | +| .US | USer defined | S-C, A2osX | IGNORED | | | ## License A2osX is licensed under the GNU General Pulic License. @@ -62,4 +75,4 @@ The full A2osX license can be found **[Here](../LICENSE)**. ## Copyright -Copyright 2015 - 2019, Remy Gibert and the A2osX contributors. +Copyright 2015 - 2022, Remy Gibert and the A2osX contributors. diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index ff886c0a..5803441f 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index 49e17be7..ede6b3fc 100644 Binary files a/.Floppies/A2OSX.TEST.po and b/.Floppies/A2OSX.TEST.po differ diff --git a/A2osX.S.QC.txt b/A2osX.S.QC.txt index ef7eb56d..4b2989aa 100644 --- a/A2osX.S.QC.txt +++ b/A2osX.S.QC.txt @@ -256,15 +256,15 @@ MLIREAD03 .DA #4 MLICLOSE03 .DA #1 .BS 1 *-------------------------------------- -SYSKERNEL >PSTR "sys/kernel" +SYSKERNEL .PS "sys/kernel" *-------------------------------------- -MSG.INIT1 >PSTR "A2osX[Stage1]:Init" -MSG.SETPREFIXOK >PSTR "Prefix Set: " -MSG.SETPREFIXKO >PSTR "Insert Vol:" -MSG.LOAD >PSTR "Loading : " -MSG.LOAD.KO >PSTR " Error $" -MSG.LOAD.OK >PSTR " OK." -MSG.INIT1OK >PSTR "A2osX[Stage1]:Complete." +MSG.INIT1 .PS "A2osX[Stage1]:Init" +MSG.SETPREFIXOK .PS "Prefix Set: " +MSG.SETPREFIXKO .PS "Insert Vol:" +MSG.LOAD .PS "Loading : " +MSG.LOAD.KO .PS " Error $" +MSG.LOAD.OK .PS " OK." +MSG.INIT1OK .PS "A2osX[Stage1]:Complete." *-------------------------------------- .LIST ON QC.FREE .EQ $1300-* diff --git a/A2osX.S.txt b/A2osX.S.txt index 933da1fe..5764e9af 100644 --- a/A2osX.S.txt +++ b/A2osX.S.txt @@ -593,27 +593,27 @@ LoadPM.Bits .HS 8040201008040201 *-------------------------------------- .INB usr/src/shared/x.printf.s *-------------------------------------- -MSG.INIT0 .AZ "A2osX[Stage0]:Init\n" -MSG.SYSMEM .AZ "Checking System Memory..." -MSG.SYSMEM.OK .AZ "128k Detected.\n" -MSG.SYSMEM.KO .AZ "A2osX Requires At Least 128k Memory.\n" +MSG.INIT0 .CZ "A2osX[Stage0]:Init\r" +MSG.SYSMEM .CZ "Checking System Memory..." +MSG.SYSMEM.OK .CZ "128k Detected.\r" +MSG.SYSMEM.KO .CZ "A2osX Requires At Least 128k Memory.\r" -MSG.CPU .AZ "Checking CPU..." -MSG.CPU.OK .AZ "65C02 CPU (or higher) Detected.\n" -MSG.CPU.KO .AZ "A2osX Requires At Least A 65C02 CPU.\n" +MSG.CPU .CZ "Checking CPU..." +MSG.CPU.OK .CZ "65C02 CPU (or higher) Detected.\r" +MSG.CPU.KO .CZ "A2osX Requires At Least A 65C02 CPU.\r" -MSG.RAMDRV .AZ "Checking ProDOS RamDrive..." -MSG.RAMDRV.OK .AZ "Successfully Disabled.\n" -MSG.RAMDRV.KO0 .AZ "Not Detected.\n" -MSG.RAMDRV.KO1 .AZ "Uninstall Failed.\n" +MSG.RAMDRV .CZ "Checking ProDOS RamDrive..." +MSG.RAMDRV.OK .CZ "Successfully Disabled.\r" +MSG.RAMDRV.KO0 .CZ "Not Detected.\r" +MSG.RAMDRV.KO1 .CZ "Uninstall Failed.\r" -MSG.BOOTPREFIX .AZ "Boot Prefix:%S\n" +MSG.BOOTPREFIX .CZ "Boot Prefix:%S\r" -MSG.PMENUM .AZ "Looking For ProDOS Modules...\n" -MSG.PMSYSDIR .AZ "SYS dir is %S\n" -MSG.PMSYSDIR.KO .AZ "***Error : $%h\n" -MSG.PMLOAD .AZ "***Loading PM : %S\n" -MSG.INIT0OK .AZ "A2osX[Stage0]:Complete.\n" +MSG.PMENUM .CZ "Looking For ProDOS Modules...\r" +MSG.PMSYSDIR .CZ "SYS dir is %S\r" +MSG.PMSYSDIR.KO .CZ "***Error : $%h\r" +MSG.PMLOAD .CZ "***Loading PM : %S\r" +MSG.INIT0OK .CZ "A2osX[Stage0]:Complete.\r" *-------------------------------------- MLIGETPREFIX01 MLISETPREFIX01 .DA #1 @@ -669,9 +669,9 @@ MLIQUIT01 .DA #4 .DA #0 .DA 0 *-------------------------------------- -A2osX.LOGO >PSTR "A2osX.logo" -SYS >PSTR "sys/" -PM. >PSTR "PM." +A2osX.LOGO .PS "A2osX.logo" +SYS .PS "sys/" +PM. .PS "PM." *-------------------------------------- SCR.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0 SCR.BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07 diff --git a/BIN/ACOS.S.CORE.txt b/BIN/ACOS.S.CORE.txt index fb485755..fb2835f4 100644 --- a/BIN/ACOS.S.CORE.txt +++ b/BIN/ACOS.S.CORE.txt @@ -7,7 +7,7 @@ CORE.Init ldy #CCS.MAX >LDYAI CODESEG >SYSCALL GetMem - bcs .9 + bcs .90 >STYA ZPCodeBufPtr txa @@ -21,11 +21,13 @@ CORE.Init ldy #CCS.MAX txa >STA.G hDataBuf + lda #SL..+SL._ >SYSCALL SListNew - bcs .9 +.90 bcs .9 >STA.G hLabels + lda #SL..+SL._ >SYSCALL SListNew bcs .9 diff --git a/BIN/ASM.S.MAC.txt b/BIN/ASM.S.MAC.txt index d84f826d..c030e22c 100644 --- a/BIN/ASM.S.MAC.txt +++ b/BIN/ASM.S.MAC.txt @@ -1,7 +1,8 @@ NEW AUTO 3,1 *--------------------------------------- -MAC.Init >SYSCALL SListNew +MAC.Init lda #SL..+SL._ + >SYSCALL SListNew bcs .9 >STA.G MAC.hList diff --git a/BIN/ASM.S.SYM.txt b/BIN/ASM.S.SYM.txt index 66e07edf..3adbf500 100644 --- a/BIN/ASM.S.SYM.txt +++ b/BIN/ASM.S.SYM.txt @@ -15,7 +15,8 @@ NEW * 1 : Macro Context ID (private) * 2-3 : 16 bits offset (PC) *--------------------------------------- -SYM.Init >SYSCALL SListNew +SYM.Init lda #SL..+SL._ + >SYSCALL SListNew bcs .9 >STA.G SYM.hList @@ -474,7 +475,8 @@ SYM.Dump.1 >LDYA L.MSG.SYMBOLS >SYSCALL PutS stz ZPPtr2 - stz ZPPtr2+1 + lda #1 + sta ZPPtr2+1 .1 >LDYA ZPPtr2 >STYA ZPPtr1 diff --git a/BIN/CC.S.CORE.txt b/BIN/CC.S.CORE.txt index 15e7c760..faf9ba72 100644 --- a/BIN/CC.S.CORE.txt +++ b/BIN/CC.S.CORE.txt @@ -1,16 +1,19 @@ NEW AUTO 3,1 *-------------------------------------- -CORE.Init >SYSCALL SListNew +CORE.Init lda #SL._ + >SYSCALL SListNew bcs .9 >STA.G CC.hDefines + lda #SL._ >SYSCALL SListNew bcs .9 >STA.G CC.hTags + lda #SL._ >SYSCALL SListNew bcs .9 diff --git a/BIN/CC.S.EXP.txt b/BIN/CC.S.EXP.txt index 0cdd1534..6aefe23d 100644 --- a/BIN/CC.S.EXP.txt +++ b/BIN/CC.S.EXP.txt @@ -128,9 +128,9 @@ CC.EXP.Eval ldx ZPPtr1 local : returned T/Q jsr CC.EXP.GetChar bcs .29 - + bra .30 - + .25 cmp #'"' String literal bne CC.EXP.Eval.ESYN @@ -246,7 +246,7 @@ CC.EXP.BOPS bit #SYM.Q.PPPOINTER ldy #SYM.T.UINT bra .3 - + .10 cpy #SYM.T.UINT bcs .3 @@ -255,7 +255,7 @@ CC.EXP.BOPS bit #SYM.Q.PPPOINTER cpy #SYM.T.SCHAR beq .2 - + lda #E.TMISMATCH sec rts @@ -354,29 +354,29 @@ CC.EXP.GetNum cpy #SYM.T.FLOAT *-------------------------------------- CC.EXP.GetChar ldy ZPPtr2+1 bne .9 - + lda ZPPtr2 cmp #SYM.T.UCHAR beq .1 - + cmp #SYM.T.SCHAR bne .9 - + .1 jsr CC.GetNextCharEsc bcs .9 - + jsr CODE.PUSHI bcs .99 - + jsr CC.GetNextChar bcs .9 - + cmp #''' bne .9 jsr CC.GetNextCharNB skip ' - - + + clc rts @@ -417,7 +417,7 @@ CC.EXP.AddConstCharP .3 jsr CC.GetNextCharNBNL Skip " bcs .8 - + cmp #'"' beq .1 @@ -464,7 +464,7 @@ CC.EXP.GetVar stz ExpState .7 jsr CC.EXP.PushValue bcs .99 - + .8 jmp CC.SYM.LookupCheckTQ .99 rts @@ -498,27 +498,27 @@ CC.EXP.postinc lda ExpState lda (ZPLookupSymPtr) #SYM.T cmp #SYM.T.FLOAT bcs .98 - + tay lda CC.TYPESIZE-1,y lsr bcc .2 - + >LDYA L.PCC.Inc1 jmp CODE.EmitPCC .2 lsr bcc .4 - + >LDYA L.PCC.Inc2 jmp CODE.EmitPCC - -.4 >LDYA L.PCC.Inc4 + +.4 >LDYA L.PCC.Inc4 jmp CODE.EmitPCC -.8 +.8 .98 lda #E.ESYN sec @@ -542,27 +542,27 @@ CC.EXP.postdec lda ExpState lda (ZPLookupSymPtr) #SYM.T cmp #SYM.T.FLOAT bcs .98 - + tay lda CC.TYPESIZE-1,y lsr bcc .2 - + >LDYA L.PCC.Dec1 jmp CODE.EmitPCC .2 lsr bcc .4 - + >LDYA L.PCC.Dec2 jmp CODE.EmitPCC - -.4 >LDYA L.PCC.Dec4 + +.4 >LDYA L.PCC.Dec4 jmp CODE.EmitPCC -.8 +.8 .98 lda #E.ESYN sec @@ -595,10 +595,10 @@ CC.EXP.Idx ldy #SYM.Q jsr CC.EXP.GetSymSizeOfInAXC cmp #1 bne .1 - + cpx #0 beq .2 sizeof=1, no MUL required - + .1 jsr CODE.PUSHAXI ...sizeof on stack... bcs .99 @@ -612,7 +612,7 @@ CC.EXP.Idx ldy #SYM.Q jsr CC.GetCharNB bcs .97 - + cmp #']' bne .97 @@ -626,7 +626,7 @@ CC.EXP.Idx ldy #SYM.Q .97 lda #E.ESYN sec - rts + rts .98 lda #E.TMISMATCH sec @@ -640,12 +640,12 @@ CC.EXP.array ldy #SYM.Def * jsr CODE.DEBUG jsr CC.EXP.PushAddr array[int]... bcc .2 - + rts - + .1 jsr CC.EXP.GetAddr2 array[]...it is a * bcs .9 - + >LDYA L.PCC.PushDeref2 jsr CODE.EmitPCC bcs .9 @@ -667,48 +667,48 @@ CC.EXP.array ldy #SYM.Def .3 jsr CC.GetNextCharNB skip ']' bcs .98 - + cmp #'[' bne .8 - + jsr CC.GetNextCharNB skip '[' bcs .98 - + ldy #SYM.Q lda (ZPLookupSymPtr),y and #SYM.Q.AAARRAY .39 beq .99 - + jsr CC.EXP.array.getIdx ...int16 on stack... bcs .9 - + ldy #SYM.Def+3 lda (ZPLookupSymPtr),y tax dey lda (ZPLookupSymPtr),y jsr CODE.PUSHAXI [][SIZE] on stack - + ldx #FPU.wMUL jsr CODE.FPUCALL [][SIZE] * int16 on stack - + jsr CC.EXP.GetSymSizeOfInAXC jsr CODE.PUSHAXI ...sizeof on stack... bcs .9 ldx #FPU.wMUL jsr CODE.FPUCALL ...sizeof*int16... - + ldx #FPU.wAdd jsr CODE.FPUCALL ...add to base address bcs .9 - + jsr CC.GetNextCharNB skip ']' bcs .98 * TODO : [][][] - + .8 lda #ExpState.AonStack sta ExpState @@ -741,7 +741,7 @@ CC.EXP.array.getIdx sec sbc #SYM.Q.ARRAY sta (ZPLookupSymPtr),y - + clc rts @@ -749,11 +749,129 @@ CC.EXP.array.getIdx sec .9 rts *-------------------------------------- -CC.EXP.Struct -*-------------------------------------- -CC.EXP.pStruct lda #E.ESYN +CC.EXP.SU lda (ZPLookupSymPtr) + cmp #SYM.T.SU + bne .97 + + ldy #SYM.Q + lda (ZPLookupSymPtr),y + and #SYM.Q.PPPOINTER + bne .97 + + jsr CC.GetCharNB + bcs .98 + + jsr CC.IsLetter + bcs .98 + + jsr CC.EXP.SU.GetF + bcs .98 + + jsr CC.SkipX + + lda (ZPLookupSymPtr),y SU.F.T + sta (ZPLookupSymPtr) SYM.T + + iny + lda (ZPLookupSymPtr),y SU.F.Q + phy + ldy #SYM.Q + sta (ZPLookupSymPtr),y + ply + + iny + lda (ZPLookupSymPtr),y SU.F.O + phy + ldy #SYM.Addr + clc + adc (ZPLookupSymPtr),y + sta (ZPLookupSymPtr),y + + ply + iny + lda (ZPLookupSymPtr),y SU.F.O + ldy #SYM.Addr+1 + adc (ZPLookupSymPtr),y + sta (ZPLookupSymPtr),y + + clc + rts + +.97 lda #E.TMISMATCH sec rts + +.98 lda #E.ESYN + sec +.99 rts +*-------------------------------------- +CC.EXP.pSU lda #E.ESYN + sec + rts +*-------------------------------------- +CC.EXP.SU.GetF jsr CC.GetIDLen + tya + tax + + ldy #SYM.Def + +.1 lda (ZPLookupSymPtr),y + beq .98 + + phy SU.F.T + tya + clc + adc #SU.F.Name + tay + + txa + cmp (ZPLookupSymPtr),y + bne .7 + + phy SU.F.Name + phx SU.F.NameLen + + tya + clc + adc ZPLookupSymPtr + sta ZPLookupPtr + + lda #0 + adc ZPLookupSymPtr+1 + sta ZPLookupPtr+1 + + ldy #0 + +.2 lda (ZPLineBufPtr),y + iny + cmp (ZPLookupPtr),y + bne .6 + + dex + bne .2 + + plx NameLen + pla SU.F.Name + + ply SU.F.T + + clc + rts + +.6 plx + ply + +.7 pla + sec + adc (ZPLookupSymPtr),y + adc #SU.F.Name + tay + bra .1 + + +.98 lda #E.NOKEY + sec +.99 rts *-------------------------------------- * PREOPS *-------------------------------------- @@ -805,7 +923,7 @@ CC.EXP.Deref ldy #SYM.Q >LDYA L.PCC.Deref2 jsr CODE.EmitPCC bcs .99 - + lda #ExpState.AinPTR sta ExpState @@ -893,7 +1011,7 @@ CC.EXP.PushAddr ldy #SYM.SC .2 >LDYA L.PCC.PushUAddr jmp CODE.EmitPCC - + .9 rts *-------------------------------------- CC.EXP.GetAddr1 ldy #SYM.SC @@ -977,22 +1095,22 @@ CC.EXP.PushValue tay dey bne .1 - + >LDYA L.PCC.PushValue1 jmp CODE.EmitPCC - + .1 cpy #1 - bne .2 - + bne .2 + >LDYA L.PCC.PushValue2 jmp CODE.EmitPCC - + .2 jsr CODE.LDYI bcs .99 >LDYA L.PCC.PushValueY jmp CODE.EmitPCC - + .99 rts *-------------------------------------- * out : A,X,C = size diff --git a/BIN/CC.S.KW.txt b/BIN/CC.S.KW.txt index aa1d48ea..f39251f4 100644 --- a/BIN/CC.S.KW.txt +++ b/BIN/CC.S.KW.txt @@ -597,7 +597,7 @@ CC.KW.SU.2 jsr CC.GetNextCharNB sec .99 rts *-------------------------------------- -CC.KW.SU.1 ldy #SYM.T.STRUCT +CC.KW.SU.1 ldy #SYM.T.SU lda #0 ldx #SYM.SC.TAG sec reset buffer @@ -662,6 +662,9 @@ CC.KW.SU.1 ldy #SYM.T.STRUCT .38 jsr CC.GetNextCharNB skip '}' bcs .98 + jsr CC.SYM.Add0000 Close F definition + bcs .99 + cmp #';' bne .40 @@ -684,7 +687,7 @@ CC.KW.SU.1 ldy #SYM.T.STRUCT .41 clc reuse buffer - ldy #SYM.T.STRUCT + ldy #SYM.T.SU lda #0 jsr CC.DECL.YAC bcs .99 diff --git a/BIN/CC.S.LINK.txt b/BIN/CC.S.LINK.txt index e2118aea..a35b72bc 100644 --- a/BIN/CC.S.LINK.txt +++ b/BIN/CC.S.LINK.txt @@ -5,7 +5,7 @@ CC.Link >LDYA L.MSG.LINKING >SYSCALL Puts ldy #0 - lda #0 + lda #1 .1 >STYA ZPPtr1 SymID diff --git a/BIN/CC.S.SYM.txt b/BIN/CC.S.SYM.txt index 8c11ab38..d015aee7 100644 --- a/BIN/CC.S.SYM.txt +++ b/BIN/CC.S.SYM.txt @@ -408,23 +408,33 @@ CC.SYM.AddWord phy rts *-------------------------------------- CC.SYM.AddName jsr CC.GetCharNB - bcs .98 jsr CC.IsLetter bcs .98 -.1 jsr CC.SYM.AddByte + jsr CC.GetIDLen + tax + jsr CC.SYM.AddByte bcs .99 - jsr CC.GetNextCharNB - bcs .98 + ldy #0 - jsr CC.IsLetterOrDigit - bcc .1 +.1 lda (ZPLineBufPtr),y + phy + jsr CC.SYM.AddByte + ply + bcs .99 - lda #0 - bra CC.SYM.AddByte + iny + dex + bne .1 + + tya + jsr CC.SkipA + + clc + rts .98 lda #E.CSYN sec @@ -562,6 +572,7 @@ CC.SYM.NewScope ldy ScopeIdx cpy #CC.hScopes+SCOPE.MAX bcs .9 + lda #SL._ >SYSCALL SListNew bcs .99 diff --git a/BIN/CC.S.txt b/BIN/CC.S.txt index e9a54197..0ac8fbb6 100644 --- a/BIN/CC.S.txt +++ b/BIN/CC.S.txt @@ -24,9 +24,8 @@ SYM.T.SINT .EQ 5 SYM.T.ULONG .EQ 6 SYM.T.SLONG .EQ 7 SYM.T.FLOAT .EQ 8 -SYM.T.STRUCT .EQ 9 -SYM.T.UNION .EQ 10 -SYM.T.ENUM .EQ 11 +SYM.T.SU .EQ 9 +SYM.T.ENUM .EQ 10 SYM.T.VARIADIC .EQ $FF SYM.Q .EQ 1 SYM.Q.POINTER .EQ %01000000 @@ -54,11 +53,12 @@ SYM.Def .EQ 8 Funtions : fTQ,a1TQ,a2TQ.... * SYM .EQ 10 *-------------------------------------- -STRUCTF.T .EQ 0 -STRUCTF.Q .EQ 1 -STRUCTF.BitOfs .EQ 2 -STRUCTF.BitWidth .EQ 3 -STRUCTF.Name .EQ 4 +SU.F.T .EQ 0 +SU.F.Q .EQ 1 +SU.F.O .EQ 2 +SU.F.BitO .EQ 4 +SU.F.BitW .EQ 5 +SU.F.Name .EQ 6 *-------------------------------------- * Zero Page Segment, up to 32 bytes *-------------------------------------- @@ -147,8 +147,8 @@ L.CC.POSTOPS .DA CC.POSTOPS J.CC.POSTOPS .DA CC.EXP.postinc .DA CC.EXP.postdec .DA CC.EXP.idx - .DA CC.EXP.Struct - .DA CC.EXP.pStruct + .DA CC.EXP.SU + .DA CC.EXP.pSU L.CC.BOPS .DA CC.BOPS L.CC.DIRS .DA CC.DIRS L.CC.KW .DA CC.KW diff --git a/BIN/CSH.S.CORE.txt b/BIN/CSH.S.CORE.txt index f3c58044..d14f2a6d 100644 --- a/BIN/CSH.S.CORE.txt +++ b/BIN/CSH.S.CORE.txt @@ -2,16 +2,19 @@ NEW AUTO 3,1 .LIST OFF *-------------------------------------- -CSH.Init >SYSCALL SListNew +CSH.Init lda #SL._ + >SYSCALL SListNew bcs .99 >STA.G CSH.hDefines + lda #SL._ >SYSCALL SListNew bcs .99 >STA.G CSH.hTags + lda #SL._ >SYSCALL SListNew bcs .9 diff --git a/BIN/FORTH.S.KW.txt b/BIN/FORTH.S.KW.txt index 526874fc..1f9ebd4c 100644 --- a/BIN/FORTH.S.KW.txt +++ b/BIN/FORTH.S.KW.txt @@ -1023,7 +1023,8 @@ KW.ASSEMBLER rts *-------------------------------------- KW.VLIST stz ZPPtr1 - stz ZPPtr1+1 + lda #1 + sta ZPPtr1+1 .1 >LDYA ZPPtr1 >STYA ZPKeyID diff --git a/BIN/FORTH.S.txt b/BIN/FORTH.S.txt index 69cf5207..e44d7cf5 100644 --- a/BIN/FORTH.S.txt +++ b/BIN/FORTH.S.txt @@ -374,6 +374,7 @@ CS.RUN >PUSHW L.MSG.GREETINGS txa >STA.G hCLBuf + lda #SL..+SL._ >SYSCALL SListNew bcs .9 diff --git a/BIN/KCONFIG.S.txt b/BIN/KCONFIG.S.txt index 3cbe449d..b007f087 100644 --- a/BIN/KCONFIG.S.txt +++ b/BIN/KCONFIG.S.txt @@ -58,7 +58,7 @@ L.MSG.QUIT.SAVED L.MSG.QUIT.ERR .DA MSG.QUIT.ERR T.MSG.SLOT.DESC .DA MSG.SLOT.NODEV .DA MSG.SLOT.Z80 - .DA MSG.SLOT.VSD + .DA MSG.SLOT.VXD .DA MSG.SLOT.ATK .DA MSG.SLOT.DII .DA MSG.SLOT.BLK @@ -75,8 +75,7 @@ CS.INIT clc rts *-------------------------------------- CS.RUN >PUSHW L.MSG.TOPBAR - >PUSHB #K.VER - >PUSHB /K.VER + >PUSHW A2osX.KVER >PUSHBI 2 >SYSCALL PrintF jsr CS.RUN.Load @@ -359,7 +358,7 @@ CS.QUIT lda hFileBuf CS.END SLOTS .DA #0 .DA #A2osX.S.Z80 - .DA #A2osX.S.VSDRIVE + .DA #A2osX.S.VXDRIVE .DA #A2osX.S.ATCARD .DA #A2osX.S.DII .DA #A2osX.S.BLK @@ -372,35 +371,35 @@ SLOTS .DA #0 SLOTS.MAX .EQ *-SLOTS *-------------------------------------- FILENAME .AZ "${ROOT}A2osX.kconfig" -MSG.TOPBAR .AZ "\e[40;37m\e[7m\e[1;1HA2osX %d.%d Kernel Config Utility : " -MSG.TOPBAR.OK .AZ "KCONFIG File Successfully Loaded. \e[0m" -MSG.TOPBAR.KO .AZ "Invalid/missing KCONFIG File. \e[0m" -MSG.STATUSBAR .AZ "\e[40;37m\e[7m\e[24;1H(1-7):En/Dis Slot, Ctrl:(Q)uit,(S)ave,(T)iming,(C)HRoot,(P)reemptive,TT(Y)s \e[0m" -MSG.KCONF .AZ "\e[93;44m\e[2;1H------ Actual Kernel Configuration ------\e[K\r\n" -MSG.FCONF .AZ "\e[93;44m\e[13;1H------ KCONFIG File Configuration -------\e[K\r\n" -MSG.HZ .AZ " Machine Timing : %d0 Hz\e[K\r\n" -MSG.CHROOT .AZ " CHRoot to /RAMx : %10s" -MSG.PMODE .AZ " Preemptive Mode : %s\e[K\r\n" -MSG.TTYS .AZ " #TTYs : %d\e[K\r\n" -MSG.ENABLED .AZ "Enabled " -MSG.DISABLED .AZ "Disabled" -MSG.SLOT .AZ " Slot #%d : %s\e[K\r\n" -MSG.SLOT.NODEV .AZ "" -MSG.SLOT.Z80 .AZ "Z80 CPU Board" -MSG.SLOT.VSD .AZ "SSC Shared Driver for VSDRIVE" -MSG.SLOT.ATK .AZ "AppleTalk Board" -MSG.SLOT.DII .AZ "Disk ][ Controller" -MSG.SLOT.BLK .AZ "Generic Block/SCSI Controller" -MSG.SLOT.SP .AZ "SmartPort Controller" -MSG.SLOT.COM .AZ "Communication Card" -MSG.SLOT.XY .AZ "XY Pointing Device" -MSG.SLOT.NIC .AZ "Network Interface Card" -MSG.SLOT.CLK .AZ "Clock Card" -MSG.SLOT.DIS .AZ "" -MSG.PROMPT .AZ "\e[24;80H" -MSG.QUIT .AZ "\ec" -MSG.QUIT.SAVED .AZ "\ecA2osX.kconfig file saved.\r\n\r\n" -MSG.QUIT.ERR .AZ "\ecError [$%h] while writing A2osX.kconfig file.\r\n\r\n" +MSG.TOPBAR .CZ "\e[40;37m\e[7m\e[1;1HA2osX %d.%d Kernel Config Utility : " +MSG.TOPBAR.OK .CZ "KCONFIG File Successfully Loaded. \e[0m" +MSG.TOPBAR.KO .CZ "Invalid/missing KCONFIG File. \e[0m" +MSG.STATUSBAR .CZ "\e[40;37m\e[7m\e[24;1H(1-7):En/Dis Slot, Ctrl:(Q)uit,(S)ave,(T)iming,(C)HRoot,(P)reemptive,TT(Y)s \e[0m" +MSG.KCONF .CZ "\e[93;44m\e[2;1H------ Actual Kernel Configuration ------\e[K\r\n" +MSG.FCONF .CZ "\e[93;44m\e[13;1H------ KCONFIG File Configuration -------\e[K\r\n" +MSG.HZ .CZ " Machine Timing : %d0 Hz\e[K\r\n" +MSG.CHROOT .CZ " CHRoot to /RAMx : %10s" +MSG.PMODE .CZ " Preemptive Mode : %s\e[K\r\n" +MSG.TTYS .CZ " #TTYs : %d\e[K\r\n" +MSG.ENABLED .CZ "Enabled " +MSG.DISABLED .CZ "Disabled" +MSG.SLOT .CZ " Slot #%d : %s\e[K\r\n" +MSG.SLOT.NODEV .CZ "" +MSG.SLOT.Z80 .CZ "Z80 CPU Board" +MSG.SLOT.VXD .CZ "VxDrive" +MSG.SLOT.ATK .CZ "AppleTalk Board" +MSG.SLOT.DII .CZ "Disk ][ Controller" +MSG.SLOT.BLK .CZ "Generic Block/SCSI Controller" +MSG.SLOT.SP .CZ "SmartPort Controller" +MSG.SLOT.COM .CZ "Communication Card" +MSG.SLOT.XY .CZ "XY Pointing Device" +MSG.SLOT.NIC .CZ "Network Interface Card" +MSG.SLOT.CLK .CZ "Clock Card" +MSG.SLOT.DIS .CZ "" +MSG.PROMPT .CZ "\e[24;80H" +MSG.QUIT .CZ "\ec" +MSG.QUIT.SAVED .CZ "\ecA2osX.kconfig file saved.\r\n\r\n" +MSG.QUIT.ERR .CZ "\ecError [$%h] while writing A2osX.kconfig file.\r\n\r\n" *-------------------------------------- .DUMMY .OR 0 diff --git a/BIN/SH.S.CMD.txt b/BIN/SH.S.CMD.txt index 361a0c5b..0d883420 100644 --- a/BIN/SH.S.CMD.txt +++ b/BIN/SH.S.CMD.txt @@ -532,6 +532,7 @@ CMD.FUNCTION lda (ZPArgVBufPtr) >LDA.G hFuncList bne .1 + lda #SL..+SL._ >SYSCALL SListNew bcs .99 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 03021768..6632a5fc 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -70,7 +70,7 @@ A2osX.F.CHROOT .EQ %10000000 ChRooting to /RAMx A2osX.F.PMODE .EQ %01000000 Pre-emptive Mode A2osX.S .EQ $BEF8 $BEF9->$BEFF, 7 slots A2osX.S.Z80 .EQ $80 -A2osX.S.VSDRIVE .EQ $81 +A2osX.S.VXDRIVE .EQ $81 A2osX.S.ATCARD .EQ $82 A2osX.S.DII .EQ $C0 A2osX.S.BLK .EQ $C1 @@ -168,6 +168,11 @@ SEEK.SET .EQ $00 SEEK.CUR .EQ $01 SEEK.END .EQ $02 *-------------------------------------- +SL.. .EQ %10000000 +SL._ .EQ %01000000 +SL.NoCase .EQ %01000010 +SL.EndDollar .EQ %00000001 +*-------------------------------------- * A2osX.SYSCALL Functions Indexes *--------------------------------------D1 * STAT @@ -674,4 +679,4 @@ S.SESSION.NAME .EQ 3 * *-------------------------------------- MAN -SAVE INC/A2OSX.I +SAVE inc/a2osx.i diff --git a/INC/MACROS.I.txt b/INC/MACROS.I.txt index 1ab6a60b..5040c73b 100644 --- a/INC/MACROS.I.txt +++ b/INC/MACROS.I.txt @@ -326,24 +326,6 @@ FPU.FOUT .EQ 210 PrintF cpy #]1+4 bne :1 .EM -*-------------------------------------- - .MA PUSHF.G - ldy #]1+5 -:1 dey - lda (pData),y - >PUSHA - cpy #]1 - bne :1 - .EM -*-------------------------------------- - .MA PULLF.G - ldy #]1 -:1 >PULLA - sta (pData),y - iny - cpy #]1+5 - bne :1 - .EM *-------------------------------------- .MA LDA.G ldy #]1 @@ -555,23 +537,6 @@ FPU.FOUT .EQ 210 PrintF cpy #4 bne :1 .EM -*-------------------------------------- - .MA PUSHF - ldy #4 -:1 lda ]1,y - >PUSHA - dey - bpl :1 - .EM -*-------------------------------------- - .MA PULLF - ldy #0 -:1 >PULLA - sta ]1,y - iny - cpy #5 - bne :1 - .EM *-------------------------------------- .MA ENTER >PUSHB pBase @@ -648,13 +613,5 @@ FPU.FOUT .EQ 210 PrintF .FIN .EM *-------------------------------------- -* General Strings Macros -*-------------------------------------- - .MA PSTR - .DA #:1-*-1 - .AS "]1" -:1 .EQ * - .EM -*-------------------------------------- MAN SAVE inc/macros.i diff --git a/SHARED/X.PRINTF.S.txt b/SHARED/X.PRINTF.S.txt index d047bf3d..128a9217 100644 --- a/SHARED/X.PRINTF.S.txt +++ b/SHARED/X.PRINTF.S.txt @@ -58,17 +58,7 @@ PrintFYA.1 stz X.b0Flag tax jmp (PrintFYA.Tbl,x) -.7 cmp #'\' - bne .8 - - jsr PrintFYA.Next - beq PrintFYA.90 - cmp #'n' - bne .8 - - lda #$0D - -.8 ora #$80 +.7 ora #$80 jsr $FDED COUT bra PrintFYA.1 diff --git a/SYS/KERNEL.S.BLISTX.txt b/SYS/KERNEL.S.BLISTX.txt index dd5719ce..093ef834 100644 --- a/SYS/KERNEL.S.BLISTX.txt +++ b/SYS/KERNEL.S.BLISTX.txt @@ -8,7 +8,9 @@ KeyID .EQ * iByte .BS 1 iBlk .BS 1 *-------------------------------------- -BLISTX.New >LDYAI 128 32k Max before out of memory!!! +BLISTX.New sta SLIST.Opt + + >LDYAI 128 32k Max before out of memory!!! ldx #S.MEM.F.INIT0+8 index jsr MEM.GetMem.YAX bcs .9 @@ -22,13 +24,19 @@ BLISTX.New >LDYAI 128 32k Max before out of memory!!! bcs .9 >STYA DBlkPtr - + lda #0 sta (DBlkPtr) - txa + + lda SLIST.Opt sta (IBlkPtr) + txa + ldy #1 + sta (IBlkPtr),y + .8 lda #$ff SELF MODIFIED +* clc .9 rts *-------------------------------------- BLISTX.Free pha @@ -36,7 +44,7 @@ BLISTX.Free pha jsr K.GetMemPtr >STYA .1+1 - ldx #0 + ldx #1 .1 lda $ffff,x SELF MODIFIED beq .8 diff --git a/SYS/KERNEL.S.DRV.txt b/SYS/KERNEL.S.DRV.txt index 7c19449e..5d32df8b 100644 --- a/SYS/KERNEL.S.DRV.txt +++ b/SYS/KERNEL.S.DRV.txt @@ -21,7 +21,7 @@ DRV.DiskII.S >LDYAI DRV.DiskII.DIB DRV.DiskII.DIB .DA #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ .DA 280 .DA #0 - >PSTR "Disk ][ 5.25" + .PS "Disk ][ 5.25" .BS 4 .DA #S.DIB.T.DISKII .DA #0 @@ -55,7 +55,7 @@ DRV.RamDrive.S jsr DRV.Blk DRV.RamDrive.DIB .DA #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ .BS 3 - >PSTR "ProDOS /RAM Disk" + .PS "ProDOS /RAM Disk" .DA #S.DIB.T.RAM .DA #0 .DA K.VER @@ -86,7 +86,7 @@ DRV.BlkDev.S jsr DRV.Blk *-------------------------------------- DRV.BlkDev.DIB .DA #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ .BS 3 - >PSTR "ProDOS Block Dev" + .PS "ProDOS Block Dev" .DA #S.DIB.T.PRODOS .DA #0 .DA K.VER @@ -206,7 +206,7 @@ DRV.NULL cld *-------------------------------------- DRV.NULL.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ+S.DIB.S.OPENED .DA #0,#0,#0 - >PSTR "NULL Device" + .PS "NULL Device" .BS 5 .DA #S.DIB.T.CHAR .DA #0 diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 0f069095..71a7b1ef 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -72,16 +72,17 @@ Kernel.Init2 sei jsr A2osX.Unpak sta SETALTZP - bit RRAMWRAMBNK2 - bit RRAMWRAMBNK2 + + lda RRAMWRAMBNK2 + lda RRAMWRAMBNK2 >LDYA PAKME.D2 >STYA ZPInBufPtr >LDYAI $D000 jsr A2osX.Unpak - bit RRAMWRAMBNK1 - bit RRAMWRAMBNK1 + lda RRAMWRAMBNK1 + lda RRAMWRAMBNK1 >LDYA PAKME.D1 >STYA ZPInBufPtr @@ -93,11 +94,13 @@ Kernel.Init2 sei >LDYAI $E000 jsr A2osX.Unpak - bit RROMBNK1 + lda RROMBNK1 + sta CLRALTZP cli jsr KConfigLoad + lda A2osX.HZ pha >LDYAI MSG.HZ @@ -108,8 +111,8 @@ Kernel.Init2 sei >DEBUGOA *-------------------------------------- Kernel.Init3 sta SETALTZP - bit RRAMWRAMBNK1 - bit RRAMWRAMBNK1 + lda RRAMWRAMBNK1 + lda RRAMWRAMBNK1 lda #$ff Make sure we are in Kernel Mode during setup sta IRQ.InKernel @@ -127,7 +130,7 @@ Kernel.Init3 sta SETALTZP sta SET80STORE sta CLRPAGE2 - bit RDIOUDIS + lda RDIOUDIS sta SETIOUDIS sta SETDHIRES bmi .10 @@ -661,7 +664,7 @@ DetectZ80 ldx #Z80Code.Size DevMgrInit >LDYAI MSG.DEV >SYSCALL2 puts - jsr DevMgrInit.VSD + jsr DevMgrInit.VXD lda DEVCNT sta .1+1 @@ -795,14 +798,25 @@ DevMgrInit.AddBDev rts *-------------------------------------- -DevMgrInit.VSD ldy #VSD.PATCH.SIZE-1 +DevMgrInit.VXD >LDYAI VSD.PATCH -.1 lda $BF41,y - cmp VSD.PATCH,y - bne .9 + jsr .10 + bcc .8 + + >LDYAI VED.PATCH + jsr .10 + bcs .9 - dey - bpl .1 +.8 ldy #4 + lda (ZPPtr1),y + sec + sbc #1 + sta .81+1 + + iny + lda (ZPPtr1),y + sbc #0 + sta .81+2 php sei @@ -810,22 +824,45 @@ DevMgrInit.VSD ldy #VSD.PATCH.SIZE-1 bit RRAMWRAMBNK2 bit RRAMWRAMBNK2 sta CLRALTZP - ldx $d001 +.81 ldx $FFFF SELF MODIFIED : Slot0n sta SETALTZP bit RRAMWRAMBNK1 bit RRAMWRAMBNK1 - lda #A2osX.S.VSDRIVE + lda #A2osX.S.VXDRIVE sta A2osX.S,x + plp .9 rts *-------------------------------------- +.10 >STYA ZPPtr1 + + ldy #VXD.PATCH.SIZE-1 + +.11 lda $BF41,y + cmp (ZPPtr1),y + bne .19 + + dey + bpl .11 + + clc + rts + +.19 sec + rts +*-------------------------------------- VSD.PATCH bit RRAMWRAMBNK2 jsr $D002 bit RRAMWRAMBNK1 rts -VSD.PATCH.SIZE .EQ *-VSD.PATCH +*-------------------------------------- +VED.PATCH bit RRAMWRAMBNK2 + jsr $D401 + bit RRAMWRAMBNK1 + rts +VXD.PATCH.SIZE .EQ 10 *-------------------------------------- * Setup AuxLC $FFFE->Kernel IRQ Handler * if irq not handled, jmp (S.IrqMgrOldFFFE) @@ -1228,18 +1265,17 @@ TClock.SIG .HS 08285870 SmartPort.OFS .HS 010305 SmartPort.SIG .HS 200003 *-------------------------------------- -MSG.Init2 .AZ "A2osX[Stage2]:Init\nRelocating Kernel...\n" -MSG.HZ .AZ "Kernel SYS Timer Set For %d0 hz Machine.\n" -MSG.KCREAD .AZ "Reading Kernel Config File..." -MSG.KCREAD.OK .AZ "OK\n" -MSG.KCREAD.KO .AZ "\nError While Reading Kernel Config File, Using Default.\n" -MSG.PRODOSFX .AZ "!!!Running under ProDOS.FX!!! Enabling lowercase mode.\n" -MSG.Init2.OK .AZ "A2osX[Stage2]:Complete." +MSG.Init2 .CZ "A2osX[Stage2]:Init\rRelocating Kernel...\r" +MSG.KCREAD .CZ "Reading Kernel Config File..." +MSG.KCREAD.OK .CZ "OK\r" +MSG.KCREAD.KO .CZ "\rError While Reading Kernel Config File, Using Default.\r" +MSG.HZ .CZ "Kernel SYS Timer Set For %d0 hz Machine.\r" +MSG.PRODOSFX .CZ "!!!Running under ProDOS.FX!!! Enabling lowercase mode.\r" +MSG.Init2.OK .CZ "A2osX[Stage2]:Complete." *-------------------------------------- -MSG.Init3 .AZ "A2osX[Stage3]:Init *** Press Ctrl-R for entering ROOT Mode ***\r\n" +MSG.Init3 .CZ "A2osX[Stage3]:Init *** Press Ctrl-R for entering ROOT Mode ***\r\n" MSG.DEV .AZ "Device Manager..." -*-------------------------------------- -MSG.BLKDEV .AZ " Adding Device: /dev/%s, Addr:%H, Type: %s\r\n" +MSG.BLKDEV .CZ " Adding Device: /dev/%s, Addr:%H, Type: %s\r\n" MSG.BLKDEV.TBL .DA MSG.BLKDEV.RAM .DA MSG.BLKDEV.DII .DA MSG.BLKDEV.USR @@ -1268,11 +1304,11 @@ MSG.EVT .AZ "Event Manager..." MSG.TSK .AZ "Task Manager..." MSG.PWD .AZ "Password Manager..." MSG.EXEC .AZ "Executing %s..." -MSG.StartupErr .AZ "Failed : [$%h]\r\n" -MSG.Init3.OK .AZ "OK\r\nA2osX[Stage3]:Complete.\r\n" +MSG.StartupErr .CZ "Failed : [$%h]\r\n" +MSG.Init3.OK .CZ "OK\r\nA2osX[Stage3]:Complete.\r\n" *-------------------------------------- MSG.HW .AZ "Checking Hardware..." -MSG.HW.TypeSubT .AZ "Type=%h,SubT=%h\r\n" +MSG.HW.TypeSubT .CZ "Type=%h,SubT=%h\r\n" MSG.CPU .AZ "Checking CPU..." MSG.CPUTYPE .DA MSG.6502 .DA MSG.65C02 @@ -1283,9 +1319,9 @@ MSG.65C02 .AZ "65C02." MSG.65R02 .AZ "65R02." MSG.65816 .AZ "65816." MSG.CPU.SPEED .AZ "Checking CPU Speed (%d0Hz)..." -MSG.CPU.SPEEDOK .AZ "%d.%02d Mhz.\r\n" +MSG.CPU.SPEEDOK .CZ "%d.%02d Mhz.\r\n" MSG.Z80 .AZ "Checking Z80 CPU..." -MSG.Z80.OK .AZ "Detected In Slot %d.\r\n" +MSG.Z80.OK .CZ "Detected In Slot %d.\r\n" MSG.Z80.KO .AZ "Not Detected." *-------------------------------------- DEV.CONSOLE .AZ "/dev/console" @@ -1306,7 +1342,7 @@ pMLIOPEN .DA #3 .DA FNKConfig .DA $B000 .BS 1 -FNKConfig >PSTR "A2osX.kconfig" +FNKConfig .PS "A2osX.kconfig" *-------------------------------------- pMLIREAD .DA #4 .BS 1 diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index a8baa452..a9bfaa61 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -349,7 +349,7 @@ K.FreeMem.ERR >PUSHWI .1 sec rts -.1 .AZ "Free($%h),PID=%d\r\n" +.1 .CZ "Free($%h),PID=%d\r\n" *-------------------------------------- K.FreeMem tay beq K.FreeMem.ERR Slot=0, reserved by Kernel diff --git a/SYS/KERNEL.S.SLIST.txt b/SYS/KERNEL.S.SLIST.txt index 06984a2d..0a9ec7c7 100644 --- a/SYS/KERNEL.S.SLIST.txt +++ b/SYS/KERNEL.S.SLIST.txt @@ -82,6 +82,7 @@ K.SListFree */-------------------------------------- * # SListNew * ## ASM +* `lda Opt` * `>SYSCALL SListNew` * ## RETURN VALUE * A=hSList diff --git a/SYS/KERNEL.S.SLISTX.txt b/SYS/KERNEL.S.SLISTX.txt index 33c7f8a9..a1bd1488 100644 --- a/SYS/KERNEL.S.SLISTX.txt +++ b/SYS/KERNEL.S.SLISTX.txt @@ -4,6 +4,7 @@ NEW ZPSListDataOfs .EQ ZPMEMMGR+8 ZPSListDataLen .EQ ZPMEMMGR+10 *-------------------------------------- +SLIST.Opt .BS 1 SLIST.KeyLen .BS 1 SLIST.DataLen .BS 2 SLIST.nDataCnt .BS 2 @@ -198,6 +199,7 @@ SLISTX.SetData jsr SLIST.Select .8 clc rts + .9 lda #E.DATALEN sec rts @@ -284,7 +286,15 @@ SLISTX.Lookup jsr SLIST.Search SLIST.Search jsr K.GetMemPtr >STYA IBlkPtr - lda (IBlkPtr) + lda (IBlkPtr) + sta SLIST.Opt + + stz iByte + + ldy #1 + sty iBlk + + lda (IBlkPtr),y jsr K.GetMemPtr >STYA DBlkPtr @@ -292,17 +302,14 @@ SLIST.Search jsr K.GetMemPtr .1 iny jsr SHARED.TXTPTRgY - beq .11 + beq .2 - jsr SHARED.IsIDValid + jsr SLIST.IsIDValid bcc .1 -.11 sty SLIST.KeyLen +.2 sty SLIST.KeyLen - stz iByte - stz iBlk - -.2 >LDYA KeyID +.3 >LDYA KeyID >STYA SLIST.KeyID ldy iByte @@ -310,35 +317,35 @@ SLIST.Search jsr K.GetMemPtr beq .9 cmp SLIST.KeyLen - bne .5 + bne .6 jsr BLISTX.GetNByte Skip Len ldy #0 -.3 phy +.4 phy jsr BLISTX.GetNByte - sta .4+1 + sta .5+1 ply jsr SHARED.TXTPTRgY -.4 cmp #$ff SELF MODIFIED - bne .5 +.5 cmp #$ff SELF MODIFIED + bne .6 iny cpy SLIST.KeyLen - bne .3 + bne .4 >LDYA SLIST.KeyID clc rts -.5 >LDYA SLIST.KeyID +.6 >LDYA SLIST.KeyID jsr SLIST.Select.I move back... jsr SLIST.Next - bra .2 + bra .3 .9 lda #E.NOKEY sec @@ -397,6 +404,23 @@ SLIST.GetDataLen sta SLIST.DataLen+1 rts *-------------------------------------- +SLIST.IsIDValid bit SLIST.Opt + bpl .2 + + cmp #'.' + beq .8 + +.1 bit SLIST.Opt +.2 bvc .3 + + cmp #'_' + beq .8 + +.3 jmp SHARED.IsDigitOrL + +.8 clc + rts +*-------------------------------------- MAN SAVE usr/src/sys/kernel.s.slistx LOAD usr/src/sys/kernel.s diff --git a/SYS/KERNEL.S.TERMX.txt b/SYS/KERNEL.S.TERMX.txt index 564f35ac..508b5787 100644 --- a/SYS/KERNEL.S.TERMX.txt +++ b/SYS/KERNEL.S.TERMX.txt @@ -1539,7 +1539,7 @@ RESET.VALUES .DA #0 MODE *-------------------------------------- TERMX.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ .DA #0,#0,#0 - >PSTR "A2osX VT100 term" + .PS "A2osX VT100 term" .DA #S.DIB.T.CHAR .DA #0 .DA K.VER diff --git a/SYS/KERNEL.S.TIMEX.txt b/SYS/KERNEL.S.TIMEX.txt index 8377dedb..0552ed82 100644 --- a/SYS/KERNEL.S.TIMEX.txt +++ b/SYS/KERNEL.S.TIMEX.txt @@ -144,28 +144,28 @@ K.StrFTime.addDecA lda FOUTBuf+1 jmp SHARED.FORPNTpn *-------------------------------------- -TIMEX.DAY >PSTR "???" - >PSTR "Monday" - >PSTR "Tuesday" - >PSTR "Wednesday" - >PSTR "Thursday" - >PSTR "Friday" - >PSTR "Saturday" - >PSTR "Sunday" +TIMEX.DAY .PS "???" + .PS "Monday" + .PS "Tuesday" + .PS "Wednesday" + .PS "Thursday" + .PS "Friday" + .PS "Saturday" + .PS "Sunday" *-------------------------------------- -TIMEX.MON >PSTR "???" - >PSTR "January" - >PSTR "February" - >PSTR "March" - >PSTR "April" - >PSTR "May" - >PSTR "June" - >PSTR "July" - >PSTR "August" - >PSTR "September" - >PSTR "October" - >PSTR "November" - >PSTR "December" +TIMEX.MON .PS "???" + .PS "January" + .PS "February" + .PS "March" + .PS "April" + .PS "May" + .PS "June" + .PS "July" + .PS "August" + .PS "September" + .PS "October" + .PS "November" + .PS "December" *-------------------------------------- TIMEX.PTime2Time.BAD lda #E.OOB diff --git a/SYS/PM.APPLETALK.S.txt b/SYS/PM.APPLETALK.S.txt index 28d24cac..269575a6 100644 --- a/SYS/PM.APPLETALK.S.txt +++ b/SYS/PM.APPLETALK.S.txt @@ -136,17 +136,17 @@ GO.OLDMLI jmp $ffff SELF MODIFIED *-------------------------------------- .INB usr/src/shared/x.printf.s *-------------------------------------- -MSG.INIT .AZ "AppleTalk Driver For A2osX\n" -MSG.FAILED .AZ "AppleTalk Workstation Card Failed Power Up Diagnostics : EC=%h.\n" -MSG.NOHW .AZ "AppleTalk Workstation Card Not Found.\n" -MSG.HWOK .AZ "AppleTalk Workstation Card Type #%d Found In Slot #%d.\n" -MSG.ATINIT .AZ "Calling ATInit...\n" -MSG.IRQ .AZ "Setting Up IRQ Vector...\n" -MSG.PREFIX1 .AZ "Getting ProDOS Prefix...\n" -MSG.PREFIX2 .AZ "Setting AppleTalk Prefix...\n" -MSG.AFPKO .AZ "WARNING : Enabling AFP failed : EC=%h%h.\n" -MSG.OK .AZ "AppleTalk Driver Successfully Installed.\n" -MSG.KO .AZ "AppleTalk Driver Install Failed : EC=%h.\n" +MSG.INIT .CZ "AppleTalk Driver For A2osX\r" +MSG.FAILED .CZ "AppleTalk Workstation Card Failed Power Up Diagnostics : EC=%h.\r" +MSG.NOHW .CZ "AppleTalk Workstation Card Not Found.\r" +MSG.HWOK .CZ "AppleTalk Workstation Card Type #%d Found In Slot #%d.\r" +MSG.ATINIT .CZ "Calling ATInit...\r" +MSG.IRQ .CZ "Setting Up IRQ Vector...\r" +MSG.PREFIX1 .CZ "Getting ProDOS Prefix...\r" +MSG.PREFIX2 .CZ "Setting AppleTalk Prefix...\r" +MSG.AFPKO .CZ "WARNING : Enabling AFP failed : EC=%h%h.\r" +MSG.OK .CZ "AppleTalk Driver Successfully Installed.\r" +MSG.KO .CZ "AppleTalk Driver Install Failed : EC=%h.\r" *-------------------------------------- SIG.ATLK .AS "ATLK" WC.Flag .BS 1 diff --git a/SYS/PM.RAMWORKS.S.txt b/SYS/PM.RAMWORKS.S.txt index 1420d377..7a94fdf6 100644 --- a/SYS/PM.RAMWORKS.S.txt +++ b/SYS/PM.RAMWORKS.S.txt @@ -3,7 +3,7 @@ NEW .LIST OFF .OP 65C02 .OR $2000 - .TF sys/pm/pm.ramworks + .TF sys/pm.ramworks *-------------------------------------- .INB inc/macros.i .INB inc/io.i @@ -490,16 +490,16 @@ RW.BLOCK2.END .EQ * *-------------------------------------- .INB usr/src/shared/x.printf.s *-------------------------------------- -RW.MSG .AZ "SuperExpander E, RAMWorks (I,II,III,z-Ram) Driver For A2osX\n" -RW.MSG.RAMDISOK .AZ "/RAM Device Disabled/Not Present.\n" -RW.MSG.RAMDISKO .AZ "Problem Disabling /RAM Device.\n" -RW.MSG.RAM3OK .AZ "/RAM3 Device Already Installed.\n" -RW.MSG.OK1 .AZ "%D KB Detected (%d Pages), %D KB (%d Pages) Available for RamDrive.\n" -RW.MSG.KO1 .AZ "Not Detected.\n" -RW.MSG.OK2 .AZ "RamWorks Driver Installed.\n" -RW.MSG.KO2 .AZ "RamWorks Driver Install Error.\n" -RW.MSG.OK3 .AZ "RamWorks Drive Formatted as /RAM3.\n" -RW.MSG.KO3 .AZ "RamWorks Drive Format Error.\n" +RW.MSG .CZ "SuperExpander E, RAMWorks (I,II,III,z-Ram) Driver For A2osX\r" +RW.MSG.RAMDISOK .CZ "/RAM Device Disabled/Not Present.\r" +RW.MSG.RAMDISKO .CZ "Problem Disabling /RAM Device.\r" +RW.MSG.RAM3OK .CZ "/RAM3 Device Already Installed.\r" +RW.MSG.OK1 .CZ "%D KB Detected (%d Pages), %D KB (%d Pages) Available for RamDrive.\r" +RW.MSG.KO1 .CZ "Not Detected.\r" +RW.MSG.OK2 .CZ "RamWorks Driver Installed.\r" +RW.MSG.KO2 .CZ "RamWorks Driver Install Error.\r" +RW.MSG.OK3 .CZ "RamWorks Drive Formatted as /RAM3.\r" +RW.MSG.KO3 .CZ "RamWorks Drive Format Error.\r" *-------------------------------------- * Driver for Ramworks in main LC * $FF00 -> $FF9A (Inclusive) diff --git a/SYS/PM.VEDRIVE.S.BK.txt b/SYS/PM.VEDRIVE.S.BK.txt index 301e8053..e5b54a18 100644 --- a/SYS/PM.VEDRIVE.S.BK.txt +++ b/SYS/PM.VEDRIVE.S.BK.txt @@ -22,9 +22,11 @@ DRV.UNITNUM .EQ $43 DRV.BUFF .EQ $44 DRV.BLKNUM .EQ $46 *-------------------------------------- -DRV.BLK .PH DRV.BLK.START Main LC Bnk 2 $D001->$DFFF +DRV.BLK .PH DRV.BLK.START Main LC Bnk 2 $D400->$DFFF -DRV.BLK.1 lda DRV.COMMAND S=0,R=1,W=2,F=3 +DRV.BLK.Slot0n .BS 1 + + lda DRV.COMMAND S=0,R=1,W=2,F=3 bne .1 bit DRV.UNITNUM return Status @@ -390,7 +392,7 @@ DRV.W200.L .EQ *-DRV.W200 *-------------------------------------- DRV.D1TotalBlks .BS 2 DRV.D2TotalBlks .BS 2 -DRV.BLK.Slotn0 .BS 1 SELF MODIFIED slot 0n +DRV.BLK.Slotn0 .BS 1 SELF MODIFIED slot n0 DRV.TimeOut .BS 1 DRV.FrameSize .BS 2 DRV.nCnt .BS 2 diff --git a/SYS/PM.VEDRIVE.S.CF.txt b/SYS/PM.VEDRIVE.S.CF.txt index 8f1e4a43..88397fd2 100644 --- a/SYS/PM.VEDRIVE.S.CF.txt +++ b/SYS/PM.VEDRIVE.S.CF.txt @@ -89,7 +89,6 @@ VEDRIVE.ReadConf *-------------------------------------- VEDRIVE.CONF.L >LDYAI CONF.LBUF >STYA ZPPtr1 - jsr PrintFYA lda (ZPPtr1) diff --git a/SYS/PM.VEDRIVE.S.GS.txt b/SYS/PM.VEDRIVE.S.GS.txt index f9392550..42294736 100644 --- a/SYS/PM.VEDRIVE.S.GS.txt +++ b/SYS/PM.VEDRIVE.S.GS.txt @@ -227,7 +227,7 @@ GS.Write php clc rts *-------------------------------------- -GS.Name >PSTR "LanCEgs" +GS.Name .PS "LanCEgs" *-------------------------------------- DRV.GS .PH DRV.NIC.START diff --git a/SYS/PM.VEDRIVE.S.U1.txt b/SYS/PM.VEDRIVE.S.U1.txt index a472f7d6..44f71e3c 100644 --- a/SYS/PM.VEDRIVE.S.U1.txt +++ b/SYS/PM.VEDRIVE.S.U1.txt @@ -232,7 +232,7 @@ U1.WRITE php clc rts *-------------------------------------- -U1.Name >PSTR "Uthernet V1" +U1.Name .PS "Uthernet V1" *-------------------------------------- DRV.U1 .PH DRV.NIC.START diff --git a/SYS/PM.VEDRIVE.S.U2.txt b/SYS/PM.VEDRIVE.S.U2.txt index 7a8ac7f9..5de2bf86 100644 --- a/SYS/PM.VEDRIVE.S.U2.txt +++ b/SYS/PM.VEDRIVE.S.U2.txt @@ -246,7 +246,7 @@ U2.Write php clc rts *-------------------------------------- -U2.Name >PSTR "Uthernet II" +U2.Name .PS "Uthernet II" Offset .BS 2 TotalSize .BS 2 *-------------------------------------- diff --git a/SYS/PM.VEDRIVE.S.txt b/SYS/PM.VEDRIVE.S.txt index 58b673ee..69ca64c8 100644 --- a/SYS/PM.VEDRIVE.S.txt +++ b/SYS/PM.VEDRIVE.S.txt @@ -384,6 +384,9 @@ VEDRIVE.Install ldx #PATCH.SIZE lda Slotn0 sta DRV.BLK.Slotn0 + + lda CONF.SLOT + sta DRV.BLK.Slot0n ldx CONF.NIC lda .10,x @@ -466,9 +469,10 @@ VEDRIVE.Move ldy #0 *-------------------------------------- COPYRIGHT .AS "(C)APPLE " COPYRIGHT.LEN .EQ *-COPYRIGHT +*-------------------------------------- PATCH .PH DRV.EntryPoint bit RRAMWRAMBNK2 - jsr DRV.BLK.START + jsr DRV.BLK.START+1 bit RRAMWRAMBNK1 rts .EP @@ -483,44 +487,44 @@ PATCH.SIZE .EQ *-PATCH .INB usr/src/sys/pm.vedrive.s.u1 .INB usr/src/sys/pm.vedrive.s.u2 *-------------------------------------- -VEDRIVE.MSG0 .AZ "VEDRIVE (ADTPro Virtual Ethernet HD) Driver\n" -VEDRIVE.DRVKO .AZ "VEDRIVE (Or other custom Driver) Already Installed.\n" -VEDRIVE.CONF .AZ "Checking %S...\n" -VEDRIVE.CONFKO .AZ "Error reading VEDRIVE.CONF file.\n" -VEDRIVE.CONFSYN .AZ "Syntax error in VEDRIVE.CONF file.\n" -VEDRIVE.CONFINV .AZ "Invalid VEDRIVE.CONF file.\n" -VEDRIVE.NICKO .AZ "Hardware not detected.\n" -VEDRIVE.NICOK .AZ "%S Rev. %d.%d Found At Slot %d.\n" -VEDRIVE.DHCP .AZ "Querying DHCP...\n" -VEDRIVE.DHCPKO .AZ "No response from DHCP.\n" -VEDRIVE.IPKO .AZ "Unable to setup IP configuration.\n" -VEDRIVE.IPOK .AZ "IP config : %d.%d.%d.%d/%d.%d.%d.%d GW=%d.%d.%d.%d\n" -VEDRIVE.SRV .AZ "Contacting ADTPro Server..." -VEDRIVE.SRVKO .AZ "No Response From ADTPro Server.\n" -VEDRIVE.SRVOK .AZ "ADTPro Server Is Online.\n" -VEDRIVE.NOSLOT .AZ "No ProDOS device slot available.\n" -VEDRIVE.DEVOK .AZ "VEDRIVE Installed 2 devices at S%d,D1 & S%d,D2.\n" -VEDRIVE.DRVIKO .AZ "Unable to install VEDRIVE.\n" -VEDRIVE.DRVIOK .AZ "VEDRIVE Successfully Installed.\n" +VEDRIVE.MSG0 .CZ "VEDRIVE (ADTPro Virtual Ethernet HD) Driver\r" +VEDRIVE.DRVKO .CZ "VEDRIVE (Or other custom Driver) Already Installed.\r" +VEDRIVE.CONF .CZ "Checking %S...\r" +VEDRIVE.CONFKO .CZ "Error reading VEDRIVE.CONF file.\r" +VEDRIVE.CONFSYN .CZ "Syntax error in VEDRIVE.CONF file.\r" +VEDRIVE.CONFINV .CZ "Invalid VEDRIVE.CONF file.\r" +VEDRIVE.NICKO .CZ "Hardware not detected.\r" +VEDRIVE.NICOK .CZ "%S Rev. %d.%d Found At Slot %d.\r" +VEDRIVE.DHCP .CZ "Querying DHCP...\r" +VEDRIVE.DHCPKO .CZ "No response from DHCP.\r" +VEDRIVE.IPKO .CZ "Unable to setup IP configuration.\r" +VEDRIVE.IPOK .CZ "IP config : %d.%d.%d.%d/%d.%d.%d.%d GW=%d.%d.%d.%d\r" +VEDRIVE.SRV .CZ "Contacting ADTPro Server..." +VEDRIVE.SRVKO .CZ "No Response From ADTPro Server.\r" +VEDRIVE.SRVOK .CZ "ADTPro Server Is Online.\r" +VEDRIVE.NOSLOT .CZ "No ProDOS device slot available.\r" +VEDRIVE.DEVOK .CZ "VEDRIVE Installed 2 devices at S%d,D1 & S%d,D2.\r" +VEDRIVE.DRVIKO .CZ "Unable to install VEDRIVE.\r" +VEDRIVE.DRVIOK .CZ "VEDRIVE Successfully Installed.\r" *-------------------------------------- CONF.FILENAME .AS "vedrive.conf" CONF.FILENAME.L .EQ *-CONF.FILENAME *-------------------------------------- -CONF.KW >PSTR "nic" - >PSTR "slot" - >PSTR "mac" - >PSTR "address" - >PSTR "netmask" - >PSTR "gateway" - >PSTR "server" - >PSTR "port" - >PSTR "blksize1" - >PSTR "blksize2" +CONF.KW .PS "nic" + .PS "slot" + .PS "mac" + .PS "address" + .PS "netmask" + .PS "gateway" + .PS "server" + .PS "port" + .PS "blksize1" + .PS "blksize2" .HS 00 *-------------------------------------- -CONF.KW.NIC >PSTR "lancegs" - >PSTR "uthernet" - >PSTR "uthernet2" +CONF.KW.NIC .PS "lancegs" + .PS "uthernet" + .PS "uthernet2" .HS 00 *-------------------------------------- CONF.NIC .HS FF diff --git a/SYS/PM.VSDRIVE.S.txt b/SYS/PM.VSDRIVE.S.txt index 6acf635c..8da872b2 100644 --- a/SYS/PM.VSDRIVE.S.txt +++ b/SYS/PM.VSDRIVE.S.txt @@ -334,15 +334,15 @@ VSDRIVE.Install ldx #PATCH.LEN *-------------------------------------- DEVSIG.Offset .HS 05070B0C DEVSIG.Value .HS 38180131 -VSDRIVE.MSG0 .AZ "VSDRIVE (ADTPro Virtual Serial HD) Driver For A2osX\n" -VSDRIVE.DRVKO .AZ "VSDRIVE (Or other custom Driver) Already Installed.\n" -VSDRIVE.SSCKO .AZ "SSC Not Detected.\n" -VSDRIVE.SSCOK .AZ "SSC Found At Slot %d.\nContacting ADTPro Server..." -VSDRIVE.SRVKO .AZ "No Response From ADTPro Server (EC=%d).\n" -VSDRIVE.SRVOK .AZ "ADTPro Server Is Online.\n" -VSDRIVE.NOSLOT .AZ "No ProDOS device slot available.\n" -VSDRIVE.DEVOK .AZ "VSDRIVE Installed 2 devices at S%d,D1 & S%d,D2.\n" -VSDRIVE.OK .AZ "VSDRIVE Driver Successfully Installed.\n" +VSDRIVE.MSG0 .CZ "VSDRIVE (ADTPro Virtual Serial HD) Driver For A2osX\r" +VSDRIVE.DRVKO .CZ "VSDRIVE (Or other custom Driver) Already Installed.\r" +VSDRIVE.SSCKO .CZ "SSC Not Detected.\r" +VSDRIVE.SSCOK .CZ "SSC Found At Slot %d.\rContacting ADTPro Server..." +VSDRIVE.SRVKO .CZ "No Response From ADTPro Server (EC=%d).\r" +VSDRIVE.SRVOK .CZ "ADTPro Server Is Online.\r" +VSDRIVE.NOSLOT .CZ "No ProDOS device slot available.\r" +VSDRIVE.DEVOK .CZ "VSDRIVE Installed 2 devices at S%d,D1 & S%d,D2.\r" +VSDRIVE.OK .CZ "VSDRIVE Driver Successfully Installed.\r" *-------------------------------------- * ProDOS $BE41->$BE4B Patch for switching to BANK2 (10 bytes) *--------------------------------------