Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-09-12 08:39:47 +02:00
parent a35dde3f8d
commit 5d0ce8f1e4
21 changed files with 347 additions and 227 deletions

Binary file not shown.

View File

@ -16,8 +16,8 @@ CLRCXROM .EQ $C006 W
SETCXROM .EQ $C007 W
CLRALTZP .EQ $C008 W
SETALTZP .EQ $C009 W
*CLRC3ROM .EQ $C00A W
*SETC3ROM .EQ $C00B W
CLRC3ROM .EQ $C00A W
SETC3ROM .EQ $C00B W
CLR80DISP .EQ $C00C W
SET80DISP .EQ $C00D W
CLRALTCHAR .EQ $C00E W
@ -39,6 +39,7 @@ RDHIRES .EQ $C01D R
RDALTCHAR .EQ $C01E R
RD80DISP .EQ $C01F R
*TAPEOUT .EQ $C020 W
newvideo .EQ $C029 video mode select
SPEAKER .EQ $C030 W, toggle speaker diaphragm
*STROBE .EQ $C040 R, generate .5 uS low pulse @ Game pin 5
*RDVBLIIC .EQ $C05A R, VBL switch Status (IIc)
@ -78,6 +79,7 @@ SOLIDAPPLE .EQ $C062 R
*PADDLE1 .EQ $C065 R, bit 7 = status of pdl-1 timer
*PADDLE2 .EQ $C066 R, bit 7 = status of pdl-2 timer
*PADDLE3 .EQ $C067 R, bit 7 = status of pdl-3 timer
statereg .EQ $C068 memory state register
*PDLTRIG .EQ $C070 W, trigger paddles
SETIOUDIS .EQ $C07E W, enable DHIRES & disable $C058-5F
@ -85,7 +87,7 @@ RDIOUDIS .EQ $C07E R, bit 7 = IOUDIS status
CLRIOUDIS .EQ $C07F W, disable DHIRES & enable $C058-5F
*--------------------------------------
*RRAMBNK2 .EQ $C080 R
*RROMWRAMBNK2 .EQ $C081 RR
RROMWRAMBNK2 .EQ $C081 RR
RROMBNK2 .EQ $C082 R
RRAMWRAMBNK2 .EQ $C083 RR
*RRAMBNK1 .EQ $C088 R
@ -93,6 +95,6 @@ RRAMWRAMBNK2 .EQ $C083 RR
RROMBNK1 .EQ $C08A R
RRAMWRAMBNK1 .EQ $C08B RR
*--------------------------------------
*CLRC8ROM .EQ $CFFF R, Release C800-CFFF Rom Space for all cards
CLRC8ROM .EQ $CFFF R, Release C800-CFFF Rom Space for all cards
MAN
SAVE INC/IO.I

View File

@ -27,13 +27,18 @@ SCRN .EQ $F871 READ LORES SCREEN COLOR
PRNTAX .EQ $F941 OUTPUT A THEN X. AS HEX
PRBLNK .EQ $F948 OUTPUT 3 SPACES VIA BOOKS
PRBL2 .EQ $F94A OUTPUT X BLANKS VIA HOOKS
romirq .EQ $FA41 monitor irq entry
breakv .EQ $FA59 monitor break vector
resetv .EQ $FA62 monitor reset entry
REGDSP .EQ $FAD7 DISPLAY WORKING REGISTERS
PREAD .EQ $FB1E READ GAME PADDLE X
INIT .EQ $FB2F INITIALIZE TEXT SCREEN
SETTXT .EQ $FB93 SET UP TEXT SCREEN (NOT 2E!)
SETGR .EQ $FB40 SET UP GRAPHICS SCREEN
SETWND .EQ $FB4B SET NORMAL TEXT WINDOW
TABV .EQ $FB5B
SETPWRC .EQ $FB6F
version .EQ $FBB3 monitor ROM id byte
BASCALC .EQ $FBC1 CALCULATE TEXT BASE ADDRESS (NOT 2E!}
BELL1 .EQ $FBD9 BEEP SPEAKER IF CTRL-G
BELL2 .EQ $FBE4 BEEP SPEAKER ONCE
@ -49,7 +54,7 @@ HOME .EQ $FC58 CLEAR TEXT SCREEN AND HOME CURSOR
CR .EQ $FC62 CARRIAGE RETURN TO SCREEN
LF .EQ $FC66 LINEFEED TO SCREEN ONLY
SCROLL .EQ $FC70 SCROLL TEXT SCREEN UP ONE
CLEOL .EQ $FC9C CLEAR TEXT TO END OF LINE
CLREOL .EQ $FC9C CLEAR TEXT TO END OF LINE
WAIT .EQ $FCA8 TIME DELAY SET BY ACCUMULATOR
RDKEY .EQ $FD0C GET INPUT CHARACTER VIA HOOKS
KEYIN .EQ $FD1B READ THE APPLE KEYBOARD
@ -64,12 +69,14 @@ PRBYTE .EQ $FDDA OUTPUT FULL A IN HEX TO HOOKS
PRHEX .EQ $FDE3 OUTPUT LOW A IN HEX TO HOOKS
COUT .EQ $FDED OUTPUT CHARACTER VIA HOOKS
COUTl .EQ $FDF0 OUTPUT CHARACTER TO SCREEN
idroutine .EQ $FE1F returns system info
MOVE .EQ $FE2C MOVE BLOCK OF MEMORY
VERIFY .EQ $FE36 VERIFY BLOCK OF MEMORY
LIST .EQ $FE5E DISASSEMBLE 20 INSTRUCTIONS
LIST2 .EQ $FE63 DISASSEMBLE •A• INSTRUCTIONS
SETINV .EQ $FE80 PRINT INVERSE TEXT TO SCREEN
SETNORM .EQ $FE84 PRINT NORMAL TEXT TO SCREEN
SETKBD .EQ $FE93 GRAB INPUT HOOKS FOR KEYBOARD
SETVID .EQ $FE93 GRAB OUTPUT HOOKS FOR SCREEN
XBASIC .EQ $FEB0 GO BASIC, DESTROYING OLD
BASCON .EQ $FEB3 GO BASIC, CONTINUING OLD

View File

@ -712,7 +712,7 @@ wrefa2 .EQ *-ofsD
beq L58C0 (2+) branch if code written was page aligned.
lda A2H (3) get byte address of last byte to be written.
beq L58B3 (2+) branch if only 1 byte left to write.
lsr (2) test for odd or even last byte (carry set/clear)
lsr (2) test for odd or even last byte (carry set/clear)
lda pch (3) restore nibl to acc.
sta q6h,x (5)
lda q6l,x (4)

View File

