Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-09-13 08:37:52 +02:00
parent f1797cca6f
commit e9beaf983c
9 changed files with 1003 additions and 997 deletions

Binary file not shown.

View File

@ -15,7 +15,7 @@ cclock_0
clc set e = 0 to set native mode
xce
* LONG I,M 16 bit mode.
lda #$0000 zero out result space.
lda ##$0000 zero out result space.
pha push 4 words for hex time result
pha
pha

View File

@ -3,7 +3,7 @@ NEW
* object code = mli_1
* global page
ofsG .EQ $E00-MLI offset to global org
ofsG .EQ $2E00-MLI offset to global org
H2E00 jmp mlient1 $2E00-2EFF moved to $BF00
jspare .EQ *-ofsG

View File

@ -89,11 +89,11 @@ set3 php
ora #$40
bpl H20FD always taken.
mach2 inc cflag //c or later
mach2 inc cflag //c or later
bvs H20FD
set7 ora #$80
set7 ora #$80
H20FD sta idapple
H20FD sta idapple
lda RROMBNK2 read ROM
sec
jsr idroutine returns system info
@ -106,12 +106,12 @@ H20FD sta idapple
* running from gs/os shell so zero out os_boot for appletalk
sta >OS_BOOT indicates O/S initially booted.
sta OS_BOOT indicates O/S initially booted.
jsr patch101 patch for gs/os - rev note #101
* put dispatcher in bank 2 of language card
H211D lda LDR.MLIONLINE.P+1 place boot devnum in globals
H211D lda LDR.MLIONLINE.P+1 place boot devnum in globals
sta LDR.MLIREADBLOCK.P+1
sta devnum last device used
jsr devsrch finish setting up globals
@ -122,7 +122,7 @@ H211D lda LDR.MLIONLINE.P+1 place boot devnum in globals
ldy /rlclk64
jsr reloc
H2139 bcs H20CE
H2139 bcs H20CE
lda #calldisp
sta jspare+1 P8 system death vector
lda /calldisp
@ -146,7 +146,7 @@ H2139 bcs H20CE
ldy /dsp64
inc newquitflag using old quit code so set flag
H216E jsr reloc
H216E jsr reloc
lda #$EE byte to distinguish LC bank 2
sta $D000
jsr lc1in switch in LC bank 1
@ -189,7 +189,7 @@ noramdsk lda RROMWRAMBNK2 read ROM/write RAM bank 2
sty irqv
lda #$01
H21C5 sta irqflag 1 = new roms
H21C5 sta irqflag 1 = new roms
stz cortflag assume not Cortland system
lda cortland running on a Cortland ?
beq H21D5 branch if not.
@ -198,16 +198,16 @@ H21C5 sta irqflag 1 = new roms
* check for a rom in slot 3. if no rom, use internal $C300 firmware
H21D5 sta CLRC3ROM enable internal slot 3 ROM
H21D5 sta CLRC3ROM enable internal slot 3 ROM
lda rommap slot ROM bit map
and #$08 mask all but slot 3
bne isRROMBNK23 taken if rom in slot 3
bne isromin3 taken if rom in slot 3
bra H2247 else continue booting
* found a rom in slot 3. is it an external, identifiable 80 col card
* with interrupt routines? if so, enable it else use internal $C300 firmware.
isRROMBNK23 sta SETC3ROM enable slot 3 rom
isromin3 sta SETC3ROM enable slot 3 rom
lda $C305 check card id bytes
cmp #$38
bne hitswtch not terminal card
@ -244,19 +244,19 @@ hitswtch sta CLRC3ROM enable internal $C300 firmware
lsr
lsr txtp2
cmp txtp2
H2230 sta CLRPAGE2 main memory
.BS *-$2230
H2230 sta CLRPAGE2 main memory
sta CLR80STORE disable 80-col store
beq docard branch if card is there
lda machid machine ID byte
and #$FD clear 80-col bit 2 (no card)
bne H2244 always
docard lda machid
docard lda machid
ora #$02 turn bit 2 on (80-col card is present)
H2244 sta machid
H2247 lda cortland are we running on a //gs ?
H2244 sta machid
H2247 lda cortland are we running on a //gs ?
beq H225D if not.
lda #$4C enable clock routine by putting a jmp
sta clockv in front of clock vector
@ -266,7 +266,7 @@ H2247 lda cortland are we running on a //gs ?
lda #$01 set bit 0 = clock present
tsb machid
H225D lda setuprts get setup entry point flag
H225D lda setuprts get setup entry point flag
beq H2267 taken if normal boot.
lda RROMBNK2 read ROM
rts return to caller at setup entry point.
@ -275,7 +275,7 @@ setuprts .DA #$00 0 = normal boot, <>0 = return
* set prefix to boot device
H2267 jsr MLI online
H2267 jsr MLI online
.DA #MLIONLINE
.DA LDR.MLIONLINE.P
bcs relocerr
@ -299,7 +299,7 @@ H2267 jsr MLI online
ldy #$02 read directory into buffer
lda /DirBlkBuf
H228E sta dst+1
H228E sta dst+1
sta LDR.MLIREADBLOCK.P+4
sty LDR.MLIREADBLOCK.P+5
stx LDR.MLIREADBLOCK.P+6
@ -323,7 +323,7 @@ H228E sta dst+1
cmp /dbuf+$800 until it points past end of buffer.
bcc H228E if ok, read next block.
H22B7 jmp lodintrp jmp to 'licode' (load interpreter)
H22B7 jmp lodintrp jmp to 'licode' (load interpreter)
* relocation/configuration error
@ -332,25 +332,25 @@ relocerr sta RROMBNK2 read ROM
ldy #$1D
.1 lda LDR.MSG.LdrErr,y
.1 lda LDR.MSG.LdrErr,y
sta vline12+4,y
dey
bpl .1
bmi *
LDR.MSG.LdrErr .AS "Relocation/Configuration Error"
LDR.MSG.LdrErr .AS -"Relocation/Configuration Error"
H22EB ldy #$23
.1 lda LDR.MSG.EnhErr,y
.1 lda LDR.MSG.EnhErr,y
sta vline14+2,y
dey
bpl .1
bmi *
LDR.MSG.EnhErr .AS "REQUIRES ENHANCED APPLE IIE OR LATER"
LDR.MSG.EnhErr .AS -"REQUIRES ENHANCED APPLE IIE OR LATER"
LDR.MLIONLINE.P .DA #2
.DA #$60
@ -369,399 +369,400 @@ LDR.MLIREADBLOCK.P
cortland .BS 1 cortland loader flag (1 = Cortland)
newquitflag .BS 1 1 = old quit code
H232B .DA #1 move interpreter loader code
H232B .DA #1 move interpreter loader code
.DA lodintrp destination address
.DA H257B-licode length to move
.DA licode source address
.DA #$01 move $3F0 vectors
.DA p3vect destination
.DA $0010 16 bytes to move
.DA H257B source
.DA #$01
.DA lookptr
.DA $0002
.DA dst
.DA #$01 move 128k test to zero page
.DA tst128 destination
.DA LDR.Test128.Len
.DA LDR.Test128
.HS FF done
.DA H257B-licode length to move
.DA licode source address
.DA #$01 move $3F0 vectors
.DA p3vect destination
.DA $0010 16 bytes to move
.DA H257B source
.DA #$01
.DA lookptr
.DA $0002
.DA dst
.DA #$01 move 128k test to zero page
.DA tst128 destination
.DA LDR.Test128.Len
.DA LDR.Test128
.HS FF done
dsp64 .DA #$01 move p8 dispatcher code
.DA displc2 destination
.DA birdbye-disp1obj length (must be <= 3 pages)
.DA disp1obj source
.HS FF done
dsp64 .DA #$01 move p8 dispatcher code
.DA displc2 destination
.DA birdbye-disp1obj length (must be <= 3 pages)
.DA disp1obj source
.HS FF done
newquitbl .DA #$01 move Bird's Bye code
.DA displc2 dest
.DA GQdisp-birdbye length (must be <= 3 pages)
.DA birdbye source
.HS FF done
newquitbl .DA #$01 move Bird's Bye code
.DA displc2 dest
.DA GQdisp-birdbye length (must be <= 3 pages)
.DA birdbye source
.HS FF done
altdsptbl .DA #$01 move GQuit launcher
.DA displc2 destination
.DA $0300 length (must be <= 3 pages)
.DA GQdisp source
.DA #$01 move a copy of GQuit launcher
.DA dispadr to dispadr for gsos
.DA $0300 length (must be <= 3 pages)
.DA GQdisp source
.HS FF done
.DA displc2 destination
.DA $0300 length (must be <= 3 pages)
.DA GQdisp source
.DA #$01 move a copy of GQuit launcher
.DA dispadr to dispadr for gsos
.DA $0300 length (must be <= 3 pages)
.DA GQdisp source
.HS FF done
* tables for moving 64k version of mli for execution
H2367 .DA #$01 relocation table. 1=move src to dst
.DA lanirq destination
.DA H2E00-H2D9B length to move
.DA H2D9B source
.DA #$01
.DA MLI globals
.DA $0100 in one page
.DA H2E00
.HS 00 0=clear buffers $D700-$DDFF
H2367 .DA #$01 relocation table. 1=move src to dst
.DA lanirq destination
.DA H2E00-H2D9B length to move
.DA H2D9B source
.DA #$01
.DA MLI globals
.DA $0100 in one page
.DA H2E00
.HS 00 0=clear buffers $D700-$DDFF
.DA pathbuf
.DA xdosorg-pathbuf
.DA #$01
.DA xdosorg
.DA ramsrc-xdosobj length of mli
.DA xdosobj
.DA #$01
.DA rwts
.DA disp1obj-blockio length of disk ii driver
.DA blockio
.HS FF done
.DA #$01
.DA xdosorg
.DA ramsrc-xdosobj length of mli
.DA xdosobj
.DA #$01
.DA rwts
.DA disp1obj-blockio length of disk ii driver
.DA blockio
.HS FF done
* move thunderclock
rlclk64 .DA #$01 relocation table. 1=move src to dst
.DA tclk_in destination
.DA tclk_end-tclock_0 length of thunderclock driver
.DA tclock_0 source
.DA #$04 4=relocate and move program
.DA tclk_in
.DA H2F69-tclock_0
.DA tclk_in
.HS 00
.HS C1C1
clock64 .DA #$00
.HS FF done
rlclk64 .DA #$01 relocation table. 1=move src to dst
.DA tclk_in destination
.DA tclk_end-tclock_0 length of thunderclock driver
.DA tclock_0 source
.DA #$04 4=relocate and move program
.DA tclk_in
.DA H2F69-tclock_0
.DA tclk_in
.HS 00
.HS C1C1
clock64 .DA #$00
.HS FF done
* move cortland clock
cortclock .DA #$01 relocation table. 1=move src to dst
.DA tclk_in destination
.DA cclk_end-cclock_0 length of cortland clock driver
.DA cclock_0 source
.HS FF done
.DA tclk_in destination
.DA cclk_end-cclock_0 length of cortland clock driver
.DA cclock_0 source
.HS FF done
* load and run appletalk configuration file (atinit) if present
* or continue loading and running .system file
* loader origin $800
ofsL .EQ *-lodintrp offset from loader org
ofsL .EQ *-lodintrp offset from loader org
licode jsr MLI check for file 'atinit'
licode jsr MLI check for file 'atinit'
.DA #MLIGETFILEINFO
.DA gfi_list
bcc gfi_ok branch if 'atinit' file found
cmp #$46 file not found?
beq H23DF if so, continue loading interpreter
bne H23E2
gfi_ok lda gfi_type
cmp #$E2 is 'atinit' correct file type?
bne H23E2 error - wrong file type
jsr MLI open 'atinit' file
.DA #$C8
.DA atopen parms
bne H23E2 error
lda #$9F max size = 39.75k ($2000-$BF00)
sta rdlen+1
stz rdlen
jsr MLI read 'atinit' file to 'sysentry'
.DA #$CA
.DA rdparm
bne H23E2 error - too big
jsr MLI close 'atinit' file
.DA #$CC
.DA clparm
bne H23E2 error
lda RROMBNK2 enable ROM
jsr sysentry execute ATinit
H23DF jmp goloadint execute .system file
gfi_ok lda gfi_type
cmp #$E2 is 'atinit' correct file type?
bne H23E2 error - wrong file type
jsr MLI open 'atinit' file
.DA #$C8
.DA atopen parms
bne H23E2 error
lda #$9F max size = 39.75k ($2000-$BF00)
sta rdlen+1
stz rdlen
jsr MLI read 'atinit' file to 'sysentry'
.DA #$CA
.DA rdparm
bne H23E2 error - too big
jsr MLI close 'atinit' file
.DA #$CC
.DA clparm
bne H23E2 error
lda RROMBNK2 enable ROM
jsr sysentry execute ATinit
H23DF jmp goloadint execute .system file
* fatal error
H23E2 ldx H23F0
H23E5 lda H23F0,x
H23E2 ldx H23F0
H23E5 lda H23F0,x
sta vline16,x
dex
bne H23E5
beq *
H23F0 .DA #$1A length of message
.AS "Unable to load ATInit file"
.AS -"Unable to load ATInit file"
gfi_list .EQ *-ofsL
.DA #$0A
.DA atinitname
.HS 00
gfi_type .EQ *-ofsL
.HS 00000000
.HS 0000000000000000
.HS 0000
atopen .EQ *-ofsL parms to open 'atinit'
.HS 03
.DA atinitname
.DA iobuf i/o buffer
.HS 01 ref# hard coded since no other files
atinitname .EQ *-ofsL
.DA #06 length of name
.AS "atinit" name of appletalk config file
goloadint .EQ *-ofsL
lda /dbuf search directory buffer
sta idxl+1
lda #$04 start 1 entry past header
bne H2434 always.
H2432 lda idxl calc next entry position
H2434 clc
adc dbuf+35 inc to next entry address
sta idxl
bcs H2451 branch if page cross.
adc dbuf+35 test for end of block.
bcc H2453 branch if not page cross
lda idxl+1
lsr end of block?
bcc H2453 no.
cmp #$09 end of directory?
bne H244D no.
jmp nointrp no interpreter, go quit.
H244D lda #$04 reset index to 1st entry in next block.
sta idxl
H2451 inc idxl+1 inc to next page.
H2453 ldy #$10 check file type.
lda #$FF must be a prodos sys file
eor (idxl),y
bne H2432 if not sys.
tay see if active
lda (idxl),y
beq H2432 if deleted file.
and #$0F strip file 'kind'.
sta pbuf save length of name.
cmp #$08 must be at least 'x.system'
bcc H2432 else, ignore it.
tay compare last 7 chars for '.system'
ldx #$06
H246C lda (idxl),y
eor iterp,x
asl
bne H2432 branch if something else
dey
dex
bpl H246C
ldy #$00
H247A iny
lda (idxl),y
sta pbuf,y
ora #$80 msb on so can be displayed if error
sta iomess+$11,y
cpy pbuf
bne H247A
lda #$A0 space after name
sta iomess+$12,y
tya error message length
adc #$13 (carry set)
sta ierlen
jsr MLI open interpreter file
.DA #$C8
.DA opparm
bne badlod
jsr MLI get eof (length of file)
.DA #$D1
.DA efparm
bne badlod
lda eof+2
bne toolong
lda eof+1
cmp #$9F max size = 39.75k ($2000-$BF00)
bcs toolong
sta rdlen+1
lda eof
sta rdlen (read entire file)
jsr MLI read interpreter file
.DA #$CA
.DA rdparm
beq H24C8 go close if successfully read.
cmp #$56 memory conflict?
beq toolong then too large
bne badlod else, unable to load.
H24C8 jsr MLI close interpreter file
.DA #$CC
.DA clparm
bne badlod hopefully never taken
gfi_list .EQ *-ofsL
.DA #$0A
.DA atinitname
.HS 00
gfi_type .EQ *-ofsL
.HS 00000000
.HS 0000000000000000
.HS 0000
atopen .EQ *-ofsL parms to open 'atinit'
.HS 03
.DA atinitname
.DA iobuf i/o buffer
.HS 01 ref# hard coded since no other files
atinitname .EQ *-ofsL
.DA #06 length of name
.AS -"atinit" name of appletalk config file
goloadint .EQ *-ofsL
lda /dbuf search directory buffer
sta idxl+1
lda #$04 start 1 entry past header
bne H2434 always.
H2432 lda idxl calc next entry position
H2434 clc
adc dbuf+35 inc to next entry address
sta idxl
bcs H2451 branch if page cross.
adc dbuf+35 test for end of block.
bcc H2453 branch if not page cross
lda idxl+1
lsr end of block?
bcc H2453 no.
cmp #$09 end of directory?
bne H244D no.
jmp nointrp no interpreter, go quit.
H244D lda #$04 reset index to 1st entry in next block.
sta idxl
H2451 inc idxl+1 inc to next page.
H2453 ldy #$10 check file type.
lda #$FF must be a prodos sys file
eor (idxl),y
bne H2432 if not sys.
tay see if active
lda (idxl),y
beq H2432 if deleted file.
and #$0F strip file 'kind'.
sta pbuf save length of name.
cmp #$08 must be at least 'x.system'
bcc H2432 else, ignore it.
tay compare last 7 chars for '.system'
ldx #$06
H246C lda (idxl),y
eor iterp,x
asl
bne H2432 branch if something else
dey
dex
bpl H246C
ldy #$00
H247A iny
lda (idxl),y
sta pbuf,y
ora #$80 msb on so can be displayed if error
sta iomess+$11,y
cpy pbuf
bne H247A
lda #$A0 space after name
sta iomess+$12,y
tya error message length
adc #$13 (carry set)
sta ierlen
jsr MLI open interpreter file
.DA #$C8
.DA opparm
bne badlod
jsr MLI get eof (length of file)
.DA #$D1
.DA efparm
bne badlod
lda eof+2
bne toolong
lda eof+1
cmp #$9F max size = 39.75k ($2000-$BF00)
bcs toolong
sta rdlen+1
lda eof
sta rdlen (read entire file)
jsr MLI read interpreter file
.DA #$CA
.DA rdparm
beq H24C8 go close if successfully read.
cmp #$56 memory conflict?
beq toolong then too large
bne badlod else, unable to load.
H24C8 jsr MLI close interpreter file
.DA #$CC
.DA clparm
bne badlod hopefully never taken
* if booting on a //c then see if esc is in keyboard buffer
* and clear it. it may have been pressed to shift speed
* of accelerator chip
lda cflag
beq H24DF taken if not booting on a //c
lda kbd else, check for keypress
cmp #$9B escape?
bne H24DF if not.
sta KBDSTROBE clear keyboard
H24DF lda RROMBNK2 enable ROM
jmp sysentry go run interpreter
cflag .EQ *-ofsL
.HS 00 set if a //c.
nointrp .EQ *-ofsL no interpreter found,
jsr MLI so quit.
.DA #$65
.DA quitparm
badlod ldy ierlen center the error message
lda #$27
sec
sbc ierlen
lsr
adc ierlen
tax
H24FA lda iomess,y
sta vline16,x
dex
dey
bpl H24FA
bmi H2511
toolong ldy #$1E
H2508 lda lgmess,y
sta vline16+5,y
dey
bpl H2508
H2511 bmi H2511
lgmess .EQ *-ofsL
.AS "** System program too large **"
iomess .EQ *-ofsL
.AS "** Unable to load"
.AS " X.System *********"
ierlen .EQ *-ofsL
.HS 00
opparm .EQ *-ofsL parms for open call
.HS 03
.DA pbuf
.DA iobuf
.HS 01
efparm .EQ *-ofsL parms for get eof call
.HS 02
.DA #01
eof .EQ *-ofsL
.HS 000000 length of file.
rdparm .EQ *-ofsL parms for read call
.HS 04
.HS 01
.DA sysentry
rdlen .EQ *-ofsL
.HS 0000
.HS 0000
clparm .EQ *-ofsL parms for close call
.HS 01
.HS 00
quitparm .EQ *-ofsL parms for quit call
.HS 04
.HS 00
.HS 0000
.HS 00
.HS 0000
iterp .EQ *-ofsL interpreter suffix that is required
.AS ".SYSTEM"
lda cflag
beq H24DF taken if not booting on a //c
lda kbd else, check for keypress
cmp #$9B escape?
bne H24DF if not.
sta KBDSTROBE clear keyboard
H24DF lda RROMBNK2 enable ROM
jmp sysentry go run interpreter
cflag .EQ *-ofsL
.HS 00 set if a //c.
nointrp .EQ *-ofsL no interpreter found,
jsr MLI so quit.
.DA #$65
.DA quitparm
badlod ldy ierlen center the error message
lda #$27
sec
sbc ierlen
lsr
adc ierlen
tax
H24FA lda iomess,y
sta vline16,x
dex
dey
bpl H24FA
bmi H2511
toolong ldy #$1E
H2508 lda lgmess,y
sta vline16+5,y
dey
bpl H2508
H2511 bmi H2511
lgmess .EQ *-ofsL
.AS -"** System program too large **"
iomess .EQ *-ofsL
.AS -"** Unable to load"
.AS -" X.System *********"
ierlen .EQ *-ofsL
.HS 00
opparm .EQ *-ofsL parms for open call
.HS 03
.DA pbuf
.DA iobuf
.HS 01
efparm .EQ *-ofsL parms for get eof call
.HS 02
.DA #01
eof .EQ *-ofsL
.HS 000000 length of file.
rdparm .EQ *-ofsL parms for read call
.HS 04
.HS 01
.DA sysentry
rdlen .EQ *-ofsL
.HS 0000
.HS 0000
clparm .EQ *-ofsL parms for close call
.HS 01
.HS 00
quitparm .EQ *-ofsL parms for quit call
.HS 04
.HS 00
.HS 0000
.HS 00
.HS 0000
iterp .EQ *-ofsL interpreter suffix that is required
.AS -".SYSTEM"
* 16 bytes moved to $03F0 vectors
H257B .DA breakv
.DA oldrst
.DA #$5A powerup byte
jmp oldrst '&' vector
jmp oldrst ctrl-y vector
.HS 004000
.DA irqent global page interrupt vector
lc1in lda RRAMWRAMBNK1 read/write language card RAM bank 1
lda RRAMWRAMBNK1
rts
.DA oldrst
.DA #$5A powerup byte
jmp oldrst '&' vector
jmp oldrst ctrl-y vector
.HS 004000
.DA irqent global page interrupt vector
lc1in lda RRAMWRAMBNK1 read/write language card RAM bank 1
lda RRAMWRAMBNK1
rts
* determine which system model and save in machine id (idapple)
whchrom stz idapple assume standard apple //
ldx version check hardware id
cpx #$38 is it apple // (autostart rom)?
beq H25BE if yes
lda #$80
cpx #$06 apple //e?
beq H25BC if yes
lda #$40
cpx #$EA apple //+?
bne H25B6 it not, then machine is unknown.
ldx $FB1E apple /// in emulation?
cpx #$AD
beq H25BC taken if apple //+.
lda #$D0 test again for apple /// emulation
cpx #$8A because will only have 48k memory.
bne H25B6 if taken, then machine is unknown.
H25B4 sec apple /// emulation is not allowed
rts because insufficient memory.
H25B6 lda #$02 machine unknown
sta (dst),y
bne H25D9 always.
H25BC sta idapple save machine id
whchrom stz idapple assume standard apple //
ldx version check hardware id
cpx #$38 is it apple // (autostart rom)?
beq H25BE if yes
lda #$80
cpx #$06 apple //e?
beq H25BC if yes
lda #$40
cpx #$EA apple //+?
bne H25B6 it not, then machine is unknown.
ldx $FB1E apple /// in emulation?
cpx #$AD
beq H25BC taken if apple //+.
lda #$D0 test again for apple /// emulation
cpx #$8A because will only have 48k memory.
bne H25B6 if taken, then machine is unknown.
H25B4 sec apple /// emulation is not allowed
rts because insufficient memory.
H25B6 lda #$02 machine unknown
sta (dst),y
bne H25D9 always.
H25BC sta idapple save machine id
* check for language card ram
H25BE jsr lc1in switch in language card bank 1
lda #$AA
sta $D000
eor $D000 if LC present, result = 0.
bne H25B4 othewise, insufficient memory.
lsr $D000 check lc again
lda #$55
eor $D000
bne H25B4 not sufficent memory.
lda #$20 LC ram is available
ora idapple
H25D9 jmp tst128 jumps to page 0 routine below
H25BE jsr lc1in switch in language card bank 1
lda #$AA
sta $D000
eor $D000 if LC present, result = 0.
bne H25B4 othewise, insufficient memory.
lsr $D000 check lc again
lda #$55
eor $D000
bne H25B4 not sufficent memory.
lda #$20 LC ram is available
ora idapple
H25D9 jmp tst128 jumps to page 0 routine below
* test for 128k. use page 0 for this routine
LDR.Test128 sta idapple H25DC-2621 was moved to location tst128
bpl not128 if already determined < 128k
lda #$EE
sta SETWRITEAUX write to aux mem while on main zp
sta SETREADAUX and read aux mem.
sta dbuf write these locs just to test aux mem
sta lodintrp 1k apart from each other.
lda dbuf
cmp #$EE
bne noaux
asl dbuf may be sparse mem mapping so
asl change value and see what happens.
cmp dbuf
bne noaux branch if not sparse mapping.
cmp lodintrp
bne H2606 if not sparse.
noaux sec no aux memory available.
bcs H2607
H2606 clc
H2607 sta CLRWRITEAUX switch back to main memory
sta CLRREADAUX
bcs not128 if < 128k
lda idapple
ora #$30 set id = 128k present
sta idapple
not128 lda lookptr+1
sec
sbc #$05
sta lookptr+1
bcs H2620
dec lookptr
H2620 clc
rts
LDR.Test128 sta idapple H25DC-2621 was moved to location tst128
bpl not128 if already determined < 128k
lda #$EE
sta SETWRITEAUX write to aux mem while on main zp
sta SETREADAUX and read aux mem.
sta dbuf write these locs just to test aux mem
sta lodintrp 1k apart from each other.
lda dbuf
cmp #$EE
bne noaux
asl dbuf may be sparse mem mapping so
asl change value and see what happens.
cmp dbuf
bne noaux branch if not sparse mapping.
cmp lodintrp
bne H2606 if not sparse.
noaux sec no aux memory available.
bcs H2607
H2606 clc
H2607 sta CLRWRITEAUX switch back to main memory
sta CLRREADAUX
bcs not128 if < 128k
lda idapple
ora #$30 set id = 128k present
sta idapple
not128 lda lookptr+1
sec
sbc #$05
sta lookptr+1
bcs H2620
dec lookptr
H2620 clc
rts
LDR.Test128.len .EQ *-LDR.Test128
MAN
SAVE USR/SRC/PRODOS.203/PRODOS.S.LDR.A

