KERNEL: modification for CC (Slist API) updated FORTH,SH, CSH, SM....

KERNEL: modification for Softcard //e (may help...or not)
KERNEL: bugfix for VS/VE drive detetcion and report on KCONFIG
CC: some progress on STRUCT & UNION
SHARED/PrintF: removed support for /n..... (now in S-C MASM3.1 & A2osX-ASM)
This commit is contained in:
burniouf 2022-09-17 13:35:52 +02:00
parent a5ba00f1a6
commit 9e960a234e
39 changed files with 570 additions and 386 deletions

View File

@ -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.

Binary file not shown.

Binary file not shown.

View File

@ -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-*

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -5,7 +5,7 @@ CC.Link >LDYA L.MSG.LINKING
>SYSCALL Puts
ldy #0
lda #0
lda #1
.1 >STYA ZPPtr1 SymID

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1023,7 +1023,8 @@ KW.ASSEMBLER
rts
*--------------------------------------
KW.VLIST stz ZPPtr1
stz ZPPtr1+1
lda #1
sta ZPPtr1+1
.1 >LDYA ZPPtr1
>STYA ZPKeyID

View File

@ -374,6 +374,7 @@ CS.RUN >PUSHW L.MSG.GREETINGS
txa
>STA.G hCLBuf
lda #SL..+SL._
>SYSCALL SListNew
bcs .9

View File

@ -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 "<Enabled>"
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 "<Disabled>"
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 "<Enabled>"
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 "<Disabled>"
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

View File

@ -532,6 +532,7 @@ CMD.FUNCTION lda (ZPArgVBufPtr)
>LDA.G hFuncList
bne .1
lda #SL..+SL._
>SYSCALL SListNew
bcs .99

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -82,6 +82,7 @@ K.SListFree
*/--------------------------------------
* # SListNew
* ## ASM
* `lda Opt`
* `>SYSCALL SListNew`
* ## RETURN VALUE
* A=hSList

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -89,7 +89,6 @@ VEDRIVE.ReadConf
*--------------------------------------
VEDRIVE.CONF.L >LDYAI CONF.LBUF
>STYA ZPPtr1
jsr PrintFYA
lda (ZPPtr1)

View File

@ -227,7 +227,7 @@ GS.Write php
clc
rts
*--------------------------------------
GS.Name >PSTR "LanCEgs"
GS.Name .PS "LanCEgs"
*--------------------------------------
DRV.GS .PH DRV.NIC.START

View File

@ -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

View File

@ -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
*--------------------------------------

View File

@ -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

View File

@ -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)
*--------------------------------------