mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-21 06:29:08 +00:00
496 lines
7.6 KiB
Plaintext
496 lines
7.6 KiB
Plaintext
NEW
|
||
AUTO 3,1
|
||
*--------------------------------------
|
||
* Runs in MAIN memory
|
||
*--------------------------------------
|
||
INIT2 sei
|
||
|
||
ldx #$FF
|
||
txs
|
||
|
||
sta IO.SETALTZP
|
||
|
||
stx SaveSM
|
||
stx SaveSX
|
||
|
||
sta IO.CLRALTZP
|
||
|
||
cli
|
||
|
||
sta IO.SETALTCHAR
|
||
sta IO.SETMIXED
|
||
sta IO.CLRHIRES
|
||
sta IO.SET80DISP
|
||
sta IO.SET80STORE
|
||
sta IO.CLRPAGE2
|
||
|
||
lda IO.RDIOUDIS
|
||
sta IO.SETIOUDIS
|
||
sta IO.SETDHIRES
|
||
bmi .10
|
||
|
||
sta IO.CLRIOUDIS
|
||
|
||
.10 bit IO.RRAMWRAMBNK2
|
||
bit IO.RRAMWRAMBNK2
|
||
*--------------------------------------
|
||
>LDYAI MSG.Init2
|
||
jsr X.PrintF
|
||
|
||
ldx #Kernel.ZP.S-1
|
||
|
||
.1 lda Kernel.ZP,x
|
||
sta CHARGET,x
|
||
dex
|
||
bpl .1
|
||
|
||
>LDYA PAKME.LC2
|
||
>STYA ZPInBufPtr
|
||
>LDYAI A2osX.GP
|
||
>STYA ZPOutBufPtr
|
||
jsr X.Unpak
|
||
|
||
lda /K.VER
|
||
sta A2osX.KVER
|
||
lda #K.VER
|
||
sta A2osX.KVER+1
|
||
|
||
jsr INIT2.BnkDetect
|
||
|
||
jsr INIT2.KConfig
|
||
bcc * FX only
|
||
|
||
jsr INIT2.MemInit setup KERNEL MEM.HiMem
|
||
*--------------------------------------
|
||
INIT2a >LDYA PAKME.INIT3
|
||
>STYA ZPInBufPtr
|
||
>LDYAI INIT3
|
||
>STYA ZPOutBufPtr
|
||
jsr X.Unpak
|
||
|
||
>LDYA MEM.HiMem
|
||
>STYA FD.TTY+S.FD.DEV.pDCB
|
||
|
||
>LDYAI INIT3
|
||
>STYA ZPPtr1
|
||
|
||
|
||
lda A2osX.MaxBnk
|
||
sta (pRWReg)
|
||
sta IO.SETWRITEAUX Mirror to AUX
|
||
|
||
lda #INIT3.S
|
||
eor #$ff
|
||
tax
|
||
lda /INIT3.S
|
||
eor #$ff
|
||
pha
|
||
|
||
ldy #0
|
||
|
||
.2 inx
|
||
bne .3
|
||
|
||
pla
|
||
inc
|
||
beq .4
|
||
|
||
pha
|
||
|
||
.3 lda (ZPPtr1),y
|
||
sta (ZPPtr1),y
|
||
iny
|
||
bne .2
|
||
|
||
inc ZPPtr1+1
|
||
bra .2
|
||
|
||
.4 ldx #63
|
||
|
||
.81 lda SYS.BOOT,x
|
||
sta SYS.BOOT,x
|
||
dex
|
||
bpl .81
|
||
|
||
ldx #$2f
|
||
|
||
.82 lda MLI.DEVPTRS,x
|
||
sta $210,x
|
||
dex
|
||
bpl .82
|
||
|
||
sta IO.CLRWRITEAUX
|
||
lda #0
|
||
sta (pRWReg)
|
||
*--------------------------------------
|
||
* Move up KERNEL
|
||
*--------------------------------------
|
||
>LDYAI MAIN.B+MAIN.S-1
|
||
>STYA ZPPtr1
|
||
>LDYAI K.HiMem+MAIN.S-1
|
||
>STYA ZPPtr2
|
||
|
||
lda #MAIN.S
|
||
eor #$ff
|
||
tay
|
||
lda /MAIN.S
|
||
eor #$ff
|
||
tax
|
||
|
||
.5 iny
|
||
bne .6
|
||
|
||
inx
|
||
beq INIT2b
|
||
|
||
.6 lda (ZPPtr1)
|
||
sta (ZPPtr2)
|
||
|
||
lda ZPPtr1
|
||
bne .7
|
||
|
||
dec ZPPtr1+1
|
||
|
||
.7 dec ZPPtr1
|
||
|
||
lda ZPPtr2
|
||
bne .70
|
||
|
||
dec ZPPtr2+1
|
||
|
||
.70 dec ZPPtr2
|
||
bra .5
|
||
*--------------------------------------
|
||
INIT2b lda A2osX.HZ
|
||
pha
|
||
|
||
lda A2osX.TTYDEVS
|
||
pha
|
||
|
||
lda A2osX.MaxBnk
|
||
ldx #0
|
||
inc
|
||
bne .10
|
||
|
||
inx
|
||
|
||
.10 pha
|
||
phx
|
||
|
||
>LDYAI MSG.CFG
|
||
jsr X.PrintF
|
||
|
||
jsr MLI
|
||
.DA #MLI.ALLOCIRQ
|
||
.DA pMLIALLOCIRQ
|
||
bcs *
|
||
|
||
lda pMLIALLOCIRQ+1
|
||
sta IRQ.IntNum
|
||
|
||
lda #K.LoMem-pFDs
|
||
eor #$ff
|
||
tay
|
||
lda /K.LoMem-pFDs
|
||
eor #$ff
|
||
pha
|
||
|
||
ldx #0
|
||
|
||
.1 iny
|
||
bne .2
|
||
|
||
pla
|
||
inc
|
||
beq .3
|
||
pha
|
||
|
||
.2 stz pFDs,x
|
||
inx
|
||
bne .1
|
||
|
||
inc .2+2
|
||
bra .1
|
||
|
||
.3 >LDYAI S.PS Create Process 0 (Kernel)
|
||
ldx #S.MEM.F.INIT0
|
||
|
||
jsr MEM.Malloc.YAX
|
||
bcs *
|
||
|
||
>STYA pPS
|
||
>STYA pPSs
|
||
|
||
>LDYAI K.STACKTOP
|
||
>STYA pStack
|
||
sta pBase+1
|
||
|
||
>LDYAI MSG.Init2.OK
|
||
jsr X.PrintF
|
||
*--------------------------------------
|
||
>DEBUGOA
|
||
|
||
lda A2osX.MaxBnk
|
||
sta A2osX.ActBnk
|
||
sta (pRWReg)
|
||
|
||
lda /INIT3-1
|
||
pha
|
||
|
||
lda #INIT3-1
|
||
pha
|
||
|
||
jmp RAMSW.2AUXRTS
|
||
*--------------------------------------
|
||
INIT2.BnkDetect lda #$C0
|
||
sta pRWReg+1
|
||
|
||
lda #$73 AE RamWorks at $C073
|
||
jsr INIT2.BnkCheck
|
||
bne .1
|
||
|
||
lda #$71 Super Expander at $C071
|
||
jsr INIT2.BnkCheck
|
||
|
||
.1 sta IO.SETWRITEAUX
|
||
|
||
ldx A2osX.MaxBnk
|
||
|
||
.2 txa
|
||
sta (pRWReg)
|
||
|
||
sta MEM.BnkID
|
||
|
||
>LDYAI U.HiMem
|
||
>STYA MEM.HiMem
|
||
>STYA MEM.Free
|
||
>LDYAI U.LoMem
|
||
>STYA MEM.LoMem
|
||
stz MEM.LastSlot Reserve Slot #0
|
||
|
||
dex
|
||
cpx #$ff
|
||
bne .2
|
||
|
||
sta IO.CLRWRITEAUX
|
||
|
||
rts
|
||
*--------------------------------------
|
||
INIT2.BnkCheck sta pRWReg
|
||
sta .2+1
|
||
sta .3+1
|
||
sta .7+1
|
||
|
||
stz A2osX.MaxBnk
|
||
|
||
sta IO.SETALTZP Use ZP to get Bank Count
|
||
|
||
ldx #0
|
||
|
||
.1 dex
|
||
|
||
.2 stx $C073 SLEF MODIFIED
|
||
|
||
pha waste time...
|
||
pla
|
||
|
||
lda 0
|
||
sta K.Buf512,x save Bank 0 $0000 to prevent ALTZP trash
|
||
lda 1
|
||
sta K.Buf512+$100,x
|
||
|
||
txa
|
||
sta 0
|
||
eor #$FF
|
||
sta 1
|
||
eor #$FF
|
||
bne .1
|
||
|
||
ldx #0 start detection at page $00
|
||
|
||
.3 stx $C073 SLEF MODIFIED
|
||
|
||
txa
|
||
|
||
pha waste time...
|
||
pla
|
||
|
||
cmp 0
|
||
bne .4
|
||
|
||
eor #$FF
|
||
cmp 1
|
||
bne .4
|
||
|
||
inx
|
||
bne .3
|
||
|
||
.4 dex 256 banks
|
||
|
||
ldy #0
|
||
|
||
.6 dey
|
||
|
||
.7 sty $C073 SLEF MODIFIED
|
||
|
||
pha waste time...
|
||
pla
|
||
|
||
lda K.Buf512,y
|
||
sta 0
|
||
lda K.Buf512+$100,y
|
||
sta 1
|
||
tya
|
||
bne .6
|
||
|
||
sta IO.CLRALTZP back to MAIN ZP
|
||
|
||
stx A2osX.MaxBnk X = detected page count
|
||
txa set Z
|
||
|
||
rts CS = bMBnk
|
||
*--------------------------------------
|
||
INIT2.KConfig >LDYAI MSG.KCREAD
|
||
jsr X.PrintF
|
||
|
||
stz ZPPtr1 A2osX.FSID
|
||
|
||
jsr MLI.MLIENTRY Bypass ATALK
|
||
.DA #MLI.GFINFOEX
|
||
.DA pMLIGFIEX
|
||
bcc .1
|
||
|
||
eor #MLI.E.BADCALL
|
||
beq .2 regular ProDOS
|
||
|
||
ror ZPPtr1 Bad file, but ProDOS.FX detected
|
||
bra .9
|
||
|
||
.1 sec
|
||
ror ZPPtr1 File Present & ProDOS.FX detected
|
||
|
||
.2 jsr MLI
|
||
.DA #MLI.OPEN
|
||
.DA pMLIOPEN
|
||
bcs .9
|
||
|
||
lda pMLIOPEN+5
|
||
sta pMLIREAD+1
|
||
sta pMLICLOSE+1
|
||
jsr MLI
|
||
.DA #MLI.READ
|
||
.DA pMLIREAD
|
||
php
|
||
pha
|
||
jsr MLI
|
||
.DA #MLI.CLOSE
|
||
.DA pMLICLOSE
|
||
pla
|
||
plp
|
||
bcs .9
|
||
|
||
ldx #15
|
||
|
||
.3 lda pMLIREAD.Buf,x
|
||
sta A2osX.KCONFIG,x
|
||
dex
|
||
bpl .3
|
||
|
||
>LDYAI MSG.KCREAD.OK
|
||
bra .8
|
||
|
||
.9 >LDYAI MSG.KCREAD.KO
|
||
|
||
.8 jsr X.PrintF
|
||
|
||
lda ZPPtr1 A2osX.FSID
|
||
|
||
sta A2osX.FSID
|
||
rol CS if ProDOS.FX
|
||
|
||
rts
|
||
*--------------------------------------
|
||
INIT2.MemInit >LDYAI K.LoMem
|
||
>STYA MEM.LoMem
|
||
stz MEM.LastSlot Reserve Slot #0
|
||
|
||
ldx A2osX.TTYDEVS
|
||
|
||
>LDYAI K.HiMem
|
||
|
||
.1 pha
|
||
tya
|
||
sec
|
||
sbc #80*24+S.DCB.TTY
|
||
tay
|
||
pla
|
||
sbc /80*24+S.DCB.TTY
|
||
|
||
dex
|
||
bpl .1 +1 for /dev/console
|
||
|
||
>STYA MEM.HiMem
|
||
>STYA MEM.Free
|
||
|
||
rts
|
||
*--------------------------------------
|
||
MSG.Init2 .CZ "A2osX[Stage2]:Init\rRelocating Kernel...\r"
|
||
MSG.KCREAD .CZ "Reading Kernel Config File..."
|
||
MSG.KCREAD.OK .CZ "OK\r"
|
||
MSG.KCREAD.KO .CZ "Error, Using Default.\r"
|
||
MSG.CFG .CZ "Kernel using %D Banks, %d TTYs, SYS Timer Set For %d0 hz Machine.\r"
|
||
MSG.Init2.OK .CZ "A2osX[Stage2]:Complete."
|
||
*--------------------------------------
|
||
* Modified CHARGET/CHARGOT for ROM CALL
|
||
* CHRGET .EQ $B1 - C8
|
||
*--------------------------------------
|
||
Kernel.ZP .PH $B1
|
||
CHARGET inc TXTPTR
|
||
bne CHARGOT
|
||
|
||
inc TXTPTR+1
|
||
|
||
CHARGOT lda $ffff
|
||
beq ZP.IsDigit.9
|
||
|
||
ZP.IsDigit cmp #'0'
|
||
bcc ZP.IsDigit.9
|
||
|
||
cmp #'9'+1
|
||
rts
|
||
|
||
ZP.IsDigit.9 sec
|
||
rts
|
||
.EP
|
||
Kernel.ZP.S .EQ *-Kernel.ZP
|
||
*--------------------------------------
|
||
pMLIGFIEX .DA #2
|
||
.DA FNKConfig
|
||
.BS S.FIEX
|
||
*--------------------------------------
|
||
pMLIOPEN .DA #3
|
||
.DA FNKConfig
|
||
.DA $800
|
||
.BS 1
|
||
FNKConfig .PS "A2osX.kconfig"
|
||
*--------------------------------------
|
||
pMLIREAD .DA #4
|
||
.BS 1
|
||
.DA pMLIREAD.Buf
|
||
.DA 16
|
||
.BS 2
|
||
|
||
pMLIREAD.Buf .BS 16
|
||
*--------------------------------------
|
||
pMLICLOSE .DA #1
|
||
.BS 1
|
||
*--------------------------------------
|
||
pMLIALLOCIRQ .DA #2
|
||
.BS 1
|
||
.DA IRQ
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE usr/src/sys/kernel.s.init2
|
||
LOAD usr/src/sys/kernel.s
|
||
ASM
|