File diff suppressed because it is too large Load Diff

View File

@ -305,7 +305,7 @@ BITMAP .EQ *-ofsR0
.HS FFFFFFFE
VDIR .EQ *-ofsR0 start of vdir.
.HS F3 storage type = F, name length = 3
.AS "RAM"
.AS -"RAM"
access .EQ *-ofsR0
.DA #$C3 destroy, rename, read enabled
.HS 27 entry length

View File

@ -18,7 +18,7 @@ ofsQ .EQ *-dispadr offset to GQuit dispatcher org
GQdisp lda RRAMWRAMBNK1 read/write LC bank 1
clc
xce 16 bit native mode.
jmp >P8QUIT go to GQuit.
jmp P8QUIT go to GQuit.
.DA #0000000000 offset to paragraph boundary.
.AS "GQ" id bytes so GQuit can identify this

View File

@ -4,9 +4,9 @@ NEW
*
* allocate buffer in memory tables
alcbuffr .EQ *-ofsX
alcbuffr .EQ *-ofsX
ldy #$04 index to user specified buffer.
alcbufr1 .EQ *-ofsX
alcbufr1 .EQ *-ofsX
lda (A3L),y this buffer must be on a page boundary.
tax save for validation.
cmp #$08
@ -22,7 +22,7 @@ alcbufr1 .EQ *-ofsX
inx
inx
inx
L4DED dex test for conflicts.
L4DED dex test for conflicts.
jsr cmembit test for free buffer space
and memmap,y P8 memory bitmap
bne L4E1E report memory conflict, if any.