@ -3,7 +3,7 @@ NEW
* object code = mli_1
* global page
ofsG .EQ H2E00-MLI offset to global org
ofsG .EQ $E00-MLI offset to global org
H2E00 jmp mlient1 $2E00-2EFF moved to $BF00
jspare .EQ *-ofsG
@ -16,7 +16,7 @@ p8errv .EQ *-ofsG error reporting hook.
sysdeath .EQ *-ofsG
jmp sysdeath1 system failure hook.
p8error .EQ *-ofsG P8 error code
.DA #0
.DA #0
drivertbl1 .EQ *-ofsG device driver table 1
.DA nodevice
.DA nodevice
@ -35,7 +35,7 @@ drivertbl2 .EQ *-ofsG device driver table 2
.DA nodevice
.DA nodevice
.DA nodevice
devnum .EQ *-ofsG most recent accessed device
*devnum .EQ *-ofsG most recent accessed device
.DA #0
numdevs .EQ *-ofsG count (-1) active devices
.DA #$ff
@ -50,7 +50,7 @@ mlient1 .EQ *-ofsG
sei
jmp mlicont
aftirq .EQ *-ofsG irq returns here.
sta ramin read/write RAM bank 1
sta RRAMWRAMBNK1 read/write RAM bank 1
jmp fix45 restore $45 after interrupt in LC
oldacc .EQ *-ofsG
.DA #0
@ -114,7 +114,7 @@ spare1 .EQ *-ofsG used to save acc
.DA #0
newpfxptr .EQ *-ofsG appletalk alternate prefix ptr
.DA #0
machid .EQ *-ofsG machine ID byte
*machid .EQ *-ofsG machine ID byte
.DA #0
rommap .EQ *-ofsG slot ROM bit map
.DA #0
@ -133,14 +133,14 @@ mliy .EQ *-ofsG MLI Y register savearea
* workstation software patches this area
HBFA0 .EQ *-ofsG
eor $E000 test for rom enable
GP.HBFA0 eor $E000 test for rom enable
beq .1 taken if ram enabled
sta romin read ROM
sta RROMBNK2 read ROM
bne .2 always
.1 lda bnkbyt2 for alternate ram
eor $D000 test
beq .2 branch if not alternate ram
lda altram else enable alt $D000
lda RRAMWRAMBNK2 else enable alt $D000
.2 pla return code
rti re-enable interrupts and return
@ -151,32 +151,32 @@ mlicont .EQ *-ofsG
sta bnkbyt1 for proper restoration when mli exits.
lda $D000
sta bnkbyt2
lda ramin force ram card on
lda ramin with write allowed
lda RRAMWRAMBNK1 force ram card on
lda RRAMWRAMBNK1 with write allowed
jmp xdosmli
irqexit .EQ *-ofsG
lda bankid determine state of ram card (ROM/RAM)
irqxit0 .EQ *-ofsG
beq .2 branch if ram card enabled.
GP.irqxit0 beq .2 branch if ram card enabled.
bmi .1 branch if alternate $D000 enabled.
lsr determine if no ram card present.
bcc .3 branch if rom only system.
lda romin1 enable rom
lda RROMWRAMBNK2 enable rom
bcs .3 always taken
.1 lda altram enable alternate $D000
.2 lda #$01 preset bankid for rom.
.1 lda RRAMWRAMBNK2 enable alternate $D000
.2 lda #$01 preset bankid for rom.
sta bankid (reset if ram card interrupt)
.3 lda p8areg restore acc
rti exit
irqent .EQ *-ofsG this entry only used when rom
bit ramin was enabled at time of interrupt.
bit ramin
bit RRAMWRAMBNK1 was enabled at time of interrupt.
bit RRAMWRAMBNK1
jmp irqrecev
bnkbyt1 .EQ *-ofsG

View File

@ -33,7 +33,7 @@ H2DC2 lda /romirq setup ROM re-entry
lda #romirq
pha
gorom .EQ *-ofsR2
sta romin hits ROM rts at $FFCB
sta RROMBNK2 hits ROM rts at $FFCB
* 'lreset' address must = $FFCB for rom switch i/o to work
@ -49,8 +49,8 @@ fix45 .EQ *-ofsR2
sta p8areg A register savearea
lda oldacc
sta accsav
lda ramin read/write RAM bank 1
lda ramin
lda RRAMWRAMBNK1 read/write RAM bank 1
lda RRAMWRAMBNK1
lda afbank
jmp irqxit0
stypfx .EQ *-ofsR2 fix appletalk PFI bug

View File

