Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-11-07 15:27:24 +01:00
parent afbd04d4b5
commit 8f0ef5bbd2
2 changed files with 112 additions and 48 deletions

Binary file not shown.

View File

@ -13,10 +13,14 @@ H2000 jmp prostart
jmp atalkset
jmp p16start
*--------------------------------------
LDR.MSG.0 .AS "PRODOS FX: "
LDR.MSG.0.LEN .EQ *-LDR.MSG.0
LDR.MSG.UNSUPP .AS -"UNSUPPORTED HARDWARE."
LDR.MSG.UNSUPP.LEN .EQ *-LDR.MSG.UNSUPP
LDR.MSG.0 .AT "PRODOS FX:"
LDR.MSG.UNSUPP .AT "UNSUPPORTED HARDWARE"
LDR.MSG.IIe .AT "//e"
LDR.MSG.IIc .AT "//c"
LDR.MSG.IIgs .AT "IIgs"
LDR.MSG.Unknown .AT "Unknown"
LDR.MSG.CLK .AT "Clk"
LDR.MSG.RAM .AT "/RAM"
LDR.MSG.ROOTERR .AS -"Unable To read ROOT dir."
LDR.MSG.ROOTERR.LEN .EQ *-LDR.MSG.ROOTERR
*--------------------------------------
@ -25,6 +29,10 @@ atalkset inc LDR.BootFlag set = 1 for appletalk rts
prostart lda unitnum
sta LDR.MLIOL.P+1
.DO READCAT=1
sta LDR.MLIRB.P+1
.FIN
cld
bit RROMBNK2
@ -36,13 +44,16 @@ prostart lda unitnum
jsr setkbd
jsr home
ldx #LDR.MSG.0.LEN-1
.1 lda LDR.MSG.0,x
and #$3F
sta $400,x
lda #$20
ldx #39
.1 sta $400,x
dex
bpl .1
ldx #LDR.MSG.0
jsr LDR.PrintX
sec
jsr idroutine returns system info
bcs .2 taken if not a //gs
@ -77,19 +88,20 @@ prostart lda unitnum
bne LDR.UNSUPP.HW NO 128k
LDR.CheckROM stz cortland
ldx #LDR.MSG.IIE
lda #MACHID.T.IIe+MACHID.M.128+MACHID.COL80
ldx $FBB3 check hardware id
cpx #$06 apple //e?
ldy $FBB3 check hardware id
cpy #$06 apple //e?
beq .1 if yes
cpx #$EA apple //+ or ///?
cpy #$EA apple //+ or ///?
beq LDR.UNSUPP.HW
ldx #LDR.MSG.UNKNOWN
bra m128k machine is unknown, Assume //e Enh 128k
.1 ldx $FBC0 //c ?
.1 ldy $FBC0 //c ?
bne .2
ldy kbd //c, check for keypress
@ -98,31 +110,37 @@ LDR.CheckROM stz cortland
sta KBDSTROBE clear keyboard
.11 lda #MACHID.T.IIc+MACHID.M.128+MACHID.COL80
ldx #LDR.MSG.IIC
bra m128k
.2 cpx #$EA
.2 cpy #$EA
beq LDR.UNSUPP.HW //e UNenh....
cpx #$E0
bne m128k not a //e Enh....
cpy #$E0
beq .3
ldx #LDR.MSG.UNKNOWN
bra m128k not a //e Enh....
sec
.3 sec
jsr $FE1F //gs ????
bcs m128k no.....
inc cortland
ldx #LDR.MSG.IIGS
lda #MACHID.T.IIe+MACHID.M.128+MACHID.COL80+MACHID.CLK
bra m128k
LDR.UNSUPP.HW ldy #LDR.MSG.UNSUPP.LEN-1
.1 lda LDR.MSG.UNSUPP,y
sta vline14+2,y
dey
bpl .1
LDR.UNSUPP.HW ldx #LDR.MSG.UNSUPP
jsr LDR.PrintX
bmi *
m128k sta idapple Save MACHID in temp location
sta SETALTCHAR
jsr LDR.PrintX
sta CLRC3ROM
ldx #$F
@ -219,15 +237,6 @@ LDR.IRQ lda RROMWRAMBNK2
stx irqv+1 save irq vector in main lc
sty irqv
lda LDR.MLIOL.P+1 place boot devnum in globals
sta LDR.MLIRB.P+1
sta devnum last device used
jsr LDR.BlkDevScan finish setting up globals
lda LDR.MLIRB.P+1
sta devnum
lda #calldisp
sta jspare+1 P8 system death vector
lda /calldisp
@ -241,9 +250,13 @@ LDR.IRQ lda RROMWRAMBNK2
lda cortland
beq LDR.II branch if // family
LDR.IIGS stz vmode force setvid to reset cursor
jsr setvid reset output to screen
LDR.IIGS
* lda RROMWRAMBNK2
* stz vmode force setvid to reset cursor
* jsr setvid reset output to screen
lda #calldisp
sta cortdisp
@ -252,6 +265,9 @@ LDR.IIGS stz vmode force setvid to reset cursor
lda #1
sta cortflag
* jsr lc1in set language card bank 1 to r/w
lda #'C'
ldx PAKME.CCLK
ldy PAKME.CCLK+1
jsr LDR.SetupCLK
@ -279,16 +295,15 @@ LDR.IIGS stz vmode force setvid to reset cursor
sta OS_BOOT indicates O/S initially booted.
jsr patch101 patch for gs/os - rev note #101
.1 jmp RAMDRV.Install
* put dispatcher in bank 2 of language card
.1 jmp BLKDEV.Install
*--------------------------------------
LDR.II ldx PAKME.SEL1
ldy PAKME.SEL1+1
jsr LDR.SetupQC
* check for a rom in slot 3. if no rom, use internal $C300 firmware
.2 sta CLRC3ROM
sta CLRC3ROM
lda rommap slot ROM bit map
and #$08 mask all but slot 3
bne isromin3 taken if rom in slot 3
@ -346,10 +361,13 @@ hitswtch sta CLRC3ROM
docard lda #MACHID.COL80
tsb MACHID turn bit 2 on (80-col card is present)
*--------------------------------------
CLK.Install jsr LDR.ClkDevScan
*--------------------------------------
RAMDRV.Install jsr lc1in
BLKDEV.Install jsr LDR.BlkDevScan
*--------------------------------------
jsr lc1in
ldx PAKME.RAM
ldy PAKME.RAM+1
@ -384,7 +402,10 @@ RAMDRV.Install jsr lc1in
ldx GP.numdevs
lda #$BF unit num of /RAM
sta devlist,x
ldx #LDR.MSG.RAM
jsr LDR.PrintX
*--------------------------------------
lda LDR.BootFlag get setup entry point flag
beq LDR.ReadRoot taken if normal boot.
lda RROMBNK2
@ -394,7 +415,10 @@ LDR.BootFlag .DA #$00 0 = normal boot, <>0 = return
* set prefix to boot device
LDR.ReadRoot jsr MLI
LDR.ReadRoot lda LDR.MLIOL.P+1 place boot devnum in globals
sta devnum last device used
jsr MLI
.DA #MLIONLINE
.DA LDR.MLIOL.P
bcs .9
@ -455,18 +479,51 @@ LDR.ReadRoot jsr MLI
bpl .91
bmi *
*--------------------------------------
LDR.PrintA ldy LDR.Print.CX
and #$7F
cmp #$60
bcs .2
and #$3F
.2 sta $400,y
inc LDR.Print.CX
rts
*--------------------------------------
LDR.PrintX ldy LDR.Print.CX
.1 lda $2000,x
pha
and #$7F
cmp #$60
bcs .2
and #$3F
.2 sta $400,y
inx
iny
pla
bpl .1
* lda #$20
* sta $400,y
iny Add a Space
sty LDR.Print.CX
rts
LDR.Print.CX .HS 00
*--------------------------------------
LDR.MLIOL.P .DA #2
.DA #$60
.DA pbuf+1
LDR.MLISETP.P
.DA #1
LDR.MLISETP.P .DA #1
.DA pbuf
LDR.MLIRB.P
.DA #3
.DO READCAT=1
LDR.MLIRB.P .DA #3
.DA #0 unit number
.DA 0 2 byte data buffer
.DA 0 2 byte block number
.FIN
cortland .BS 1 cortland loader flag (1 = Cortland)
*--------------------------------------
@ -560,6 +617,7 @@ LDR.ClkDevScan php
dex
bpl .9
lda #'N'
ldx PAKME.NCLK
ldy PAKME.NCLK+1
jmp LDR.SetupCLK
@ -579,6 +637,7 @@ LDR.ClkDevTCLK lda CLRC8ROM switch out $C8 ROMs
dey
bpl .2
lda #'T'
ldx PAKME.TCLK
ldy PAKME.TCLK+1
jsr LDR.SetupCLK
@ -596,6 +655,11 @@ LDR.ClkDevTCLK lda CLRC8ROM switch out $C8 ROMs
*--------------------------------------
LDR.SetupCLK stx ZPInBufPtr
sty ZPInBufPtr+1
jsr LDR.PrintA
ldx #LDR.MSG.CLK
jsr LDR.PrintX
lda #$D742
sta ZPOutBufPtr
lda /$D742
@ -607,7 +671,7 @@ LDR.SetupCLK stx ZPInBufPtr
lda #MACHID.CLK
tsb MACHID
LDR.SetupCLK.RTS
LDR.SetupCLK.RTS
rts
*--------------------------------------
* find all disk devices in system slots and set up address