View File

@ -1,15 +1,15 @@
NEW
AUTO 3,1
.LIST OFF
.OP 65816
.OR $0000
.TF PRODOS203,TSYS
.LIST OFF
.OP 65816
.OR $0000
.TF PRODOS203,TSYS
*--------------------------------------
.INB INC/ZP.I
.INB INC/IO.I
.INB INC/MONITOR.I
.INB INC/MLI.I
.INB INC/MLI.E.I
.INB INC/ZP.I
.INB INC/IO.I
.INB INC/MONITOR.I
.INB INC/MLI.I
.INB INC/MLI.E.I
*--------------------------------------
MMStartUp .EQ $0202
NewHandle .EQ $0902
@ -20,10 +20,12 @@ MMShutDown .EQ $0303
ReadTimeHex .EQ $0D03
Int2Hex .EQ $220B
TLTextMountVolume .EQ $1201
*--------------------------------------
.MA IIGS
ldx ##]1
jsl $E10000
.EM
*--------------------------------------
P8QUIT .EQ $E0D000
GSOS .EQ $E100A8
GSOS2 .EQ $E100B0
@ -156,7 +158,7 @@ lcdest .EQ $FF00
* $5D00 sel_1 enhanced quit code (Bird's Better Bye)
* $6000 sel_2 GQuit dispatcher support
.PH $2000
.PH $2000
.INB USR/SRC/PRODOS.203/PRODOS.S.LDR.A
.INB USR/SRC/PRODOS.203/PRODOS.S.LDR.B
@ -179,7 +181,7 @@ lcdest .EQ $FF00
.INB USR/SRC/PRODOS.203/PRODOS.S.SEL1
.INB USR/SRC/PRODOS.203/PRODOS.S.SEL2
.EP
.EP
*--------------------------------------
MAN
SAVE USR/SRC/PRODOS.203/PRODOS.S