@ -10,8 +10,10 @@ LDR.MSG.AppleII .AS "Apple II"
LDR.MSG.ProDOS .AS "ProDOS 8 V2.0.3 "
.AS "06-May-93"
H202F .AS " "
H203B .AS "Copyright Apple Computer, Inc., 1983-93"
H2062 .AS "All Rights Reserved."
LDR.MSG.Copyright
.AS "Copyright Apple Computer, Inc., 1983-93"
LDR.MSG.Reserved
.AS "All Rights Reserved."
p16start inc setuprts set = 2 for GQuit rts
atalkset inc setuprts set = 1 for appletalk rts
@ -50,7 +52,7 @@ prostart lda unitnum
lda kversion
bne m48k still not.
lda romin read ROM
lda RROMBNK2 read ROM
jsr whchrom get preliminary system config
bcs m48k machine too small
lda idapple
@ -69,7 +71,7 @@ m64k ldx #H2367 yx=2367 relocation table
H20CE bcc H20D3
jmp relocerr
H20D3 lda romin read ROM
H20D3 lda RROMBNK2 read ROM
ldx version ROM id byte
cpx #$06
bne H211D then it's a //e
@ -94,7 +96,7 @@ mach2 inc cflag //c or later
set7 ora #$80
H20FD sta idapple
lda romin read ROM
lda RROMBNK2 read ROM
sec
jsr idroutine returns system info
bcs H211D branch if // family
@ -127,8 +129,8 @@ H2139 bcs H20CE
sta jspare+1 P8 system death vector
lda /calldisp
sta jspare+2
lda altram read/write RAM bank 2
lda altram
lda RRAMWRAMBNK2 read/write RAM bank 2
lda RRAMWRAMBNK2
ldx #altdsptbl GQuit dispatcher
ldy /altdsptbl
lda setuprts
@ -162,29 +164,29 @@ H216E jsr reloc
php save interrupt status
pla in acc.
sei no interrupts.
sta setaltzp use alt zero page/stack
sta SETALTZP use alt zero page/stack
stx auxsp init aux sp to $FF
sta setstdzp use main zero page/stack
sta SETALTZP use main zero page/stack
pha restore interrupt status
plp
sta int3rom enable internal slot 3 ROM
sta CLRC3ROM enable internal slot 3 ROM
jsr H2C80 install ram disk
* check interrupt vector to determine ROM version
noramdsk lda romin1 read ROM/write RAM bank 2
noramdsk lda RROMWRAMBNK2 read ROM/write RAM bank 2
ldy irqv interrupt vector
ldx irqv+1 x = high byte
jsr lc1in set language card bank 1 to r/w
cpx #$D0 is it > $D000 (old roms)
lda #$00
bcs H21C5 branch if old roms
sta setaltzp use alt zero page/stack
sta SETALTZP use alt zero page/stack
lda #$FF set aux sp = $FF
sta auxsp
stx irqv+1 interrupt vector
sty irqv save irq vector in aux lc
sta setstdzp use main zero page/stack
sta SETALTZP use main zero page/stack
stx irqv+1 save irq vector in main lc
sty irqv
lda #$01
@ -198,26 +200,26 @@ H21C5 sta irqflag 1 = new roms
* check for a rom in slot 3. if no rom, use internal $C300 firmware
H21D5 sta int3rom 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 isromin3 taken if rom in slot 3
bne isRROMBNK23 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.
isromin3 sta slot3rom enable slot 3 rom
lda slot3id1 check card id bytes
isRROMBNK23 sta SETC3ROM enable slot 3 rom
lda $C305 check card id bytes
cmp #$38
bne hitswtch not terminal card
lda slot3id2
lda $C307
cmp #$18
bne hitswtch
lda slot3id3
lda $C30B
cmp #$01
bne hitswtch
lda ext80col is it an apple 80 col compatible card?
lda $C30C is it an apple 80 col compatible card?
and #$F0
cmp #$80
bne hitswtch if not.
@ -229,12 +231,12 @@ isromin3 sta slot3rom enable slot 3 rom
cmp #$2C does card have an interrupt handler?
beq docard yes
hitswtch sta int3rom enable internal $C300 firmware
hitswtch sta CLRC3ROM enable internal $C300 firmware
* verify that the card in aux slot is actually present
sta store80on enable 80-col store
sta txtpage2 switch in text page 2
sta SET80STORE enable 80-col store
sta SETPAGE2 switch in text page 2
lda #$EE
sta txtp2
asl
@ -245,8 +247,8 @@ hitswtch sta int3rom enable internal $C300 firmware
lsr txtp2
cmp txtp2
H2230 sta txtpage1 main memory
sta store80off disable 80-col store
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)
@ -268,7 +270,7 @@ H2247 lda cortland are we running on a //gs ?
H225D lda setuprts get setup entry point flag
beq H2267 taken if normal boot.
lda romin read ROM
lda RROMBNK2 read ROM
rts return to caller at setup entry point.
setuprts .DA #$00 0 = normal boot, <>0 = return
@ -280,14 +282,14 @@ H2267 jsr MLI online
.DA LDR.MLIONLINE.P
bcs relocerr
lda PrefixBuf+1 get volume name length.
lda pbuf+1 get volume name length.
and #$0F strip devnum
beq relocerr
inc add 1 for leading '/'
sta PrefixBuf save prefix length.
sta pbuf save prefix length.
lda #'/' place leading '/' in prefix buffer
sta PrefixBuf+1
sta pbuf+1
jsr MLI set prefix
.DA #MLISETPREFIX
@ -295,11 +297,11 @@ H2267 jsr MLI online
bcs relocerr
tax =0
stx ZP.DstPtr
stx dst
ldy #$02 read directory into buffer
lda /DirBlkBuf
H228E sta ZP.DstPtr+1
H228E sta dst+1
sta LDR.MLIREADBLOCK.P+4
sty LDR.MLIREADBLOCK.P+5
stx LDR.MLIREADBLOCK.P+6
@ -310,14 +312,14 @@ H228E sta ZP.DstPtr+1
bcs relocerr
ldy #$03 get next block# from link
lda (ZP.DstPtr),y
lda (dst),y
tax
dey
ora (ZP.DstPtr),y if both bytes are the same
ora (dst),y if both bytes are the same
beq H22B7 then no more blocks of directory.
lda (ZP.DstPtr),y
lda (dst),y
tay
lda ZP.DstPtr+1
lda dst+1
clc
adc #$02 add $200 to buffer pointer
cmp /dbuf+$800 until it points past end of buffer.
@ -327,7 +329,7 @@ H22B7 jmp lodintrp jmp to 'licode' (load interpreter)
* relocation/configuration error
relocerr sta romin read ROM
relocerr sta RROMBNK2 read ROM
jsr home
ldy #$1D
@ -354,11 +356,11 @@ LDR.MSG.EnhErr .AS "REQUIRES ENHANCED APPLE IIE OR LATER"
LDR.MLIONLINE.P .DA #2
.DA #$60
.DA PrefixBuf+1
.DA pbuf+1
LDR.MLISETPREFIX.P
.DA #1
.DA PrefixBuf
.DA pbuf
LDR.MLIREADBLOCK.P
.DA #3
@ -380,24 +382,24 @@ H232B .DA #1 move interpreter loader code
.DA #$01
.DA lookptr
.DA $0002
.DA ZP.DstPtr
.DA dst
.DA #$01 move 128k test to zero page
.DA tst128 destination
.DA H2622-H25DC length
.DA H25DC source
.DA #FF done
.HS FF done
dsp64 .DA #$01 move p8 dispatcher code
.DA displc2 destination
.DA birdbye-disp1obj length (must be <= 3 pages)
.DA disp1obj source
.DA #FF done
.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
.DA #FF done
.HS FF done
altdsptbl .DA #$01 move GQuit launcher
.DA displc2 destination
@ -407,11 +409,11 @@ altdsptbl .DA #$01 move GQuit launcher
.DA dispadr to dispadr for gsos
.DA $0300 length (must be <= 3 pages)
.DA GQdisp source
.DA #FF done
.HS FF done
* tables for moving 64k version of mli for execution
H2367 .DA #$01 relocation table. 1=move src to ZP.DstPtr
H2367 .DA #$01 relocation table. 1=move src to dst
.DA lanirq destination
.DA H2E00-H2D9B length to move
.DA H2D9B source
@ -430,11 +432,11 @@ H2367 .DA #$01 relocation table. 1=move src to ZP.DstPtr
.DA rwts
.DA disp1obj-blockio length of disk ii driver
.DA blockio
.DA #FF done
.HS FF done
* move thunderclock
rlclk64 .DA #$01 relocation table. 1=move src to ZP.DstPtr
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
@ -445,15 +447,15 @@ rlclk64 .DA #$01 relocation table. 1=move src to ZP.DstPtr
.HS 00
.HS C1C1
clock64 .DA #$00
.DA #FF done
.HS FF done
* move cortland clock
cortclock .DA #$01 relocation table. 1=move src to ZP.DstPtr
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
.DA #FF done
.HS FF done
* load and run appletalk configuration file (atinit) if present
* or continue loading and running .system file
@ -487,7 +489,7 @@ gfi_ok lda gfi_type
.DA #$CC
.DA clparm
bne H23E2 error
lda romin enable ROM
lda RROMBNK2 enable ROM
jsr sysentry execute ATinit
H23DF jmp goloadint execute .system file
@ -548,7 +550,7 @@ H2453 ldy #$10 check file type.
lda (idxl),y
beq H2432 if deleted file.
and #$0F strip file 'kind'.
sta PrefixBuf save length of name.
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'
@ -563,10 +565,10 @@ H246C lda (idxl),y
ldy #$00
H247A iny
lda (idxl),y
sta PrefixBuf,y
sta pbuf,y
ora #$80 msb on so can be displayed if error
sta iomess+$11,y
cpy PrefixBuf
cpy pbuf
bne H247A
lda #$A0 space after name
sta iomess+$12,y
@ -610,8 +612,8 @@ H24C8 jsr MLI close interpreter file
lda kbd else, check for keypress
cmp #$9B escape?
bne H24DF if not.
sta kbdstrobe clear keyboard
H24DF lda romin enable ROM
sta KBDSTROBE clear keyboard
H24DF lda RROMBNK2 enable ROM
jmp sysentry go run interpreter
cflag .EQ *-ofsL
.HS 00 set if a //c.
@ -647,7 +649,7 @@ ierlen .EQ *-ofsL
.HS 00
opparm .EQ *-ofsL parms for open call
.HS 03
.DA PrefixBuf
.DA pbuf
.DA iobuf
.HS 01
efparm .EQ *-ofsL parms for get eof call
@ -683,8 +685,8 @@ H257B .DA breakv
jmp oldrst ctrl-y vector
.HS 004000
.DA irqent global page interrupt vector
lc1in lda ramin read/write language card RAM bank 1
lda ramin
lc1in lda RRAMWRAMBNK1 read/write language card RAM bank 1
lda RRAMWRAMBNK1
rts
* determine which system model and save in machine id (idapple)
@ -699,7 +701,7 @@ whchrom stz idapple assume standard apple //
lda #$40
cpx #$EA apple //+?
bne H25B6 it not, then machine is unknown.
ldx HFB1E apple /// in emulation?
ldx $FB1E apple /// in emulation?
cpx #$AD
beq H25BC taken if apple //+.
lda #$D0 test again for apple /// emulation
@ -708,7 +710,7 @@ whchrom stz idapple assume standard apple //
H25B4 sec apple /// emulation is not allowed
rts because insufficient memory.
H25B6 lda #$02 machine unknown
sta (ZP.DstPtr),y
sta (dst),y
bne H25D9 always.
H25BC sta idapple save machine id
@ -732,8 +734,8 @@ H25D9 jmp tst128 jumps to page 0 routine below
H25DC sta idapple H25DC-2621 was moved to location tst128
bpl not128 if already determined < 128k
lda #$EE
sta wrcardram write to aux mem while on main zp
sta rdcardram and read aux mem.
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
@ -748,8 +750,8 @@ H25DC sta idapple H25DC-2621 was moved to location tst128
noaux sec no aux memory available.
bcs H2607
H2606 clc
H2607 sta wrmainram switch back to main memory
sta rdmainram
H2607 sta CLRWRITEAUX switch back to main memory
sta CLRREADAUX
bcs not128 if < 128k
lda idapple
ora #$30 set id = 128k present

