mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-18 14:29:30 +00:00
Kernel Rewrite #6
This commit is contained in:
parent
8bc65b7c1b
commit
3e17ac840c
BIN
A2OSX.BOOT.po
BIN
A2OSX.BOOT.po
Binary file not shown.
BIN
A2OSX.DEV.po
Normal file
BIN
A2OSX.DEV.po
Normal file
Binary file not shown.
BIN
A2OSX.SRC.po
BIN
A2OSX.SRC.po
Binary file not shown.
|
@ -4,26 +4,25 @@ DELETE A2OSX.SYSTEM
|
||||||
PREFIX /A2OSX.SRC
|
PREFIX /A2OSX.SRC
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 8
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ****** START OF MLI QUIT CODE ******
|
* ****** START OF MLI QUIT CODE ******
|
||||||
* Load Address :$1000-$11FF
|
* Load Address :$1000-$12FF
|
||||||
* setup $BE00 Global page :
|
|
||||||
* Copy from $1200 to $BE00
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MLIOPEN00.PATH .EQ $200
|
MLIOPEN00.PATH .EQ $200
|
||||||
MLIOPEN00.BUFF .EQ $0C00 1k Buffer for MLI open
|
MLIOPEN00.BUFF .EQ $0C00 1k Buffer for MLI open
|
||||||
MLIREAD00.ADDR .EQ $2000 for loading kernel.bin before moving to LC1
|
MLIREAD00.ADDR .EQ $2000 for loading KERNEL
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.QC.B.Start
|
|
||||||
.PH $1000
|
.PH $1000
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* Kernel Stage 1
|
||||||
|
*--------------------------------------
|
||||||
A2osX.QC.Start .EQ *
|
A2osX.QC.Start .EQ *
|
||||||
A2osX.QC cld
|
A2osX.QC cld
|
||||||
jmp A2osX.QC.Start1
|
jmp A2osX.QC.Start1
|
||||||
|
|
||||||
A2osX.QC.Prefix .BS 32
|
A2osX.QC.Prefix .BS 64
|
||||||
|
|
||||||
A2osX.QC.Start1 sei
|
A2osX.QC.Start1 sei
|
||||||
ldx #$FF
|
ldx #$FF
|
||||||
|
@ -47,7 +46,7 @@ A2osX.QC.Start1 sei
|
||||||
lda #$8C Reset 80 col screen ($0C=FF=HOME)
|
lda #$8C Reset 80 col screen ($0C=FF=HOME)
|
||||||
jsr $C300
|
jsr $C300
|
||||||
|
|
||||||
>LDAXI MSG.STAGE1
|
>LDAXI MSG.INIT1
|
||||||
jsr A2osX.QC.PrintAX
|
jsr A2osX.QC.PrintAX
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
@ -79,17 +78,16 @@ A2osX.QC.Start1 sei
|
||||||
jsr A2osX.QC.KLoad
|
jsr A2osX.QC.KLoad
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDYAI GO.Reset
|
* >LDYAI GO.Reset
|
||||||
>STYA POWERUP
|
* >STYA POWERUP
|
||||||
bit RROMBNK1
|
* bit RROMBNK1
|
||||||
jsr SETPWRC
|
* jsr SETPWRC
|
||||||
|
|
||||||
>LDAXI MSG.STAGE1OK
|
>LDAXI MSG.INIT1OK
|
||||||
jsr A2osX.QC.PrintAX
|
jsr A2osX.QC.PrintAX
|
||||||
|
|
||||||
>DEBUGOA
|
>DEBUGOA
|
||||||
|
jmp $2000
|
||||||
jmp (POWERUP)
|
|
||||||
|
|
||||||
.9 >LDAXI MSG.KLOADING.KO
|
.9 >LDAXI MSG.KLOADING.KO
|
||||||
jsr A2osX.QC.PrintAX
|
jsr A2osX.QC.PrintAX
|
||||||
|
@ -130,36 +128,7 @@ A2osX.QC.KLoad ldx A2osX.QC.Prefix
|
||||||
jsr MLI
|
jsr MLI
|
||||||
.DA #MLICLOSE
|
.DA #MLICLOSE
|
||||||
.DA MLICLOSE00
|
.DA MLICLOSE00
|
||||||
bcs .9
|
|
||||||
|
|
||||||
php
|
|
||||||
sei
|
|
||||||
sta SETALTZP
|
|
||||||
lda RRAMWRAMBNK1
|
|
||||||
lda RRAMWRAMBNK1
|
|
||||||
|
|
||||||
>LDYAI MLIREAD00.ADDR+$2F00
|
|
||||||
>STYA TmpPtr1
|
|
||||||
>LDYAI $D000+$2F00
|
|
||||||
>STYA TmpPtr2
|
|
||||||
ldx #$30
|
|
||||||
ldy #$F9 do not trash NMI,BRK,IRQ Vectors
|
|
||||||
|
|
||||||
.3 lda (TmpPtr1),y
|
|
||||||
sta (TmpPtr2),y
|
|
||||||
dey
|
|
||||||
cpy #$FF
|
|
||||||
bne .3
|
|
||||||
|
|
||||||
dec TmpPtr1+1
|
|
||||||
dec TmpPtr2+1
|
|
||||||
dex
|
|
||||||
bne .3
|
|
||||||
|
|
||||||
lda RROMBNK1
|
|
||||||
sta CLRALTZP
|
|
||||||
plp
|
|
||||||
clc
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.QC.PrintAX
|
A2osX.QC.PrintAX
|
||||||
|
@ -195,14 +164,14 @@ MLICLOSE00 .DA #1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYSKERNEL >PSTRING "SYS/KERNEL"
|
SYSKERNEL >PSTRING "SYS/KERNEL"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.STAGE1 >PSTRING "A2osX[Stage1]:Init"
|
MSG.INIT1 >PSTRING "A2osX[Stage1]:Init"
|
||||||
MSG.SETPREFIXOK >PSTRING "Set Prefix OK"
|
MSG.SETPREFIXOK >PSTRING "Set Prefix OK"
|
||||||
MSG.SETPREFIXKO >PSTRING "Insert Vol:"
|
MSG.SETPREFIXKO >PSTRING "Insert Vol:"
|
||||||
MSG.KLOADING >PSTRING "Loading Kernel..."
|
MSG.KLOADING >PSTRING "Loading Kernel..."
|
||||||
MSG.KLOADING.KO >PSTRING "Error While Loading Kernel."
|
MSG.KLOADING.KO >PSTRING "Error While Loading Kernel."
|
||||||
MSG.STAGE1OK >PSTRING "A2osX[Stage1]:Complete."
|
MSG.INIT1OK >PSTRING "A2osX[Stage1]:Complete."
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.BS $1200-*
|
.BS $1300-*
|
||||||
.EP
|
.EP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
|
|
390
A2osX.S.txt
390
A2osX.S.txt
|
@ -4,7 +4,7 @@ DELETE A2OSX.SYSTEM
|
||||||
PREFIX /A2OSX.SRC
|
PREFIX /A2OSX.SRC
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 8
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
|
@ -19,7 +19,6 @@ AUTO 6
|
||||||
TmpPtr1 .EQ $0 main & aux ZP
|
TmpPtr1 .EQ $0 main & aux ZP
|
||||||
TmpPtr2 .EQ $2 main & aux ZP
|
TmpPtr2 .EQ $2 main & aux ZP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.RelocAddr .EQ $1000
|
|
||||||
A2osX.KMLOAD .EQ $2000
|
A2osX.KMLOAD .EQ $2000
|
||||||
A2osX.KMMAXLEN .EQ $4000
|
A2osX.KMMAXLEN .EQ $4000
|
||||||
A2osX.OpenBuff1 .EQ $6000 1024 Buffer for MLIOPEN01
|
A2osX.OpenBuff1 .EQ $6000 1024 Buffer for MLIOPEN01
|
||||||
|
@ -28,16 +27,13 @@ A2osX.ReadBuff .EQ $6800 512 Buffer for MLIREAD01
|
||||||
Boot.Prefix .EQ $6A00 MLI.MAXPATH
|
Boot.Prefix .EQ $6A00 MLI.MAXPATH
|
||||||
KM.Filename .EQ $6A80 MLI.MAXPATH
|
KM.Filename .EQ $6A80 MLI.MAXPATH
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.Start .EQ *
|
* Kernel Stage 0
|
||||||
.PH A2osX.RelocAddr
|
*--------------------------------------
|
||||||
A2osX.Init0
|
.PH $1000
|
||||||
|
|
||||||
ldx #$FF init 6502 stack to highest
|
|
||||||
txs
|
|
||||||
|
|
||||||
>LDYAI A2osX.Start
|
A2osX.Init0 >LDYAI $2000
|
||||||
>STYA TmpPtr1
|
>STYA TmpPtr1
|
||||||
>LDYAI A2osX.RelocAddr
|
>LDYAI $1000
|
||||||
>STYA TmpPtr2
|
>STYA TmpPtr2
|
||||||
|
|
||||||
ldx #$10 reloc $2000-$2FFF to $1000-$1FFF
|
ldx #$10 reloc $2000-$2FFF to $1000-$1FFF
|
||||||
|
@ -55,9 +51,12 @@ A2osX.Init0
|
||||||
|
|
||||||
jmp A2osX.Init1
|
jmp A2osX.Init1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.Init1 bit RROMBNK1
|
A2osX.Init1 ldx #$FF init 6502 stack to highest
|
||||||
|
txs
|
||||||
|
|
||||||
|
bit RROMBNK1
|
||||||
jsr HOME
|
jsr HOME
|
||||||
>LDAXI MSG.STAGE0
|
>LDAXI MSG.INIT0
|
||||||
jsr PrintCStrAX
|
jsr PrintCStrAX
|
||||||
|
|
||||||
>LDAXI MSG.SYSMEM
|
>LDAXI MSG.SYSMEM
|
||||||
|
@ -72,10 +71,10 @@ A2osX.Init1 bit RROMBNK1
|
||||||
jsr PrintCStrAX
|
jsr PrintCStrAX
|
||||||
bra *
|
bra *
|
||||||
|
|
||||||
.1 lda #$8C Reset 80 col screen ($0C=FF=HOME)
|
.1 lda #$8C Reset 80 col screen ($0C:HOME)
|
||||||
jsr $C300
|
jsr $C300
|
||||||
|
|
||||||
>LDAXI MSG.STAGE0
|
>LDAXI MSG.INIT0
|
||||||
jsr PrintCStrAX
|
jsr PrintCStrAX
|
||||||
|
|
||||||
>LDAXI MSG.SYSMEM
|
>LDAXI MSG.SYSMEM
|
||||||
|
@ -83,97 +82,22 @@ A2osX.Init1 bit RROMBNK1
|
||||||
|
|
||||||
>LDAXI MSG.SYSMEM.OK
|
>LDAXI MSG.SYSMEM.OK
|
||||||
jsr PrintCStrAX
|
jsr PrintCStrAX
|
||||||
*--------------------------------------
|
|
||||||
A2osX.SetHZ lda #6
|
|
||||||
sta A2osX.HZ
|
|
||||||
pha push HZ
|
|
||||||
>LDAXI MSG.HZ
|
|
||||||
jsr PrintCStrAX
|
|
||||||
*--------------------------------------
|
|
||||||
>LDAXI MSG.CPU
|
>LDAXI MSG.CPU
|
||||||
jsr PrintCStrAX
|
jsr PrintCStrAX
|
||||||
jsr Init6502 Y = CPU type
|
|
||||||
tya
|
sed Test 6502 BCD bug
|
||||||
ora #$60
|
lda #$99
|
||||||
sta A2osX.CPUTYPE
|
clc
|
||||||
|
adc #$01
|
||||||
|
cld
|
||||||
|
bpl .2 if minus, BUG!, we have 6502
|
||||||
|
|
||||||
lda MSG.CPUTYPEH,y
|
|
||||||
tax
|
|
||||||
lda MSG.CPUTYPEL,y
|
|
||||||
jsr PrintCStrAX
|
|
||||||
|
|
||||||
lda A2osX.CPUTYPE
|
|
||||||
bne .1
|
|
||||||
>LDAXI MSG.CPU.KO
|
>LDAXI MSG.CPU.KO
|
||||||
jsr PrintCStrAX
|
jsr PrintCStrAX
|
||||||
bra *
|
bra *
|
||||||
*--------------------------------------
|
|
||||||
.1 lda MACHID
|
|
||||||
and #MACHID.TYPE
|
|
||||||
cmp #MACHID.TYPE.IIc
|
|
||||||
beq A2osX.Prefix
|
|
||||||
|
|
||||||
>LDAXI MSG.CPU.SPEED
|
|
||||||
jsr PrintCStrAX
|
|
||||||
|
|
||||||
stz A2osX.RANDOM16
|
.2 >LDAXI MSG.CPU.OK
|
||||||
stz A2osX.RANDOM16+1
|
|
||||||
|
|
||||||
php
|
|
||||||
sei
|
|
||||||
|
|
||||||
.2 bit VBL
|
|
||||||
bpl .2
|
|
||||||
|
|
||||||
.21 bit VBL
|
|
||||||
bmi .21
|
|
||||||
|
|
||||||
ldx #0 Count LO
|
|
||||||
lda #0 Count HI
|
|
||||||
|
|
||||||
.3 ldy #3 (2)
|
|
||||||
|
|
||||||
.4 nop (2)
|
|
||||||
dey (2)
|
|
||||||
bne .4 (2*)
|
|
||||||
|
|
||||||
inc A2osX.RANDOM16 (6)
|
|
||||||
bne .5 (2*)
|
|
||||||
|
|
||||||
inc A2osX.RANDOM16+1 (6)
|
|
||||||
bit VBL (4)
|
|
||||||
bpl .3 (2*)
|
|
||||||
bmi .6
|
|
||||||
|
|
||||||
.5 nop (2)
|
|
||||||
nop (2)
|
|
||||||
nop (2)
|
|
||||||
bit VBL (4)
|
|
||||||
bpl .3 (2*)
|
|
||||||
|
|
||||||
.6 plp
|
|
||||||
|
|
||||||
stz A2osX.CPUSPEED
|
|
||||||
|
|
||||||
.7 sec
|
|
||||||
lda A2osX.RANDOM16
|
|
||||||
sbc #100
|
|
||||||
tax
|
|
||||||
lda A2osX.RANDOM16+1
|
|
||||||
sbc /100
|
|
||||||
bcc .8
|
|
||||||
|
|
||||||
stx A2osX.RANDOM16
|
|
||||||
sta A2osX.RANDOM16+1
|
|
||||||
inc A2osX.CPUSPEED
|
|
||||||
bra .7
|
|
||||||
|
|
||||||
.8 lda A2osX.RANDOM16
|
|
||||||
sta A2osX.CPUSPEED+1
|
|
||||||
pha push CPU speed LO
|
|
||||||
lda A2osX.CPUSPEED
|
|
||||||
pha push CPU speed HI
|
|
||||||
>LDAXI MSG.CPU.SPEEDOK
|
|
||||||
jsr PrintCStrAX
|
jsr PrintCStrAX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.Prefix >LDAXI MSG.BOOTPREFIX
|
A2osX.Prefix >LDAXI MSG.BOOTPREFIX
|
||||||
|
@ -204,103 +128,44 @@ A2osX.RamDrv >LDAXI MSG.RAMDRV
|
||||||
bne .1
|
bne .1
|
||||||
>LDAXI MSG.RAMDRV.KO0
|
>LDAXI MSG.RAMDRV.KO0
|
||||||
jsr PrintCStrAX
|
jsr PrintCStrAX
|
||||||
bra A2osX.Z80
|
bra A2osX.SetupQC
|
||||||
|
|
||||||
.1 >LDAXI MSG.RAMDRV.KO1
|
.1 >LDAXI MSG.RAMDRV.KO1
|
||||||
jsr PrintCStrAX
|
jsr PrintCStrAX
|
||||||
bra A2osX.Z80
|
bra A2osX.SetupQC
|
||||||
|
|
||||||
.2 >LDAXI MSG.RAMDRV.OK
|
.2 >LDAXI MSG.RAMDRV.OK
|
||||||
jsr PrintCStrAX
|
jsr PrintCStrAX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.Z80 >LDAXI MSG.Z80
|
|
||||||
jsr PrintCStrAX
|
|
||||||
jsr InitZ80
|
|
||||||
bcs .1
|
|
||||||
pha Push Z80Slot
|
|
||||||
|
|
||||||
>LDAXI MSG.Z80.OK
|
|
||||||
jsr PrintCStrAX
|
|
||||||
bra A2osX.SetupQC
|
|
||||||
|
|
||||||
.1 >LDAXI MSG.Z80.KO
|
|
||||||
jsr PrintCStrAX
|
|
||||||
*--------------------------------------
|
|
||||||
A2osX.SetupQC lda RRAMWRAMBNK2
|
A2osX.SetupQC lda RRAMWRAMBNK2
|
||||||
lda RRAMWRAMBNK2
|
lda RRAMWRAMBNK2
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.1 lda A2osX.QC.B.Start,x
|
.1 lda A2osX.QC.B.Start,x
|
||||||
sta $D100,x
|
sta $D100,x
|
||||||
lda A2osX.QC.B.Start+$100,x
|
lda A2osX.QC.B.Start+$100,x
|
||||||
sta $D200,x
|
sta $D200,x
|
||||||
|
lda A2osX.QC.B.Start+$200,x
|
||||||
|
sta $D300,x
|
||||||
inx
|
inx
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
ldx #$C0
|
|
||||||
.2 lda A2osX.GP.B.start-1,x
|
|
||||||
sta $D300-1,x
|
|
||||||
dex
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
ldx #$20
|
|
||||||
.3 lda $BEE0-1,x
|
|
||||||
sta $D3E0-1,x
|
|
||||||
dex
|
|
||||||
bne .3
|
|
||||||
|
|
||||||
lda RROMBNK1
|
lda RROMBNK1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.EnumKM >LDAXI MSG.KMENUM
|
A2osX.EnumKM >LDAXI MSG.KMENUM
|
||||||
jsr PrintCStrAX
|
jsr PrintCStrAX
|
||||||
jsr EnumKM
|
jsr EnumKM
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.MLIQuit >LDAXI MSG.STAGE0OK
|
A2osX.MLIQuit >LDAXI MSG.INIT0OK
|
||||||
jsr PrintCStrAX
|
jsr PrintCStrAX
|
||||||
|
|
||||||
>DEBUGOA
|
>DEBUGOA
|
||||||
|
|
||||||
jsr MLI
|
jsr MLI
|
||||||
.DA #MLIQUIT
|
.DA #MLIQUIT
|
||||||
.DA MLIQUIT01
|
.DA MLIQUIT01
|
||||||
bra *
|
bra *
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Out:
|
|
||||||
* Y = 0, 6502
|
|
||||||
* Y = 1, 65C02
|
|
||||||
* Y = 2, R65C02
|
|
||||||
* Y = 3, 65C816
|
|
||||||
*--------------------------------------
|
|
||||||
Init6502 ldy #0 Test 6502 BCD bug
|
|
||||||
sed
|
|
||||||
lda #$99
|
|
||||||
clc
|
|
||||||
adc #$01
|
|
||||||
cld
|
|
||||||
bmi .9 BUG!, we have 6502
|
|
||||||
|
|
||||||
ldy #3 test 65C816 TYX Instruction
|
|
||||||
ldx #0
|
|
||||||
.OP 65816
|
|
||||||
tyx TYX: if 65C816, x becomes non-zero
|
|
||||||
.OP 65C02
|
|
||||||
bne .9 worked! 65C816
|
|
||||||
|
|
||||||
dey y=2 -> R65C02
|
|
||||||
ldx $EA save zp $EA
|
|
||||||
stz $EA store 0 in $EA
|
|
||||||
* .OP 65R02
|
|
||||||
.HS F7EA For compatibility with A2osX.ASM
|
|
||||||
* smb 7,$EA if not Rockwell, assemble as nop nop
|
|
||||||
* .OP 65C02
|
|
||||||
asl $EA cs if Rockwell
|
|
||||||
stx $EA restore zp $EA
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
dey y=1 -> 65C02
|
|
||||||
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
DisableRamDRV php
|
DisableRamDRV php
|
||||||
sei
|
sei
|
||||||
lda DEVPTRS3D2
|
lda DEVPTRS3D2
|
||||||
|
@ -354,74 +219,167 @@ DisableRamDRV php
|
||||||
lda #0 Not detected
|
lda #0 Not detected
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
EnumKM.EPB .EQ $0D
|
||||||
|
EnumKM.EL .EQ $27
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
InitZ80 ldx #Z80Code.Size
|
EnumKM ldx #0
|
||||||
.1 lda Z80Code.Start-1,x
|
ldy Boot.Prefix
|
||||||
sta $1000-1,x 00000H for Z80
|
.1 inx
|
||||||
|
lda SYS,x
|
||||||
|
sta Boot.Prefix+1,y
|
||||||
|
iny
|
||||||
|
cpx SYS
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
sty Boot.Prefix
|
||||||
|
|
||||||
|
jsr MLI
|
||||||
|
.DA #MLIOPEN
|
||||||
|
.DA MLIOPEN01
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
lda MLIOPEN01+5
|
||||||
|
sta MLIREAD01+1
|
||||||
|
sta MLICLOSE01+1
|
||||||
|
|
||||||
|
.2 jsr MLI
|
||||||
|
.DA #MLIREAD
|
||||||
|
.DA MLIREAD01
|
||||||
|
bcs .98
|
||||||
|
|
||||||
|
lda #EnumKM.EPB
|
||||||
|
sta EnumKM.EC
|
||||||
|
>LDYAI A2osX.ReadBuff+4
|
||||||
|
>STYA EnumKM.BPTR
|
||||||
|
|
||||||
|
.3 >LDYA EnumKM.BPTR
|
||||||
|
>STYA TmpPtr1
|
||||||
|
lda (TmpPtr1)
|
||||||
|
and #$F0 Empty ?
|
||||||
|
beq .5 yes, skip
|
||||||
|
and #$C0 anything out of type 1,2 or 3 ?
|
||||||
|
bne .5 yes, skip
|
||||||
|
lda (TmpPtr1)
|
||||||
|
and #$0F
|
||||||
|
cmp KM.PREFIX at least enough chars for KM.*?
|
||||||
|
bcc .5 no, skip
|
||||||
|
ldy #$10 file type
|
||||||
|
lda (TmpPtr1),y
|
||||||
|
cmp #$06 'BIN'?
|
||||||
|
bne .5 skip
|
||||||
|
ldy KM.PREFIX
|
||||||
|
.4 lda (TmpPtr1),y
|
||||||
|
cmp KM.PREFIX,y
|
||||||
|
bne .5
|
||||||
|
dey
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
jsr LoadKM
|
||||||
|
|
||||||
|
.5 lda EnumKM.BPTR
|
||||||
|
clc
|
||||||
|
adc #EnumKM.EL
|
||||||
|
sta EnumKM.BPTR
|
||||||
|
bcc .6
|
||||||
|
inc EnumKM.BPTR+1
|
||||||
|
|
||||||
|
.6 dec EnumKM.EC
|
||||||
|
bne .3
|
||||||
|
bra .2
|
||||||
|
|
||||||
|
.8 jsr MLI
|
||||||
|
.DA #MLICLOSE
|
||||||
|
.DA MLICLOSE01
|
||||||
|
rts
|
||||||
|
|
||||||
|
.98 cmp #MLI.ERR.EOF
|
||||||
|
beq .8
|
||||||
|
pha
|
||||||
|
jsr .8
|
||||||
|
pla
|
||||||
|
.99 sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
EnumKM.EC .BS 1
|
||||||
|
EnumKM.BPTR .BS 2
|
||||||
|
*--------------------------------------
|
||||||
|
LoadKM ldx Boot.Prefix
|
||||||
|
.1 lda Boot.Prefix,x
|
||||||
|
sta KM.Filename,x
|
||||||
dex
|
dex
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
stz TmpPtr1
|
ldx Boot.Prefix
|
||||||
lda #$C1
|
lda (TmpPtr1)
|
||||||
sta TmpPtr1+1
|
|
||||||
|
|
||||||
.2 sta (TmpPtr1)
|
|
||||||
lda $100D
|
|
||||||
bmi .8
|
|
||||||
inc TmpPtr1+1
|
|
||||||
lda TmpPtr1+1
|
|
||||||
cmp #$C8
|
|
||||||
beq .9
|
|
||||||
clc
|
|
||||||
adc #$20
|
|
||||||
sta $100A
|
|
||||||
bra .2
|
|
||||||
|
|
||||||
.8 lda TmpPtr1+1
|
|
||||||
and #$0F
|
and #$0F
|
||||||
sta A2osX.Z80Slot
|
tay
|
||||||
clc
|
clc
|
||||||
rts
|
adc Boot.Prefix
|
||||||
|
sta KM.Filename
|
||||||
|
tax
|
||||||
|
|
||||||
.9 stz A2osX.Z80Slot
|
.2 lda (TmpPtr1),y
|
||||||
|
sta KM.Filename,x
|
||||||
|
dex
|
||||||
|
dey
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
>LDAXI MSG.KMLOAD
|
||||||
|
jsr PrintCStrAX
|
||||||
|
>LDAXI KM.Filename
|
||||||
|
jsr PrintPStrAX
|
||||||
|
jsr CROUT
|
||||||
|
|
||||||
|
jsr MLI
|
||||||
|
.DA #MLIOPEN
|
||||||
|
.DA MLIOPEN02
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
lda MLIOPEN02+5
|
||||||
|
sta MLIREAD02+1
|
||||||
|
sta MLICLOSE02+1
|
||||||
|
|
||||||
|
jsr MLI
|
||||||
|
.DA #MLIREAD
|
||||||
|
.DA MLIREAD02
|
||||||
|
bcs .98
|
||||||
|
jsr .9
|
||||||
|
|
||||||
|
jsr A2osX.KMLOAD
|
||||||
|
jsr CROUT
|
||||||
|
|
||||||
|
.98 pha
|
||||||
|
jsr .9
|
||||||
|
pla
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
.9 jsr MLI
|
||||||
|
.DA #MLICLOSE
|
||||||
|
.DA MLICLOSE02
|
||||||
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB A2OSX.S.KM
|
.INB X.PRINTF.S
|
||||||
.INB A2OSX.S.TOOLS
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.STAGE0 >CSTRING "A2osX[Stage0]:Init\n"
|
MSG.INIT0 >CSTRING "A2osX[Stage0]:Init\n"
|
||||||
MSG.SYSMEM >CSTRING "Checking System Memory..."
|
MSG.SYSMEM >CSTRING "Checking System Memory..."
|
||||||
MSG.SYSMEM.OK >CSTRING "128k Detected.\n"
|
MSG.SYSMEM.OK >CSTRING "128k Detected.\n"
|
||||||
MSG.SYSMEM.KO >CSTRING "A2osX Requires At Least 128k Memory.\n"
|
MSG.SYSMEM.KO >CSTRING "A2osX Requires At Least 128k Memory.\n"
|
||||||
MSG.HZ >CSTRING "Kernel SYS Timer Setup For %d0 hz.\n"
|
|
||||||
MSG.CPU >CSTRING "Checking CPU..."
|
MSG.CPU >CSTRING "Checking CPU..."
|
||||||
|
MSG.CPU.OK >CSTRING "65C02 CPU (or higher) Detected.\n"
|
||||||
MSG.CPU.KO >CSTRING "A2osX Requires At Least A 65C02 CPU.\n"
|
MSG.CPU.KO >CSTRING "A2osX Requires At Least A 65C02 CPU.\n"
|
||||||
MSG.CPU.SPEED >CSTRING "Detecting CPU Speed..."
|
|
||||||
MSG.CPU.SPEEDOK >CSTRING "%d.%02d Mhz.\n"
|
|
||||||
MSG.BOOTPREFIX >CSTRING "Boot Prefix:"
|
|
||||||
MSG.RAMDRV >CSTRING "Checking ProDOS RamDrive..."
|
MSG.RAMDRV >CSTRING "Checking ProDOS RamDrive..."
|
||||||
MSG.RAMDRV.OK >CSTRING "Successfully Disabled.\n"
|
MSG.RAMDRV.OK >CSTRING "Successfully Disabled.\n"
|
||||||
MSG.RAMDRV.KO0 >CSTRING "Not Detected.\n"
|
MSG.RAMDRV.KO0 >CSTRING "Not Detected.\n"
|
||||||
MSG.RAMDRV.KO1 >CSTRING "Uninstall Failed !!!\n"
|
MSG.RAMDRV.KO1 >CSTRING "Uninstall Failed !!!\n"
|
||||||
MSG.Z80 >CSTRING "Detecting Z80 CPU..."
|
|
||||||
MSG.Z80.OK >CSTRING "Detected In Slot %d.\n"
|
MSG.BOOTPREFIX >CSTRING "Boot Prefix:"
|
||||||
MSG.Z80.KO >CSTRING "Not Detected.\n"
|
|
||||||
MSG.KMENUM >CSTRING "Looking For Kernel Modules...\n"
|
MSG.KMENUM >CSTRING "Looking For Kernel Modules...\n"
|
||||||
MSG.KMLOAD >CSTRING "***Loading KM : "
|
MSG.KMLOAD >CSTRING "***Loading KM : "
|
||||||
MSG.STAGE0OK >CSTRING "A2osX[Stage0]:Complete.\n"
|
MSG.INIT0OK >CSTRING "A2osX[Stage0]:Complete.\n"
|
||||||
MSG.CPUTYPEL .DA #MSG.6502
|
|
||||||
.DA #MSG.65C02
|
|
||||||
.DA #MSG.65R02
|
|
||||||
.DA #MSG.65816
|
|
||||||
MSG.CPUTYPEH .DA /MSG.6502
|
|
||||||
.DA /MSG.65C02
|
|
||||||
.DA /MSG.65R02
|
|
||||||
.DA /MSG.65816
|
|
||||||
MSG.6502 >CSTRING "6502.\n"
|
|
||||||
MSG.65C02 >CSTRING "65C02.\n"
|
|
||||||
MSG.65R02 >CSTRING "65R02.\n"
|
|
||||||
MSG.65816 >CSTRING "65816.\n"
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MLIGETPREFIX01 .DA #1
|
MLIGETPREFIX01 .DA #1
|
||||||
.DA Boot.Prefix
|
.DA Boot.Prefix
|
||||||
|
@ -459,23 +417,11 @@ MLIQUIT01 .DA #4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYS >PSTRING "SYS/"
|
SYS >PSTRING "SYS/"
|
||||||
KM.PREFIX >PSTRING "KM."
|
KM.PREFIX >PSTRING "KM."
|
||||||
*--------------------------------------
|
|
||||||
Z80Code.Start .HS 31FFFF START: LD SP,0FFFFH Init Stack
|
|
||||||
.HS 3EFF LD A,0FFH Set Flag
|
|
||||||
.HS 320D00 LD (FLAG),A
|
|
||||||
.HS 3200E1 LD (0E100H),A Back to 6502
|
|
||||||
.HS 18F3 JR START Loop
|
|
||||||
.HS 00 FLAG: .DB 0
|
|
||||||
Z80Code.End .EQ *
|
|
||||||
Z80Code.Size .EQ Z80Code.End-Z80Code.Start
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.EP
|
.EP
|
||||||
A2osX.End .EQ *
|
|
||||||
A2osX.SIZE .EQ A2osX.End-A2osX.Start
|
|
||||||
.BS $1000-A2osX.SIZE
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
A2osX.QC.B.Start
|
||||||
.INB A2OSX.S.QC
|
.INB A2OSX.S.QC
|
||||||
.INB A2OSX.S.GP
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE A2OSX.S
|
SAVE A2OSX.S
|
||||||
|
|
|
@ -8,27 +8,27 @@ echo Env:
|
||||||
SET
|
SET
|
||||||
# Main Screen
|
# Main Screen
|
||||||
INSDRV CONSOLE.DRV
|
INSDRV CONSOLE.DRV
|
||||||
STARTPROC GETTY CON SBIN/LOGIN
|
STARTPROC GETTY CON ${A2OSX}SBIN/LOGIN
|
||||||
# Serial Login
|
# Serial Login
|
||||||
#INSDRV SSC.I.DRV 9600 N 8 1 X
|
#INSDRV SSC.I.DRV 9600 N 8 1 X
|
||||||
#STARTPROC GETTY COM2 SBIN/LOGIN
|
#STARTPROC GETTY COM2 LOGIN
|
||||||
#INSDRV PIC.DRV
|
#INSDRV PIC.DRV
|
||||||
# Network Section
|
# Network Section
|
||||||
INSDRV UTHERNET.DRV 000E3A123456
|
#INSDRV UTHERNET.DRV 000E3A123456
|
||||||
INSDRV UTHERNET2.DRV 0008DC123456
|
#INSDRV UTHERNET2.DRV 0008DC123456
|
||||||
#INSDRV UTHER2.AI.DRV 0008DC123456
|
#INSDRV UTHER2.AI.DRV 0008DC123456
|
||||||
#INSDRV LANCEGS.DRV
|
#INSDRV LANCEGS.DRV
|
||||||
STARTPROC TCPIP
|
#STARTPROC TCPIP
|
||||||
STARTPROC DHCPCLNT
|
#STARTPROC DHCPCLNT
|
||||||
#STARTPROC HTTPD
|
#STARTPROC HTTPD
|
||||||
#TELNETD
|
#TELNETD
|
||||||
#MOUNT TFTP 192.168.1.5:/A2OSX /MNT/A2OSX
|
#MOUNT TFTP 192.168.1.5:/A2OSX /MNT/A2OSX
|
||||||
#MOUNT CIFS 192.168.1.5:/MSSHARE /MNT/MSSHARE
|
#MOUNT CIFS 192.168.1.5:/MSSHARE /MNT/MSSHARE
|
||||||
# End Network Section
|
# End Network Section
|
||||||
# GUI Section
|
# GUI Section
|
||||||
#INSDRV DHGR.DRV
|
INSDRV DHGR.DRV
|
||||||
#INSDRV MOUSE.DRV
|
INSDRV MOUSE.DRV
|
||||||
#DESKTOP
|
STARTPROC DESKTOP
|
||||||
# End GUI Section
|
# End GUI Section
|
||||||
ECHO *** End A2osX Startup file ***
|
ECHO *** End A2osX Startup file ***
|
||||||
MAN
|
MAN
|
||||||
|
|
|
@ -70,7 +70,8 @@ FIO.OpenFileA sta FIO.hFileName
|
||||||
bra FIO.OpenFileA.Exit
|
bra FIO.OpenFileA.Exit
|
||||||
|
|
||||||
.10 lda FIO.hFileName
|
.10 lda FIO.hFileName
|
||||||
>SYSCALL SYS.MLIOpenA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>SYSCALL SYS.MLIOpenYA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
pha
|
pha
|
||||||
|
@ -91,7 +92,8 @@ FIO.OpenFileA sta FIO.hFileName
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
lda FIO.hFileName
|
lda FIO.hFileName
|
||||||
>SYSCALL SYS.MLIGetFileInfoA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>SYSCALL SYS.MLIGetFileInfoYA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /A2OSX.SRC
|
PREFIX /A2OSX.SRC
|
||||||
NEW
|
LOMEM $C00
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
|
|
|
@ -131,7 +131,8 @@ CS.INIT stz hFile
|
||||||
.2 ldy #hFileName
|
.2 ldy #hFileName
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
>SYSCALL SYS.LoadFileA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>SYSCALL SYS.LoadFileYA
|
||||||
bcs .3
|
bcs .3
|
||||||
|
|
||||||
stx hFile
|
stx hFile
|
||||||
|
@ -415,7 +416,8 @@ SaveFile >PUSHWI 0 Aux type
|
||||||
|
|
||||||
.1 ldy #hFileName
|
.1 ldy #hFileName
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
>SYSCALL SYS.MLIOpenA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>SYSCALL SYS.MLIOpenYA
|
||||||
bcs .9
|
bcs .9
|
||||||
sta hFile
|
sta hFile
|
||||||
stx TmpByte
|
stx TmpByte
|
||||||
|
|
|
@ -41,8 +41,10 @@ L.MSG1 .DA MSG1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT >LDYA L.LIBSTR
|
CS.INIT >LDYA L.LIBSTR
|
||||||
>SYSCALL SYS.LoadLibYA
|
>SYSCALL SYS.LoadLibYA
|
||||||
bcs .9
|
bcc .1
|
||||||
sta hLIBSTR
|
rts
|
||||||
|
|
||||||
|
.1 sta hLIBSTR
|
||||||
|
|
||||||
>LDYAI DevMgr.Table
|
>LDYAI DevMgr.Table
|
||||||
>STYA ZPPTR1
|
>STYA ZPPTR1
|
||||||
|
@ -51,23 +53,27 @@ CS.INIT >LDYA L.LIBSTR
|
||||||
>PUSHW L.MSG0
|
>PUSHW L.MSG0
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
.1 lda (ZPPTR1)
|
.2 lda (ZPPTR1)
|
||||||
cmp #$D8
|
cmp #$D8
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
|
ldy #S.DEV.JMP+1
|
||||||
|
>PUSHB (ZPPTR1),y
|
||||||
|
dey
|
||||||
|
>PUSHB (ZPPTR1),y
|
||||||
|
|
||||||
lda ZPPTR1
|
lda ZPPTR1
|
||||||
clc
|
clc
|
||||||
adc #S.DEV.NAME
|
adc #S.DEV.NAME
|
||||||
sta ZPPTR2
|
tay
|
||||||
lda ZPPTR1+1
|
lda ZPPTR1+1
|
||||||
adc #0
|
adc #0
|
||||||
sta ZPPTR2+1
|
>PUSHYA
|
||||||
>PUSHW ZPPTR2
|
|
||||||
|
|
||||||
ldy #S.DEV.F
|
ldy #S.DEV.F
|
||||||
lda (ZPPTR1),y push flags
|
>PUSHB (ZPPTR1),y
|
||||||
>PUSHA
|
ldy #S.DEV.ID
|
||||||
>PUSHB DEV.ID
|
>PUSHB (ZPPTR1),y
|
||||||
>PUSHW L.MSG1
|
>PUSHW L.MSG1
|
||||||
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
||||||
|
|
||||||
|
@ -81,7 +87,7 @@ CS.INIT >LDYA L.LIBSTR
|
||||||
.3 inc DEV.ID
|
.3 inc DEV.ID
|
||||||
lda DEV.ID
|
lda DEV.ID
|
||||||
cmp #K.DEV.MAX
|
cmp #K.DEV.MAX
|
||||||
bne .1
|
bne .2
|
||||||
|
|
||||||
.8 lda #0 tell TSKMGR that all done ok, but
|
.8 lda #0 tell TSKMGR that all done ok, but
|
||||||
.9 sec we do not want to stay in memory
|
.9 sec we do not want to stay in memory
|
||||||
|
@ -98,8 +104,8 @@ CS.QUIT lda hLIBSTR
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
LIBSTR >PSTRING "libstr.o"
|
LIBSTR >PSTRING "libstr.o"
|
||||||
MSG0 >CSTRING "ID Flags Name\n"
|
MSG0 >CSTRING "ID Flags Name Address\n"
|
||||||
MSG1 >CSTRING "%03d %b %4S\n"
|
MSG1 >CSTRING "%03d %b %4S $%H\n"
|
||||||
hLIBSTR .BS 1
|
hLIBSTR .BS 1
|
||||||
DEV.ID .BS 1
|
DEV.ID .BS 1
|
||||||
MAN
|
MAN
|
||||||
|
|
|
@ -62,7 +62,8 @@ CS.INIT stz hFullPath
|
||||||
>SYSCALL SYS.PStrCat
|
>SYSCALL SYS.PStrCat
|
||||||
sta hFullPath
|
sta hFullPath
|
||||||
|
|
||||||
.2 >SYSCALL SYS.MLICreateDirA
|
.2 >SYSCALL SYS.GetMemPtrA
|
||||||
|
>SYSCALL SYS.MLICreateDirYA
|
||||||
php
|
php
|
||||||
pha
|
pha
|
||||||
jsr .98
|
jsr .98
|
||||||
|
|
109
BIN/NFSMOUNT.S.txt
Normal file
109
BIN/NFSMOUNT.S.txt
Normal file
|
@ -0,0 +1,109 @@
|
||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.SRC
|
||||||
|
NEW
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
.OP 65C02
|
||||||
|
.OR $2000
|
||||||
|
.TF /A2OSX.BOOT/BIN/NFSMOUNT
|
||||||
|
*--------------------------------------
|
||||||
|
.INB INC/MACROS.I
|
||||||
|
.INB INC/A2OSX.I
|
||||||
|
.INB INC/LIBTCPIP.I
|
||||||
|
*--------------------------------------
|
||||||
|
TIMEOUT.MAX .EQ 40 40*100ms = 4 sec.
|
||||||
|
*--------------------------------------
|
||||||
|
ZPIPCfgPtr .EQ ZPBIN
|
||||||
|
ZPFrameBase .EQ ZPBIN+2
|
||||||
|
*--------------------------------------
|
||||||
|
* 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 Length To Relocate
|
||||||
|
.DA DS.END-DS.START Data Segment to Allocate
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
*--------------------------------------
|
||||||
|
.1 .DA CS.INIT
|
||||||
|
.DA CS.RUN
|
||||||
|
.DA CS.DOEVENT
|
||||||
|
.DA CS.QUIT
|
||||||
|
L.LIBTCPIP .DA LIBTCPIP
|
||||||
|
L.MSG.USAGE .DA MSG.USAGE
|
||||||
|
.DA 0
|
||||||
|
*--------------------------------------
|
||||||
|
CS.INIT ldy #S.PS.hARGS
|
||||||
|
lda (pPs),y
|
||||||
|
beq .99
|
||||||
|
|
||||||
|
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
|
||||||
|
bcs .99
|
||||||
|
>STYA ZPIPCfgPtr
|
||||||
|
|
||||||
|
lda (ZPIPCfgPtr) Configured ?
|
||||||
|
bpl .99
|
||||||
|
|
||||||
|
ldx #3
|
||||||
|
ldy #S.IPCFG.IP+3
|
||||||
|
.1 lda (ZPIPCfgPtr),y
|
||||||
|
sta Socket.Src.Addr,x
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
lda (pPs)
|
||||||
|
ora #S.PS.F.EVENT Now accept events
|
||||||
|
sta (pPs)
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.99 >LDYA L.MSG.USAGE
|
||||||
|
>SYSCALL SYS.PSTROutYA
|
||||||
|
lda #SYSMGR.ERRSYN
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN
|
||||||
|
CS.RUN.ERROR sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.DOEVENT
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.QUIT lda hLIBTCPIP
|
||||||
|
>SYSCALL SYS.UnloadLibA
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.END
|
||||||
|
MSG.USAGE >PSTRING "Usage : NFSMOUNT [HOST | IP]/export /mountvol\n"
|
||||||
|
LIBTCPIP >PSTRING "libtcpip.o"
|
||||||
|
hLIBTCPIP .BS 1
|
||||||
|
Socket .DA #S.SOCKET.SOCK.DGRAM
|
||||||
|
.BS 3
|
||||||
|
Socket.Src.Addr .BS 4
|
||||||
|
Socket.Src.Port .DA 0 Dynamic
|
||||||
|
Socket.Dst.Addr .BS 4
|
||||||
|
Socket.Dst.Port .DA UDP.PORT.PMAP
|
||||||
|
.BS 16
|
||||||
|
*--------------------------------------
|
||||||
|
.DUMMY
|
||||||
|
.OR 0
|
||||||
|
DS.START
|
||||||
|
bCTRLC .BS 1
|
||||||
|
DS.END
|
||||||
|
.ED
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE BIN/NFSMOUNT.S
|
||||||
|
ASM
|
|
@ -108,8 +108,6 @@ CS.RUN ldy #bCTRLC
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.DOEVENT lda (pEvent)
|
CS.DOEVENT lda (pEvent)
|
||||||
|
|
||||||
>DEBUG
|
|
||||||
|
|
||||||
bpl .1 is it a TIMER event?
|
bpl .1 is it a TIMER event?
|
||||||
|
|
||||||
ora #'T'
|
ora #'T'
|
||||||
|
|
|
@ -39,9 +39,6 @@ L.MSG.DETECT .DA MSG.DETECT
|
||||||
Dev.Detect >LDYA L.MSG.DETECT
|
Dev.Detect >LDYA L.MSG.DETECT
|
||||||
>SYSCALL SYS.PSTROutYA
|
>SYSCALL SYS.PSTROutYA
|
||||||
|
|
||||||
lda A2osX.SCREENS
|
|
||||||
ora #A2osX.SCREENS.C
|
|
||||||
sta A2osX.SCREENS
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
CS.END
|
CS.END
|
||||||
|
@ -51,10 +48,11 @@ MSG.DETECT >PSTRING "Apple IIe/IIc 80 Col Driver.\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEV.HEADER cld
|
DEV.HEADER cld
|
||||||
jmp (DRV.CS.START,x)
|
jmp (DRV.CS.START,x)
|
||||||
|
.HS 00 DevID
|
||||||
.DA #S.DEV.F.EVENT+S.DEV.F.COUT+S.DEV.F.CHAR
|
.DA #S.DEV.F.EVENT+S.DEV.F.COUT+S.DEV.F.CHAR
|
||||||
>PSTRING "CON" NAME
|
>PSTRING "CON" NAME
|
||||||
.HS 00 NAME must Be 5 bytes long
|
.HS 00 NAME must Be 5 bytes long
|
||||||
.HS 00.00
|
.HS 00
|
||||||
.HS 00.00.00.00
|
.HS 00.00.00.00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Driver Code
|
* Driver Code
|
||||||
|
@ -65,6 +63,7 @@ DRV.CS.START .DA OPEN
|
||||||
.DA CLOSE
|
.DA CLOSE
|
||||||
.DA GETINFO
|
.DA GETINFO
|
||||||
.DA IRQ
|
.DA IRQ
|
||||||
|
.DA SELECT
|
||||||
L.DEVINFO .DA DEVINFO
|
L.DEVINFO .DA DEVINFO
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
J.CtrlChars .DA BS 8
|
J.CtrlChars .DA BS 8
|
||||||
|
@ -92,12 +91,15 @@ OPEN stz CURON
|
||||||
stz OutPtr
|
stz OutPtr
|
||||||
stz OutCnt
|
stz OutCnt
|
||||||
|
|
||||||
|
ldy #S.DEV.ID
|
||||||
|
lda (pDev),y
|
||||||
|
sta A2osX.SCRNDEVS
|
||||||
|
|
||||||
|
jsr SELECT
|
||||||
|
lda #1
|
||||||
|
sta A2osX.ASCREEN
|
||||||
jsr RESET
|
jsr RESET
|
||||||
jsr HOME
|
jsr HOME
|
||||||
|
|
||||||
lda #A2osX.SCREENS.C
|
|
||||||
>SYSCALL SYS.ScreenSelectA
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -110,16 +112,17 @@ GETEVENT lda A2osX.TIMER16
|
||||||
.1 jsr Char.Out.Get
|
.1 jsr Char.Out.Get
|
||||||
bcc .7
|
bcc .7
|
||||||
|
|
||||||
lda A2osX.ASCREEN
|
|
||||||
and #A2osX.SCREENS.C is screen active?
|
|
||||||
beq .9
|
|
||||||
|
|
||||||
>SYSCALL SYS.GetKeyboardEvent
|
>SYSCALL SYS.GetKeyboardEvent
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #S.EVT.DATAHI
|
ldy #S.EVT.DATAHI
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
|
lda A2osX.ASCREEN
|
||||||
|
cmp #1
|
||||||
|
bne .9
|
||||||
|
|
||||||
dey
|
dey
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
|
|
||||||
|
@ -172,6 +175,14 @@ COUT bit bEscMode
|
||||||
jsr SetCharAtXY
|
jsr SetCharAtXY
|
||||||
jmp FSOUT
|
jmp FSOUT
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
SELECT sta SETTEXT
|
||||||
|
sta SETALTCHAR
|
||||||
|
sta SET80DISP
|
||||||
|
sta CLR80STORE
|
||||||
|
sta CLRPAGE2
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
COUT.Ctrl ldy #0
|
COUT.Ctrl ldy #0
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
|
@ -300,10 +311,7 @@ COUT.ExecEscSeq stz EscSeqParamCnt
|
||||||
|
|
||||||
.5 jmp (J.EscSequences,x)
|
.5 jmp (J.EscSequences,x)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CLOSE
|
CLOSE stz A2osX.SCRNDEVS
|
||||||
* lda A2osX.SCREENS
|
|
||||||
* and #$FF^A2osX.SCREENS.C
|
|
||||||
* sta A2osX.SCREENS
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -621,8 +629,8 @@ CUROFF lda CURON
|
||||||
beq CUREXIT.RTS
|
beq CUREXIT.RTS
|
||||||
|
|
||||||
CURBLNK lda A2osX.ASCREEN
|
CURBLNK lda A2osX.ASCREEN
|
||||||
and #A2osX.SCREENS.C
|
cmp #1
|
||||||
bne CURBLNK1
|
beq CURBLNK1
|
||||||
|
|
||||||
lda CURON
|
lda CURON
|
||||||
bne CURBLNK.OFF
|
bne CURBLNK.OFF
|
||||||
|
|
|
@ -35,10 +35,6 @@ L.MSG.DETECT .DA MSG.DETECT
|
||||||
Dev.Detect >LDYA L.MSG.DETECT
|
Dev.Detect >LDYA L.MSG.DETECT
|
||||||
>SYSCALL SYS.PSTROutYA
|
>SYSCALL SYS.PSTROutYA
|
||||||
|
|
||||||
lda A2osX.SCREENS
|
|
||||||
ora #A2osX.SCREENS.G
|
|
||||||
sta A2osX.SCREENS
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
CS.END
|
CS.END
|
||||||
|
@ -48,10 +44,11 @@ MSG.DETECT >PSTRING "\nApple IIe/IIc DHGR Driver.\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEV.HEADER cld
|
DEV.HEADER cld
|
||||||
jmp (DRV.CS.START,x)
|
jmp (DRV.CS.START,x)
|
||||||
|
.HS 00 DevID
|
||||||
.DA #S.DEV.F.EVENT
|
.DA #S.DEV.F.EVENT
|
||||||
>PSTRING "GFX" NAME
|
>PSTRING "GFX" NAME
|
||||||
.HS 00 NAME must Be 5 bytes long
|
.HS 00 NAME must Be 5 bytes long
|
||||||
.HS 00.00
|
.HS 00
|
||||||
.HS 00.00.00.00
|
.HS 00.00.00.00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Driver Code
|
* Driver Code
|
||||||
|
@ -62,6 +59,7 @@ DRV.CS.START .DA OPEN
|
||||||
.DA CLOSE
|
.DA CLOSE
|
||||||
.DA GETINFO
|
.DA GETINFO
|
||||||
.DA IRQ
|
.DA IRQ
|
||||||
|
.DA SELECT
|
||||||
.DA SETPIXEL
|
.DA SETPIXEL
|
||||||
.DA GETPIXEL
|
.DA GETPIXEL
|
||||||
.DA HLINE
|
.DA HLINE
|
||||||
|
@ -71,47 +69,24 @@ DRV.CS.START .DA OPEN
|
||||||
L.DEVINFO .DA DEVINFO
|
L.DEVINFO .DA DEVINFO
|
||||||
.DA 0 end or relocation
|
.DA 0 end or relocation
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
OPEN lda #A2osX.SCREENS.G
|
OPEN ldy #S.DEV.ID
|
||||||
>SYSCALL SYS.ScreenSelectA
|
lda (pDev),y
|
||||||
|
sta A2osX.SCRNDEVS+2
|
||||||
ldx #192
|
|
||||||
|
|
||||||
.81 dex
|
jsr SELECT
|
||||||
|
lda #3
|
||||||
lda BASEL,x
|
sta A2osX.ASCREEN
|
||||||
sta ZPBASE
|
|
||||||
lda BASEH,x
|
|
||||||
sta ZPBASE+1
|
|
||||||
|
|
||||||
* lda #$55
|
|
||||||
lda #$00
|
|
||||||
|
|
||||||
ldy #39
|
|
||||||
sta SETWRITEAUX
|
|
||||||
.82 sta (ZPBASE),y
|
|
||||||
dey
|
|
||||||
bpl .82
|
|
||||||
|
|
||||||
* lda #$2A
|
|
||||||
lda #$00
|
|
||||||
|
|
||||||
ldy #39
|
|
||||||
sta CLRWRITEAUX
|
|
||||||
.83 sta (ZPBASE),y
|
|
||||||
dey
|
|
||||||
bpl .83
|
|
||||||
|
|
||||||
txa
|
|
||||||
bne .81
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
GETEVENT lda A2osX.ASCREEN
|
GETEVENT lda A2osX.ASCREEN
|
||||||
and #A2osX.SCREENS.G is screen active?
|
cmp #3
|
||||||
beq .9
|
bne .9
|
||||||
|
|
||||||
>SYSCALL SYS.GetKeyboardEvent
|
>SYSCALL SYS.GetKeyboardEvent
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #0 Error = no event
|
.9 lda #0 Error = no event
|
||||||
|
@ -129,6 +104,24 @@ GETINFO >LDYA L.DEVINFO
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
SELECT sta CLRTEXT
|
||||||
|
sta CLRMIXED
|
||||||
|
sta SETHIRES
|
||||||
|
sta CLR80STORE
|
||||||
|
sta CLRPAGE2
|
||||||
|
sta SETIOUDIS
|
||||||
|
sta SETDHIRES
|
||||||
|
|
||||||
|
* sta CLR80DISP
|
||||||
|
* sta SETDHIRES
|
||||||
|
* sta CLRDHIRES
|
||||||
|
* sta SET80DISP
|
||||||
|
* sta SETDHIRES
|
||||||
|
* sta CLRDHIRES
|
||||||
|
* sta SETDHIRES
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
* SETPIXEL
|
* SETPIXEL
|
||||||
* PULLB = Mode
|
* PULLB = Mode
|
||||||
* 00000001=B/W
|
* 00000001=B/W
|
||||||
|
@ -162,6 +155,7 @@ SETPIXEL.XOR >PULLYA Y=X.LO,A=X.HI
|
||||||
|
|
||||||
.3 lsr
|
.3 lsr
|
||||||
tay
|
tay
|
||||||
|
sta CLRPAGE2
|
||||||
bcs .4 odd=main ram
|
bcs .4 odd=main ram
|
||||||
sta SETPAGE2
|
sta SETPAGE2
|
||||||
|
|
||||||
|
|
|
@ -117,14 +117,18 @@ CS.END
|
||||||
MSG.DETECT >PSTRING "Apple Mouse Card/IIc Mouse Driver.\n"
|
MSG.DETECT >PSTRING "Apple Mouse Card/IIc Mouse Driver.\n"
|
||||||
MSG.DETECT.OK >PSTRING "Mouse Installed As Device : "
|
MSG.DETECT.OK >PSTRING "Mouse Installed As Device : "
|
||||||
MSG.DETECT.KO >PSTRING "No Mouse Found.\n"
|
MSG.DETECT.KO >PSTRING "No Mouse Found.\n"
|
||||||
|
DEVSIG.Offset .HS 05070B0CFB
|
||||||
|
DEVSIG.Value .HS 38180120D6
|
||||||
|
DEVSIG.Length .EQ DEVSIG.Value-DEVSIG.Offset
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Device Header (16 Bytes)
|
* Device Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEV.HEADER cld
|
DEV.HEADER cld
|
||||||
jmp (DRV.CS.START,x)
|
jmp (DRV.CS.START,x)
|
||||||
|
.HS 00 DevID
|
||||||
.DA #S.DEV.F.EVENT
|
.DA #S.DEV.F.EVENT
|
||||||
DEV.HEADER.NAME >PSTRING "MOU1" NAME
|
DEV.HEADER.NAME >PSTRING "MOU1" NAME
|
||||||
.HS 00.00
|
.HS 00
|
||||||
.HS 00.00.00.00
|
.HS 00.00.00.00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Driver Code
|
* Driver Code
|
||||||
|
@ -135,6 +139,7 @@ DRV.CS.START .DA OPEN
|
||||||
.DA CLOSE
|
.DA CLOSE
|
||||||
.DA GETINFO
|
.DA GETINFO
|
||||||
.DA IRQ
|
.DA IRQ
|
||||||
|
.DA SELECT
|
||||||
L.DEVINFO .DA DEVINFO
|
L.DEVINFO .DA DEVINFO
|
||||||
.DA 0 end or relocation
|
.DA 0 end or relocation
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -181,8 +186,8 @@ OPEN
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
GETEVENT lda A2osX.ASCREEN
|
GETEVENT lda A2osX.ASCREEN
|
||||||
and #A2osX.SCREENS.G is screen active?
|
cmp #3 is DHGR screen active?
|
||||||
beq .9
|
bne .9
|
||||||
|
|
||||||
php
|
php
|
||||||
sei
|
sei
|
||||||
|
@ -245,7 +250,9 @@ GETEVENT lda A2osX.ASCREEN
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
COUT
|
COUT
|
||||||
IRQ sec
|
IRQ
|
||||||
|
SELECT lda #DEVMGR.ERRUNSUP
|
||||||
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CLOSE php
|
CLOSE php
|
||||||
|
@ -272,9 +279,6 @@ GOMOUSE pha
|
||||||
jmp (ZPGoMouse)
|
jmp (ZPGoMouse)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.CS.END
|
DRV.CS.END
|
||||||
DEVSIG.Offset .HS 05070B0CFB
|
|
||||||
DEVSIG.Value .HS 38180120D6
|
|
||||||
DEVSIG.Length .EQ DEVSIG.Value-DEVSIG.Offset
|
|
||||||
DEVSLOT0n .BS 1
|
DEVSLOT0n .BS 1
|
||||||
DEVSLOTn0 .BS 1
|
DEVSLOTn0 .BS 1
|
||||||
DEVSLOTCn .BS 1
|
DEVSLOTCn .BS 1
|
||||||
|
|
|
@ -41,10 +41,10 @@ W5100.AR.RCR .EQ $0019
|
||||||
W5100.AR.RMSR .EQ $001A
|
W5100.AR.RMSR .EQ $001A
|
||||||
W5100.AR.TMSR .EQ $001B
|
W5100.AR.TMSR .EQ $001B
|
||||||
W5100.AR.PATR .EQ $001C
|
W5100.AR.PATR .EQ $001C
|
||||||
W5100.AR.PTIMER .EQ $0028
|
*W5100.AR.PTIMER .EQ $0028
|
||||||
W5100.AR.PMAGIC .EQ $0029
|
*W5100.AR.PMAGIC .EQ $0029
|
||||||
W5100.AR.UIPR .EQ $002A
|
*W5100.AR.UIPR .EQ $002A
|
||||||
W5100.AR.UPORT .EQ $002E
|
*W5100.AR.UPORT .EQ $002E
|
||||||
W5100.AR.S0.MR .EQ $0400
|
W5100.AR.S0.MR .EQ $0400
|
||||||
W5100.AR.S0.MR.MULTI .EQ $80
|
W5100.AR.S0.MR.MULTI .EQ $80
|
||||||
W5100.AR.S0.MR.MF .EQ $40
|
W5100.AR.S0.MR.MF .EQ $40
|
||||||
|
@ -183,9 +183,10 @@ hArgs .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEV.HEADER cld
|
DEV.HEADER cld
|
||||||
jmp (DRV.CS.START,x)
|
jmp (DRV.CS.START,x)
|
||||||
|
.HS 00
|
||||||
.DA #S.DEV.F.SHARE+S.DEV.F.EVENT
|
.DA #S.DEV.F.SHARE+S.DEV.F.EVENT
|
||||||
DEV.HEADER.NAME >PSTRING "ETH1" NAME
|
DEV.HEADER.NAME >PSTRING "ETH1" NAME
|
||||||
.HS 00.00
|
.HS 00
|
||||||
.HS 00.00.00.00
|
.HS 00.00.00.00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Driver Code
|
* Driver Code
|
||||||
|
|
|
@ -43,14 +43,14 @@ PP.RxCTL.ExtradataA .EQ %01000000.00000000
|
||||||
PP.TxCFG .EQ $0106 Transmit Configuration (RW)
|
PP.TxCFG .EQ $0106 Transmit Configuration (RW)
|
||||||
PP.TxCMD .EQ $0108 Receiver Control (RW)
|
PP.TxCMD .EQ $0108 Receiver Control (RW)
|
||||||
PP.TxCMD.LID .EQ %00000000.00001001
|
PP.TxCMD.LID .EQ %00000000.00001001
|
||||||
PP.TxCMD.TxStart5 .EQ %00000000.00000000
|
*PP.TxCMD.TxStart5 .EQ %00000000.00000000
|
||||||
PP.TxCMD.TxStart381 .EQ %00000000.01000000
|
*PP.TxCMD.TxStart381 .EQ %00000000.01000000
|
||||||
PP.TxCMD.TxStart1021 .EQ %00000000.10000000
|
*PP.TxCMD.TxStart1021 .EQ %00000000.10000000
|
||||||
PP.TxCMD.TxStartFULL .EQ %00000000.11000000
|
PP.TxCMD.TxStartFULL .EQ %00000000.11000000
|
||||||
PP.TxCMD.Force .EQ %00000001.00000000
|
*PP.TxCMD.Force .EQ %00000001.00000000
|
||||||
PP.TxCMD.OneColl .EQ %00000010.00000000
|
*PP.TxCMD.OneColl .EQ %00000010.00000000
|
||||||
PP.TxCMD.InhibitCRC .EQ %00010000.00000000
|
*PP.TxCMD.InhibitCRC .EQ %00010000.00000000
|
||||||
PP.TxCMD.TxPadDis .EQ %00100000.00000000
|
*PP.TxCMD.TxPadDis .EQ %00100000.00000000
|
||||||
PP.BufCFG .EQ $010A
|
PP.BufCFG .EQ $010A
|
||||||
PP.LineCTL .EQ $0112 Line Control (RW)
|
PP.LineCTL .EQ $0112 Line Control (RW)
|
||||||
PP.LineCTL.LID .EQ %00000000.00010011
|
PP.LineCTL.LID .EQ %00000000.00010011
|
||||||
|
@ -200,9 +200,10 @@ hArgs .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEV.HEADER cld
|
DEV.HEADER cld
|
||||||
jmp (DRV.CS.START,x)
|
jmp (DRV.CS.START,x)
|
||||||
|
.HS 00
|
||||||
.DA #S.DEV.F.SHARE+S.DEV.F.EVENT
|
.DA #S.DEV.F.SHARE+S.DEV.F.EVENT
|
||||||
DEV.HEADER.NAME >PSTRING "ETH1" NAME
|
DEV.HEADER.NAME >PSTRING "ETH1" NAME
|
||||||
.HS 00.00
|
.HS 00
|
||||||
.HS 00.00.00.00
|
.HS 00.00.00.00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Driver Code
|
* Driver Code
|
||||||
|
@ -241,7 +242,6 @@ OPEN jsr Reset
|
||||||
>STYA PacketPagePTR,x
|
>STYA PacketPagePTR,x
|
||||||
>LDYAI PP.LineCTL.LID+PP.LineCTL.SerRxOn+PP.LineCTL.SerTxOn+PP.LineCTL.Auto
|
>LDYAI PP.LineCTL.LID+PP.LineCTL.SerRxOn+PP.LineCTL.SerTxOn+PP.LineCTL.Auto
|
||||||
>STYA PacketPageDATA,x
|
>STYA PacketPageDATA,x
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -252,7 +252,6 @@ GETEVENT ldx DEVSLOTx0
|
||||||
and /PP.RxEvent.RxOK+PP.RxEvent.Brdcast+PP.RxEvent.IA
|
and /PP.RxEvent.RxOK+PP.RxEvent.Brdcast+PP.RxEvent.IA
|
||||||
bne GETEVENT.RxOK
|
bne GETEVENT.RxOK
|
||||||
lda #ERR.DEV.NOFRAME
|
lda #ERR.DEV.NOFRAME
|
||||||
|
|
||||||
COUT
|
COUT
|
||||||
IRQ
|
IRQ
|
||||||
SETIPCFG
|
SETIPCFG
|
||||||
|
@ -443,18 +442,15 @@ Reset ldx DEVSLOTx0
|
||||||
>LDYAI PP.SelfCTL.LID+PP.SelfCTL.RESET
|
>LDYAI PP.SelfCTL.LID+PP.SelfCTL.RESET
|
||||||
>STYA PacketPageDATA,x
|
>STYA PacketPageDATA,x
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
|
||||||
DRV.CS.END
|
DRV.CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEVSLOTx0 .BS 1
|
DEVSLOTx0 .BS 1
|
||||||
Size .BS 2
|
Size .BS 2
|
||||||
Counter .BS 2
|
Counter .BS 2
|
||||||
*--------------------------------------
|
|
||||||
DEVINFO .DA #S.DEVINFO.TYPE.NET
|
DEVINFO .DA #S.DEVINFO.TYPE.NET
|
||||||
DEVFLAGS .DA #0
|
DEVFLAGS .DA #0
|
||||||
MAC .BS 6
|
MAC .BS 6
|
||||||
LINK.STATUS .BS 1 OK/DUPLEX/SPEED
|
LINK.STATUS .BS 1 OK/DUPLEX/SPEED
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE DRV/UTHERNET.DRV.S
|
SAVE DRV/UTHERNET.DRV.S
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -183,9 +183,10 @@ hArgs .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEV.HEADER cld
|
DEV.HEADER cld
|
||||||
jmp (DRV.CS.START,x)
|
jmp (DRV.CS.START,x)
|
||||||
|
.HS 00
|
||||||
.DA #S.DEV.F.SHARE+S.DEV.F.EVENT
|
.DA #S.DEV.F.SHARE+S.DEV.F.EVENT
|
||||||
DEV.HEADER.NAME >PSTRING "ETH1" NAME
|
DEV.HEADER.NAME >PSTRING "ETH1" NAME
|
||||||
.HS 00.00
|
.HS 00
|
||||||
.HS 00.00.00.00
|
.HS 00.00.00.00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Driver Code
|
* Driver Code
|
||||||
|
|
|
@ -113,30 +113,26 @@ pLibJmp .EQ $BE16
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MLICALL.PARAMS .EQ $BEC0
|
MLICALL.PARAMS .EQ $BEC0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* $BEE0->$BEFF : Public Variables
|
* $BEE0->$BEEF : Public Variables
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.SCREENS .EQ $BEE0
|
A2osX.ASCREEN .EQ $BEE0 Active Screen
|
||||||
A2osX.SCREENS.S .EQ %00000001 System Screen
|
A2osX.SCRNDEVS .EQ $BEE1 -> $BEE4 (4 devices)
|
||||||
A2osX.SCREENS.C .EQ %00000010 Console Screen
|
|
||||||
A2osX.SCREENS.G .EQ %00000100 Graphic Screen
|
|
||||||
A2osX.SCREENS.2 .EQ %00001000 Graphic Screen2
|
|
||||||
A2osX.ASCREEN .EQ $BEE1 Active Screen
|
|
||||||
|
|
||||||
A2osX.SCRNDEVS .EQ $BEE2 -> $BEE5 (4 devices)
|
|
||||||
A2osX.CPUTYPE .EQ $BEE6
|
A2osX.CPUTYPE .EQ $BEE6
|
||||||
A2osX.CPUSPEED .EQ $BEE7 (->255.99 Mhz)
|
A2osX.CPUSPEED .EQ $BEE7 (->255.99 Mhz)
|
||||||
|
|
||||||
A2osX.Z80SLOT .EQ $BEEA
|
A2osX.Z80SLOT .EQ $BEEA
|
||||||
|
|
||||||
A2osX.HZ .EQ $BEEB
|
|
||||||
|
|
||||||
A2osX.TIMER16 .EQ $BEEC
|
A2osX.TIMER16 .EQ $BEEC
|
||||||
A2osX.RANDOM16 .EQ $BEEE
|
A2osX.RANDOM16 .EQ $BEEE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* $BEF0->$BEFF : Kernel Config Block
|
||||||
|
*--------------------------------------
|
||||||
|
A2osX.HZ .EQ $BEF0
|
||||||
|
*--------------------------------------
|
||||||
* Kernel Entry Point
|
* Kernel Entry Point
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KERNEL.SYSCALL .EQ $D000
|
KERNEL.SYSCALL .EQ $E000
|
||||||
KERNEL.COLDBOOT .EQ $D100
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
H.BIN.HEADER .EQ 0
|
H.BIN.HEADER .EQ 0
|
||||||
H.BIN.HEADER.DRV65 .EQ $4CD8 6502:cld,jmp abs
|
H.BIN.HEADER.DRV65 .EQ $4CD8 6502:cld,jmp abs
|
||||||
|
@ -161,8 +157,10 @@ SYS.FreeMemA .EQ $02
|
||||||
SYS.GetMemPtrA .EQ $04
|
SYS.GetMemPtrA .EQ $04
|
||||||
SYS.GetMemByIDA .EQ $06
|
SYS.GetMemByIDA .EQ $06
|
||||||
|
|
||||||
SYS.GetMemByNameA .EQ $08
|
SYS.GetMemByNameYA .EQ $08
|
||||||
SYS.GetMemByNameYA .EQ $0A
|
SYS.LoadStockObjectYA .EQ $0A
|
||||||
|
SYS.GetStockObjectA .EQ $0C
|
||||||
|
SYS.FreeStockObject .EQ $0E
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYS.NewPStrYA .EQ $10
|
SYS.NewPStrYA .EQ $10
|
||||||
SYS.PStrCpyA .EQ $12
|
SYS.PStrCpyA .EQ $12
|
||||||
|
@ -174,14 +172,14 @@ SYS.PStrGetTkn .EQ $18
|
||||||
SYS.GetArgCount .EQ $1C
|
SYS.GetArgCount .EQ $1C
|
||||||
SYS.GetArgA .EQ $1E
|
SYS.GetArgA .EQ $1E
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYS.LoadBinA .EQ $20
|
|
||||||
SYS.LoadLibYA .EQ $22
|
SYS.LoadLibYA .EQ $22
|
||||||
SYS.UnloadLibA .EQ $24
|
SYS.UnloadLibA .EQ $24
|
||||||
SYS.LoadDrvA .EQ $26
|
SYS.LoadDrvA .EQ $26
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYS.ExpandPStrA .EQ $30
|
SYS.ExpandPStrA .EQ $30
|
||||||
SYS.ExpandPStrYA .EQ $32
|
SYS.ExpandPStrYA .EQ $32
|
||||||
SYS.GetEnvVarA .EQ $34
|
SYS.PutEnvYA .EQ $34
|
||||||
SYS.GetEnvVarYA .EQ $36
|
SYS.GetEnvVarYA .EQ $36
|
||||||
|
|
||||||
SYS.SetEnvVarH .EQ $38
|
SYS.SetEnvVarH .EQ $38
|
||||||
|
@ -190,23 +188,21 @@ SYS.DelEnvVarA .EQ $3C
|
||||||
SYS.DelEnvVarYA .EQ $3E
|
SYS.DelEnvVarYA .EQ $3E
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYS.MLICreateFile .EQ $40
|
SYS.MLICreateFile .EQ $40
|
||||||
SYS.MLICreateDirA .EQ $42
|
|
||||||
SYS.MLICreateDirYA .EQ $44
|
SYS.MLICreateDirYA .EQ $44
|
||||||
SYS.MLIDestroyA .EQ $46
|
|
||||||
|
|
||||||
SYS.MLIDestroyYA .EQ $48
|
SYS.MLIDestroyYA .EQ $48
|
||||||
SYS.MLIRename .EQ $4A
|
SYS.MLIRename .EQ $4A
|
||||||
SYS.MLISetFileInfo .EQ $4C
|
SYS.MLISetFileInfo .EQ $4C
|
||||||
SYS.MLIGetFileInfoA .EQ $4E
|
|
||||||
|
|
||||||
SYS.MLIGetFileInfoYA .EQ $50
|
SYS.MLIGetFileInfoYA .EQ $50
|
||||||
SYS.MLIOnline .EQ $52
|
SYS.MLIOnline .EQ $52
|
||||||
SYS.MLISetPrefixA .EQ $54
|
|
||||||
SYS.MLISetPrefixYA .EQ $56
|
SYS.MLISetPrefixYA .EQ $56
|
||||||
|
|
||||||
SYS.MLIGetPrefixA .EQ $58
|
|
||||||
SYS.MLIGetPrefixYA .EQ $5A
|
SYS.MLIGetPrefixYA .EQ $5A
|
||||||
SYS.MLIOpenA .EQ $5C
|
|
||||||
SYS.MLIOpenYA .EQ $5E
|
SYS.MLIOpenYA .EQ $5E
|
||||||
|
|
||||||
SYS.MLINewLine .EQ $60
|
SYS.MLINewLine .EQ $60
|
||||||
|
@ -230,7 +226,7 @@ SYS.MLIReadBlock .EQ $7C
|
||||||
SYS.MLIWriteBlock .EQ $7E
|
SYS.MLIWriteBlock .EQ $7E
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYS.GetDevByIDA .EQ $80
|
SYS.GetDevByIDA .EQ $80
|
||||||
SYS.GetDevByNameA .EQ $82
|
|
||||||
SYS.GetDevByNameYA .EQ $84
|
SYS.GetDevByNameYA .EQ $84
|
||||||
SYS.GetDevInfoA .EQ $86
|
SYS.GetDevInfoA .EQ $86
|
||||||
|
|
||||||
|
@ -247,7 +243,7 @@ SYS.Sleep .EQ $9C
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYS.CheckPrefixA .EQ $A0
|
SYS.CheckPrefixA .EQ $A0
|
||||||
SYS.FileSearch .EQ $A2
|
SYS.FileSearch .EQ $A2
|
||||||
SYS.LoadFileA .EQ $A4
|
|
||||||
SYS.LoadFileYA .EQ $A6
|
SYS.LoadFileYA .EQ $A6
|
||||||
|
|
||||||
SYS.ListDirInitA .EQ $A8
|
SYS.ListDirInitA .EQ $A8
|
||||||
|
@ -260,16 +256,41 @@ SYS.SetNetCfg .EQ $B2
|
||||||
SYS.GetNetCfgA .EQ $B4
|
SYS.GetNetCfgA .EQ $B4
|
||||||
SYS.ClrNetCfgA .EQ $B6
|
SYS.ClrNetCfgA .EQ $B6
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYS.ScreenSelectA .EQ $C0
|
*SYS.ScreenSelectA .EQ $C0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYS.COutA .EQ $D0
|
SYS.COutA .EQ $D0
|
||||||
SYS.PSTROutA .EQ $D2
|
|
||||||
SYS.PSTROutYA .EQ $D4
|
SYS.PSTROutYA .EQ $D4
|
||||||
|
|
||||||
SYS.HexOutA .EQ $D8
|
SYS.HexOutA .EQ $D8
|
||||||
SYS.HexOutYA .EQ $DA
|
SYS.HexOutYA .EQ $DA
|
||||||
SYS.DecOutA .EQ $DC
|
SYS.DecOutA .EQ $DC
|
||||||
SYS.DecOutYA .EQ $DE
|
SYS.DecOutYA .EQ $DE
|
||||||
|
|
||||||
|
*SYS.FGETC .EQ $F0
|
||||||
|
*SYS.FGETS .EQ $F2
|
||||||
|
*SYS.FPUTC .EQ $F4
|
||||||
|
*SYS.FPUTS .EQ $F6
|
||||||
|
*--------------------------------------
|
||||||
|
SYS.FOPEN .EQ $E0
|
||||||
|
SYS.FCLOSE .EQ $E2
|
||||||
|
SYS.FREAD .EQ $E4
|
||||||
|
SYS.FWRITE .EQ $E6
|
||||||
|
|
||||||
|
SYS.FFLUSH .EQ $E8
|
||||||
|
SYS.FSEEK .EQ $EA
|
||||||
|
SYS.FTELL .EQ $EC
|
||||||
|
SYS.FEOF .EQ $EE
|
||||||
|
|
||||||
|
SYS.REMOVE .EQ $F0
|
||||||
|
SYS.RENAME .EQ $F2
|
||||||
|
SYS.OPENDIR .EQ $F4
|
||||||
|
SYS.READDIR .EQ $F6
|
||||||
|
|
||||||
|
SYS.CLOSEDIR .EQ $F8
|
||||||
|
SYS.MKDIR .EQ $FA
|
||||||
|
SYS.MKNOD .EQ $FC
|
||||||
|
SYS.MKFIFO .EQ $FE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.FINFO.ACCESS .EQ $00
|
S.FINFO.ACCESS .EQ $00
|
||||||
S.FINFO.TYPE .EQ $01
|
S.FINFO.TYPE .EQ $01
|
||||||
|
@ -324,6 +345,7 @@ DEVMGR.ERROOH .EQ $EE Out Of Handle Error
|
||||||
DEVMGR.ERRICL .EQ $ED Invalid Command Line
|
DEVMGR.ERRICL .EQ $ED Invalid Command Line
|
||||||
DEVMGR.ERRNOHW .EQ $EC No Hardware
|
DEVMGR.ERRNOHW .EQ $EC No Hardware
|
||||||
DEVMGR.ERRDNF .EQ $EB Device Not Found Error
|
DEVMGR.ERRDNF .EQ $EB Device Not Found Error
|
||||||
|
DEVMGR.ERRUNSUP .EQ $EA Unsupported Function
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TSKMGR.ERROOH .EQ $DF Out Of Handle Error
|
TSKMGR.ERROOH .EQ $DF Out Of Handle Error
|
||||||
TSKMGR.ERRNSP .EQ $DD No Such Process Error
|
TSKMGR.ERRNSP .EQ $DD No Such Process Error
|
||||||
|
@ -353,9 +375,10 @@ S.MEM.SIZE .EQ 8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* DEV STRUCT
|
* DEV STRUCT
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.DEV.CODE .EQ 0
|
S.DEV.CODE .EQ 0 cld,jmp...
|
||||||
S.DEV.JMP .EQ 2
|
S.DEV.JMP .EQ 2 ...(code,x)
|
||||||
S.DEV.F .EQ 4
|
S.DEV.ID .EQ 4
|
||||||
|
S.DEV.F .EQ 5
|
||||||
S.DEV.F.INUSE .EQ %10000000
|
S.DEV.F.INUSE .EQ %10000000
|
||||||
S.DEV.F.BUSY .EQ %01000000
|
S.DEV.F.BUSY .EQ %01000000
|
||||||
S.DEV.F.SHARE .EQ %00100000 Device is shareable
|
S.DEV.F.SHARE .EQ %00100000 Device is shareable
|
||||||
|
@ -364,7 +387,7 @@ S.DEV.F.EVENT .EQ %00001000 Device is event driven
|
||||||
S.DEV.F.COUT .EQ %00000100 Device supports Char OUT
|
S.DEV.F.COUT .EQ %00000100 Device supports Char OUT
|
||||||
S.DEV.F.BLOCK .EQ %00000010
|
S.DEV.F.BLOCK .EQ %00000010
|
||||||
S.DEV.F.CHAR .EQ %00000001
|
S.DEV.F.CHAR .EQ %00000001
|
||||||
S.DEV.NAME .EQ 5 5 Bytes : LEN+NUL KBD CON COMx LPTx ETHx
|
S.DEV.NAME .EQ 6 5 Bytes : LEN+NUL KBD CON COMx LPTx ETHx
|
||||||
*
|
*
|
||||||
S.DEV.SIZE .EQ 16
|
S.DEV.SIZE .EQ 16
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -393,9 +416,7 @@ DEVMGR.CLOSE .EQ 6
|
||||||
DEVMGR.GETINFO .EQ 8
|
DEVMGR.GETINFO .EQ 8
|
||||||
DEVMGR.IRQ .EQ 10
|
DEVMGR.IRQ .EQ 10
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* 'XY' Class Driver Functions
|
DEVMGR.SELECT .EQ 12
|
||||||
*--------------------------------------
|
|
||||||
DEVMGR.XY.SETPOS .EQ 12
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* 'NET' Class Driver Functions
|
* 'NET' Class Driver Functions
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -404,11 +425,11 @@ DEVMGR.SETIPCFG .EQ 14
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* 'GFX' Class Driver Functions
|
* 'GFX' Class Driver Functions
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEVMGR.GFX.SETPIXEL .EQ 12
|
DEVMGR.GFX.SETPIXEL .EQ 14
|
||||||
DEVMGR.GFX.GETPIXEL .EQ 14
|
DEVMGR.GFX.GETPIXEL .EQ 16
|
||||||
DEVMGR.GFX.HLINE .EQ 16
|
DEVMGR.GFX.HLINE .EQ 18
|
||||||
DEVMGR.GFX.VLINE .EQ 18
|
DEVMGR.GFX.VLINE .EQ 20
|
||||||
DEVMGR.GFX.BITBLT .EQ 20
|
DEVMGR.GFX.BITBLT .EQ 22
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* PS STRUCT
|
* PS STRUCT
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -121,27 +121,27 @@ TCP.IN.LISTEN.NEW
|
||||||
|
|
||||||
phy
|
phy
|
||||||
pha
|
pha
|
||||||
|
|
||||||
ldy #S.SOCKET.STATUS
|
|
||||||
lda #S.SOCKET.STATUS.SYNRCVD
|
|
||||||
sta (ZPPtrSKT),y
|
|
||||||
|
|
||||||
txa
|
txa
|
||||||
ldy #S.SOCKET.PARENT
|
|
||||||
sta (ZPPtrSKT),y
|
jsr SKT.AddToQueueL
|
||||||
|
|
||||||
pla
|
pla
|
||||||
sta ZPPtrSKT+1
|
sta ZPPtrSKT+1
|
||||||
pla
|
pla
|
||||||
sta ZPPtrSKT
|
sta ZPPtrSKT
|
||||||
|
|
||||||
jsr TCP.SendSYNACK
|
bcc .3
|
||||||
|
|
||||||
|
lda #0 error
|
||||||
|
sta (ZPPtrSKT) clear this socket
|
||||||
|
lda #ERR.SKT.OOS
|
||||||
clc
|
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
|
.3 ldy #S.SOCKET.STATUS
|
||||||
|
lda #S.SOCKET.STATUS.SYNRCVD
|
||||||
|
sta (ZPPtrSKT),y
|
||||||
|
|
||||||
|
jmp TCP.SendSYNACK
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TCP.IN.ESTABLISHED
|
TCP.IN.ESTABLISHED
|
||||||
stx hSocket
|
stx hSocket
|
||||||
|
@ -204,13 +204,6 @@ TCP.IN.ESTABLISHED
|
||||||
ldy #S.SOCKET.SQ.hOutMem
|
ldy #S.SOCKET.SQ.hOutMem
|
||||||
sta (ZPPtrSKT),y
|
sta (ZPPtrSKT),y
|
||||||
|
|
||||||
ldy #S.SOCKET.PARENT
|
|
||||||
lda (ZPPtrSKT),y
|
|
||||||
jsr SKT.GetA
|
|
||||||
|
|
||||||
lda hSocket
|
|
||||||
jsr SKT.AddToQueueL
|
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
|
@ -31,16 +31,20 @@ CS.START cld
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.DEVNAME.GFX .DA DEVNAME.GFX
|
L.DEVNAME.GFX .DA DEVNAME.GFX
|
||||||
L.DEVNAME.MOUSE .DA DEVNAME.MOUSE
|
L.DEVNAME.MOUSE .DA DEVNAME.MOUSE
|
||||||
|
L.MSG.INIT .DA MSG.INIT
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT >LDYA L.DEVNAME.GFX
|
CS.INIT >LDYA L.MSG.INIT
|
||||||
|
>SYSCALL SYS.PSTROutYA
|
||||||
|
|
||||||
|
>LDYA L.DEVNAME.GFX
|
||||||
>SYSCALL SYS.GetDevByNameYA
|
>SYSCALL SYS.GetDevByNameYA
|
||||||
bcc .10
|
bcc .10
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.10 stx hDevGFX
|
.10 stx hDevGFX
|
||||||
>STYA pDevGFX
|
>STYA pDevGFX
|
||||||
|
|
||||||
.11 >LDYA L.DEVNAME.MOUSE
|
.11 >LDYA L.DEVNAME.MOUSE
|
||||||
>SYSCALL SYS.GetDevByNameYA
|
>SYSCALL SYS.GetDevByNameYA
|
||||||
bcc .20
|
bcc .20
|
||||||
|
@ -54,17 +58,27 @@ CS.INIT >LDYA L.DEVNAME.GFX
|
||||||
|
|
||||||
.20 stx hDevMouse
|
.20 stx hDevMouse
|
||||||
>STYA pDevMouse
|
>STYA pDevMouse
|
||||||
|
|
||||||
ldx #DEVMGR.OPEN
|
ldx #DEVMGR.OPEN
|
||||||
jsr GoDevMouse
|
jsr GoDevMouse
|
||||||
bcs *
|
|
||||||
|
lda pDev
|
||||||
|
pha
|
||||||
|
lda pDev+1
|
||||||
|
pha
|
||||||
|
|
||||||
|
lda pDevGFX
|
||||||
|
sta pDev
|
||||||
|
lda pDevGFX+1
|
||||||
|
sta pDev+1
|
||||||
|
|
||||||
ldx #DEVMGR.OPEN
|
ldx #DEVMGR.OPEN
|
||||||
jsr GoDevGFX
|
jsr GoDevGFX
|
||||||
bcs *
|
|
||||||
|
pla
|
||||||
lda #A2osX.SCREENS.G
|
sta pDev+1
|
||||||
>SYSCALL SYS.ScreenSelectA
|
pla
|
||||||
|
sta pDev
|
||||||
|
|
||||||
* jmp .8
|
* jmp .8
|
||||||
|
|
||||||
|
@ -108,8 +122,10 @@ CS.INIT >LDYA L.DEVNAME.GFX
|
||||||
beq .8
|
beq .8
|
||||||
and #$7
|
and #$7
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
dec C
|
dec C
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
lda #15
|
lda #15
|
||||||
sta C
|
sta C
|
||||||
bra .1
|
bra .1
|
||||||
|
@ -153,7 +169,7 @@ CS.DOEVENT ldy #S.EVT.hDEV
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
>PUSHA X.LO
|
>PUSHA X.LO
|
||||||
|
|
||||||
>PUSHBI 2 Mode:1=B/W,2=16 colors,...,128=XOR
|
>PUSHBI 128 Mode:1=B/W,2=16 colors,...,128=XOR
|
||||||
ldx #DEVMGR.GFX.SETPIXEL
|
ldx #DEVMGR.GFX.SETPIXEL
|
||||||
jsr GoDevGFX
|
jsr GoDevGFX
|
||||||
|
|
||||||
|
@ -172,6 +188,7 @@ GoDevMouse jmp (pDevMouse)
|
||||||
CS.END
|
CS.END
|
||||||
DEVNAME.GFX >PSTRING "GFX"
|
DEVNAME.GFX >PSTRING "GFX"
|
||||||
DEVNAME.MOUSE >PSTRING "MOU1"
|
DEVNAME.MOUSE >PSTRING "MOU1"
|
||||||
|
MSG.INIT >PSTRING "DESKTOP:Init...\n"
|
||||||
hDevGFX .BS 1
|
hDevGFX .BS 1
|
||||||
pDevGFX .BS 2
|
pDevGFX .BS 2
|
||||||
hDevMouse .BS 1
|
hDevMouse .BS 1
|
||||||
|
|
|
@ -52,10 +52,12 @@ CS.INIT ldy #S.PS.hARGS
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
sta hDEVNAME
|
sta hDEVNAME
|
||||||
>SYSCALL SYS.GetDevByNameA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>SYSCALL SYS.GetDevByNameYA
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
>STYA pDev
|
>STYA pDev
|
||||||
|
|
||||||
txa
|
txa
|
||||||
ldy #S.PS.hINDEV
|
ldy #S.PS.hINDEV
|
||||||
sta (pPs),y
|
sta (pPs),y
|
||||||
|
@ -67,20 +69,22 @@ CS.INIT ldy #S.PS.hARGS
|
||||||
lda hDEVNAME
|
lda hDEVNAME
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
|
|
||||||
|
ldx #DEVMGR.OPEN
|
||||||
|
jsr pDevJmp
|
||||||
|
bcs .99
|
||||||
|
|
||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>PUSHBI $20 Push SEP=' '
|
>PUSHBI $20 Push SEP=' '
|
||||||
>PUSHBI 2 Push 3 for getting BIN
|
>PUSHBI 2 Push 2 for getting BIN
|
||||||
>SYSCALL SYS.PStrGetTkn
|
>SYSCALL SYS.PStrGetTkn
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
ldy #hBinName
|
ldy #hBinName
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
clc
|
||||||
ldx #DEVMGR.OPEN
|
rts
|
||||||
jsr pDevJmp if error CS, else...
|
|
||||||
rts ...Tell TskMgr To stay in memory
|
|
||||||
|
|
||||||
.98 pha
|
.98 pha
|
||||||
lda hDEVNAME
|
lda hDEVNAME
|
||||||
|
@ -89,25 +93,23 @@ CS.INIT ldy #S.PS.hARGS
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN lda #12 try send a FF...
|
CS.RUN lda #13 try send a CR...
|
||||||
>SYSCALL SYS.COutA Device Is Ready ?
|
>SYSCALL SYS.COutA Device Is Ready ?
|
||||||
|
|
||||||
bcs .8 no..loop...
|
bcs .8 no..loop...
|
||||||
|
|
||||||
.1 >LDYA L.MSG.GREETINGS
|
lda pDev
|
||||||
|
clc
|
||||||
|
adc #S.DEV.NAME
|
||||||
|
tay
|
||||||
|
lda pDev+1
|
||||||
|
adc /S.DEV.NAME
|
||||||
|
>PUSHYA
|
||||||
|
>LDYA L.MSG.GREETINGS
|
||||||
>SYSCALL SYS.PSTROutYA
|
>SYSCALL SYS.PSTROutYA
|
||||||
|
|
||||||
bcs .8 unable to send greetings...loop..
|
bcs .8 unable to send greetings...loop..
|
||||||
|
|
||||||
ldy #S.PS.hOUTDEV
|
|
||||||
lda (pPs),y
|
|
||||||
>SYSCALL SYS.HexOutA
|
|
||||||
bcs .8
|
|
||||||
|
|
||||||
lda #13
|
|
||||||
>SYSCALL SYS.COutA
|
|
||||||
bcs .8
|
|
||||||
|
|
||||||
ldy #hBinName
|
ldy #hBinName
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
ldy #0
|
ldy #0
|
||||||
|
@ -125,14 +127,14 @@ CS.QUIT ldy #hBinName
|
||||||
>SYSCALL SYS.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
|
|
||||||
ldx #DEVMGR.CLOSE
|
ldx #DEVMGR.CLOSE
|
||||||
jsr pDevJmp
|
* jsr pDevJmp
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
MSG.USAGE >PSTRING "GETTY <DEV> <PROGRAM>"
|
MSG.USAGE >PSTRING "GETTY <DEV> <PROGRAM>"
|
||||||
MSG.GREETINGS >PSTRING "\e[12h\nA2osX-GeTTY on Dev="
|
MSG.GREETINGS >PSTRING "\e[12h\nA2osX-GeTTY on Dev=%S\n"
|
||||||
hDEVNAME .BS 1
|
hDEVNAME .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
|
|
|
@ -43,8 +43,7 @@ CS.INIT ldy #S.PS.hARGS
|
||||||
>SYSCALL SYS.PSTROutYA
|
>SYSCALL SYS.PSTROutYA
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.1 sta hArgs
|
.1 >SYSCALL SYS.LoadDrvA
|
||||||
>SYSCALL SYS.LoadDrvA
|
|
||||||
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -60,7 +59,6 @@ CS.QUIT clc
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
MSG.HELP >PSTRING "Usage: insdrv </path/drv/>file.drv <args>\n"
|
MSG.HELP >PSTRING "Usage: insdrv </path/drv/>file.drv <args>\n"
|
||||||
hArgs .BS 1
|
|
||||||
MAN
|
MAN
|
||||||
SAVE SBIN/INSDRV.S
|
SAVE SBIN/INSDRV.S
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -120,7 +120,8 @@ EXEC.CMD.EXT ldy #1
|
||||||
.10 bcs .9
|
.10 bcs .9
|
||||||
|
|
||||||
sta hFullCmd
|
sta hFullCmd
|
||||||
>SYSCALL SYS.MLIGetFileInfoA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>SYSCALL SYS.MLIGetFileInfoYA
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPPTR1
|
>STYA ZPPTR1
|
||||||
|
@ -170,7 +171,8 @@ EXEC.CMD.CD lda hExecArgs
|
||||||
bne EXEC.CMD.CD.C
|
bne EXEC.CMD.CD.C
|
||||||
ldy #S.PS.hPREFIX
|
ldy #S.PS.hPREFIX
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
>SYSCALL SYS.PSTROutA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>SYSCALL SYS.PSTROutYA
|
||||||
lda #13
|
lda #13
|
||||||
>SYSCALL SYS.COutA
|
>SYSCALL SYS.COutA
|
||||||
clc
|
clc
|
||||||
|
@ -342,16 +344,19 @@ EXEC.CMD.SETVAR >PUSHA Push Cmd Line
|
||||||
bra .97
|
bra .97
|
||||||
|
|
||||||
.4 lda hVarName
|
.4 lda hVarName
|
||||||
>SYSCALL SYS.GetEnvVarA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>SYSCALL SYS.GetEnvVarYA
|
||||||
bcs .97
|
bcs .97
|
||||||
sta hVarValue
|
sta hVarValue
|
||||||
|
|
||||||
lda hVarName
|
lda hVarName
|
||||||
>SYSCALL SYS.PSTROutA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>SYSCALL SYS.PSTROutYA
|
||||||
lda #'='
|
lda #'='
|
||||||
>SYSCALL SYS.COutA
|
>SYSCALL SYS.COutA
|
||||||
lda hVarValue
|
lda hVarValue
|
||||||
>SYSCALL SYS.PSTROutA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>SYSCALL SYS.PSTROutYA
|
||||||
lda #13
|
lda #13
|
||||||
>SYSCALL SYS.COutA
|
>SYSCALL SYS.COutA
|
||||||
|
|
||||||
|
@ -392,7 +397,8 @@ EXEC.CMD.ECHO lda hExecArgs
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
pha
|
pha
|
||||||
>SYSCALL SYS.PSTROutA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>SYSCALL SYS.PSTROutYA
|
||||||
lda #13
|
lda #13
|
||||||
>SYSCALL SYS.COutA
|
>SYSCALL SYS.COutA
|
||||||
pla
|
pla
|
||||||
|
@ -406,7 +412,8 @@ EXEC.CMD.ECHO lda hExecArgs
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
EXEC.CMD.TYPE lda hExecArgs
|
EXEC.CMD.TYPE lda hExecArgs
|
||||||
beq .98
|
beq .98
|
||||||
>SYSCALL SYS.LoadFileA
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>SYSCALL SYS.LoadFileYA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>STYA ZPPTR2 store file len
|
>STYA ZPPTR2 store file len
|
||||||
|
|
|
@ -378,7 +378,8 @@ CmdBuffer.DEL lda (pData)
|
||||||
sta (pData)
|
sta (pData)
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
OpenTxtFileA >SYSCALL SYS.MLIOpenA
|
OpenTxtFileA >SYSCALL SYS.GetMemPtrA
|
||||||
|
>SYSCALL SYS.MLIOpenYA
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #hInputFile
|
ldy #hInputFile
|
||||||
|
|
|
@ -30,8 +30,8 @@ S.LoadBinA sta S.LoadBinA.hFilename save file path
|
||||||
.2 dey
|
.2 dey
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda S.LoadBinA.hFilename
|
>LDYA ZPQuickPtr1
|
||||||
jsr S.GetMemByNameA
|
jsr S.GetMemByNameYA
|
||||||
bcs .3 not already loaded
|
bcs .3 not already loaded
|
||||||
|
|
||||||
>STYA ZPQuickPtr1 Save base address
|
>STYA ZPQuickPtr1 Save base address
|
||||||
|
@ -49,8 +49,8 @@ S.LoadBinA sta S.LoadBinA.hFilename save file path
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.3 lda S.LoadBinA.hFilename
|
.3 >LDYA ZPQuickPtr1
|
||||||
jsr S.LoadFileA
|
jsr S.LoadFileYA
|
||||||
bcc .4
|
bcc .4
|
||||||
rts Error Loading file
|
rts Error Loading file
|
||||||
|
|
||||||
|
@ -68,7 +68,8 @@ S.LoadBinA sta S.LoadBinA.hFilename save file path
|
||||||
sta R.AH
|
sta R.AH
|
||||||
|
|
||||||
lda S.LoadBinA.hFilename
|
lda S.LoadBinA.hFilename
|
||||||
jsr S.MLIGetFileInfoA Get File Info for AUXTYPE
|
jsr S.GetMemPtrA
|
||||||
|
jsr S.MLIGetFileInfoYA Get File Info for AUXTYPE
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
>STYA ZPQuickPtr2
|
>STYA ZPQuickPtr2
|
||||||
|
|
|
@ -117,7 +117,6 @@ S.COutA.RTS rts
|
||||||
* \e : ESC
|
* \e : ESC
|
||||||
* \n : CR
|
* \n : CR
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.PSTROutA jsr S.GetMemPtrA
|
|
||||||
S.PSTROutYA >STYA ZPQuickPtr1
|
S.PSTROutYA >STYA ZPQuickPtr1
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
200
SYS/KERNEL.S.CPU.txt
Normal file
200
SYS/KERNEL.S.CPU.txt
Normal file
|
@ -0,0 +1,200 @@
|
||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.SRC
|
||||||
|
NEW
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
CPU.Init >LDAXI MSG.CPU
|
||||||
|
jsr PrintCStrAX
|
||||||
|
|
||||||
|
jsr Detect6502 A = CPU type
|
||||||
|
sta A2osX.CPUTYPE
|
||||||
|
lda MSG.CPUTYPEH,y
|
||||||
|
tax
|
||||||
|
lda MSG.CPUTYPEL,y
|
||||||
|
jsr PrintCStrAX
|
||||||
|
|
||||||
|
CPU.Init.Speed lda MACHID
|
||||||
|
and #MACHID.TYPE
|
||||||
|
cmp #MACHID.TYPE.IIc
|
||||||
|
beq CPU.Init.Z80
|
||||||
|
|
||||||
|
>LDAXI MSG.CPU.SPEED
|
||||||
|
jsr PrintCStrAX
|
||||||
|
|
||||||
|
stz A2osX.RANDOM16
|
||||||
|
stz A2osX.RANDOM16+1
|
||||||
|
|
||||||
|
php
|
||||||
|
sei
|
||||||
|
|
||||||
|
.1 bit VBL
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
.2 bit VBL
|
||||||
|
bmi .2
|
||||||
|
|
||||||
|
ldx #0 Count LO
|
||||||
|
lda #0 Count HI
|
||||||
|
|
||||||
|
.3 ldy #3 (2)
|
||||||
|
|
||||||
|
.4 nop (2)
|
||||||
|
dey (2)
|
||||||
|
bne .4 (2*)
|
||||||
|
|
||||||
|
inc A2osX.RANDOM16 (6)
|
||||||
|
bne .5 (2*)
|
||||||
|
|
||||||
|
inc A2osX.RANDOM16+1 (6)
|
||||||
|
bit VBL (4)
|
||||||
|
bpl .3 (2*)
|
||||||
|
bmi .6
|
||||||
|
|
||||||
|
.5 nop (2)
|
||||||
|
nop (2)
|
||||||
|
nop (2)
|
||||||
|
bit VBL (4)
|
||||||
|
bpl .3 (2*)
|
||||||
|
|
||||||
|
.6 plp
|
||||||
|
|
||||||
|
stz A2osX.CPUSPEED
|
||||||
|
|
||||||
|
.7 sec
|
||||||
|
lda A2osX.RANDOM16
|
||||||
|
sbc #100
|
||||||
|
tax
|
||||||
|
lda A2osX.RANDOM16+1
|
||||||
|
sbc /100
|
||||||
|
bcc .8
|
||||||
|
|
||||||
|
stx A2osX.RANDOM16
|
||||||
|
sta A2osX.RANDOM16+1
|
||||||
|
inc A2osX.CPUSPEED
|
||||||
|
bra .7
|
||||||
|
|
||||||
|
.8 lda A2osX.RANDOM16
|
||||||
|
sta A2osX.CPUSPEED+1
|
||||||
|
pha push CPU speed LO
|
||||||
|
lda A2osX.CPUSPEED
|
||||||
|
pha push CPU speed HI
|
||||||
|
>LDAXI MSG.CPU.SPEEDOK
|
||||||
|
jsr PrintCStrAX
|
||||||
|
|
||||||
|
CPU.Init.Z80 >LDAXI MSG.Z80
|
||||||
|
jsr PrintCStrAX
|
||||||
|
jsr DetectZ80
|
||||||
|
bcs .9
|
||||||
|
sta A2osX.Z80SLOT
|
||||||
|
pha Push Z80Slot
|
||||||
|
|
||||||
|
>LDAXI MSG.Z80.OK
|
||||||
|
jsr PrintCStrAX
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 >LDAXI MSG.Z80.KO
|
||||||
|
jsr PrintCStrAX
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* Out:
|
||||||
|
* A = $60, 6502
|
||||||
|
* A = $61, 65C02
|
||||||
|
* A = $62, R65C02
|
||||||
|
* A = $63, 65C816
|
||||||
|
*--------------------------------------
|
||||||
|
Detect6502 ldy #0 Test 6502 BCD bug
|
||||||
|
sed
|
||||||
|
lda #$99
|
||||||
|
clc
|
||||||
|
adc #$01
|
||||||
|
cld
|
||||||
|
bmi .9 BUG!, we have 6502
|
||||||
|
|
||||||
|
ldy #3 test 65C816 TYX Instruction
|
||||||
|
ldx #0
|
||||||
|
.OP 65816
|
||||||
|
tyx TYX: if 65C816, x becomes non-zero
|
||||||
|
.OP 65C02
|
||||||
|
bne .9 worked! 65C816
|
||||||
|
|
||||||
|
dey y=2 -> R65C02
|
||||||
|
ldx $EA save zp $EA
|
||||||
|
stz $EA store 0 in $EA
|
||||||
|
* .OP 65R02
|
||||||
|
.HS F7EA For compatibility with A2osX.ASM
|
||||||
|
* smb 7,$EA if not Rockwell, assemble as nop nop
|
||||||
|
* .OP 65C02
|
||||||
|
asl $EA cs if Rockwell
|
||||||
|
stx $EA restore zp $EA
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
dey y=1 -> 65C02
|
||||||
|
|
||||||
|
.9 tya
|
||||||
|
ora #$60
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* Out:
|
||||||
|
* A = Z80 Slot
|
||||||
|
*--------------------------------------
|
||||||
|
DetectZ80 ldx #Z80Code.Size
|
||||||
|
.1 lda Z80Code.Start-1,x
|
||||||
|
sta $1000-1,x 00000H for Z80
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
stz ZPQuickPtr1
|
||||||
|
lda #$C1
|
||||||
|
sta ZPQuickPtr1+1
|
||||||
|
|
||||||
|
.2 sta (ZPQuickPtr1)
|
||||||
|
lda $100D
|
||||||
|
bmi .8
|
||||||
|
inc ZPQuickPtr1+1
|
||||||
|
lda ZPQuickPtr1+1
|
||||||
|
cmp #$C8
|
||||||
|
beq .9 CS
|
||||||
|
clc
|
||||||
|
adc #$20
|
||||||
|
sta $100A
|
||||||
|
bra .2
|
||||||
|
|
||||||
|
.8 lda ZPQuickPtr1+1
|
||||||
|
and #$0F
|
||||||
|
clc
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
Z80Code.Start .HS 31FFFF START: LD SP,0FFFFH Init Stack
|
||||||
|
.HS 3EFF LD A,0FFH Set Flag
|
||||||
|
.HS 320D00 LD (FLAG),A
|
||||||
|
.HS 3200E1 LD (0E100H),A Back to 6502
|
||||||
|
.HS 18F3 JR START Loop
|
||||||
|
.HS 00 FLAG: .DB 0
|
||||||
|
Z80Code.End .EQ *
|
||||||
|
Z80Code.Size .EQ Z80Code.End-Z80Code.Start
|
||||||
|
*--------------------------------------
|
||||||
|
MSG.CPU >CSTRING "Checking CPU..."
|
||||||
|
MSG.CPU.SPEED >CSTRING "Detecting CPU Speed..."
|
||||||
|
MSG.CPUTYPEL .DA #MSG.6502
|
||||||
|
.DA #MSG.65C02
|
||||||
|
.DA #MSG.65R02
|
||||||
|
.DA #MSG.65816
|
||||||
|
MSG.CPUTYPEH .DA /MSG.6502
|
||||||
|
.DA /MSG.65C02
|
||||||
|
.DA /MSG.65R02
|
||||||
|
.DA /MSG.65816
|
||||||
|
MSG.6502 >CSTRING "6502.\n"
|
||||||
|
MSG.65C02 >CSTRING "65C02.\n"
|
||||||
|
MSG.65R02 >CSTRING "65R02.\n"
|
||||||
|
MSG.65816 >CSTRING "65816.\n"
|
||||||
|
MSG.CPU.SPEEDOK >CSTRING "%d.%02d Mhz.\n"
|
||||||
|
MSG.Z80 >CSTRING "Detecting Z80 CPU..."
|
||||||
|
MSG.Z80.OK >CSTRING "Detected In Slot %d.\n"
|
||||||
|
MSG.Z80.KO >CSTRING "Not Detected.\n"
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE SYS/KERNEL.S.CPU
|
||||||
|
LOAD SYS/KERNEL.S
|
||||||
|
ASM
|
|
@ -5,25 +5,7 @@ INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DevMgr.HiMem .EQ $FFFE Protect IRQ vector in Aux LC
|
DevMgr.HiMem .EQ $FFFA Protect IRQ vectors in Aux LC
|
||||||
*--------------------------------------
|
|
||||||
* S.DevMgrInit
|
|
||||||
*--------------------------------------
|
|
||||||
S.DevMgrInit ldx #S.DEV.SIZE*DevMgr.Count
|
|
||||||
.1 lda DevMgr.NUL-1,x
|
|
||||||
sta DevMgr.Table-1,x
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
stz DevMgr.Table+S.DEV.SIZE*DevMgr.Count+1
|
|
||||||
|
|
||||||
lda #DevMgr.Count-1
|
|
||||||
sta DevMgr.LastDevID
|
|
||||||
|
|
||||||
>LDYAI DevMgr.End
|
|
||||||
>STYA DevMgr.Free
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.GetDevByIDA
|
* S.GetDevByIDA
|
||||||
* IN:
|
* IN:
|
||||||
|
@ -66,7 +48,6 @@ S.GetDevByIDA.T .BS 1
|
||||||
* X = DEVID
|
* X = DEVID
|
||||||
* Y,A = pDev
|
* Y,A = pDev
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.GetDevByNameA jsr S.GetMemPtrA
|
|
||||||
S.GetDevByNameYA
|
S.GetDevByNameYA
|
||||||
>STYA ZPQuickPtr1
|
>STYA ZPQuickPtr1
|
||||||
>LDYAI DevMgr.Table+S.DEV.NAME
|
>LDYAI DevMgr.Table+S.DEV.NAME
|
||||||
|
@ -126,36 +107,42 @@ DevMgr.SYS.BASL0 .EQ $800
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DevMgr.NUL cld
|
DevMgr.NUL cld
|
||||||
jmp (DevMgr.NUL.Code,x)
|
jmp (DevMgr.NUL.Code,x)
|
||||||
|
.DA #0 DevID=0
|
||||||
.DA #S.DEV.F.INUSE+S.DEV.F.SHARE+S.DEV.F.COUT+S.DEV.F.CHAR
|
.DA #S.DEV.F.INUSE+S.DEV.F.SHARE+S.DEV.F.COUT+S.DEV.F.CHAR
|
||||||
>PSTRING "NUL" NAME
|
>PSTRING "NUL" NAME
|
||||||
.HS 00 NAME must Be 5 bytes long
|
.HS 00 NAME must Be 5 bytes long
|
||||||
.HS 00.00
|
.HS 00
|
||||||
.HS 00.00.00.00
|
.HS 00.00.00.00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DevMgr.SYS cld
|
DevMgr.SYS cld
|
||||||
jmp (DevMgr.SYS.Code,x)
|
jmp (DevMgr.SYS.Code,x)
|
||||||
|
.DA #1 DevID=1
|
||||||
.DA #S.DEV.F.INUSE+S.DEV.F.EVENT+S.DEV.F.SHARE+S.DEV.F.COUT+S.DEV.F.CHAR
|
.DA #S.DEV.F.INUSE+S.DEV.F.EVENT+S.DEV.F.SHARE+S.DEV.F.COUT+S.DEV.F.CHAR
|
||||||
>PSTRING "SYS" NAME
|
>PSTRING "SYS" NAME
|
||||||
.HS 00 NAME must Be 5 bytes long
|
.HS 00 NAME must Be 5 bytes long
|
||||||
.HS 00.00
|
.HS 00
|
||||||
.HS 00.00.00.00
|
.HS 00.00.00.00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DevMgr.NUL.Code .DA .8 OPEN
|
DevMgr.NUL.Code .DA DevMgr.Unsup OPEN
|
||||||
.DA .8 GETEVENT
|
.DA DevMgr.Unsup GETEVENT
|
||||||
.DA .8 COUT
|
.DA .8 COUT
|
||||||
.DA .8 CLOSE
|
.DA DevMgr.Unsup CLOSE
|
||||||
.DA .8 GETINFO
|
.DA DevMgr.Unsup GETINFO
|
||||||
.DA .8 IRQ
|
.DA DevMgr.Unsup IRQ
|
||||||
|
.DA DevMgr.Unsup SELECT
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DevMgr.SYS.Code .DA DevMgr.SYS.Open
|
DevMgr.SYS.Code .DA DevMgr.SYS.Open
|
||||||
.DA DevMgr.SYS.GetEvent
|
.DA DevMgr.SYS.GetEvent
|
||||||
.DA DevMgr.SYS.COut
|
.DA DevMgr.SYS.COut
|
||||||
.DA .8 CLOSE
|
.DA DevMgr.Unsup CLOSE
|
||||||
.DA .8 GETINFO
|
.DA DevMgr.Unsup GETINFO
|
||||||
.DA .8 IRQ
|
.DA DevMgr.Unsup IRQ
|
||||||
.8 clc
|
.DA DevMgr.SYS.Select
|
||||||
|
*--------------------------------------
|
||||||
|
DevMgr.Unsup lda #DEVMGR.ERRUNSUP
|
||||||
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DevMgr.SYS.Open stz DevMgr.SYS.CPULOADI
|
DevMgr.SYS.Open stz DevMgr.SYS.CPULOADI
|
||||||
|
@ -180,28 +167,27 @@ DevMgr.SYS.Open stz DevMgr.SYS.CPULOADI
|
||||||
|
|
||||||
jsr DevMgr.SYS.Home
|
jsr DevMgr.SYS.Home
|
||||||
|
|
||||||
lda A2osX.SCREENS
|
lda #1
|
||||||
ora #A2osX.SCREENS.S
|
sta A2osX.SCRNDEVS+1
|
||||||
sta A2osX.SCREENS
|
|
||||||
lda #A2osX.SCREENS.S
|
jsr DevMgr.SYS.Select
|
||||||
jsr S.ScreenSelectA
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DevMgr.SYS.GetEvent
|
DevMgr.SYS.GetEvent
|
||||||
lda A2osX.ASCREEN
|
lda A2osX.ASCREEN
|
||||||
and #A2osX.SCREENS.S is screen active?
|
cmp #2 is SYS active?
|
||||||
beq .9
|
bne .9
|
||||||
|
|
||||||
ldx DevMgr.SYS.CPULOADI
|
ldx DevMgr.SYS.CPULOADI
|
||||||
lda DevMgr.SYS.CPULOADC,x
|
lda DevMgr.SYS.CPULOADC,x
|
||||||
sta DevMgr.SYS.BASL0+38
|
sta DevMgr.SYS.BASL0+38
|
||||||
dec DevMgr.SYS.CPULOADI
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
lda #3
|
ldx #3
|
||||||
sta DevMgr.SYS.CPULOADI
|
.1 stx DevMgr.SYS.CPULOADI
|
||||||
|
|
||||||
.1 jsr S.GetKeyboardEvent
|
jsr S.GetKeyboardEvent
|
||||||
bcs .9
|
bcs .9
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
@ -239,6 +225,15 @@ DevMgr.SYS.COut phx
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
DevMgr.SYS.Select
|
||||||
|
sta SETTEXT
|
||||||
|
sta SETALTCHAR
|
||||||
|
sta SET80DISP
|
||||||
|
sta CLR80STORE
|
||||||
|
sta SETPAGE2
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
DevMgr.SYS.FSOut
|
DevMgr.SYS.FSOut
|
||||||
lda DevMgr.SYS.CH
|
lda DevMgr.SYS.CH
|
||||||
cmp #79
|
cmp #79
|
||||||
|
|
|
@ -18,27 +18,28 @@ S.LoadDrvA >PUSHA push Cmd Line for S.PStrGetTkn
|
||||||
bcc .1
|
bcc .1
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 sta LoadDrv.Cmd
|
.1 sta S.LoadDrv.Name
|
||||||
stx LoadDrv.Args
|
stx S.LoadDrv.Args
|
||||||
|
|
||||||
>LDYAI ENV.DRV push ENVNAME=DRV
|
>LDYAI ENV.DRV push ENVNAME=DRV
|
||||||
jsr S.GetEnvVarYA get value for ENV=$DRV
|
jsr S.GetEnvVarYA get value for ENV=$DRV
|
||||||
bcs .98
|
bcs .98
|
||||||
sta LoadDrv.Path
|
|
||||||
|
|
||||||
>PUSHB LoadDrv.Cmd push CMD for S.FileSearch
|
sta S.LoadDrv.Srch
|
||||||
>PUSHB LoadDrv.Path
|
|
||||||
|
>PUSHB S.LoadDrv.Name push CMD for S.FileSearch
|
||||||
|
>PUSHB S.LoadDrv.Srch
|
||||||
jsr S.FileSearch find File in $DRV
|
jsr S.FileSearch find File in $DRV
|
||||||
bcs .97 not Found
|
bcs .97 not Found
|
||||||
|
|
||||||
sta LoadDrv.FullName
|
sta S.LoadDrv.FullName
|
||||||
jsr S.LoadBinA
|
jsr S.LoadBinA
|
||||||
bcs .96
|
bcs .96
|
||||||
|
|
||||||
>STYA pDrv
|
>STYA pDrv
|
||||||
stx LoadDrv.hMem
|
stx S.LoadDrv.hMem
|
||||||
|
|
||||||
lda LoadDrv.Args
|
lda S.LoadDrv.Args
|
||||||
jsr S.LoadDrvA.Jmp call Dev.Detect
|
jsr S.LoadDrvA.Jmp call Dev.Detect
|
||||||
|
|
||||||
bcs .95
|
bcs .95
|
||||||
|
@ -56,24 +57,24 @@ S.LoadDrvA >PUSHA push Cmd Line for S.PStrGetTkn
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.95 pha
|
.95 pha
|
||||||
lda LoadDrv.hMem
|
lda S.LoadDrv.hMem
|
||||||
jsr S.FreeMemA
|
jsr S.FreeMemA
|
||||||
pla
|
pla
|
||||||
|
|
||||||
.96 pha
|
.96 pha
|
||||||
lda LoadDrv.FullName
|
lda S.LoadDrv.FullName
|
||||||
jsr S.FreeMemA
|
jsr S.FreeMemA
|
||||||
pla
|
pla
|
||||||
|
|
||||||
.97 pha
|
.97 pha
|
||||||
lda LoadDrv.Path
|
lda S.LoadDrv.Srch
|
||||||
jsr S.FreeMemA
|
jsr S.FreeMemA
|
||||||
pla
|
pla
|
||||||
|
|
||||||
.98 pha
|
.98 pha
|
||||||
lda LoadDrv.Args
|
lda S.LoadDrv.Args
|
||||||
jsr S.FreeMemA
|
jsr S.FreeMemA
|
||||||
lda LoadDrv.Cmd
|
lda S.LoadDrv.Name
|
||||||
jsr S.FreeMemA
|
jsr S.FreeMemA
|
||||||
pla
|
pla
|
||||||
|
|
||||||
|
@ -82,11 +83,11 @@ S.LoadDrvA >PUSHA push Cmd Line for S.PStrGetTkn
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.LoadDrvA.Jmp jmp (pDrv)
|
S.LoadDrvA.Jmp jmp (pDrv)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LoadDrv.Cmd .BS 1
|
S.LoadDrv.Name .BS 1
|
||||||
LoadDrv.Args .BS 1
|
S.LoadDrv.Args .BS 1
|
||||||
LoadDrv.Path .BS 1
|
S.LoadDrv.Srch .BS 1
|
||||||
LoadDrv.FullName .BS 1
|
S.LoadDrv.FullName .BS 1
|
||||||
LoadDrv.hMem .BS 1
|
S.LoadDrv.hMem .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* pDrv = .DRV File Loaded Address
|
* pDrv = .DRV File Loaded Address
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -231,6 +232,10 @@ S.InsDrv.Move ldy #H.BIN.DEV.HEADER.O
|
||||||
dey
|
dey
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
|
lda DevMgr.LastDevID Save Dev.ID in the driver for SELECT
|
||||||
|
ldy #S.DEV.ID
|
||||||
|
sta (pDev),y
|
||||||
|
|
||||||
ldy #H.BIN.DRV.CODE.O
|
ldy #H.BIN.DRV.CODE.O
|
||||||
lda (pDrv),y
|
lda (pDrv),y
|
||||||
clc
|
clc
|
||||||
|
@ -270,6 +275,7 @@ S.InsDrv.Move ldy #H.BIN.DEV.HEADER.O
|
||||||
bra .2
|
bra .2
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
ENV.DRV >PSTRING "DRV"
|
||||||
S.InsDrv.DrvLen .BS 2
|
S.InsDrv.DrvLen .BS 2
|
||||||
S.InsDrv.DrvEnd .BS 2
|
S.InsDrv.DrvEnd .BS 2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -140,64 +140,42 @@ S.ExpandPStrA.VC
|
||||||
S.ExpandPStrA.Start .BS 1
|
S.ExpandPStrA.Start .BS 1
|
||||||
S.ExpandPStrA.End .BS 1
|
S.ExpandPStrA.End .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.CreateEnv
|
|
||||||
* in :
|
|
||||||
* out :
|
|
||||||
* A = hMem to new env
|
|
||||||
*--------------------------------------
|
|
||||||
S.CreateEnv >PUSHWI K.ENV.SIZE get a buffer for ENV
|
|
||||||
>PUSHBI 0
|
|
||||||
jsr S.GetMem create it...
|
|
||||||
bcs .9
|
|
||||||
>STYA ZPQuickPtr1
|
|
||||||
lda #0
|
|
||||||
sta (ZPQuickPtr1)
|
|
||||||
txa
|
|
||||||
clc
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
* S.DupEnvA
|
* S.DupEnvA
|
||||||
* In:
|
* In:
|
||||||
* A = ENV hMem To Duplicate
|
* A = ENV hMem To Duplicate
|
||||||
* Out:
|
* Out:
|
||||||
* A = hMem to new ENV
|
* A = hMem to new ENV
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.DupEnvA pha
|
S.DupEnvA jsr S.GetMemPtrA
|
||||||
jsr S.GetMemPtrA
|
|
||||||
>STYA ZPQuickPtr1
|
>STYA ZPQuickPtr1
|
||||||
pla
|
|
||||||
>PUSHWI K.ENV.SIZE
|
>PUSHWI K.ENV.SIZE
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
jsr S.GetMem
|
jsr S.GetMem
|
||||||
bcs .9
|
bcs .9
|
||||||
>STYA ZPQuickPtr2
|
>STYA ZPQuickPtr2
|
||||||
phx
|
|
||||||
.1 lda (ZPQuickPtr1)
|
ldy #0
|
||||||
sta (ZPQuickPtr2)
|
|
||||||
|
.1 lda (ZPQuickPtr1),y
|
||||||
|
sta (ZPQuickPtr2),y
|
||||||
beq .8
|
beq .8
|
||||||
inc ZPQuickPtr1
|
|
||||||
bne .2
|
iny
|
||||||
inc ZPQuickPtr1+1
|
|
||||||
.2 inc ZPQuickPtr2
|
|
||||||
bne .1
|
bne .1
|
||||||
|
inc ZPQuickPtr1+1
|
||||||
inc ZPQuickPtr2+1
|
inc ZPQuickPtr2+1
|
||||||
bra .1
|
bra .1
|
||||||
.8 pla
|
|
||||||
|
.8 txa
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.GetEnvVarA
|
|
||||||
* In:
|
|
||||||
* A = hMem to NAME (PSTRING)
|
|
||||||
*--------------------------------------
|
|
||||||
* S.GetEnvVarYA
|
* S.GetEnvVarYA
|
||||||
* In:
|
* In:
|
||||||
* Y,A = PTR to NAME (PSTRING)
|
* Y,A = PTR to NAME (PSTRING)
|
||||||
* Out:
|
* Out:
|
||||||
* A = hMem to VALUE (PSTRING) 0,"" if not exist
|
* A = hMem to VALUE (PSTRING) 0,"" if not exist
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.GetEnvVarA >PULLA
|
|
||||||
jsr S.GetMemPtrA
|
|
||||||
S.GetEnvVarYA >STYA ZPQuickPtr2
|
S.GetEnvVarYA >STYA ZPQuickPtr2
|
||||||
jsr S.FindVar
|
jsr S.FindVar
|
||||||
bcc .1
|
bcc .1
|
||||||
|
@ -212,6 +190,7 @@ S.GetEnvVarYA >STYA ZPQuickPtr2
|
||||||
txa
|
txa
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 lda (ZPQuickPtr1) get NAME=VALUE len
|
.1 lda (ZPQuickPtr1) get NAME=VALUE len
|
||||||
sec
|
sec
|
||||||
sbc (ZPQuickPtr2) substract (NAME len)
|
sbc (ZPQuickPtr2) substract (NAME len)
|
||||||
|
@ -345,6 +324,14 @@ S.SetEnvVar >STYA ZPQuickPtr3 ZPQuickPtr3 = VALUE
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* S.PutEnvYA
|
||||||
|
* In:
|
||||||
|
* Y,A = PTR To Name (NAME=VALUE)
|
||||||
|
* Out:
|
||||||
|
*--------------------------------------
|
||||||
|
S.PutEnvYA clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
* S.DelEnvVarA
|
* S.DelEnvVarA
|
||||||
* In:
|
* In:
|
||||||
* PULLB = hMem To Name (PSTRING)
|
* PULLB = hMem To Name (PSTRING)
|
||||||
|
|
|
@ -5,27 +5,6 @@ INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.EvtMgrInit
|
|
||||||
*--------------------------------------
|
|
||||||
S.EvtMgrInit lda #10
|
|
||||||
sta EVTMGR.10TH.CNT
|
|
||||||
|
|
||||||
lda A2osX.HZ
|
|
||||||
sta EVTMGR.HZ.CNT
|
|
||||||
|
|
||||||
lda MACHID
|
|
||||||
and #MACHID.TYPE
|
|
||||||
cmp #MACHID.TYPE.IIc
|
|
||||||
bne .8
|
|
||||||
|
|
||||||
* sta CLRIOUDIS
|
|
||||||
* sta ENBVBLIIC
|
|
||||||
|
|
||||||
.8 lda /EvtMgr.Table
|
|
||||||
sta pEvent+1
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* GETEVENT :
|
* GETEVENT :
|
||||||
* IN :
|
* IN :
|
||||||
* OUT :
|
* OUT :
|
||||||
|
|
|
@ -47,14 +47,16 @@ S.FileSearch >PULLA Get Search path
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.10 sta S.FileSearch.hSrch Store Expanded path list to search
|
.10 sta S.FileSearch.hSrch Store Expanded path list to search
|
||||||
|
|
||||||
>PULLB S.FileSearch.hFile Store Filename
|
>PULLB S.FileSearch.hFile Store Filename
|
||||||
|
|
||||||
lda #1
|
lda #1
|
||||||
sta S.FileSearch.Idx Start At Token 1
|
sta S.FileSearch.Idx Start At Token 1
|
||||||
|
|
||||||
.1 >PUSHB S.FileSearch.hSrch push expanded path list
|
.1 >PUSHB S.FileSearch.hSrch push expanded path list
|
||||||
>PUSHBI $3B Push SEP=';'
|
>PUSHBI ';'
|
||||||
>PUSHB S.FileSearch.Idx Push Token IDX
|
>PUSHB S.FileSearch.Idx Push Token IDX
|
||||||
|
|
||||||
jsr S.PStrGetTkn Get token in A
|
jsr S.PStrGetTkn Get token in A
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
|
@ -66,7 +68,8 @@ S.FileSearch >PULLA Get Search path
|
||||||
|
|
||||||
sta S.FileSearch.hFull Store Full path (Token Path+filename)
|
sta S.FileSearch.hFull Store Full path (Token Path+filename)
|
||||||
|
|
||||||
jsr S.MLIGetFileInfoA
|
jsr S.GetMemPtrA
|
||||||
|
jsr S.MLIGetFileInfoYA
|
||||||
bcc .8
|
bcc .8
|
||||||
|
|
||||||
lda S.FileSearch.hFull Discard this Full Path
|
lda S.FileSearch.hFull Discard this Full Path
|
||||||
|
@ -99,14 +102,13 @@ S.FileSearch.Idx .BS 1
|
||||||
S.FileSearch.hPath .BS 1
|
S.FileSearch.hPath .BS 1
|
||||||
S.FileSearch.hFull .BS 1
|
S.FileSearch.hFull .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.LoadFileA
|
* S.LoadFileYA
|
||||||
* in :
|
* in :
|
||||||
* A = hMem of FilePath (PSTRING)
|
* Y,A = FilePath (PSTRING)
|
||||||
* out :
|
* out :
|
||||||
* Y,A = File Length
|
* Y,A = File Length
|
||||||
* X = hMem of Loaded File
|
* X = hMem of Loaded File
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.LoadFileA jsr S.GetMemPtrA
|
|
||||||
S.LoadFileYA jsr S.ExpandPStrYA
|
S.LoadFileYA jsr S.ExpandPStrYA
|
||||||
sta S.LoadFile.hExp
|
sta S.LoadFile.hExp
|
||||||
jsr S.GetMemPtrA
|
jsr S.GetMemPtrA
|
||||||
|
|
141
SYS/KERNEL.S.GP.txt
Normal file
141
SYS/KERNEL.S.GP.txt
Normal file
|
@ -0,0 +1,141 @@
|
||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.SRC
|
||||||
|
NEW
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
* A2osX.SYSCALL (AUXLC to AUXLC)
|
||||||
|
* In:
|
||||||
|
* X = SYSfnc.Index
|
||||||
|
* Y,A = free for Inline param
|
||||||
|
*--------------------------------------
|
||||||
|
A2osX.GP.Start jmp (KERNEL.SYSCALL,x)
|
||||||
|
*--------------------------------------
|
||||||
|
* LIBCALL (AUXLC to AUXLC)
|
||||||
|
* In:
|
||||||
|
* Y = LIB.ID
|
||||||
|
* X = LIBfnc.Index
|
||||||
|
* A = free for Inline param
|
||||||
|
*--------------------------------------
|
||||||
|
jmp A2osX.LIBCALL1
|
||||||
|
*--------------------------------------
|
||||||
|
* Kernel.MLICALL (AUXLC to MAINLC)
|
||||||
|
* In:
|
||||||
|
* X = MLI Function
|
||||||
|
* A = Param Count
|
||||||
|
*--------------------------------------
|
||||||
|
jmp A2osX.MLICALL1
|
||||||
|
*--------------------------------------
|
||||||
|
jmp A2osX.ROMCALL1
|
||||||
|
*--------------------------------------
|
||||||
|
jmp BrkHandler
|
||||||
|
.BS $BE10-*
|
||||||
|
*--------------------------------------
|
||||||
|
jmp (pDev) pDevJmp
|
||||||
|
jmp (pCode) pCodeJmp
|
||||||
|
jmp (pLib) pLibJmp
|
||||||
|
.BS $BE20-*
|
||||||
|
*--------------------------------------
|
||||||
|
GO.Reset jsr GO.AUXLC
|
||||||
|
jmp S.KernelRun
|
||||||
|
*--------------------------------------
|
||||||
|
A2osX.LIBCALL1 pha
|
||||||
|
phx
|
||||||
|
tya
|
||||||
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>STYA .1+1
|
||||||
|
plx
|
||||||
|
pla
|
||||||
|
.1 jmp $FFFF
|
||||||
|
*--------------------------------------
|
||||||
|
A2osX.MLICALL1 jsr GO.MAINLC
|
||||||
|
stx .1
|
||||||
|
sta MLICALL.PARAMS
|
||||||
|
jsr MLI
|
||||||
|
.1 .BS 1
|
||||||
|
.DA MLICALL.PARAMS
|
||||||
|
jsr GO.AUXLC
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
A2osX.ROMCALL1 plx
|
||||||
|
stx .1+1
|
||||||
|
plx
|
||||||
|
stx .1+2
|
||||||
|
ldx RROMBNK1
|
||||||
|
jsr .1
|
||||||
|
ldx RRAMWRAMBNK1
|
||||||
|
ldx RRAMWRAMBNK1
|
||||||
|
rts
|
||||||
|
.1 jmp $FFFF
|
||||||
|
*--------------------------------------
|
||||||
|
GO.MAINLC php
|
||||||
|
clc
|
||||||
|
.HS 2C bit abs
|
||||||
|
|
||||||
|
GO.AUXLC php
|
||||||
|
sec
|
||||||
|
sei
|
||||||
|
|
||||||
|
sta A2osX.SaveA
|
||||||
|
pla keep P in A for later
|
||||||
|
stx A2osX.SaveX
|
||||||
|
sty A2osX.SaveY
|
||||||
|
plx
|
||||||
|
ply
|
||||||
|
inx
|
||||||
|
bne .1
|
||||||
|
iny
|
||||||
|
.1 stx GO.EXIT.JMP+1
|
||||||
|
sty GO.EXIT.JMP+2
|
||||||
|
|
||||||
|
ldx RRAMWRAMBNK1
|
||||||
|
ldx RRAMWRAMBNK1
|
||||||
|
|
||||||
|
ldy pStack
|
||||||
|
bcs GO.AUXLC1
|
||||||
|
|
||||||
|
GO.MAINLC1 tsx
|
||||||
|
stx A2osX.SaveSX
|
||||||
|
ldx A2osX.SaveSM
|
||||||
|
txs
|
||||||
|
stx CLRALTZP
|
||||||
|
bra GO.EXIT
|
||||||
|
*--------------------------------------
|
||||||
|
GO.AUXLC1 stx SETALTZP
|
||||||
|
tsx
|
||||||
|
stx A2osX.SaveSM
|
||||||
|
ldx A2osX.SaveSX
|
||||||
|
txs
|
||||||
|
*--------------------------------------
|
||||||
|
GO.EXIT sty pStack
|
||||||
|
pha push P on stack
|
||||||
|
ldy A2osX.SaveY
|
||||||
|
ldx A2osX.SaveX
|
||||||
|
lda A2osX.SaveA
|
||||||
|
plp
|
||||||
|
GO.EXIT.JMP jmp $FFFF
|
||||||
|
*--------------------------------------
|
||||||
|
A2osX.SaveA .BS 1
|
||||||
|
A2osX.SaveX .BS 1
|
||||||
|
A2osX.SaveY .BS 1
|
||||||
|
*--------------------------------------
|
||||||
|
BrkHandler sta SETPAGE2
|
||||||
|
bra *
|
||||||
|
*--------------------------------------
|
||||||
|
IrqHandler bra *
|
||||||
|
*--------------------------------------
|
||||||
|
A2osX.GP.End .EQ *
|
||||||
|
*--------------------------------------
|
||||||
|
* CONTROL SECTION :
|
||||||
|
*--------------------------------------
|
||||||
|
.DO A2osX.GP.End>$BEBF
|
||||||
|
ERROR:GP too big
|
||||||
|
.FIN
|
||||||
|
*--------------------------------------
|
||||||
|
.BS A2osX.GP.START+$100-*
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE SYS/KERNEL.S.GP
|
||||||
|
LOAD SYS/KERNEL.S
|
||||||
|
ASM
|
190
SYS/KERNEL.S.INIT.txt
Normal file
190
SYS/KERNEL.S.INIT.txt
Normal file
|
@ -0,0 +1,190 @@
|
||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.SRC
|
||||||
|
NEW
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
* Setup MainLC ($3FE)
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Setup AuxLC $FFFE->Kernel IRQ Handler
|
||||||
|
* if irq not handled, jmp (S.IrqMgrOldFFFE)
|
||||||
|
*--------------------------------------
|
||||||
|
S.IrqMgrInit php
|
||||||
|
sei
|
||||||
|
>LDYA $FFFE
|
||||||
|
cpy #S.IrqHandlerAuxLC
|
||||||
|
bne .1
|
||||||
|
cmp /S.IrqHandlerAuxLC
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
.1 >STYA S.IrqMgrOldFFFE
|
||||||
|
>LDYAI S.IrqHandlerAuxLC
|
||||||
|
>STYA $FFFE
|
||||||
|
|
||||||
|
.2
|
||||||
|
|
||||||
|
* >LDYAI $BE0C
|
||||||
|
* >STYA $3F0
|
||||||
|
|
||||||
|
plp
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
S.MemMgrInit >LDYAI MemMgr.MHiMem
|
||||||
|
>STYA MemMgr.HiMem
|
||||||
|
>STYA MemMgr.Free
|
||||||
|
>LDYAI MemMgr.MLoMem
|
||||||
|
>STYA MemMgr.LoMem
|
||||||
|
stz MemMgr.LastSlot Reserve Slot #0
|
||||||
|
|
||||||
|
sta SETWRITEAUX
|
||||||
|
|
||||||
|
>LDYAI MemMgr.XHiMem
|
||||||
|
>STYA MemMgr.HiMem
|
||||||
|
>STYA MemMgr.Free
|
||||||
|
>LDYAI MemMgr.XLoMem
|
||||||
|
>STYA MemMgr.LoMem
|
||||||
|
stz MemMgr.LastSlot Reserve Slot #0
|
||||||
|
|
||||||
|
sta CLRWRITEAUX
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* S.DevMgrInit
|
||||||
|
*--------------------------------------
|
||||||
|
S.DevMgrInit ldx #S.DEV.SIZE*DevMgr.Count
|
||||||
|
.1 lda DevMgr.NUL-1,x
|
||||||
|
sta DevMgr.Table-1,x
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
stz DevMgr.Table+S.DEV.SIZE*DevMgr.Count+1
|
||||||
|
|
||||||
|
lda #DevMgr.Count-1
|
||||||
|
sta DevMgr.LastDevID
|
||||||
|
|
||||||
|
>LDYAI DevMgr.End
|
||||||
|
>STYA DevMgr.Free
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* S.EvtMgrInit
|
||||||
|
*--------------------------------------
|
||||||
|
S.EvtMgrInit lda #10
|
||||||
|
sta EVTMGR.10TH.CNT
|
||||||
|
|
||||||
|
lda A2osX.HZ
|
||||||
|
sta EVTMGR.HZ.CNT
|
||||||
|
|
||||||
|
lda MACHID
|
||||||
|
and #MACHID.TYPE
|
||||||
|
cmp #MACHID.TYPE.IIc
|
||||||
|
bne .8
|
||||||
|
|
||||||
|
* sta CLRIOUDIS
|
||||||
|
* sta ENBVBLIIC
|
||||||
|
|
||||||
|
.8 lda /EvtMgr.Table
|
||||||
|
sta pEvent+1
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* S.TskMgrInit
|
||||||
|
*--------------------------------------
|
||||||
|
S.TskMgrInit stz TSKMGR.LASTID
|
||||||
|
lda #1
|
||||||
|
sta TSKMGR.SIZE One Slot Busy (Kernel PS=0)
|
||||||
|
|
||||||
|
>LDYAI TskMgr.Table Clear whole process table
|
||||||
|
>STYA pPs
|
||||||
|
|
||||||
|
ldx #K.PS.MAX
|
||||||
|
|
||||||
|
.1 lda #0
|
||||||
|
ldy #S.PS.SIZE-1
|
||||||
|
|
||||||
|
.2 sta (pPs),y
|
||||||
|
dey
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
lda pPs
|
||||||
|
clc
|
||||||
|
adc #S.PS.SIZE
|
||||||
|
sta pPs
|
||||||
|
bcc .3
|
||||||
|
|
||||||
|
inc pPs+1
|
||||||
|
.3 dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
>LDYAI TskMgr.Table Select Process 0 (Kernel)
|
||||||
|
>STYA pPs
|
||||||
|
|
||||||
|
lda #1
|
||||||
|
ldy #S.PS.hINDEV
|
||||||
|
sta (pPs),y Make In DEV = SYS
|
||||||
|
ldy #S.PS.hOUTDEV
|
||||||
|
sta (pPs),y Make OUT DEV = SYS
|
||||||
|
ldy #S.PS.hERRDEV
|
||||||
|
sta (pPs),y Make ERR DEV = SYS
|
||||||
|
|
||||||
|
>SYSCALL SYS.GetDevByIDA
|
||||||
|
>STYA pDev
|
||||||
|
ldx #DEVMGR.OPEN
|
||||||
|
jsr pDevJmp
|
||||||
|
|
||||||
|
>PUSHWI K.ENV.SIZE get a buffer for ENV
|
||||||
|
>PUSHBI S.MEM.F.INIT0 make sure blank
|
||||||
|
>SYSCALL SYS.GetMem create it...
|
||||||
|
bcs *
|
||||||
|
|
||||||
|
txa
|
||||||
|
ldy #S.PS.hENV
|
||||||
|
sta (pPs),y
|
||||||
|
|
||||||
|
>LDYAI TmpBuffer256
|
||||||
|
>SYSCALL SYS.MLIGetPrefixYA
|
||||||
|
bcs *
|
||||||
|
|
||||||
|
>LDYAI TmpBuffer256
|
||||||
|
>SYSCALL SYS.NewPStrYA
|
||||||
|
bcs *
|
||||||
|
|
||||||
|
ldy #S.PS.hPREFIX
|
||||||
|
sta (pPs),y
|
||||||
|
|
||||||
|
>PUSHWI TmpBuffer256 push ENV value
|
||||||
|
>PUSHWI I.ENV.A2osX push ENV name
|
||||||
|
>SYSCALL SYS.SetEnvVarP
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>PUSHWI I.ENV.PATH.VAL
|
||||||
|
>PUSHWI I.ENV.PATH
|
||||||
|
>SYSCALL SYS.SetEnvVarP
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>PUSHWI I.ENV.LIB.VAL
|
||||||
|
>PUSHWI I.ENV.LIB
|
||||||
|
>SYSCALL SYS.SetEnvVarP
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>PUSHWI I.ENV.DRV.VAL
|
||||||
|
>PUSHWI I.ENV.DRV
|
||||||
|
>SYSCALL SYS.SetEnvVarP
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
I.ENV.A2osX >PSTRING "A2OSX"
|
||||||
|
I.ENV.PATH >PSTRING "PATH"
|
||||||
|
I.ENV.PATH.VAL >PSTRING "${A2OSX}SBIN/;${A2OSX}BIN/"
|
||||||
|
I.ENV.LIB >PSTRING "LIB"
|
||||||
|
I.ENV.LIB.VAL >PSTRING "${A2OSX}LIB/"
|
||||||
|
I.ENV.DRV >PSTRING "DRV"
|
||||||
|
I.ENV.DRV.VAL >PSTRING "${A2OSX}DRV/"
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE SYS/KERNEL.S.INIT
|
||||||
|
LOAD SYS/KERNEL.S
|
||||||
|
ASM
|
|
@ -5,41 +5,6 @@ INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Setup MainLC ($3FE)
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* Setup AuxLC $FFFE->Kernel IRQ Handler
|
|
||||||
* if irq not handled, jmp (S.IrqMgrOldFFFE)
|
|
||||||
*--------------------------------------
|
|
||||||
S.IrqMgrInit php
|
|
||||||
sei
|
|
||||||
>LDYA $FFFE
|
|
||||||
cpy #S.IrqHandlerAuxLC
|
|
||||||
bne .1
|
|
||||||
cmp /S.IrqHandlerAuxLC
|
|
||||||
beq .2
|
|
||||||
|
|
||||||
.1 >STYA S.IrqMgrOldFFFE
|
|
||||||
>LDYAI S.IrqHandlerAuxLC
|
|
||||||
>STYA $FFFE
|
|
||||||
|
|
||||||
.2
|
|
||||||
|
|
||||||
* >LDYAI $BE0C
|
|
||||||
* >STYA $3F0
|
|
||||||
|
|
||||||
plp
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
S.IrqMgrQuit php
|
|
||||||
sei
|
|
||||||
>LDYA S.IrqMgrOldFFFE
|
|
||||||
>STYA $FFFE
|
|
||||||
plp
|
|
||||||
cli
|
|
||||||
.8 rts
|
|
||||||
*--------------------------------------
|
|
||||||
S.BrkHandlerAuxLC
|
S.BrkHandlerAuxLC
|
||||||
bra *
|
bra *
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
157
SYS/KERNEL.S.JMP.txt
Normal file
157
SYS/KERNEL.S.JMP.txt
Normal file
|
@ -0,0 +1,157 @@
|
||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.SRC
|
||||||
|
NEW
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
* $E000-E0FF KERNEL.SYSCALL Jmp Table
|
||||||
|
*--------------------------------------
|
||||||
|
.DA S.GetMem $00
|
||||||
|
.DA S.FreeMemA
|
||||||
|
.DA S.GetMemPtrA
|
||||||
|
.DA S.GetMemByIDA
|
||||||
|
.DA S.GetMemByNameYA
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
*--------------------------------------
|
||||||
|
.DA S.NewPStrYA $10
|
||||||
|
.DA S.PStrCpyA
|
||||||
|
.DA S.PStrCat
|
||||||
|
.DA S.PStrCmp
|
||||||
|
.DA S.PStrGetTkn
|
||||||
|
.DA 0
|
||||||
|
.DA S.GetArgCount
|
||||||
|
.DA S.GetArgA
|
||||||
|
*--------------------------------------
|
||||||
|
.DA 0 $20
|
||||||
|
.DA S.LoadLibYA
|
||||||
|
.DA S.UnloadLibA
|
||||||
|
.DA S.LoadDrvA
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
*--------------------------------------
|
||||||
|
.DA S.ExpandPStrA $30
|
||||||
|
.DA S.ExpandPStrYA
|
||||||
|
.DA S.PutEnvYA
|
||||||
|
.DA S.GetEnvVarYA
|
||||||
|
.DA S.SetEnvVarH
|
||||||
|
.DA S.SetEnvVarP
|
||||||
|
.DA S.DelEnvVarA
|
||||||
|
.DA S.DelEnvVarYA
|
||||||
|
*--------------------------------------
|
||||||
|
.DA S.MLICreateFile $40
|
||||||
|
.DA 0
|
||||||
|
.DA S.MLICreateDirYA
|
||||||
|
.DA 0
|
||||||
|
.DA S.MLIDestroyYA
|
||||||
|
.DA S.MLIRename
|
||||||
|
.DA S.MLISetFileInfo
|
||||||
|
.DA 0
|
||||||
|
*--------------------------------------
|
||||||
|
.DA S.MLIGetFileInfoYA $50
|
||||||
|
.DA S.MLIOnline
|
||||||
|
.DA 0
|
||||||
|
.DA S.MLISetPrefixYA
|
||||||
|
.DA 0
|
||||||
|
.DA S.MLIGetPrefixYA
|
||||||
|
.DA 0
|
||||||
|
.DA S.MLIOpenYA
|
||||||
|
*--------------------------------------
|
||||||
|
.DA S.MLINewLine $60
|
||||||
|
.DA S.MLIRead
|
||||||
|
.DA S.MLIWrite
|
||||||
|
.DA S.MLICloseA
|
||||||
|
.DA S.MLIFlushA
|
||||||
|
.DA S.MLISetMark
|
||||||
|
.DA S.MLIGetMarkA
|
||||||
|
.DA S.MLISetEOF
|
||||||
|
*--------------------------------------
|
||||||
|
.DA S.MLIGetEOFA $70
|
||||||
|
.DA S.MLISetBuf
|
||||||
|
.DA S.MLIGetBuf
|
||||||
|
.DA S.MLIGetTime
|
||||||
|
.DA S.MLIAllocIRQ
|
||||||
|
.DA S.MLIDeallocIRQA
|
||||||
|
.DA S.MLIReadBlock
|
||||||
|
.DA S.MLIWriteBlock
|
||||||
|
*--------------------------------------
|
||||||
|
.DA S.GetDevByIDA $80
|
||||||
|
.DA 0
|
||||||
|
.DA S.GetDevByNameYA
|
||||||
|
.DA S.GetDevInfoA
|
||||||
|
.DA S.GetKeyboardEvent
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
*--------------------------------------
|
||||||
|
.DA S.ExecProcessNewEnvYA $90
|
||||||
|
.DA S.ExecProcessYA
|
||||||
|
.DA S.CreateProcessNewEnvYA
|
||||||
|
.DA S.CreateProcessYA
|
||||||
|
.DA S.GetPSByIDA
|
||||||
|
.DA 0
|
||||||
|
.DA S.Sleep
|
||||||
|
.DA 0
|
||||||
|
*--------------------------------------
|
||||||
|
.DA S.CheckPrefixA $A0
|
||||||
|
.DA S.FileSearch
|
||||||
|
.DA 0
|
||||||
|
.DA S.LoadFileYA
|
||||||
|
.DA S.ListDirInitA
|
||||||
|
.DA S.ListDirInitYA
|
||||||
|
.DA S.ListDirNextA
|
||||||
|
.DA S.ListDirCloseA
|
||||||
|
*--------------------------------------
|
||||||
|
.DA 0 $B0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
*--------------------------------------
|
||||||
|
.DA 0 $C0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
*--------------------------------------
|
||||||
|
.DA S.COutA $D0
|
||||||
|
.DA 0
|
||||||
|
.DA S.PSTROutYA
|
||||||
|
.DA 0
|
||||||
|
.DA S.HexOutA
|
||||||
|
.DA S.HexOutYA
|
||||||
|
.DA S.DecOutA
|
||||||
|
.DA S.DecOutYA
|
||||||
|
*--------------------------------------
|
||||||
|
.DA 0 $E0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
*--------------------------------------
|
||||||
|
.DA 0 $F0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
.DA 0
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE SYS/KERNEL.S.JMP
|
||||||
|
LOAD SYS/KERNEL.S
|
||||||
|
ASM
|
|
@ -33,7 +33,8 @@ S.LoadLibYA.hLibName .BS 1
|
||||||
* out :
|
* out :
|
||||||
* A = hMem of Loaded Lib
|
* A = hMem of Loaded Lib
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.LoadLibA sta S.LoadLibA.hName push libname for S.FileSearch
|
S.LoadLibA sta S.LoadLibA.hName save libname for S.FileSearch
|
||||||
|
|
||||||
>LDYAI ENV.LIB push ENVNAME=LIB
|
>LDYAI ENV.LIB push ENVNAME=LIB
|
||||||
jsr S.GetEnvVarYA get value for ENV=LIB
|
jsr S.GetEnvVarYA get value for ENV=LIB
|
||||||
bcs .99
|
bcs .99
|
||||||
|
@ -62,11 +63,15 @@ S.LoadLibA sta S.LoadLibA.hName push libname for S.FileSearch
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.97 lda S.LoadLibA.hPath discard LIB PATH
|
.97 pha
|
||||||
|
lda S.LoadLibA.hPath discard LIB PATH
|
||||||
jsr S.FreeMemA
|
jsr S.FreeMemA
|
||||||
|
pla
|
||||||
|
|
||||||
.98 lda S.LoadLibA.hSrch discard LIB VALUE
|
.98 pha
|
||||||
|
lda S.LoadLibA.hSrch discard LIB VALUE
|
||||||
jsr S.FreeMemA
|
jsr S.FreeMemA
|
||||||
|
pla
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -105,6 +110,7 @@ S.UnloadLibA pha
|
||||||
pla
|
pla
|
||||||
jmp S.FreeMemA
|
jmp S.FreeMemA
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
ENV.LIB >PSTRING "LIB"
|
||||||
MAN
|
MAN
|
||||||
SAVE SYS/KERNEL.S.LIB
|
SAVE SYS/KERNEL.S.LIB
|
||||||
LOAD SYS/KERNEL.S
|
LOAD SYS/KERNEL.S
|
||||||
|
|
|
@ -19,33 +19,6 @@ ZPMemMgrTmp3 .EQ ZPMemMgr+6
|
||||||
* Garbage collector move blocks
|
* Garbage collector move blocks
|
||||||
* - mem.ID=0 always used! useful to test if hMem=0
|
* - mem.ID=0 always used! useful to test if hMem=0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.MemMgrInit >LDYAI MemMgr.MHiMem
|
|
||||||
>STYA MemMgr.HiMem
|
|
||||||
>STYA MemMgr.Free
|
|
||||||
|
|
||||||
>LDYAI MemMgr.MLoMem
|
|
||||||
>STYA MemMgr.LoMem
|
|
||||||
|
|
||||||
stz MemMgr.LastSlot Reserve Slot #0
|
|
||||||
|
|
||||||
sta SETREADAUX
|
|
||||||
sta SETWRITEAUX
|
|
||||||
|
|
||||||
>LDYAI MemMgr.XHiMem
|
|
||||||
>STYA MemMgr.HiMem
|
|
||||||
>STYA MemMgr.Free
|
|
||||||
|
|
||||||
>LDYAI MemMgr.XLoMem
|
|
||||||
>STYA MemMgr.LoMem
|
|
||||||
|
|
||||||
stz MemMgr.LastSlot Reserve Slot #0
|
|
||||||
|
|
||||||
sta CLRREADAUX
|
|
||||||
sta CLRWRITEAUX
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* PUBLIC
|
* PUBLIC
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.GetMem
|
* S.GetMem
|
||||||
|
@ -373,13 +346,11 @@ S.GetMemByIDA stz ZPMemMgrSPtr+1
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* In:
|
* In:
|
||||||
* A = hMem to BINPATH (PSTR)
|
* Y,A = BINPATH (PSTR)
|
||||||
* Out:
|
* Out:
|
||||||
* Y,A = ZPMemMgrSPtr = PTR to S.MEM
|
* Y,A = ZPMemMgrSPtr = PTR to S.MEM
|
||||||
* X = hMem
|
* X = hMem
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.GetMemByNameA jsr S.GetMemPtrA
|
|
||||||
bcs *
|
|
||||||
S.GetMemByNameYA
|
S.GetMemByNameYA
|
||||||
>STYA ZPMemMgrTmp1 save BINPATH
|
>STYA ZPMemMgrTmp1 save BINPATH
|
||||||
>LDYAI MemMgr.Table
|
>LDYAI MemMgr.Table
|
||||||
|
|
|
@ -14,7 +14,6 @@ S.MLICreateFile >PULLW MLICALL.PARAMS+1
|
||||||
lda #$01 Storage=Standard Files
|
lda #$01 Storage=Standard Files
|
||||||
bra S.MLICreate
|
bra S.MLICreate
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.MLICreateDirA jsr S.GetMemPtrA
|
|
||||||
S.MLICreateDirYA
|
S.MLICreateDirYA
|
||||||
>STYA MLICALL.PARAMS+1
|
>STYA MLICALL.PARAMS+1
|
||||||
lda #$C3
|
lda #$C3
|
||||||
|
@ -26,7 +25,6 @@ S.MLICreate sta MLICALL.PARAMS+7
|
||||||
>MLICALL MLICREATE
|
>MLICALL MLICREATE
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.MLIDestroyA jsr S.GetMemPtrA
|
|
||||||
S.MLIDestroyYA >STYA MLICALL.PARAMS+1
|
S.MLIDestroyYA >STYA MLICALL.PARAMS+1
|
||||||
>MLICALL MLIDESTROY
|
>MLICALL MLIDESTROY
|
||||||
rts
|
rts
|
||||||
|
@ -49,14 +47,12 @@ S.MLISetFileInfo
|
||||||
>MLICALL MLISETFILEINFO
|
>MLICALL MLISETFILEINFO
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.MLIGetFileInfoA
|
* S.MLIGetFileInfoYA
|
||||||
* in :
|
* in :
|
||||||
* A = hMem To FileName
|
* Y,A = FileName
|
||||||
* out :
|
* out :
|
||||||
* Y,A = PTR To Buffer (L=15)
|
* Y,A = PTR To Buffer (L=15)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.MLIGetFileInfoA
|
|
||||||
jsr S.GetMemPtrA
|
|
||||||
S.MLIGetFileInfoYA
|
S.MLIGetFileInfoYA
|
||||||
>STYA MLICALL.PARAMS+1
|
>STYA MLICALL.PARAMS+1
|
||||||
>MLICALL MLIGETFILEINFO
|
>MLICALL MLIGETFILEINFO
|
||||||
|
@ -74,26 +70,23 @@ S.MLIOnline >PULLB MLICALL.PARAMS+1
|
||||||
>MLICALL MLIONLINE
|
>MLICALL MLIONLINE
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.MLISetPrefixA jsr S.GetMemPtrA
|
|
||||||
S.MLISetPrefixYA
|
S.MLISetPrefixYA
|
||||||
>STYA MLICALL.PARAMS+1
|
>STYA MLICALL.PARAMS+1
|
||||||
>MLICALL MLISETPREFIX
|
>MLICALL MLISETPREFIX
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.MLIGetPrefixA jsr S.GetMemPtrA
|
|
||||||
S.MLIGetPrefixYA
|
S.MLIGetPrefixYA
|
||||||
>STYA MLICALL.PARAMS+1
|
>STYA MLICALL.PARAMS+1
|
||||||
>MLICALL MLIGETPREFIX
|
>MLICALL MLIGETPREFIX
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.MLIOpenA
|
* S.MLIOpenYA
|
||||||
* in :
|
* in :
|
||||||
* A = hMem To FileName
|
* YA = FileName
|
||||||
* out :
|
* out :
|
||||||
* A = ref_num
|
* A = ref_num
|
||||||
* X = buf hMem
|
* X = buf hMem
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.MLIOpenA jsr S.GetMemPtrA
|
|
||||||
S.MLIOpenYA >STYA MLICALL.PARAMS+1
|
S.MLIOpenYA >STYA MLICALL.PARAMS+1
|
||||||
>PUSHWI 1024 get a ProDOS IO buffer
|
>PUSHWI 1024 get a ProDOS IO buffer
|
||||||
>PUSHBI S.MEM.F.ALIGN+S.MEM.F.NOMOVE
|
>PUSHBI S.MEM.F.ALIGN+S.MEM.F.NOMOVE
|
||||||
|
|
107
SYS/KERNEL.S.RUN.txt
Normal file
107
SYS/KERNEL.S.RUN.txt
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.SRC
|
||||||
|
NEW
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
S.KernelRun jsr S.TskMgrRun
|
||||||
|
bcc S.KernelRun.EVT
|
||||||
|
jsr DevMgr.SYS.Select
|
||||||
|
>LDYAI MSG.KRNLPANIC
|
||||||
|
jsr S.PSTROutYA
|
||||||
|
bra *
|
||||||
|
|
||||||
|
S.KernelRun.EVT
|
||||||
|
jsr S.GetEvents
|
||||||
|
bcs S.KernelRun CS=no event
|
||||||
|
|
||||||
|
jsr S.DispatchEvents
|
||||||
|
bcc S.KernelRun CC=All Events Dispatched
|
||||||
|
|
||||||
|
jsr S.SelectProcess0
|
||||||
|
|
||||||
|
stz pEvent
|
||||||
|
|
||||||
|
.1 lda (pEvent)
|
||||||
|
beq .81
|
||||||
|
bmi .8 Discard any timer event
|
||||||
|
|
||||||
|
bit #S.EVT.F.KEY any special key?
|
||||||
|
beq .7
|
||||||
|
|
||||||
|
ldy #S.EVT.DATAHI Open-Apple?
|
||||||
|
lda (pEvent),y
|
||||||
|
bpl .7
|
||||||
|
|
||||||
|
ldy #S.EVT.DATALO
|
||||||
|
lda (pEvent),y
|
||||||
|
|
||||||
|
cmp #'1'
|
||||||
|
bcc .8
|
||||||
|
cmp #'5'
|
||||||
|
bcs .8
|
||||||
|
and #$0F
|
||||||
|
|
||||||
|
cmp A2osX.ASCREEN
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
tax
|
||||||
|
lda A2osX.SCRNDEVS-1,x
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
jsr S.GetDevByIDA
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
>STYA pDev
|
||||||
|
ldx #DEVMGR.SELECT
|
||||||
|
jsr pDevJmp
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
ldy #S.EVT.DATALO
|
||||||
|
lda (pEvent),y
|
||||||
|
and #$0F
|
||||||
|
sta A2osX.ASCREEN
|
||||||
|
bra .8
|
||||||
|
|
||||||
|
.7 jsr S.DumpEvent
|
||||||
|
|
||||||
|
.8 jsr S.DestroyEvent
|
||||||
|
|
||||||
|
.81 lda pEvent
|
||||||
|
clc
|
||||||
|
adc #S.EVT
|
||||||
|
sta pEvent
|
||||||
|
lda EVTMGR.COUNT
|
||||||
|
bne .1
|
||||||
|
jmp S.KernelRun
|
||||||
|
*--------------------------------------
|
||||||
|
S.DumpEvent ldy #S.EVT.DATAW2+1
|
||||||
|
>PUSHB (pEvent),y
|
||||||
|
dey
|
||||||
|
>PUSHB (pEvent),y
|
||||||
|
|
||||||
|
ldy #S.EVT.DATAW1+1
|
||||||
|
>PUSHB (pEvent),y
|
||||||
|
dey
|
||||||
|
>PUSHB (pEvent),y
|
||||||
|
|
||||||
|
ldy #S.EVT.DATAHI
|
||||||
|
>PUSHB (pEvent),y
|
||||||
|
ldy #S.EVT.DATALO
|
||||||
|
>PUSHB (pEvent),y
|
||||||
|
|
||||||
|
ldy #S.EVT.hDEV
|
||||||
|
>PUSHB (pEvent),y
|
||||||
|
|
||||||
|
>PUSHB (pEvent)
|
||||||
|
>LDYAI MSG.DumpEvent
|
||||||
|
jmp S.PSTROutYA
|
||||||
|
*--------------------------------------
|
||||||
|
MSG.DumpEvent >PSTRING "!Unhandled Event:Flags=%h,DevID=%h,DATALO=%h,DATAHI=%h,W1=%H,W2=%H\n"
|
||||||
|
MSG.KRNLPANIC >PSTRING "\n!!!Kernel Panic!!!\n"
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE SYS/KERNEL.S.RUN
|
||||||
|
LOAD SYS/KERNEL.S
|
||||||
|
ASM
|
|
@ -214,49 +214,51 @@ S.PStrMatch1 lda (ZPQuickPTR1) Keep Pattern Length in X
|
||||||
* X = hMem to Remaining String After Token "Split Mode"
|
* X = hMem to Remaining String After Token "Split Mode"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.PStrGetTkn >PULLA Get IDX
|
S.PStrGetTkn >PULLA Get IDX
|
||||||
sta ZPQuickPtr2+1
|
sta S.PStrGetTkn.IDX
|
||||||
>PULLA Get SEP
|
>PULLA Get SEP
|
||||||
sta ZPQuickPtr2
|
sta S.PStrGetTkn.SEP
|
||||||
>PULLA Get PStr
|
>PULLA Get PStr
|
||||||
jsr S.GetMemPtrA
|
jsr S.GetMemPtrA
|
||||||
>STYA ZPQuickPtr1
|
>STYA ZPQuickPtr1
|
||||||
ldx #0 init token count to 0
|
|
||||||
|
S.PStrGetTkn1 ldx #0 init token count to 0
|
||||||
ldy #0
|
ldy #0
|
||||||
stz ZPQuickPtr3 init INTOKEN start to 0
|
stz S.PStrGetTkn.START init INTOKEN start to 0
|
||||||
.1 iny
|
.1 iny
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
and #$7F
|
and #$7F
|
||||||
cmp ZPQuickPtr2 char=SEP ?
|
cmp S.PStrGetTkn.SEP char=SEP ?
|
||||||
bne .3 no, start a new token if not alredy in
|
bne .3 no, start a new token if not alredy in
|
||||||
lda ZPQuickPtr3 SEP:in INTOKEN ?
|
lda S.PStrGetTkn.START SEP:in INTOKEN ?
|
||||||
beq .4 no, skip this SEP
|
beq .4 no, skip this SEP
|
||||||
inx yes, increase token count
|
inx yes, increase token count
|
||||||
lda ZPQuickPtr2+1 requested token=0 ?
|
lda S.PStrGetTkn.IDX requested token=0 ?
|
||||||
beq .71 yes, we are in "split mode"
|
beq .71 yes, we are in "split mode"
|
||||||
cpx ZPQuickPtr2+1 no,is current X=requested IDX?
|
cpx S.PStrGetTkn.IDX no,is current X=requested IDX?
|
||||||
beq .71
|
beq .71
|
||||||
stz ZPQuickPtr3 reset in INTOKEN start
|
stz S.PStrGetTkn.START reset in INTOKEN start
|
||||||
bra .4
|
bra .4
|
||||||
.3 lda ZPQuickPtr3 char:already INTOKEN ?
|
.3 lda S.PStrGetTkn.START char:already INTOKEN ?
|
||||||
bne .4 yes, keep existing start index
|
bne .4 yes, keep existing start index
|
||||||
sty ZPQuickPtr3 mark begining of token
|
sty S.PStrGetTkn.START mark begining of token
|
||||||
.4 tya
|
.4 tya
|
||||||
cmp (ZPQuickPtr1) end of string ?
|
cmp (ZPQuickPtr1) end of string ?
|
||||||
bne .1 no, get next one
|
bne .1 no, get next one
|
||||||
lda ZPQuickPtr3 INTOKEN?
|
lda S.PStrGetTkn.START INTOKEN?
|
||||||
beq .6
|
beq .6
|
||||||
inx yes, last one is ending with string
|
inx yes, last one is ending with string
|
||||||
.6 lda ZPQuickPtr2+1 split mode ?
|
.6 lda S.PStrGetTkn.IDX split mode ?
|
||||||
beq .7
|
beq .7
|
||||||
cpx ZPQuickPtr2+1 is token = requested?
|
cpx S.PStrGetTkn.IDX is token = requested?
|
||||||
beq .7
|
beq .7
|
||||||
sec End of String reached, no matching token
|
sec End of String reached, no matching token
|
||||||
.61 rts
|
.61 rts
|
||||||
|
|
||||||
.71 dey move back yo end of token before this SEP
|
.71 dey move back yo end of token before this SEP
|
||||||
.7 sty ZPQuickPtr3+1 we have matching token (or 1st one in split mode) at [ZPQuickPtr3,ZPQuickPtr3+1]
|
.7 sty S.PStrGetTkn.END we have matching token (or 1st one in split mode) at [START,END]
|
||||||
tya compute token len=Y-ZPQuickPtr3+1
|
tya compute token len=Y-END
|
||||||
sec
|
sec
|
||||||
sbc ZPQuickPtr3
|
sbc S.PStrGetTkn.START
|
||||||
inc +1
|
inc +1
|
||||||
inc +1 for string len
|
inc +1 for string len
|
||||||
tay
|
tay
|
||||||
|
@ -266,39 +268,39 @@ S.PStrGetTkn >PULLA Get IDX
|
||||||
jsr S.GetMem
|
jsr S.GetMem
|
||||||
bcs .61
|
bcs .61
|
||||||
phx save hMem
|
phx save hMem
|
||||||
>STYA ZPQuickPtr4
|
>STYA ZPQuickPtr2
|
||||||
lda ZPQuickPtr3+1
|
lda S.PStrGetTkn.END
|
||||||
sec
|
sec
|
||||||
sbc ZPQuickPtr3
|
sbc S.PStrGetTkn.START
|
||||||
inc
|
inc
|
||||||
sta (ZPQuickPtr4) set this string length
|
sta (ZPQuickPtr2) set this string length
|
||||||
ldy ZPQuickPtr3
|
ldy S.PStrGetTkn.START
|
||||||
dey
|
dey
|
||||||
.8 iny
|
.8 iny
|
||||||
inc ZPQuickPtr4
|
inc ZPQuickPtr2
|
||||||
bne .9
|
bne .9
|
||||||
inc ZPQuickPtr4+1
|
inc ZPQuickPtr2+1
|
||||||
.9 lda (ZPQuickPtr1),y
|
.9 lda (ZPQuickPtr1),y
|
||||||
sta (ZPQuickPtr4)
|
sta (ZPQuickPtr2)
|
||||||
cpy ZPQuickPtr3+1
|
cpy S.PStrGetTkn.END
|
||||||
bne .8
|
bne .8
|
||||||
lda ZPQuickPtr2+1 requested token=0 ?
|
lda S.PStrGetTkn.IDX requested token=0 ?
|
||||||
bne .87
|
bne .87
|
||||||
tya yes, we are in "split mode"
|
tya yes, we are in "split mode"
|
||||||
cmp (ZPQuickPtr1) Remaining chars ?
|
cmp (ZPQuickPtr1) Remaining chars ?
|
||||||
beq .87
|
beq .87
|
||||||
.10 iny move to next char
|
.10 iny move to next char
|
||||||
lda (ZPQuickPtr1),y
|
lda (ZPQuickPtr1),y
|
||||||
cmp ZPQuickPtr2 char=SEP?
|
cmp S.PStrGetTkn.SEP char=SEP?
|
||||||
bne .11
|
bne .11
|
||||||
tya
|
tya
|
||||||
cmp (ZPQuickPtr1) last one ?
|
cmp (ZPQuickPtr1) last one ?
|
||||||
bne .10
|
bne .10
|
||||||
bra .87 yes, nothing to return
|
bra .87 yes, nothing to return
|
||||||
.11 sty ZPQuickPtr3+1 ZPQuickPtr3+1=1st non SEP char
|
.11 sty S.PStrGetTkn.END S.PStrGetTkn.END=1st non SEP char
|
||||||
lda (ZPQuickPtr1) compute reamining len=Y-ZPQuickPtr3+1
|
lda (ZPQuickPtr1) compute reamining len=Y-ZPQuickPtr1+1
|
||||||
sec
|
sec
|
||||||
sbc ZPQuickPtr3+1
|
sbc S.PStrGetTkn.END
|
||||||
inc
|
inc
|
||||||
inc +1 for string len
|
inc +1 for string len
|
||||||
tay
|
tay
|
||||||
|
@ -308,20 +310,20 @@ S.PStrGetTkn >PULLA Get IDX
|
||||||
jsr S.GetMem
|
jsr S.GetMem
|
||||||
bcs .98
|
bcs .98
|
||||||
phx save hMem
|
phx save hMem
|
||||||
>STYA ZPQuickPtr4
|
>STYA ZPQuickPtr2
|
||||||
lda (ZPQuickPtr1)
|
lda (ZPQuickPtr1)
|
||||||
sec
|
sec
|
||||||
sbc ZPQuickPtr3+1
|
sbcS.PStrGetTkn.END
|
||||||
inc
|
inc
|
||||||
sta (ZPQuickPtr4)
|
sta (ZPQuickPtr2)
|
||||||
ldy ZPQuickPtr3+1
|
ldy S.PStrGetTkn.END
|
||||||
dey
|
dey
|
||||||
.12 iny
|
.12 iny
|
||||||
inc ZPQuickPtr4
|
inc ZPQuickPtr2
|
||||||
bne .13
|
bne .13
|
||||||
inc ZPQuickPtr4+1
|
inc ZPQuickPtr2+1
|
||||||
.13 lda (ZPQuickPtr1),y
|
.13 lda (ZPQuickPtr1),y
|
||||||
sta (ZPQuickPtr4)
|
sta (ZPQuickPtr2)
|
||||||
tya
|
tya
|
||||||
cmp (ZPQuickPtr1)
|
cmp (ZPQuickPtr1)
|
||||||
bne .12
|
bne .12
|
||||||
|
@ -329,15 +331,22 @@ S.PStrGetTkn >PULLA Get IDX
|
||||||
pla get back token hMem
|
pla get back token hMem
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.87 ldx #0 Splitmode but no remaining string to return
|
.87 ldx #0 Splitmode but no remaining string to return
|
||||||
pla get back token hMem
|
pla get back token hMem
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.98 pla get back Token hMem
|
.98 pla get back Token hMem
|
||||||
jsr S.FreeMemA discard Token
|
jsr S.FreeMemA discard Token
|
||||||
.99 sec
|
.99 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
S.PStrGetTkn.SEP .BS 1
|
||||||
|
S.PStrGetTkn.IDX .BS 1
|
||||||
|
S.PStrGetTkn.START .BS 1
|
||||||
|
S.PStrGetTkn.END .BS 1
|
||||||
|
*--------------------------------------
|
||||||
S.GetArgCount
|
S.GetArgCount
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -5,87 +5,6 @@ INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.TskMgrInit
|
|
||||||
*--------------------------------------
|
|
||||||
S.TskMgrInit stz TSKMGR.LASTID
|
|
||||||
lda #1
|
|
||||||
sta TSKMGR.SIZE One Slot Busy (Kernel PS=0)
|
|
||||||
|
|
||||||
>LDYAI TskMgr.Table Clear whole process table
|
|
||||||
>STYA ZPQuickPtr1
|
|
||||||
|
|
||||||
ldx #K.PS.MAX
|
|
||||||
|
|
||||||
.1 lda #0
|
|
||||||
ldy #S.PS.SIZE-1
|
|
||||||
|
|
||||||
.2 sta (ZPQuickPtr1),y
|
|
||||||
dey
|
|
||||||
bpl .2
|
|
||||||
|
|
||||||
lda ZPQuickPtr1
|
|
||||||
clc
|
|
||||||
adc #S.PS.SIZE
|
|
||||||
sta ZPQuickPtr1
|
|
||||||
bcc .3
|
|
||||||
|
|
||||||
inc ZPQuickPtr1+1
|
|
||||||
.3 dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
lda #1
|
|
||||||
ldy #S.PS.hINDEV
|
|
||||||
sta TskMgr.Table,y Make In DEV = SYS
|
|
||||||
ldy #S.PS.hOUTDEV
|
|
||||||
sta TskMgr.Table,y Make OUT DEV = SYS
|
|
||||||
ldy #S.PS.hERRDEV
|
|
||||||
sta TskMgr.Table,y Make ERR DEV = SYS
|
|
||||||
|
|
||||||
jsr S.CreateEnv
|
|
||||||
bcs *
|
|
||||||
|
|
||||||
ldy #S.PS.hENV
|
|
||||||
sta TskMgr.Table,y
|
|
||||||
|
|
||||||
>LDYAI TmpBuffer256
|
|
||||||
jsr S.MLIGetPrefixYA
|
|
||||||
bcs *
|
|
||||||
|
|
||||||
>LDYAI TmpBuffer256
|
|
||||||
jsr S.NewPStrYA
|
|
||||||
bcs *
|
|
||||||
|
|
||||||
ldy #S.PS.hPREFIX
|
|
||||||
sta TskMgr.Table,y
|
|
||||||
S.TskMgrInit.Env
|
|
||||||
|
|
||||||
jsr S.SelectProcess0
|
|
||||||
|
|
||||||
ldx #DEVMGR.OPEN
|
|
||||||
jsr pDevJmp
|
|
||||||
|
|
||||||
>PUSHWI TmpBuffer256 push ENV value
|
|
||||||
>PUSHWI ENV.A2osX push ENV name
|
|
||||||
jsr S.SetEnvVarP
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>PUSHWI ENV.PATH.VALUE
|
|
||||||
>PUSHWI ENV.PATH
|
|
||||||
jsr S.SetEnvVarP
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>PUSHWI ENV.LIB.VALUE
|
|
||||||
>PUSHWI ENV.LIB
|
|
||||||
jsr S.SetEnvVarP
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>PUSHWI ENV.DRV.VALUE
|
|
||||||
>PUSHWI ENV.DRV
|
|
||||||
jsr S.SetEnvVarP
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
* S.TskMgrRun
|
* S.TskMgrRun
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.TskMgrRun >LDYAI TskMgr.Table+S.PS.SIZE
|
S.TskMgrRun >LDYAI TskMgr.Table+S.PS.SIZE
|
||||||
|
|
501
SYS/KERNEL.S.txt
501
SYS/KERNEL.S.txt
|
@ -5,7 +5,7 @@ INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $D000
|
.OR $2000
|
||||||
.TF /A2OSX.BOOT/SYS/KERNEL
|
.TF /A2OSX.BOOT/SYS/KERNEL
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
|
@ -13,183 +13,99 @@ AUTO 6
|
||||||
.INB INC/IO.I
|
.INB INC/IO.I
|
||||||
.INB INC/PRODOS.I
|
.INB INC/PRODOS.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
TmpPtr1 .EQ $0 for X.PRINTF.S
|
||||||
ZPQuickPtr1 .EQ ZPKERNEL Temp Ptrs for use in very limited scope
|
ZPQuickPtr1 .EQ ZPKERNEL Temp Ptrs for use in very limited scope
|
||||||
ZPQuickPtr2 .EQ ZPKERNEL+2 (could be trashed by any JSR)
|
ZPQuickPtr2 .EQ ZPKERNEL+2 (could be trashed by any JSR)
|
||||||
ZPQuickPtr3 .EQ ZPKERNEL+4
|
ZPQuickPtr3 .EQ ZPKERNEL+4
|
||||||
ZPQuickPtr4 .EQ ZPKERNEL+6
|
ZPQuickPtr4 .EQ ZPKERNEL+6
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* $D000-D0FF KERNEL.SYSCALL Jmp Table
|
* Kernel Stage 2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DA S.GetMem $00
|
Kernel.Init2 >LDAXI MSG.Init2
|
||||||
.DA S.FreeMemA
|
jsr PrintCStrAX
|
||||||
.DA S.GetMemPtrA
|
|
||||||
.DA S.GetMemByIDA
|
|
||||||
|
|
||||||
.DA S.GetMemByNameA
|
|
||||||
.DA S.GetMemByNameYA
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
*--------------------------------------
|
|
||||||
.DA S.NewPStrYA $10
|
|
||||||
.DA S.PStrCpyA
|
|
||||||
.DA S.PStrCat
|
|
||||||
.DA S.PStrCmp
|
|
||||||
|
|
||||||
.DA S.PStrGetTkn
|
sei
|
||||||
.DA 0
|
|
||||||
.DA S.GetArgCount
|
|
||||||
.DA S.GetArgA
|
|
||||||
*--------------------------------------
|
|
||||||
.DA S.LoadBinA $20
|
|
||||||
.DA S.LoadLibYA
|
|
||||||
.DA S.UnloadLibA
|
|
||||||
.DA S.LoadDrvA
|
|
||||||
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
*--------------------------------------
|
|
||||||
.DA S.ExpandPStrA $30
|
|
||||||
.DA S.ExpandPStrYA
|
|
||||||
.DA S.GetEnvVarA
|
|
||||||
.DA S.GetEnvVarYA
|
|
||||||
|
|
||||||
.DA S.SetEnvVarH
|
|
||||||
.DA S.SetEnvVarP
|
|
||||||
.DA S.DelEnvVarA
|
|
||||||
.DA S.DelEnvVarYA
|
|
||||||
*--------------------------------------
|
|
||||||
.DA S.MLICreateFile $40
|
|
||||||
.DA S.MLICreateDirA
|
|
||||||
.DA S.MLICreateDirYA
|
|
||||||
.DA S.MLIDestroyA
|
|
||||||
|
|
||||||
.DA S.MLIDestroyYA
|
|
||||||
.DA S.MLIRename
|
|
||||||
.DA S.MLISetFileInfo
|
|
||||||
.DA S.MLIGetFileInfoA
|
|
||||||
|
|
||||||
.DA S.MLIGetFileInfoYA $50
|
|
||||||
.DA S.MLIOnline
|
|
||||||
.DA S.MLISetPrefixA
|
|
||||||
.DA S.MLISetPrefixYA
|
|
||||||
|
|
||||||
.DA S.MLIGetPrefixA
|
|
||||||
.DA S.MLIGetPrefixYA
|
|
||||||
.DA S.MLIOpenA
|
|
||||||
.DA S.MLIOpenYA
|
|
||||||
|
|
||||||
.DA S.MLINewLine $60
|
|
||||||
.DA S.MLIRead
|
|
||||||
.DA S.MLIWrite
|
|
||||||
.DA S.MLICloseA
|
|
||||||
|
|
||||||
.DA S.MLIFlushA
|
|
||||||
.DA S.MLISetMark
|
|
||||||
.DA S.MLIGetMarkA
|
|
||||||
.DA S.MLISetEOF
|
|
||||||
|
|
||||||
.DA S.MLIGetEOFA $70
|
|
||||||
.DA S.MLISetBuf
|
|
||||||
.DA S.MLIGetBuf
|
|
||||||
.DA S.MLIGetTime
|
|
||||||
|
|
||||||
.DA S.MLIAllocIRQ
|
|
||||||
.DA S.MLIDeallocIRQA
|
|
||||||
.DA S.MLIReadBlock
|
|
||||||
.DA S.MLIWriteBlock
|
|
||||||
*--------------------------------------
|
|
||||||
.DA S.GetDevByIDA $80
|
|
||||||
.DA S.GetDevByNameA
|
|
||||||
.DA S.GetDevByNameYA
|
|
||||||
.DA S.GetDevInfoA
|
|
||||||
|
|
||||||
.DA S.GetKeyboardEvent
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
*--------------------------------------
|
|
||||||
.DA S.ExecProcessNewEnvYA $90
|
|
||||||
.DA S.ExecProcessYA
|
|
||||||
.DA S.CreateProcessNewEnvYA
|
|
||||||
.DA S.CreateProcessYA
|
|
||||||
|
|
||||||
.DA S.GetPSByIDA
|
|
||||||
.DA 0
|
|
||||||
.DA S.Sleep
|
|
||||||
.DA 0
|
|
||||||
*--------------------------------------
|
|
||||||
.DA S.CheckPrefixA $A0
|
|
||||||
.DA S.FileSearch
|
|
||||||
.DA S.LoadFileA
|
|
||||||
.DA S.LoadFileYA
|
|
||||||
|
|
||||||
.DA S.ListDirInitA
|
|
||||||
.DA S.ListDirInitYA
|
|
||||||
.DA S.ListDirNextA
|
|
||||||
.DA S.ListDirCloseA
|
|
||||||
*--------------------------------------
|
|
||||||
.DA 0 $B0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
*--------------------------------------
|
|
||||||
.DA S.ScreenSelectA $C0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
*--------------------------------------
|
|
||||||
.DA S.COutA $D0
|
|
||||||
.DA S.PSTROutA
|
|
||||||
.DA S.PSTROutYA
|
|
||||||
.DA 0
|
|
||||||
.DA S.HexOutA
|
|
||||||
.DA S.HexOutYA
|
|
||||||
.DA S.DecOutA
|
|
||||||
.DA S.DecOutYA
|
|
||||||
*--------------------------------------
|
|
||||||
.DA 0 $E0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
*--------------------------------------
|
|
||||||
.DA 0 $F0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
*--------------------------------------
|
|
||||||
Kernel.Init sei
|
|
||||||
ldx #$FF init 6502 stack to highest
|
ldx #$FF init 6502 stack to highest
|
||||||
txs
|
txs
|
||||||
|
sta SETALTZP
|
||||||
|
|
||||||
stx A2osX.SaveSM
|
stx A2osX.SaveSM
|
||||||
stx A2osX.SaveSX
|
stx A2osX.SaveSX
|
||||||
|
|
||||||
|
sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F
|
||||||
|
lda RROMBNK1 Make sure ROM is enabled for X.PRINT.F
|
||||||
cli
|
cli
|
||||||
|
|
||||||
|
>LDAXI MSG.Relocate
|
||||||
|
jsr PrintCStrAX
|
||||||
|
|
||||||
|
sei
|
||||||
|
sta SETALTZP
|
||||||
|
|
||||||
|
>LDYAI A2osX.BE00
|
||||||
|
>STYA ZPQuickPtr1
|
||||||
|
>LDYAI $BE00
|
||||||
|
>STYA ZPQuickPtr2
|
||||||
|
>LDYAI A2osX.BE00.SIZE^$FFFF
|
||||||
|
>STYA ZPQuickPtr3
|
||||||
|
|
||||||
|
jsr Kernel.Move
|
||||||
|
lda RRAMWRAMBNK2
|
||||||
|
lda RRAMWRAMBNK2
|
||||||
|
|
||||||
|
>LDYAI A2osX.D002
|
||||||
|
>STYA ZPQuickPtr1
|
||||||
|
>LDYAI $D000
|
||||||
|
>STYA ZPQuickPtr2
|
||||||
|
>LDYAI A2osX.D002.SIZE^$FFFF
|
||||||
|
>STYA ZPQuickPtr3
|
||||||
|
|
||||||
|
jsr Kernel.Move
|
||||||
|
|
||||||
|
lda RRAMWRAMBNK1
|
||||||
|
lda RRAMWRAMBNK1
|
||||||
|
|
||||||
|
>LDYAI A2osX.D001
|
||||||
|
>STYA ZPQuickPtr1
|
||||||
|
>LDYAI $D000
|
||||||
|
>STYA ZPQuickPtr2
|
||||||
|
>LDYAI A2osX.D001.SIZE^$FFFF
|
||||||
|
>STYA ZPQuickPtr3
|
||||||
|
|
||||||
|
jsr Kernel.Move
|
||||||
|
|
||||||
|
>LDYAI A2osX.E000
|
||||||
|
>STYA ZPQuickPtr1
|
||||||
|
>LDYAI $E000
|
||||||
|
>STYA ZPQuickPtr2
|
||||||
|
>LDYAI A2osX.E000.SIZE^$FFFF
|
||||||
|
>STYA ZPQuickPtr3
|
||||||
|
|
||||||
|
jsr Kernel.Move
|
||||||
|
|
||||||
>LDYAI D.STACK.TOP
|
>LDYAI D.STACK.TOP
|
||||||
>STYA pStack init Soft Stack
|
>STYA pStack init Soft Stack
|
||||||
|
|
||||||
stz A2osX.SCREENS
|
sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F
|
||||||
stz A2osX.ASCREEN
|
lda RROMBNK1 Make sure ROM is enabled for X.PRINT.F
|
||||||
|
cli
|
||||||
|
|
||||||
|
lda #6
|
||||||
|
sta A2osX.HZ
|
||||||
|
|
||||||
|
pha push HZ
|
||||||
|
>LDAXI MSG.HZ
|
||||||
|
jsr PrintCStrAX
|
||||||
|
|
||||||
|
jsr CPU.Init
|
||||||
|
|
||||||
|
>LDAXI MSG.K.INIT
|
||||||
|
jsr PrintCStrAX
|
||||||
|
|
||||||
|
sta SETALTZP
|
||||||
|
lda RRAMWRAMBNK1
|
||||||
|
lda RRAMWRAMBNK1
|
||||||
|
|
||||||
jsr S.IrqMgrInit
|
jsr S.IrqMgrInit
|
||||||
bcs *
|
bcs *
|
||||||
jsr S.MemMgrInit
|
jsr S.MemMgrInit
|
||||||
|
@ -201,196 +117,149 @@ Kernel.Init sei
|
||||||
jsr S.TskMgrInit
|
jsr S.TskMgrInit
|
||||||
bcs *
|
bcs *
|
||||||
|
|
||||||
>LDYAI MSG.Init
|
sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F
|
||||||
jsr S.PSTROutYA
|
lda RROMBNK1 Make sure ROM is enabled for X.PRINT.F
|
||||||
|
|
||||||
|
>LDAXI MSG.Init2.OK
|
||||||
|
jsr PrintCStrAX
|
||||||
|
|
||||||
>LDYAI MSG.Init.Startup
|
sta SETALTZP
|
||||||
jsr S.PSTROutYA
|
lda RRAMWRAMBNK1
|
||||||
|
lda RRAMWRAMBNK1
|
||||||
|
|
||||||
|
>DEBUGOA
|
||||||
|
*--------------------------------------
|
||||||
|
* Kernel Stage 3
|
||||||
|
*--------------------------------------
|
||||||
|
Kernel.Init3 ldx #DEVMGR.SELECT
|
||||||
|
jsr pDevJmp
|
||||||
|
|
||||||
|
>LDYAI MSG.Init3
|
||||||
|
>SYSCALL SYS.PSTROutYA
|
||||||
|
|
||||||
|
>LDYAI MSG.StartupFile
|
||||||
|
>SYSCALL SYS.PSTROutYA
|
||||||
|
|
||||||
>LDYAI STARTUP.ARGS Get A2osX.STARTUP full path...
|
>LDYAI STARTUP.ARGS Get A2osX.STARTUP full path...
|
||||||
jsr S.NewPStrYA
|
>SYSCALL SYS.NewPStrYA
|
||||||
pha
|
pha
|
||||||
>LDYAI STARTUP.CMD Get SHELL full path...
|
>LDYAI STARTUP.CMD Get SHELL full path...
|
||||||
jsr S.NewPStrYA
|
>SYSCALL SYS.NewPStrYA
|
||||||
ply get back ARGS in Y
|
ply get back ARGS in Y
|
||||||
phy
|
phy
|
||||||
pha A=CMD, save for discard
|
pha A=CMD, save for discard
|
||||||
|
|
||||||
jsr S.CreateProcessYA
|
>SYSCALL SYS.CreateProcessYA
|
||||||
bcs *
|
bcc .1
|
||||||
|
|
||||||
|
>PUSHA
|
||||||
|
>LDYAI MSG.StartupErr
|
||||||
|
>SYSCALL SYS.PSTROutYA
|
||||||
|
bra *
|
||||||
|
|
||||||
|
.1 pla
|
||||||
|
>SYSCALL SYS.FreeMemA
|
||||||
pla
|
pla
|
||||||
jsr S.FreeMemA
|
>SYSCALL SYS.FreeMemA
|
||||||
pla
|
|
||||||
jsr S.FreeMemA
|
|
||||||
|
|
||||||
>LDYAI MSG.Init.OK
|
>LDYAI MSG.Init3.OK
|
||||||
jsr S.PSTROutYA
|
>SYSCALL SYS.PSTROutYA
|
||||||
*--------------------------------------
|
|
||||||
S.KernelRun jsr S.TskMgrRun
|
|
||||||
bcc S.KernelRun.EVT
|
|
||||||
lda #A2osX.SCREENS.S
|
|
||||||
jsr S.ScreenSelectA
|
|
||||||
>LDYAI MSG.KRNLPANIC
|
|
||||||
jsr S.PSTROutYA
|
|
||||||
bra *
|
|
||||||
|
|
||||||
S.KernelRun.EVT
|
>LDYAI TskMgr.Table
|
||||||
jsr S.GetEvents
|
>STYA pPs
|
||||||
bcs S.KernelRun CS=no event
|
|
||||||
|
|
||||||
jsr S.DispatchEvents
|
|
||||||
bcc S.KernelRun CC=All Events Dispatched
|
|
||||||
|
|
||||||
jsr S.SelectProcess0
|
|
||||||
|
|
||||||
stz pEvent
|
|
||||||
|
|
||||||
.1 lda (pEvent)
|
|
||||||
beq .81
|
|
||||||
bmi .8 Discard any timer eventa
|
|
||||||
|
|
||||||
bit #S.EVT.F.KEY any special key?
|
|
||||||
beq .7
|
|
||||||
|
|
||||||
ldy #S.EVT.DATAHI Open-Apple?
|
|
||||||
lda (pEvent),y
|
|
||||||
bpl .7
|
|
||||||
|
|
||||||
ldy #S.EVT.DATALO
|
|
||||||
lda (pEvent),y
|
|
||||||
|
|
||||||
cmp #$31
|
|
||||||
bne .2
|
|
||||||
lda #A2osX.SCREENS.S
|
|
||||||
jsr S.ScreenSelectA
|
|
||||||
bra .8
|
|
||||||
|
|
||||||
.2 cmp #$32
|
|
||||||
bne .3
|
|
||||||
lda #A2osX.SCREENS.C
|
|
||||||
jsr S.ScreenSelectA
|
|
||||||
bra .8
|
|
||||||
|
|
||||||
.3 cmp #$33
|
|
||||||
bne .7
|
|
||||||
lda #A2osX.SCREENS.G
|
|
||||||
jsr S.ScreenSelectA
|
|
||||||
bra .8
|
|
||||||
|
|
||||||
.7 jsr S.DumpEvent
|
|
||||||
|
|
||||||
.8 jsr S.DestroyEvent
|
|
||||||
|
|
||||||
.81 lda pEvent
|
|
||||||
clc
|
|
||||||
adc #S.EVT
|
|
||||||
sta pEvent
|
|
||||||
lda EVTMGR.COUNT
|
|
||||||
bne .1
|
|
||||||
jmp S.KernelRun
|
jmp S.KernelRun
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.DumpEvent ldy #S.EVT.DATAW2+1
|
Kernel.Move ldy #0
|
||||||
>PUSHB (pEvent),y
|
.1 inc ZPQuickPtr3
|
||||||
dey
|
|
||||||
>PUSHB (pEvent),y
|
|
||||||
|
|
||||||
ldy #S.EVT.DATAW1+1
|
|
||||||
>PUSHB (pEvent),y
|
|
||||||
dey
|
|
||||||
>PUSHB (pEvent),y
|
|
||||||
|
|
||||||
ldy #S.EVT.DATAHI
|
|
||||||
>PUSHB (pEvent),y
|
|
||||||
ldy #S.EVT.DATALO
|
|
||||||
>PUSHB (pEvent),y
|
|
||||||
|
|
||||||
ldy #S.EVT.hDEV
|
|
||||||
>PUSHB (pEvent),y
|
|
||||||
|
|
||||||
>PUSHB (pEvent)
|
|
||||||
>LDYAI MSG.DumpEvent
|
|
||||||
jmp S.PSTROutYA
|
|
||||||
*--------------------------------------
|
|
||||||
* S.ScreenSelectA
|
|
||||||
* IN :
|
|
||||||
* A = Screen to display
|
|
||||||
*--------------------------------------
|
|
||||||
S.ScreenSelectA and A2osX.SCREENS Screen is available ?
|
|
||||||
beq .9 ...not setup up
|
|
||||||
|
|
||||||
cmp #A2osX.SCREENS.S
|
|
||||||
bne .1
|
|
||||||
sta SETTEXT
|
|
||||||
sta SETALTCHAR
|
|
||||||
sta SET80DISP
|
|
||||||
sta CLR80STORE
|
|
||||||
sta SETPAGE2
|
|
||||||
bra .8
|
|
||||||
|
|
||||||
.1 cmp #A2osX.SCREENS.C
|
|
||||||
bne .2
|
bne .2
|
||||||
sta SETTEXT
|
inc ZPQuickPtr3+1
|
||||||
sta SETALTCHAR
|
beq .9
|
||||||
sta SET80DISP
|
|
||||||
sta CLR80STORE
|
.2 lda (ZPQuickPtr1),y
|
||||||
sta CLRPAGE2
|
sta (ZPQuickPtr2),y
|
||||||
bra .8
|
iny
|
||||||
|
bne .1
|
||||||
|
|
||||||
.2 cmp #A2osX.SCREENS.G
|
inc ZPQuickPtr1+1
|
||||||
bne .9
|
inc ZPQuickPtr2+1
|
||||||
|
bne .1
|
||||||
sta CLRTEXT
|
.9 rts
|
||||||
sta CLRMIXED
|
|
||||||
sta SETHIRES
|
|
||||||
sta CLR80STORE
|
|
||||||
sta CLRPAGE2
|
|
||||||
sta SETIOUDIS
|
|
||||||
sta SETDHIRES
|
|
||||||
|
|
||||||
* sta CLR80DISP
|
|
||||||
* sta SETDHIRES
|
|
||||||
* sta CLRDHIRES
|
|
||||||
* sta SET80DISP
|
|
||||||
* sta SETDHIRES
|
|
||||||
* sta CLRDHIRES
|
|
||||||
* sta SETDHIRES
|
|
||||||
|
|
||||||
.8 sta A2osX.ASCREEN
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.Init >PSTRING "A2osX[Stage2]:Init\n"
|
.INB X.PRINTF.S
|
||||||
MSG.Init.Startup >PSTRING "EXEC A2osX.Startup...\n"
|
.INB SYS/KERNEL.S.CPU
|
||||||
MSG.Init.OK >PSTRING "A2osX[Stage2]:Complete.\n"
|
.INB SYS/KERNEL.S.INIT
|
||||||
MSG.DumpEvent >PSTRING "!Unhandled Event:Flags=%h,DevID=%h,DATALO=%h,DATAHI=%h,W1=%H,W2=%H\n"
|
*--------------------------------------
|
||||||
MSG.KRNLPANIC >PSTRING "\n!!!Kernel Panic!!!\n"
|
MSG.Init2 >CSTRING "A2osX[Stage2]:Init\n"
|
||||||
|
MSG.Relocate >CSTRING "Relocating KERNEL...\n"
|
||||||
|
MSG.HZ >CSTRING "Kernel SYS Timer Set For %d0 hz Machine.\n"
|
||||||
|
MSG.K.INIT >CSTRING "Kernel Setup...\n"
|
||||||
|
MSG.Init2.OK >CSTRING "A2osX[Stage2]:Complete.\n"
|
||||||
|
*--------------------------------------
|
||||||
|
MSG.Init3 >PSTRING "A2osX[Stage3]:Init\n"
|
||||||
|
MSG.StartupFile >PSTRING "EXEC A2osX.Startup...\n"
|
||||||
|
MSG.StartupErr >PSTRING "SHELL A2osX.Startup Failed with Error : [$%h]\n"
|
||||||
|
MSG.Init3.OK >PSTRING "A2osX[Stage3]:Complete.\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
STARTUP.CMD >PSTRING "${A2OSX}SBIN/SHELL"
|
STARTUP.CMD >PSTRING "${A2OSX}SBIN/SHELL"
|
||||||
STARTUP.ARGS >PSTRING "${A2OSX}A2osX.STARTUP"
|
STARTUP.ARGS >PSTRING "${A2OSX}A2osX.STARTUP"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ENV.A2osX >PSTRING "A2OSX"
|
* Global Page
|
||||||
ENV.PATH >PSTRING "PATH"
|
|
||||||
ENV.PATH.VALUE >PSTRING "${A2OSX}SBIN/;${A2OSX}BIN/"
|
|
||||||
ENV.LIB >PSTRING "LIB"
|
|
||||||
ENV.LIB.VALUE >PSTRING "${A2OSX}LIB/"
|
|
||||||
ENV.DRV >PSTRING "DRV"
|
|
||||||
ENV.DRV.VALUE >PSTRING "${A2OSX}DRV/"
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB SYS/KERNEL.S.IRQ
|
A2osX.BE00 .EQ *
|
||||||
.INB SYS/KERNEL.S.MEM
|
.PH $BE00
|
||||||
|
.INB SYS/KERNEL.S.GP
|
||||||
|
.EP
|
||||||
|
A2osX.BE00.END .EQ *
|
||||||
|
*--------------------------------------
|
||||||
|
* LC AUX $D000 BANK1
|
||||||
|
*--------------------------------------
|
||||||
|
A2osX.D001 .EQ *
|
||||||
|
.PH $D000
|
||||||
.INB SYS/KERNEL.S.STR
|
.INB SYS/KERNEL.S.STR
|
||||||
.INB SYS/KERNEL.S.CIO
|
.INB SYS/KERNEL.S.CIO
|
||||||
.INB SYS/KERNEL.S.FIO
|
.INB SYS/KERNEL.S.FIO
|
||||||
.INB SYS/KERNEL.S.MLI
|
.INB SYS/KERNEL.S.MLI
|
||||||
|
.INB SYS/KERNEL.S.ENV
|
||||||
|
.EP
|
||||||
|
A2osX.D001.END .EQ *
|
||||||
|
*--------------------------------------
|
||||||
|
* LC AUX $D000 BANK2
|
||||||
|
*--------------------------------------
|
||||||
|
A2osX.D002 .EQ *
|
||||||
|
.PH $D000
|
||||||
|
cld
|
||||||
|
.EP
|
||||||
|
A2osX.D002.END .EQ *
|
||||||
|
*--------------------------------------
|
||||||
|
* LC AUX $E000
|
||||||
|
*--------------------------------------
|
||||||
|
A2osX.E000 .EQ *
|
||||||
|
.PH $E000
|
||||||
|
.INB SYS/KERNEL.S.JMP
|
||||||
|
.INB SYS/KERNEL.S.RUN
|
||||||
|
.INB SYS/KERNEL.S.IRQ
|
||||||
|
.INB SYS/KERNEL.S.MEM
|
||||||
.INB SYS/KERNEL.S.BIN
|
.INB SYS/KERNEL.S.BIN
|
||||||
.INB SYS/KERNEL.S.DRV
|
.INB SYS/KERNEL.S.DRV
|
||||||
.INB SYS/KERNEL.S.LIB
|
.INB SYS/KERNEL.S.LIB
|
||||||
.INB SYS/KERNEL.S.ENV
|
|
||||||
.INB SYS/KERNEL.S.TSK
|
.INB SYS/KERNEL.S.TSK
|
||||||
.INB SYS/KERNEL.S.EVT
|
.INB SYS/KERNEL.S.EVT
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB SYS/KERNEL.S.DEV
|
* Make sure KERNEL.S.DEV is the last one
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
.INB SYS/KERNEL.S.DEV
|
||||||
|
.EP
|
||||||
|
A2osX.E000.END .EQ *
|
||||||
|
*--------------------------------------
|
||||||
|
.LIST ON
|
||||||
|
*--------------------------------------
|
||||||
|
A2osX.BE00.SIZE .EQ A2osX.BE00.END-A2osX.BE00
|
||||||
|
A2osX.D001.SIZE .EQ A2osX.D001.END-A2osX.D001
|
||||||
|
A2osX.D002.SIZE .EQ A2osX.D002.END-A2osX.D002
|
||||||
|
A2osX.E000.SIZE .EQ A2osX.E000.END-A2osX.E000
|
||||||
|
*--------------------------------------
|
||||||
|
.LIST OFF
|
||||||
MAN
|
MAN
|
||||||
SAVE SYS/KERNEL.S
|
SAVE SYS/KERNEL.S
|
||||||
ASM
|
ASM
|
||||||
|
|
177
X.PRINTF.S.txt
Normal file
177
X.PRINTF.S.txt
Normal file
|
@ -0,0 +1,177 @@
|
||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.SRC
|
||||||
|
NEW
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
PrintPStrAX >STAX TmpPtr1
|
||||||
|
lda (TmpPtr1)
|
||||||
|
tax
|
||||||
|
beq .9
|
||||||
|
ldy #1
|
||||||
|
|
||||||
|
.1 lda (TmpPtr1),y
|
||||||
|
ora #$80
|
||||||
|
jsr $FDED COUT
|
||||||
|
iny
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
PrintCStrAX >STAX TmpPtr1
|
||||||
|
pla
|
||||||
|
sta X.Save.RTS
|
||||||
|
pla
|
||||||
|
sta X.Save.RTS+1
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.1 stz X.b0Flag
|
||||||
|
stz X.DigitCount
|
||||||
|
|
||||||
|
lda (TmpPtr1),y
|
||||||
|
beq .9
|
||||||
|
cmp #'%'
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
.11 iny
|
||||||
|
lda (TmpPtr1),y
|
||||||
|
beq .9
|
||||||
|
cmp #'0'
|
||||||
|
bne .22
|
||||||
|
ror X.b0Flag beq -> CS
|
||||||
|
bra .11
|
||||||
|
|
||||||
|
.22 bcc .21
|
||||||
|
cmp #'9'+1
|
||||||
|
bcs .21
|
||||||
|
and #$0f
|
||||||
|
sta X.DigitCount
|
||||||
|
bra .11
|
||||||
|
|
||||||
|
.21 cmp #'d'
|
||||||
|
bne .2
|
||||||
|
pla
|
||||||
|
jsr PrintADec
|
||||||
|
bra .8
|
||||||
|
|
||||||
|
.2 cmp #'D'
|
||||||
|
bne .3
|
||||||
|
pla
|
||||||
|
plx
|
||||||
|
jsr PrintAXDec
|
||||||
|
bra .8
|
||||||
|
|
||||||
|
.3 cmp #'h'
|
||||||
|
bne .4
|
||||||
|
pla
|
||||||
|
jsr $FDDA PRBYTE
|
||||||
|
|
||||||
|
.4 cmp #'\'
|
||||||
|
bne .7
|
||||||
|
iny
|
||||||
|
lda (TmpPtr1),y
|
||||||
|
beq .9
|
||||||
|
cmp #'n'
|
||||||
|
bne .9
|
||||||
|
lda #$0D
|
||||||
|
|
||||||
|
.7 ora #$80
|
||||||
|
jsr $FDED COUT
|
||||||
|
.8 iny
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.9 lda X.Save.RTS+1
|
||||||
|
pha
|
||||||
|
lda X.Save.RTS
|
||||||
|
pha
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
PrintADec ldx #0
|
||||||
|
PrintAXDec >STAX X.HexBuffer
|
||||||
|
stz X.BCDBuffer
|
||||||
|
stz X.BCDBuffer+1
|
||||||
|
stz X.BCDBuffer+2
|
||||||
|
|
||||||
|
phy
|
||||||
|
|
||||||
|
ldx #16 let's roll 16 bits
|
||||||
|
sed
|
||||||
|
.2 asl X.HexBuffer
|
||||||
|
rol X.HexBuffer+1
|
||||||
|
php cpy will disturb carry while BCD adc
|
||||||
|
ldy #0
|
||||||
|
.3 plp
|
||||||
|
lda X.BCDBuffer,y
|
||||||
|
adc X.BCDBuffer,y
|
||||||
|
sta X.BCDBuffer,y
|
||||||
|
php
|
||||||
|
iny
|
||||||
|
cpy #3 Last byte of X.BCDBufferBUF?
|
||||||
|
bne .3
|
||||||
|
plp
|
||||||
|
dex
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
cld
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
ldy #5
|
||||||
|
|
||||||
|
.4 lda X.BCDBuffer,x
|
||||||
|
pha
|
||||||
|
and #$0F
|
||||||
|
ora #$B0
|
||||||
|
sta X.DigitBuffer,y
|
||||||
|
dey
|
||||||
|
|
||||||
|
pla
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
ora #$B0
|
||||||
|
sta X.DigitBuffer,y
|
||||||
|
inx
|
||||||
|
dey
|
||||||
|
bpl .4
|
||||||
|
|
||||||
|
lda X.DigitCount
|
||||||
|
beq .5
|
||||||
|
lda #6
|
||||||
|
sec
|
||||||
|
sbc X.DigitCount
|
||||||
|
.5 tay
|
||||||
|
.6 lda X.DigitBuffer,y
|
||||||
|
cmp #"0"
|
||||||
|
beq .7
|
||||||
|
|
||||||
|
sec
|
||||||
|
ror X.b0Flag
|
||||||
|
bra .8
|
||||||
|
|
||||||
|
.7 cpy #5
|
||||||
|
beq .8
|
||||||
|
lda #" "
|
||||||
|
bit X.b0Flag
|
||||||
|
bpl .81
|
||||||
|
lda #"0"
|
||||||
|
.8 jsr $FDED COUT
|
||||||
|
.81 iny
|
||||||
|
cpy #6
|
||||||
|
bne .6
|
||||||
|
|
||||||
|
.9 ply
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
X.Save.RTS .BS 2
|
||||||
|
X.HexBuffer .BS 2
|
||||||
|
X.BCDBuffer .BS 3
|
||||||
|
X.b0Flag .BS 1
|
||||||
|
X.DigitCount .BS 1
|
||||||
|
X.DigitBuffer .BS 6
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE X.PRINTF.S
|
|
@ -2,17 +2,16 @@ PREFIX /A2OSX.BOOT
|
||||||
CREATE BIN
|
CREATE BIN
|
||||||
CREATE DRV
|
CREATE DRV
|
||||||
CREATE ETC
|
CREATE ETC
|
||||||
CREATE INC
|
|
||||||
CREATE LIB
|
CREATE LIB
|
||||||
CREATE SBIN
|
CREATE SBIN
|
||||||
|
CREATE SBIN/GFX
|
||||||
CREATE SYS
|
CREATE SYS
|
||||||
CREATE USR
|
CREATE USR
|
||||||
PREFIX /A2OSX.SRC
|
PREFIX /A2OSX.SRC
|
||||||
CREATE BIN
|
CREATE BIN
|
||||||
CREATE DRV
|
CREATE DRV
|
||||||
CREATE ETC
|
|
||||||
CREATE INC
|
CREATE INC
|
||||||
CREATE LIB
|
CREATE LIB
|
||||||
CREATE SBIN
|
CREATE SBIN
|
||||||
|
CREATE SBIN/GFX
|
||||||
CREATE SYS
|
CREATE SYS
|
||||||
CREATE USR
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ AUTO 6
|
||||||
PREFIX /A2OSX.BOOT
|
PREFIX /A2OSX.BOOT
|
||||||
BLOAD A2OSX.SYSTEM
|
BLOAD A2OSX.SYSTEM
|
||||||
DELETE A2OSX.SYSTEM
|
DELETE A2OSX.SYSTEM
|
||||||
BSAVE A2OSX.SYSTEM,TSYS,A$2000,L4864
|
BSAVE A2OSX.SYSTEM,TSYS,A$2000,L$1000
|
||||||
-A2OSX.SYSTEM
|
-A2OSX.SYSTEM
|
||||||
MAN
|
MAN
|
||||||
PREFIX /A2OSX.SRC
|
PREFIX /A2OSX.SRC
|
||||||
|
|
Loading…
Reference in New Issue
Block a user