Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-07-28 17:16:14 +02:00
parent 8bd9a2e46c
commit c196c2071a
2 changed files with 134 additions and 151 deletions

Binary file not shown.

View File

@ -41,31 +41,31 @@ Kernel.Init2 sei
lda /A2osX.AUX.S
eor #$ff
pha
ldy #0
sta SETWRITEAUX
.2 inx
bne .3
pla
inc
beq .4
pha
.3 lda (ZPPtr1),y
sta (ZPPtr2),y
iny
bne .2
inc ZPPtr1+1
inc ZPPtr2+1
bra .2
.4 sta CLRWRITEAUX
.4 sta CLRWRITEAUX
>LDYA PAKME.GP
>STYA ZPInBufPtr
>LDYAI A2osX.SYSCALL
@ -79,7 +79,7 @@ Kernel.Init2 sei
>STYA ZPInBufPtr
>LDYAI $D000
jsr A2osX.Unpak
bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
@ -120,7 +120,7 @@ Kernel.Init3 sta SETALTZP
sta SET80DISP
sta SET80STORE
sta CLRPAGE2
bit RDIOUDIS
sta SETIOUDIS
sta SETDHIRES
@ -153,7 +153,7 @@ Kernel.Init3 sta SETALTZP
>PUSHWZ Aux type
>SYSCALL2 fopen
bcs *
ldy #S.PS.hStdIn
sta (pPS),y
iny #S.PS.hStdOut
@ -166,7 +166,7 @@ Kernel.Init3C >PUSHWI MSG.Init3
>SYSCALL2 printf
jsr HW.Detect
jsr CPU.Init.6502
jsr CPU.Init.Z80
@ -187,12 +187,12 @@ Kernel.Init3C >PUSHWI MSG.Init3
>PUSHWI SBININITD
>PUSHBI 2
>SYSCALL PrintF
>PUSHWI SBININITD
>PUSHBI 0 PS Flags
>SYSCALL2 ExecL
bcs Kernel.Init3.Err
>PUSHWI MSG.Init3.OK
>PUSHBI 0
>SYSCALL2 printf
@ -206,7 +206,7 @@ Kernel.Init3.Err
>PUSHA
>PUSHBI 1
>SYSCALL2 printf
bra * No need to discard Expanded CMDLINE
bra * No need to discard Expanded CMDLINE
*--------------------------------------
* INIT2 Subs
*--------------------------------------
@ -219,7 +219,7 @@ KConfigLoad >LDYAI MSG.KCREAD
bcc .1
eor #MLI.E.BADCALL
beq .2 regular ProDOS
ror CORE.FSID Bad file, but ProDOS.FX detected
bra .9
@ -250,11 +250,11 @@ KConfigLoad >LDYAI MSG.KCREAD
bra .8
.9 >LDYAI MSG.KCREAD.KO
.8 jsr PrintFYA
lda CORE.FSID
beq .99
>LDYAI MSG.PRODOSFX
jsr PrintFYA
@ -278,11 +278,11 @@ MemMgrInit >LDYAI Mem.MHiMem
sta CLRWRITEAUX
ldx #K.DEV.MAX*2-1
.1 stz Dev.Table,x
dex
bpl .1
ldx #K.FLT.MAX*2-1
.11 stz Flt.Table.hPath,x
@ -331,14 +331,14 @@ SysScrInit >LDYAI Mem.XHiMem
>SYSCALL2 MKDev
bcs .9
ldx A2osX.TTYDEVS
.1 phx
inc FD.TTY+S.FD.DEV.DEVID
inc FD.TTY.NAME+3
jsr SysScrInit.TTYPtrs
>PUSHWI FD.TTY
>PUSHWI FD.TTY.NAME
@ -359,7 +359,7 @@ SysScrInit.TTYPtrs
sta FD.TTY+S.FD.DEV.DCBPTR
sta .1+1
tay
lda FD.TTY+S.FD.DEV.DCBPTR+1
sbc /TTY.BUF.SIZE+S.DCB.TTY
sta FD.TTY+S.FD.DEV.DCBPTR+1
@ -368,7 +368,7 @@ SysScrInit.TTYPtrs
ldx #S.DCB.TTY-1
sta SETWRITEAUX
.1 stz $ffff,x SELF MODIFIED
dex
bpl .1
@ -376,7 +376,7 @@ SysScrInit.TTYPtrs
>STYA Mem.HiMem
>STYA Mem.Free
sta CLRWRITEAUX
rts
*--------------------------------------
* http://www.1000bit.it/support/manuali/apple/technotes/misc/tn.misc.02.html
@ -387,20 +387,20 @@ HW.Detect >PUSHWI MSG.HW
>SYSCALL2 printf
bit RROMBNK1
stz A2osX.HWType
stz A2osX.HWSubT
sec
jsr $FE1F IIgs ?
bcs .2
lda #A2osX.HWType.IIgs
sta A2osX.HWType
cpy #2
bne .1
iny
.1 sty A2osX.HWSubT
@ -408,28 +408,28 @@ HW.Detect >PUSHWI MSG.HW
.2 lda $FBC0
beq .4 //c
ldx #A2osX.HWType.IIe
stx A2osX.HWType
cmp #$EA
beq .8 //e OLD ROMs
inc A2osX.HWSubT //e Enh ROMs
lda $FBDD
cmp #2
bne .8
inc A2osX.HWSubT //e LC card
bra .8
.4 lda #A2osX.HWType.IIc
sta A2osX.HWType
lda $FBBF
sta A2osX.HWSubT
.8 bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
>PUSHWI MSG.HW.TypeSubT
>PUSHB A2osX.HWType
>PUSHB A2osX.HWSubT
@ -451,127 +451,110 @@ CPU.Init.6502 >PUSHWI MSG.CPU
>SYSCALL2 puts
>PUSHWI MSG.CPU.SPEED
>PUSHBI 0
>PUSHB A2osX.HZ
>PUSHBI 1
>SYSCALL2 printf
stz A2osX.RANDOM16
ldy #0
stz A2osX.RANDOM16+1
php
sei
lda A2osX.HZ if 50hz -> 6 loops
eor #3 if 60hz -> 5 loops
pha
ldx A2osX.HZ
lda A2osX.HZ2Cnt-5,x
asl
tax 2 VBL states (up & down)
clc CC for //e
clc
lda MACHID
and #MACHID.T
eor #MACHID.T.IIc
bne .1
sec
.1 ror ZPPtr1 save //c flag
txa if //c, only one change (IRQ up)
lsr
tax
sec CS for //c
bpl .11
sta CLRIOUDIS
lda IO.IIC.RDVBLMSK
sta ZPPtr1+1 Save VBLIRQ enable
sta IO.IIC.ENVBL
lda IO.IIC.CLRVBLIRQ
ldx #2
.11 bit VBL
bpl .11
dex
bit ZPPtr1 //c ?
bpl .2
lda IO.IIC.CLRVBLIRQ yes, clear IRQ
lda #0 A = LOW
bra .22
.1 bit VBL Wait VBL high....
bpl .1
.2 lda VBL
bcc .2 skip if //e
lda IO.IIC.CLRVBLIRQ clear //c IRQ
lda #0 reset A = LOW
bra .3
.2 lda VBL //e : wait VBL low
bmi .2
*--------------------------------------
.20 ply
phy
.3 nop (2)
nop (2)
nop (2)
.22 nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
nop (2)
inc A2osX.RANDOM16 (6)
bne .5 (2*)
iny (2)
bne .4 (2*)
inc A2osX.RANDOM16+1 (6)
bra .6 (3) 2+6+3
.5 nop (2)
bra .5 (3) 2+6+3
.4 nop (2)
nop (2)
nop (2)
nop (2) 3+2+2+2+2 if from BNE
.6 dey
bne .22
eor VBL (4)
bpl .20 (2*)
bit ZPPtr1 //c ?
bmi .31
.3 dex
bne .20
bra .60
.5 eor VBL (4)
bpl .3 (2*)
.31 lda IO.IIC.CLRVBLIRQ yes, clear IRQ
bit ZPPtr1+1 Disable VBLIRQ ?
bcc .51 skip if //e
lda IO.IIC.CLRVBLIRQ clear //c IRQ
lda #0 reset A = LOW
.51 dex
bne .3
bcc .60 skip if //e
bit ZPPtr1+1 Disable VBLIRQ ?
bpl .60
sta IO.IIC.DISVBL
.60 plp
*--------------------------------------
.60 ply
sty A2osX.RANDOM16
stz A2osX.CPUSPEED
.7 sec
lda A2osX.RANDOM16
lsr A2osX.RANDOM16+1
ror A2osX.RANDOM16
.7 lda A2osX.RANDOM16
sec
sbc #100
tax
lda A2osX.RANDOM16+1
@ -586,8 +569,6 @@ CPU.Init.6502 >PUSHWI MSG.CPU
.8 lda A2osX.RANDOM16
sta A2osX.CPUSPEED+1
plp
>PUSHWI MSG.CPU.SPEEDOK
lda A2osX.CPUSPEED
>PUSHA push CPU speed HI
@ -607,7 +588,7 @@ CPU.Init.Z80 >PUSHWI MSG.Z80
tax
lda #A2osX.S.Z80
sta A2osX.S,x
>PUSHWI MSG.Z80.OK
lda A2osX.Z80SLOT
>PUSHA
@ -710,7 +691,7 @@ DevMgrInit >LDYAI MSG.DEV
lda DEVPTRS+1,x
sta FD.BDEV+S.FD.DEV.BUSPTR+1
sta ZPPtr1+1
sta ZPPtr1+1
stz ZPPtr1 Cn00
plp
lda #0
@ -736,7 +717,7 @@ DevMgrInit >LDYAI MSG.DEV
.3 bcs .53 > $D0, Some BLK remapped DRV
cmp #$C0
bcs .4 $C0 .. $CF, in slot ROM
bcs .4 $C0 .. $CF, in slot ROM
jsr DevMgrInit.USR Outside ROM/LC space, User loaded BLK dev
bra .8 keep slot free
@ -758,10 +739,10 @@ DevMgrInit >LDYAI MSG.DEV
jsr DevMgrInit.SP
lda #A2osX.S.SP
bra .7
.53 jsr DevMgrInit.RSP Remapped SP devices....
bra .8 don't mark slot as busy
.6 jsr DevMgrInit.BLK
lda #A2osX.S.BLK
@ -801,7 +782,7 @@ DevMgrInit.RSP ldx #10
DevMgrInit.AddBDev
>LDYA DRV.BLKDEV,x
>STYA FD.BDEV+S.FD.DEV.DRVPTR
>PUSHWI MSG.BLKDEV
>PUSHWI FD.BDEV.NAME
>PUSHW FD.BDEV+S.FD.DEV.BUSPTR
@ -820,7 +801,7 @@ DevMgrInit.AddBDev.RTS
*--------------------------------------
IrqMgrInit >LDYAI MSG.IRQ
>SYSCALL2 puts
php
sei
>LDYA $FFFE
@ -841,24 +822,24 @@ IrqMgrInit >LDYAI MSG.IRQ
lda A2osX.HWType
cmp #A2osX.HWType.IIgs
bne .1
lda #"G"
sta IRQ.Mode
lda #$08
tsb IO.IIGS.INTEN
jsr IrqMgrInit.HZ2Tick
>LDYAI K.IrqH.IIGS
jsr IrqMgrInit.SetV
>LDYAI MSG.IRQ.IIGS
bra .8
.1 cmp #A2osX.HWType.IIc
beq .2
jsr IrqMgrInit.TClock
bcs .2
@ -866,7 +847,7 @@ IrqMgrInit >LDYAI MSG.IRQ
sta IRQ.Mode
>LDYAI K.IrqH.TCLOCK
jsr IrqMgrInit.SetV
>LDYAI MSG.IRQ.CLOCK
bra .8
@ -877,7 +858,7 @@ IrqMgrInit >LDYAI MSG.IRQ
sta IRQ.Mode
>LDYAI K.IrqH.VBL
jsr IrqMgrInit.SetV
>LDYAI MSG.IRQ.VBL
bra .8
@ -886,7 +867,7 @@ IrqMgrInit >LDYAI MSG.IRQ
lda #"P"
sta IRQ.Mode
>LDYAI MSG.IRQ.POLL
.8 >SYSCALL2 puts
clc
rts
@ -903,7 +884,7 @@ IrqMgrInit.TClock
stz ZPPtr1 Try finding a TClock Card...
lda #$C1
sta ZPPtr1+1
.1 ldx #TClock.SIG-TClock.OFS-1
.2 ldy TClock.OFS,x
@ -919,7 +900,7 @@ IrqMgrInit.TClock
.3 inc ZPPtr1+1 no match, try next slot....
lda ZPPtr1+1
cmp #$C8
bne .1
bne .1
sec
rts
@ -938,7 +919,7 @@ IrqMgrInit.TClock
sei
lda #$40+$20 Enable interrupt + 64Hz
sta $c080,y
lda #$40
lda #$40
sta CLRPAGE2
sta $478,x
sta $7f8,x
@ -958,7 +939,7 @@ IrqMgrInit.Mouse
stz ZPPtr1 Try finding a Mouse Card...
lda #$C1
sta ZPPtr1+1
.1 ldx #Mouse.SIG-Mouse.OFS-1
.2 ldy Mouse.OFS,x
@ -971,7 +952,7 @@ IrqMgrInit.Mouse
.3 inc ZPPtr1+1 no match, try next slot....
lda ZPPtr1+1
cmp #$C8
bne .1
bne .1
sec
rts
@ -1034,7 +1015,7 @@ IrqMgrInit.HZ2Tick
asl
clc
adc A2osX.HZ
asl
sta CORE.TickPerSec
@ -1065,20 +1046,20 @@ TskMgrInit >LDYAI MSG.TSK
ldy #S.PS.hENV
sta (pPS),y
sta SETWRITEAUX
lda #0
sta (ZPPtr1) make sure blank!!
sta CLRWRITEAUX
>PUSHWI 0
>PUSHWI 0
>SYSCALL OpenSession
bcs .99
sta S.Table.hSID
ldy #S.PS.hStdIn
lda (pPS),y
sta S.Table.hFile
@ -1086,7 +1067,7 @@ TskMgrInit >LDYAI MSG.TSK
lda #1
ldy #S.PS.hSession
sta (pPS),y
>LDYAI $2E0 Get ROOT from QC
>SYSCALL2 strdup
bcs .9
@ -1126,7 +1107,7 @@ PwdMgrInit >LDYAI MSG.PWD
stx PWD.hUsrDB
>STYA PWD.UsrDBSize
>LDYAI PWD.ETCGROUP
jsr PwdMgrInit.Load
bcs .1
@ -1134,12 +1115,12 @@ PwdMgrInit >LDYAI MSG.PWD
stx PWD.hGrpDB
>STYA PWD.GrpDBSize
.1
* clc
.1
* clc
.9 rts
*--------------------------------------
PwdMgrInit.Load >PUSHYA
>PUSHBI O.RDONLY
>PUSHBI O.RDONLY
>PUSHBI S.FI.T.TXT
>PUSHWZ Aux type
>SYSCALL2 LoadStkObj
@ -1171,12 +1152,17 @@ Z80Code.Start .HS 31FF00 START: LD SP,000FFH Init Stack
.HS 00 FLAG: .DB 0
Z80Code.Size .EQ *-Z80Code.Start
*--------------------------------------
A2osX.HZ2Cnt .DA #30,#25
*--------------------------------------
Mouse.OFS .HS 05070B0CFB
Mouse.SIG .HS 38180120D6
*--------------------------------------
*--------------------------------------
TClock.OFS .HS 01030507
TClock.SIG .HS 08285870
*--------------------------------------
SmartPort.OFS .HS 010305
SmartPort.SIG .HS 200003
*--------------------------------------
MSG.Init2 .AZ "A2osX[Stage2]:Init\nRelocating Kernel...\n"
MSG.HZ .AZ "Kernel SYS Timer Set For %d0 hz Machine.\n"
MSG.KCREAD .AZ "Reading Kernel Config File..."
@ -1231,7 +1217,7 @@ MSG.6502 .AZ "6502."
MSG.65C02 .AZ "65C02."
MSG.65R02 .AZ "65R02."
MSG.65816 .AZ "65816."
MSG.CPU.SPEED .AZ "Checking CPU Speed..."
MSG.CPU.SPEED .AZ "Checking CPU Speed (%d0Hz)..."
MSG.CPU.SPEEDOK .AZ "%d.%02d Mhz.\r\n"
MSG.Z80 .AZ "Checking Z80 CPU..."
MSG.Z80.OK .AZ "Detected In Slot %d.\r\n"
@ -1253,7 +1239,7 @@ MLIGETFILEINFOEX00
*--------------------------------------
MLIOPEN00 .DA #3
.DA MLIOPEN00.FN
.DA $B000
.DA $B000
.BS 1
MLIOPEN00.FN >PSTR "A2osX.kconfig"
*--------------------------------------
@ -1298,9 +1284,6 @@ FD.BDEV .DA #S.FD.T.BDEV
.DA 0 BUFPTR
FD.BDEV.NAME .AZ "s1d1"
*--------------------------------------
SmartPort.OFS .HS 010305
SmartPort.SIG .HS 200003
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.init
LOAD usr/src/sys/kernel.s