View File

@ -3,9 +3,9 @@ NEW
* prodos greeting splash screen
LDR.Splash lda spkr click speaker
sta clr80vid disable 80 col hardware
sta store80off disable 80 col store
LDR.Splash lda SPEAKER click speaker
sta CLR80DISP disable 80 col hardware
sta CLR80STORE disable 80 col store
jsr setnorm set normal text mode
jsr init init text screen
jsr setvid reset output to screen
@ -15,14 +15,14 @@ LDR.Splash lda spkr click speaker
ldx #$07
.1 lda H2009,x print title
.1 lda LDR.MSG.AppleII,x
sta vline10+16,x
dex
bpl .1
ldx #$1D
.2 lda H2011,x
.2 lda LDR.MSG.ProDOS,x
sta vline12+5,x
dex
bpl .2
@ -36,14 +36,14 @@ LDR.Splash lda spkr click speaker
ldx #$26
.4 lda H203B,x
.4 lda LDR.MSG.Copyright,x
sta vline23,x
dex
bpl .4
ldx #$13
.5 lda H2062,x
.5 lda LDR.MSG.Reserved,x
sta vline24+10,x
dex
bpl .5
@ -55,7 +55,7 @@ LDR.Splash lda spkr click speaker
lda #$80
trb newvideo video mode select
.8 lda spkr click speaker
.8 lda SPEAKER click speaker
rts
* find all disk devices in system slots and set up address
@ -68,8 +68,8 @@ driveradr .DA 0
d2idx .DA #0
diskins2 .DA #0 msb clear if drive in slot 2
devsrch stz ZP.DstPtr
stz ZP.DstPtr+1
devsrch stz dst
stz dst+1
stz idxl
ldx #$FF init to no active devices.
stx numdevs count (-1) active devices.
@ -241,7 +241,7 @@ H27BA ldy #$05
bne H27E4
ldy #$0B
lda (idxl),y
dec a must = 1
dec must = 1
bne H27E4
iny
lda (idxl),y
@ -417,7 +417,7 @@ H28E8 lda (idxl),y
* check unknown card to see if disk id = $Cn00:nn 20 nn 00 nn 03
cmpid lda clrrom switch out $C8 ROMs
cmpid lda CLRC8ROM switch out $C8 ROMs
ldy #$05
H28F6 lda (idxl),y compare id bytes
cmp dskid,y
@ -543,7 +543,7 @@ H2994 lda idxl+1
sta spvectlo-1,x
lda spvect+2
sta spvecthi-1,x
lda romin write protect lc ram.
lda RROMBNK2 write protect lc ram.
inc numdevs
ldx numdevs
tya
@ -576,7 +576,7 @@ H29F8 rts
* with the following parameters:
*
* (1) command: 0 = zero destination range
* 1 = move data from src to ZP.DstPtr
* 1 = move data from src to dst
* 2 = hi addr ref tbl, relocate and move
* 3 = lo/hi addr ref tbl, relocate and move
* 4 = program, relocate and move
@ -601,10 +601,10 @@ rloop lda (idxl) get relocation command.
tax move destination to page 0
ldy #$01 for indirect access.
lda (idxl),y
sta ZP.DstPtr
sta dst
iny
lda (idxl),y
sta ZP.DstPtr+1
sta dst+1
iny
lda (idxl),y also the length (byte count)
sta cnt of the destination area.
@ -656,7 +656,7 @@ H2A5A iny
cpx #$03
beq rlcode branch if program relocation
jsr reladr otherwise, relocate addresses in
H2A70 jsr move tables then move to destination.
H2A70 jsr moveSrcDst tables then move to destination.
bra rloop do next table
rlend clc
rts
@ -671,16 +671,16 @@ zero jsr adjtbl adj table pointer to next entry.
ldy cnt+1 is it at least 1 page?
beq H2A94 branch if not.
tay
H2A89 sta (ZP.DstPtr),y
H2A89 sta (dst),y
iny
bne H2A89
inc ZP.DstPtr+1 next page
inc dst+1 next page
dec cnt+1
bne H2A89 if more pages to clear.
H2A94 ldy cnt any bytes left to 0?
beq H2AA0 if not.
tay
H2A99 sta (ZP.DstPtr),y zero out remainder
H2A99 sta (dst),y zero out remainder
iny
cpy cnt
bcc H2A99
@ -694,32 +694,32 @@ adjtbl tya add previous table length to
bcc H2AB2
inc idxl+1
H2AB2 rts
move lda src+1 is move up, down or not at all?
cmp ZP.DstPtr+1
moveSrcDst lda src+1 is move up, down or not at all?
cmp dst+1
bcc movup
bne movdn
lda src
cmp ZP.DstPtr
cmp dst
bcc movup
bne movdn
rts no move.
movup ldy cnt+1 calc highest page to move up
tya and adj src and ZP.DstPtr.
tya and adj src and dst.
clc
adc src+1
sta src+1
tya
clc
adc ZP.DstPtr+1
sta ZP.DstPtr+1
adc dst+1
sta dst+1
ldy cnt move partial page 1st.
beq H2ADE taken if no partial pages
H2AD6 dey
lda (src),y
sta (ZP.DstPtr),y
sta (dst),y
tya end of page transfer?
bne H2AD6 no
H2ADE dec ZP.DstPtr+1
H2ADE dec dst+1
dec src+1
dec cnt+1 done with all pages?
bpl H2AD6 no
@ -728,17 +728,17 @@ movdn ldy #$00
lda cnt+1 partial page move only?
beq H2AFC taken if < 1 page to move
H2AED lda (src),y
sta (ZP.DstPtr),y
sta (dst),y
iny
bne H2AED
inc ZP.DstPtr+1 next page
inc dst+1 next page
inc src+1
dec cnt+1 more pages?
bne H2AED if more.
H2AFC lda cnt move partial page.
beq H2B09 if no more to move
H2B00 lda (src),y
sta (ZP.DstPtr),y
sta (dst),y
iny
cpy cnt
bne H2B00
@ -864,7 +864,7 @@ patch101 .OP 65816
phx
pea $0000 length of patch = 0000/0010
pea $0010
_PtrToHand
>IIGS PtrToHand
plx low word of handle
plb set DBR to handle's bank
lda >1,x get upper 16 bits of 24 bit address

View File

@ -65,7 +65,7 @@ H2D4B lda a1l1,x
plp and status.
rts
mainwrt .EQ *-ofsR2 transfer data to card.
sta wrcardram write to alt 48K
sta SETWRITEAUX write to alt 48K
ldy #$00
H2D6A lda (A1L),y pointers set in card by 'setptr'
sta (A4L),y
@ -73,7 +73,7 @@ H2D6A lda (A1L),y pointers set in card by 'setptr'
sta (A3L),y
dey
bne H2D6A
sta wrmainram write to main 48K.
sta CLRWRITEAUX write to main 48K.
lda #donewrt done writing card
sta passit
lda /donewrt
@ -85,7 +85,7 @@ a1l1 .EQ *-ofsR2 13 bytes of storage
* end of obj ram_2
r2_end .EQ *
.BS $D9B-(r2_end-H2000) fill to lanirq ($FF9B see note below)
.BS $2D9B-* fill to lanirq ($FF9B see note below)
*--------------------------------------
MAN
SAVE USR/SRC/PRODOS.203/PRODOS.S.RAM

View File

@ -42,7 +42,7 @@ RAM_1 .BS $2C80-*
rts end of obj ram_1
RAM_1_END .EQ * end of /RAM installer
.BS 256-* pad 0's to page boundary
.BS $2D00-* pad 0's to page boundary
*--------------------------------------
MAN
SAVE USR/SRC/PRODOS.203/PRODOS.S.RAMI

View File

@ -18,9 +18,9 @@ NEW
ofsR0 .EQ *-ramdest offset to /RAM driver org
ramsrc lda rd80col read 80 store
ramsrc lda RD80STORE read 80 store
pha save for later
sta store80off turn off 80 store
sta CLR80STORE turn off 80 store
ldx #$04 move the parameters for use:
L5109 lda A4L,x cmd, unit, bufptr and block (lo)
sta tcmd,x -> tcmd, tunit, R2L, R2H, R01
@ -80,13 +80,13 @@ lcrd .EQ *-ofsR0
bcs L5173 in main bank.
ora #$10 in secondary bank.
bne L5179 branch always.
L5173 sta altram turn on main $D000
sta altram
L5173 sta RRAMWRAMBNK2 turn on main $D000
sta RRAMWRAMBNK2
L5179 sta R01 restore R1.
lda R2H save R2 for later
pha
ldx R2L
sta setaltzp use alternate zero page/stack
sta SETALTZP use alternate zero page/stack
lda /dbuf set R2 to dbuf
sta R2H
lda #dbuf
@ -99,14 +99,14 @@ L5194 lda (A1L),y move A1,A2 to A4,A3
sta (A3L),y
dey
bne L5194
sta setstdzp use main zero page/stack
sta SETALTZP use main zero page/stack
L51A2 stx R2L
pla restore R2
sta R2H
plp get direction.
L51AA bcs L51B5 write, done with move.
sta ramin switch in MLI part of LC
sta ramin
sta RRAMWRAMBNK1 switch in MLI part of LC
sta RRAMWRAMBNK1
jsr blockdo0 read, transfer dbuf to main
L51B5 jmp exitcard
L51B8 jsr blockdo0 transfer main to dbuf.
@ -125,7 +125,7 @@ blockdo1 .EQ *-ofsR0
blockdo .EQ *-ofsR0
jsr setptr set pointers.
bcs L51DB it's a write.
sta wrmainram transfer buffer directly to main.
sta CLRWRITEAUX transfer buffer directly to main.
tay 0 left from setptr.
L51CC lda (A1L),y transfer A1,A2 to A4,A3
sta (A4L),y
@ -133,7 +133,7 @@ L51CC lda (A1L),y transfer A1,A2 to A4,A3
sta (A3L),y
dey
bne L51CC
sta wrcardram back the way it was.
sta SETWRITEAUX back the way it was.
donewrt .EQ *-ofsR0 mainwrt returns here
rts
L51DB lda #mainwrt pointers set up,
@ -315,11 +315,11 @@ access .EQ *-ofsR0
.HS 7F 128 blocks
exitcard .EQ *-ofsR0
lda ramin restore language card
lda ramin
lda RRAMWRAMBNK1 restore language card
lda RRAMWRAMBNK1
pla get 80store
bpl L52EA 80store wasn't on
sta store80on enable 80store
sta SET80STORE enable 80store
L52EA jmp bypass jump around passit
passit .EQ *-ofsR0
.HS 0000

View File

@ -11,10 +11,10 @@ NEW
ofsS .EQ *-dispadr offset to dispatcher org
disp1obj lda romin read ROM
sta clr80vid disable 80 col hardware
sta clraltchar normal LC, flashing UC
sta store80off disable 80 column store
disp1obj lda RROMBNK2 read ROM
sta CLR80DISP disable 80 col hardware
sta CLRALTCHAR normal LC, flashing UC
sta CLR80STORE disable 80 column store
jsr setnorm set normal text mode
jsr init init text screen
jsr setvid reset output to screen
@ -29,7 +29,7 @@ L5A22 sta memmap,x
bpl L5A22
lda #$CF protect zero page, stack and
sta memmap $400-$7FF (text screen display)
L5A2D jsr home clear screen
L5A2D jsr home clear screen
jsr crout position top/left
ldx #dsp1msg0-dsp1msgs
jsr prntmsg 'enter prefix...'
@ -37,14 +37,14 @@ L5A2D jsr home clear screen
sta cv
jsr crout
jsr MLI get prefix
.DA #$C7
.DA dsp1pfx
ldx PrefixBuf get prefix length
.DA #$C7
.DA dsp1pfx
ldx pbuf get prefix length
lda #$00 put 0 at end of prefix
sta PrefixBuf+1,x
ldx PrefixBuf get length.
sta pbuf+1,x
ldx pbuf get length.
beq L5A5D if no prefix to display.
L5A52 lda PrefixBuf,x display prefix directly to screen
L5A52 lda pbuf,x display prefix directly to screen
ora #$80 normal text
sta vline5-1,x line 5
dex
@ -92,12 +92,12 @@ L5A9F cmp #$AE below '.' ?
goodkey inx
cpx #$27 more than 39 chars ?
bcs L5A76 then too many, go restart.
sta PrefixBuf,x save it
sta pbuf,x save it
jsr cout
jmp getkey get another.
L5ABD cpx #$00 prefix length = 0 ?
beq L5AD3 if yes, don't set length.
stx PrefixBuf set prefix length.
stx pbuf set prefix length.
jsr MLI call mli to set prefix.
.DA #$C6
.DA dsp1pfx
@ -153,12 +153,12 @@ L5B29 pha it's good, save it.
inx
cpx #$27 more than 39 chars ?
bcs L5AF6 too long, get pathname again.
sta PrefixBuf,x store it.
sta pbuf,x store it.
jmp loop1 get another char
L5B3C lda #$A0
jsr cout after cr, blank out the cursor.
stx PrefixBuf put length in front of the name.
jsr MLI get file info for pathname in PrefixBuf
stx pbuf put length in front of the name.
jsr MLI get file info for pathname in pbuf
.DA #$C4
.DA dsp1info
bcc L5B4F if no errors.
@ -279,7 +279,7 @@ dsp1err3 .EQ *-ofsS
.HS 00
dsp1info .EQ *-ofsS get file info parms
.DA #$0A 10 parameters
.DA PrefixBuf pathname buffer
.DA pbuf pathname buffer
dsp1acess .EQ *-ofsS
.HS 00 access
dsp1type .EQ *-ofsS
@ -287,7 +287,7 @@ dsp1type .EQ *-ofsS
.BS 13 the rest are unimportant
dsp1open .EQ *-ofsS open file parms
.HS 03 3 parameters for open
.DA PrefixBuf pathname buffer
.DA pbuf pathname buffer
.DA fbuf fcb buffer
dsp1refn .EQ *-ofsS
.HS 00 reference #
@ -311,7 +311,7 @@ dsp1eofb .EQ *-ofsS
.HS 000000 3 byte eof
dsp1pfx .EQ *-ofsS get/set prefix parms
.DA #01 1 parameter
.DA PrefixBuf prefix buffer
.DA pbuf prefix buffer
disp1end .EQ *
.BS $300-disp1end+disp1obj fill to page boundary

View File

@ -6,13 +6,13 @@ NEW
ofsB .EQ *-dispadr offset to Bird's Bye org
birdbye cld
lda romin read ROM
lda RROMBNK2 read ROM
stz softev
lda /dispadr set reset vector to 'dispadr'
sta softev+1
jsr setpwrc create power-up byte
lda #$A0
jsr init80 initialize 80 column text card
jsr $C300 initialize 80 column text card
ldx #$17
* set up memory bitmap in global page
@ -50,17 +50,17 @@ volname sta ol_unit store unit number for online.
.DA ol_parms
bcs L5D32 error check.
stz dlevel haven't read root directory yet.
lda PrefixBuf+1 load description byte.
lda pbuf+1 load description byte.
and #$0F mask for name length.
beq L5D32 if 0, then try next unit.
adc #$02 add 2 to length.
tax name length in x.
vnam1 .EQ *-ofsB
stx PrefixBuf save the name length
stx pbuf save the name length
lda #$2F '/'
sta PrefixBuf+1 slash before and
sta PrefixBuf,x after name.
stz PrefixBuf+1,x null after complete name.
sta pbuf+1 slash before and
sta pbuf,x after name.
stz pbuf+1,x null after complete name.
* open and read directory
@ -72,7 +72,7 @@ vnam1 .EQ *-ofsB
beq L5D32 yes, just move to next volume.
jsr bell1 no, generate bell tone
jsr popdir and stay at same level.
stx PrefixBuf
stx pbuf
jmp keyloop
L5D7F inc dlevel
stz filecount zero file count.
@ -159,21 +159,21 @@ L5E15 lda sysentry,y get byte of filename
sta (fnstore),y restore in name buffer
inc filecount increment valid file counter
bne L5DB5 get next file (branch always)
L5E26 jmp ds2 error. try next unit.
L5E29 jsr MLI close directory file
L5E26 jmp ds2 error. try next unit.
L5E29 jsr MLI close directory file
.DA #$CC
.DA cl_parms
bcs L5E26 error.
jsr settxt use full screen for windows
jsr home
lda #$17 cursor at bottom of screen.
jsr tabv set vertical position.
jsr TABV set vertical position.
ldy #$00
lda #$14 horizontal position.
jsr sethorz print message.
jsr homecurs cursor to upper/left.
ldx #$00
L5E48 lda PrefixBuf+1,x
L5E48 lda pbuf+1,x
beq showfiles
jsr output
inx
@ -225,7 +225,7 @@ L5EAA jsr setinv set inverse text mode.
keyloop .EQ *-ofsB
L5EB0 lda kbd get keyboard input.
bpl L5EB0 loop until key pressed.
sta kbdstrobe clear strobe.
sta KBDSTROBE clear strobe.
jsr setnorm set normal text mode.
ldx filecount are any files displayed ?
beq L5ECB no, don't accept arrow keys or return.
@ -246,14 +246,14 @@ L5ECB cmp #$89 tab ?
dec dlevel
bra L5EF1
popdir .EQ *-ofsB
ldx PrefixBuf
ldx pbuf
L5EDD dex
lda PrefixBuf,x
lda pbuf,x
cmp #$2F slash
bne L5EDD
cpx #$01
bne L5EEC
ldx PrefixBuf
ldx pbuf
L5EEC rts
L5EED jmp ds2 set up new unit number.
L5EF0 inx
@ -267,14 +267,14 @@ L5EF4 jsr MLI set prefix
bcs L5EED error.
ldx valcnt get name number.
jsr namecalc set up name storage area (on return y=0)
ldx PrefixBuf get prefix length.
ldx pbuf get prefix length.
L5F04 iny start at y = 1.
lda (fnstore),y get character of name.
inx
sta PrefixBuf,x store in prefix buffer.
sta pbuf,x store in prefix buffer.
cpy namelen check length of name.
bcc L5F04 loop until all transferred.
stx PrefixBuf put prefix length into buffer.
stx pbuf put prefix length into buffer.
ldy valcnt get file number.
lda filetyps,y get file type.
bpl L5EF0 branch if directory.
@ -347,7 +347,7 @@ nameprnt .EQ *-ofsB
sbc topname calculate line # to display name
inc
inc
jsr tabv set vertical position.
jsr TABV set vertical position.
lda filetyps,x get filetype (x is unchanged by tabv).
bmi L5F99 branch if system file.
stz ch80col adjust cursor position.
@ -393,7 +393,7 @@ fldrmsg .EQ *-ofsB
.HS 00
op_parms .EQ *-ofsB open parameters
.DA #$03 3 parms
.DA PrefixBuf pathname
.DA pbuf pathname
.DA op_buf file buffer
op_refn .EQ *-ofsB
.HS 00 reference number
@ -404,10 +404,10 @@ ol_parms .EQ *-ofsB online parameters
.HS 02 2 parms
ol_unit .EQ *-ofsB
.HS 60 unit number, default = s6, d1
.DA PrefixBuf+1 data buffer
.DA pbuf+1 data buffer
pf_parms .EQ *-ofsB set prefix parameters
.DA #01 one parm
.DA PrefixBuf pathname
.DA pbuf pathname
rd_parms .EQ *-ofsB read parameters
.DA #04 4 parms
rd_refn .EQ *-ofsB

View File

@ -17,7 +17,7 @@ NEW
ofsQ .EQ *-dispadr offset to GQuit dispatcher org
GQdisp lda ramin read/write LC bank 1
GQdisp lda RRAMWRAMBNK1 read/write LC bank 1
clc
xce 16 bit native mode.
jmp >P8QUIT go to GQuit.
@ -69,10 +69,10 @@ L6020 jsr MLI set prefix
L602D xce native mode (carry clear)
* LONG I 16 bit regs, 8 bit acc.
lda PrefixBuf+1 is the application name
lda pbuf+1 is the application name
cmp #$2F a complete pathname ?
bne L603D no, use prefix as volume name
ldx #PrefixBuf else use the application name.
ldx #pbuf else use the application name.
jsr copyvol copy the volume name to buffer.
L603D sec back to emulation mode.
xce
@ -120,7 +120,7 @@ L608B jsr dolaunch check for possible 2nd pathname.
bcc L6099 if so then run the program.
lda #$45 volume not found error.
bra L60AB
L6099 lda romin enable ROM
L6099 lda RROMBNK2 enable ROM
jmp sysentry execute the system application
gqerror .EQ *-ofsQ
@ -205,8 +205,8 @@ L6101 pha save error code in case esc pressed.
pea button2 'Escape'
>IIGS TLTextMountVolume
lda [$01] restore first 2 bytes of vilume name
xba back to their original positions
inc and values.
xba back to their original positions
inc and values.
sta [$01]
pla which button: 1=Return 2=Escape.
pld restore D reg.
@ -260,6 +260,7 @@ dolaunch .EQ *-ofsQ
cmp sysentry+4
beq L6170 both match, go get a filename message.
L616F rts just return to launch the app.
L6170 lda #$FF put flag conditioning value on
pha the stack (assume error).
clc native 16-bit mode.
@ -293,7 +294,7 @@ L6170 lda #$FF put flag conditioning value on
pha (will be used as a direct page pointer)
tsc get the stack pointer.
phd save current direct register.
inc a point to new direct page space.
inc point to new direct page space.
tcd make a new direct page.
lda [$04] de-reference the handle.
sta $00
@ -353,16 +354,16 @@ L6225 dex don't include trailing slash.
.DA #$C6
.DA pfxparms
lda #$00 set z-flag
L6231 rts and go launch the app.
L6231 rts and go launch the app.
* check for disk volume
*
* on exit:
* carry clear = disk was found
* carry set = disk not found
.OP 65816
ckfordrv .EQ *-ofsQ
clc native mode
SEL2.ckfordrv clc native mode
xce
* LONG I 16-bit regs, 8-bit acc.
ldx #sysentry+6 point to pathname buffer.
@ -390,7 +391,7 @@ pfxparms .EQ *-ofsQ set prefix parms.
.DA inbuf address of prefix.
opnparms .EQ *-ofsQ open parms.
.DA #3 3 parms.
.DA PrefixBuf pathname
.DA pbuf pathname
.DA op_buf i/o buffer
oprefnum .EQ *-ofsQ
.HS 00 reference #

View File

@ -14,7 +14,8 @@ tclock_0 ldx clkslt clock slot = $C1.
lda #$A3 send numeric mode byte to Thunderclock
jsr wttcp
clkslt .EQ *-ofsT+2 points to $C1.
jsr rdtcp read month, day of week, day of month
TCLK.clkslt jsr rdtcp read month, day of week, day of month
clc and time into input buffer.
ldx #$04 index for 5 values.
ldy #$0C read minutes 1st, month last.
@ -38,10 +39,10 @@ clkslt .EQ *-ofsT+2 points to $C1.
lsr
ror
ror
ror high bit of month held in carry
ror high bit of month held in carry
ora A1L
sta p8date save low value of date.
php save high bit of month.
php save high bit of month.
and #$1F isolate day.
adc tdays-1,y (y = month)
bcc .2 branch if not Sept 13 thru 30th

View File

@ -6,7 +6,7 @@ NEW
ofsX .EQ *-xdosorg offset to xdos org
xdosmli .EQ *-ofsX xdos MLI in aux ram
* cld no decimal.
xdosobj cld no decimal.
pla get processor status
sta spare1 save it temporarily
sty mliy save x and y
@ -256,7 +256,7 @@ H31C6 lda irqflag check for old roms.
bne H31DD branch if new roms.
ldy p8yreg restore registers.
ldx p8xreg
lda clrrom re-enable i/o card.
lda CLRC8ROM re-enable i/o card.
irqdev .EQ *-ofsX
lda $C100 Cn is self modifying.
lda irqdev+2 restore device id.
@ -287,12 +287,12 @@ syserr1 .EQ *-ofsX
rts
sysdeath1 .EQ *-ofsX
tax death error code.
sta clr80vid disable 80 col hardware.
lda txtset switch in text.
sta CLR80DISP disable 80 col hardware.
lda SETTEXT switch in text.
lda cortflag is this a Cortland?
beq H321A if not, don't use super hires switch.
stz newvideo force off super hires.
H321A lda txtpage1 switch in text page 1.
H321A lda CLRPAGE2 switch in text page 1.
ldy #$13
H321F lda #$20 inverse space border
sta vline11+10,y
@ -510,7 +510,7 @@ findfcb .EQ *-ofsX
cmp #$09 must be 1 to 8 only.
bcs badref
pha
dec a
dec
lsr
ror
ror

View File

@ -116,7 +116,7 @@ L3CF7 lda #$80 indicate map is modified.
sta vcbbuf+20,y
bcs L3D10 if high free count doesn't need adj.
lda vcbbuf+21,y adjust high count
dec a
dec
sta vcbbuf+21,y
L3D10 clc no errors.
lda scrtch return address in y,a of newly
@ -232,7 +232,7 @@ L3DE8 plp file i/o error. restore interrupts.
* get mark command
getmark .EQ *-ofsX
ldx fcbptr index to open fcb.
XDOS.GetMark ldx fcbptr index to open fcb.
ldy #$02 index to user's mark parmeter.
.1 lda fcbbuf+18,x transfer current position
sta (A3L),y to user's parameter list
@ -247,7 +247,7 @@ L3DFD lda #$4D invalid position
rts
* set mark command
setmark .EQ *-ofsX
ldy #$04 index to user's desired position.
XDOS.SetMark ldy #$04 index to user's desired position.
ldx fcbptr file's control block index.
inx inc by 2 for index to hi eof
inx

View File

@ -552,14 +552,17 @@ alcwblk .EQ *-ofsX
sta fcbbuf+25,y
L4615 clc no error
L4616 rts
tstwprot .EQ *-ofsX check for 'never been modified'
jsr gfcbstat condition
XDOS.tstwprot jsr gfcbstat condition
and #$F0
bne L4615 ordinary rts if known write ok.
lda fcbbuf+1,y get file's dev #.
sta devnum get current status of block device.
twrprot1 .EQ *-ofsX make the device status call
sta unitnum
XDOS.twrprot1 sta unitnum
lda bloknml+1
pha
lda bloknml save the current block values

View File

@ -272,7 +272,7 @@ L485F jsr tkfrecnt force free block count before releasing
and #$01
sta dseed+1
lda tposhi
lsr a
lsr
sta dtree
ror dsap pass position in terms of block & bytes.
lda dseed now adjust for boundaries of $200
@ -314,10 +314,10 @@ L48C2 lda firstbl,x
and #$01 test for both bytes adjusted
bne L48C2 without disturbing carry.
lda stortyp get possibly modified storage type
lsr a
lsr a
lsr a
lsr a
lsr
lsr
lsr
lsr
ldy fcbptr and save it in fcb.
sta fcbbuf+7,y
jsr clrstats make it look as though position has
@ -411,11 +411,11 @@ getinfo .EQ *-ofsX
pla
sbc reqh
sta d_usage+1
L4988 lda d_stor transfer bytes from internal order to
lsr a call spec via 'inftabl' translation
lsr a table but first change storage type to
lsr a external (low nibble) format.
lsr a
L4988 lda d_stor transfer bytes from internal order to
lsr call spec via 'inftabl' translation
lsr table but first change storage type to
lsr external (low nibble) format.
lsr
sta d_stor
ldy #$11 index to last of user's spec table.
L4994 lda inftabl-3,y

View File

@ -160,8 +160,8 @@ L4EC7 rts
* this move routine must be resident above $E000 at all times
calldisp .EQ *-ofsX
lda altram read/write RAM bank 2
lda altram
lda RRAMWRAMBNK2 read/write RAM bank 2
lda RRAMWRAMBNK2
lda /dispadr
sta A2L+1
lda #dispadr
@ -180,8 +180,8 @@ L4EE0 dey move a page of code.
inc A2L+1
dex move all pages needed
bne L4EE0
lda ramin read/write RAM bank 1
lda ramin swap mli space back in
lda RRAMWRAMBNK1 read/write RAM bank 1
lda RRAMWRAMBNK1 swap mli space back in
stz mliact MLI active flag
stz softev
lda /dispadr point RESET to dispatch entry
@ -227,7 +227,7 @@ L4F3F lda buf-1,x from prodos parameters
sp_vector .EQ *-ofsX smartport call
jsr $0000 (entry address gets modified)
cmdnum .EQ *-ofsX
.HS 00 command #
.HS 00 command #
.DA statparms
bcs L4F6E
ldx cmdnum status call ?

View File

@ -7,12 +7,13 @@ NEW
*--------------------------------------
.INB INC/ZP.I
.INB INC/IO.I
* .INB INC/MONITOR.I
.INB INC/MONITOR.I
.INB INC/MLI.I
.INB INC/MLI.E.I
*--------------------------------------
MMStartUp .EQ 0000
NewHandle .EQ 0000
PtrToHand .EQ 0000
MessageCenter .EQ 0000
DisposeHandle .EQ 0000
MMShutDown .EQ 0000
@ -23,18 +24,121 @@ TLTextMountVolume .EQ 0000
ldx ##]1
jsl $E10000
.EM
P8QUIT .EQ $E0D000
GSOS .EQ $E100A8
GSOS2 .EQ $E100B0
OS_BOOT .EQ $E100BD indicates O/S initially booted
*--------------------------------------
lookptr .EQ $0A
idapple .EQ $0C model machine id
idxl .EQ $10 general use 16 bit index pointer
ZP.SrcPtr .EQ $12
ZP.DstPtr .EQ $14
devid .EQ $12
src .EQ $12
dst .EQ $14
cnt .EQ $16
cde .EQ $18
ecde .EQ $1A
wndbtm .EQ $23
pcl .EQ $3A
pch .EQ $3B
A1L .EQ $3C
A1H .EQ $3D
A2L .EQ $3E
A2H .EQ $3F
A3L .EQ $40
A4L .EQ $42
unitnum .EQ $43
buf .EQ $44 2-byte data buffer pointer which
accsav .EQ $45 overlaps accsav (temp acc save byte)
bloknml .EQ $46 used mostly as 16 bit block # pointer
zpt .EQ $48 highly used zero page index pointer
datptr .EQ $4A ptr to data area of buffer.
sos .EQ $4C sos buffer pointer.
usrbuf .EQ $4E data ptr in user buffer.
* zero page variables for Bird's Better Bye
smparms .EQ $60 set mark parms
sm_refn .EQ $61 file reference number
fpos_lo .EQ $62 new file position (3 bytes)
fpos_mid .EQ $63
fpos_hi .EQ $64
lstpntr .EQ $65 device list pointer (16 bit)
valcnt .EQ $67 name counter
filecount .EQ $68 # of displayable files in directory
namelen .EQ $69 length of filename
gp_cnt .EQ $6A general purpose counter
dlevel .EQ $6B directory level
fnstore .EQ $6C filename storage pointer (16 bit)
entlen .EQ $6E directory entry length
entblk .EQ $6F directory entries/block
filecnt .EQ $70 directory file count (16 bit)
blkfl .EQ $72 block flag / file counter
topname .EQ $73 index # of top name in display
filetyps .EQ $74 128 byte table of filetypes
errnum .EQ $DE
*--------------------------------------
ramdest .EQ $200 load address for aux bank /RAM driver
PrefixBuf .EQ $280
tst128 .EQ $0080 temp page 0 routine for memory test
auxsp .EQ $0101
ramdest .EQ $0200 load address for aux bank /RAM driver
inbuf .EQ $0200 keyboard buffer
pbuf .EQ $0280 prefix buffer
p3vect .EQ $03F0 page 3 vectors (16 bytes)
softev .EQ $03F2 RESET vector
pwredup .EQ $03F4 power up byte
nmivect .EQ $03FB nmi handler
txtp2 .EQ $0400 test location for aux card
vline10 .EQ $04A8 line 10 of display
vmode .EQ $04FB video firmware operating mode
vline11 .EQ $0528 line 11 of display
clkmode .EQ $0538 clock mode
ch80col .EQ $057B 80 column ch position
vline12 .EQ $05A8 line 12 of display
vline5 .EQ $0600 line 5 of display
vline13 .EQ $0628 line 13 of display
vline14 .EQ $06A8 line 14 of display
vline23 .EQ $0750 line 23 of display
vline16 .EQ $07A8 line 16 of display
vline24 .EQ $07D0 line 24 of display
lodintrp .EQ $800
DirBlkBuf .EQ $C00
dbuf .EQ $0C00 8 page directory buffer
vblock1 .EQ $0E00 ramdisk directory block
volbuf .EQ $0F00 volume buffer
dispadr .EQ $1000
iobuf .EQ $1400 i/o buffer
fbuf .EQ $1800 FCB buffer
op_buf .EQ $1C00 open file buffer (selector)
sysentry .EQ $2000 .SYS file load address
prodos8 .EQ $BF00 prodos MLI and global page
phaseoff .EQ $C080 disk port
motoroff .EQ $C088 disk port
motoron .EQ $C089 disk port
drv0en .EQ $C08A disk port
q6l .EQ $C08C disk port
q6h .EQ $C08D disk port
q7l .EQ $C08E disk port
q7h .EQ $C08F disk port
rdtcp .EQ $C108 Thunderclock read entry
wttcp .EQ $C10B Thunderclock write entry
auxmove .EQ $C311 move (3C)-(3E) to (42)
xfer .EQ $C314
rwts .EQ $D000 disk ii driver in bank 1
displc2 .EQ $D100 system death routine stored in bank 2
pathbuf .EQ $D700 pathname buffer
tclk_in .EQ $D742 clock driver in bank 2
fcbbuf .EQ $D800 fcb buffer
vcbbuf .EQ $D900 vcb buffer
bmbuf .EQ $DA00 512 byte bitmap buffer
gbuf .EQ $DC00 general purpose 512 byte block buffer
xdosorg .EQ $DE00 xdos MLI in aux memory
lcdest .EQ $FF00
*--------------------------------------
@ -52,7 +156,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
@ -75,7 +179,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