Kernel 0.93+ ProDOS 2.0.3 src

This commit is contained in:
Rémy GIBERT 2019-09-15 17:13:48 +02:00
parent e353a91fc4
commit 78fbcb711b
8 changed files with 237 additions and 298 deletions

Binary file not shown.

View File

@ -3,21 +3,14 @@ NEW
* object code = mli_1
* global page
ofsG .EQ $2E00-MLI offset to global org
.BS $2E00-*
H2E00 jmp mlient1 $2E00-2EFF moved to $BF00
jspare .EQ *-ofsG
jmp jspare will be changed to point to dispatcher.
clockv .EQ *-ofsG P8 clock vector
rts changed to jmp ($4C) if clock present.
jspare jmp jspare will be changed to point to dispatcher.
clockv rts changed to jmp ($4C) if clock present.
.DA tclk_in clock routine entry address.
p8errv .EQ *-ofsG error reporting hook.
jmp syserr1
sysdeath .EQ *-ofsG
jmp sysdeath1 system failure hook.
p8error .EQ *-ofsG P8 error code
.DA #0
drivertbl1 .EQ *-ofsG device driver table 1
p8errv jmp syserr1 error reporting hook.
sysdeath jmp sysdeath1 system failure hook.
p8error .DA #0
drivertbl1 .DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
@ -25,8 +18,7 @@ drivertbl1 .EQ *-ofsG device driver table 1
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
drivertbl2 .EQ *-ofsG device driver table 2
drivertbl2 .DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
@ -34,42 +26,32 @@ drivertbl2 .EQ *-ofsG device driver table 2
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
*devnum .EQ *-ofsG most recent accessed device
.DA #0
numdevs .EQ *-ofsG count (-1) active devices
.DA #$ff
devlist .EQ *-ofsG active device list
.HS 00000000000000 up to 14 units may be active
.DA #0 devnum
numdevs .DA #$ff count (-1) active devices
devlist .HS 00000000000000 up to 14 units may be active
.HS 00000000000000
.DA #0
.AS "(C)APPLE "
mlient1 .EQ *-ofsG
php
mlient1 php
sei
jmp mlicont
aftirq .EQ *-ofsG irq returns here.
sta RRAMWRAMBNK1 read/write RAM bank 1
aftirq sta RRAMWRAMBNK1 read/write RAM bank 1
jmp fix45 restore $45 after interrupt in LC
oldacc .EQ *-ofsG
.DA #0
afbank .EQ *-ofsG
.HS 00
oldacc .DA #0
afbank .HS 00
* memory map of lower 48k. each bit represents 1 page.
* protected pages = 1, unprotected = 0
memmap .EQ *-ofsG P8 memory bitmap
.HS C000000000000000
memmap .HS C000000000000000
.HS 0000000000000000
.HS 0000000000000001
* table of buffer addresses for currently open files.
* these can only be changed thru the mli call setbuf.
buftbl .EQ *-ofsG
.HS 0000 file #1
buftbl .HS 0000 file #1
.HS 0000 file #2
.HS 0000 file #3
.HS 0000 file #4
@ -83,57 +65,35 @@ buftbl .EQ *-ofsG
* at the time of the most recent interrupt are stored here along
* with the address interrupted.
inttbl .EQ *-ofsG interrupt table
.HS 0000 int #1
inttbl .HS 0000 int #1
.HS 0000 int #2
.HS 0000 int #3
.HS 0000 int #4
p8areg .EQ *-ofsG A register savearea
.DA #0
p8xreg .EQ *-ofsG X register savearea
.DA #0
p8yreg .EQ *-ofsG Y register savearea
.DA #0
p8sreg .EQ *-ofsG S register savearea
.DA #0
p8preg .EQ *-ofsG P register savearea
.DA #0
bankid .EQ *-ofsG bank ID byte (ROM/RAM)
.DA #1
intadr .EQ *-ofsG interrupt return address
.HS 0000
p8date .EQ *-ofsG bits 15-9=yr, 8-5=mo, 4-0=day
.HS 0000
p8time .EQ *-ofsG bits 12-8=hr, 5-0=min, low-hi format
.HS 0000
flevel .EQ *-ofsG current file level
.DA #0
bubit .EQ *-ofsG backup bit disable, setfileinfo only
.DA #0
spare1 .EQ *-ofsG used to save acc
.DA #0
newpfxptr .EQ *-ofsG appletalk alternate prefix ptr
.DA #0
*machid .EQ *-ofsG machine ID byte
.DA #0
rommap .EQ *-ofsG slot ROM bit map
.DA #0
preflag .EQ *-ofsG prefix active flag
.DA #0
mliact .EQ *-ofsG MLI active flag
.DA #0
mliretn .EQ *-ofsG last MLI call return address
.DA 0
mlix .EQ *-ofsG MLI X register savearea
.DA #0
mliy .EQ *-ofsG MLI Y register savearea
.DA #0
p8areg .DA #0 A register savearea
p8xreg .DA #0 X register savearea
p8yreg .DA #0 Y register savearea
p8sreg .DA #0 S register savearea
p8preg .DA #0 P register savearea
bankid .DA #1 bank ID byte (ROM/RAM)
intadr .HS 0000 interrupt return address
p8date .HS 0000 bits 15-9=yr, 8-5=mo, 4-0=day
p8time .HS 0000 bits 12-8=hr, 5-0=min, low-hi format
flevel .DA #0 current file level
bubit .DA #0 backup bit disable, setfileinfo only
spare1 .DA #0 used to save acc
newpfxptr .DA #0 appletalk alternate prefix ptr
machidbyte .DA #0 machine ID byte
rommap .DA #0 slot ROM bit map
preflag .DA #0 prefix active flag
mliact .DA #0 MLI active flag
mliretn .DA 0 last MLI call return address
mlix .DA #0 MLI X register savearea
mliy .DA #0 MLI Y register savearea
* language card bank switching routines which must reside at $BFA0 because
* workstation software patches this area
HBFA0 .EQ *-ofsG
GP.HBFA0 eor $E000 test for rom enable
HBFA0 eor $E000 test for rom enable
beq .1 taken if ram enabled
sta RROMBNK2 read ROM
bne .2 always
@ -144,8 +104,7 @@ GP.HBFA0 eor $E000 test for rom enable
.2 pla return code
rti re-enable interrupts and return
mlicont .EQ *-ofsG
sec
mlicont sec
ror mliact notify interrupt routines MLI active.
lda $E000 preserve language card/rom orientation
sta bnkbyt1 for proper restoration when mli exits.
@ -155,11 +114,9 @@ mlicont .EQ *-ofsG
lda RRAMWRAMBNK1 with write allowed
jmp xdosmli
irqexit .EQ *-ofsG
lda bankid determine state of ram card (ROM/RAM)
irqexit lda bankid determine state of ram card (ROM/RAM)
irqxit0 .EQ *-ofsG
GP.irqxit0 beq .2 branch if ram card enabled.
irqxit0 beq .2 branch if ram card enabled.
bmi .1 branch if alternate $D000 enabled.
lsr determine if no ram card present.
@ -174,25 +131,19 @@ GP.irqxit0 beq .2 branch if ram card enabled.
.3 lda p8areg restore acc
rti exit
irqent .EQ *-ofsG this entry only used when rom
bit RRAMWRAMBNK1 was enabled at time of interrupt.
bit RRAMWRAMBNK1
irqent bit RRAMWRAMBNK1 this entry only used when rom
bit RRAMWRAMBNK1 was enabled at time of interrupt.
jmp irqrecev
bnkbyt1 .EQ *-ofsG
.DA #0
bnkbyt2 .EQ *-ofsG
.DA #0
bnkbyt1 .DA #0
bnkbyt2 .DA #0
.HS 00000000 pad to before $BFFA
.DA #4 gsos compatibility byte ($BFFA)
.DA #0 pad
.DA #0 reserved
.DA #0 version # of running interpreter
.DA #0 preserved for System Utilities
kversion .EQ *-ofsG kernal version
.HS 23 represents release 2.0.3
* end of obj mli_1
kversion .HS 23 represents release 2.0.3
*--------------------------------------
MAN
SAVE USR/SRC/PRODOS.203/PRODOS.S.GP

View File

@ -5,9 +5,7 @@ NEW
* this routine handles interrupts and is coded to reach 'lreset' precisely at
* address $FFCB (ROM rts opcode) for rom switching to function.
lanirq .EQ *-ofsR2
.BS $2D9B-*
H2D9B pha $2D9B-2DFF moved to $FF9B-FFFF
lanirq pha $2D9B-2DFF moved to $FF9B-FFFF
lda accsav
sta oldacc
pla
@ -32,33 +30,27 @@ H2DC2 lda /romirq setup ROM re-entry
pha
lda #romirq
pha
gorom .EQ *-ofsR2
sta RROMBNK2 hits ROM rts at $FFCB
gorom sta RROMBNK2 hits ROM rts at $FFCB
* 'lreset' address must = $FFCB for rom switch i/o to work
lreset .EQ *-ofsR2
lda rreset+1
lreset lda rreset+1
pha
lda rreset
pha
jmp gorom
rreset .EQ *-ofsR2
.DA resetv-1 rts to resetv
fix45 .EQ *-ofsR2
sta p8areg A register savearea
rreset .DA resetv-1 rts to resetv
fix45 sta p8areg A register savearea
lda oldacc
sta accsav
lda RRAMWRAMBNK1 read/write RAM bank 1
lda RRAMWRAMBNK1
lda afbank
jmp irqxit0
stypfx .EQ *-ofsR2 fix appletalk PFI bug
sty newpfxptr
stypfx sty newpfxptr fix appletalk PFI bug
sty preflag prefix flag
rts
stapfx .EQ *-ofsR2
sta newpfxptr
stapfx sta newpfxptr
sta preflag
rts
@ -66,8 +58,7 @@ stapfx .EQ *-ofsR2
.DA nmivect nmi handler
.DA lreset reset handler
irqv .EQ *-ofsR2
.DA lanirq irq handler
irqv .DA lanirq irq handler
* end of obj mli_3
*--------------------------------------

View File

@ -168,7 +168,7 @@ H216E jsr reloc
pha restore interrupt status
plp
sta CLRC3ROM enable internal slot 3 ROM
jsr H2C80 install ram disk
jsr RAMDRV.Install
* check interrupt vector to determine ROM version
@ -389,47 +389,52 @@ H232B .DA #1 move interpreter loader code
dsp64 .DA #$01 move p8 dispatcher code
.DA displc2 destination
.DA birdbye-disp1obj length (must be <= 3 pages)
.DA disp1obj source
.DA $0300 length (must be <= 3 pages)
.DA SEL0 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
.DA $0300 length (must be <= 3 pages)
.DA SEL1 source
.HS FF done
altdsptbl .DA #$01 move GQuit launcher
.DA displc2 destination
.DA $0300 length (must be <= 3 pages)
.DA GQdisp source
.DA SEL2 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
.DA SEL2 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 $ff9b destination
.DA $100-$9B length to move
.DA IRQ source
.DA #$01
.DA MLI globals
.DA MLI dst
.DA $0100 in one page
.DA H2E00
.DA GP src
.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 $DE00 dst
.DA $2100 length of mli
.DA XDOS src
.DA #$01
.DA rwts
.DA disp1obj-blockio length of disk ii driver
.DA blockio
.DA $D000
.DA $0700 length of disk ii driver
.DA XRW
.HS FF done
* move thunderclock
@ -438,6 +443,7 @@ 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

View File

@ -4,19 +4,17 @@ NEW
* /RAM driver (main bank portion)
* origin = $FF00
ofsR2 .EQ *-lcdest offset from ram driver org
lcsrc cld no decimal.
RAMDRV cld no decimal.
ldx #$0B save 13 bytes of parms
H2D03 lda A1L,x
.1 lda A1L,x
sta a1l1,x
dex
bpl H2D03
bpl .1
ldx #$01
H2D0D lda passit,x save xfer vectors
.2 lda passit,x save xfer vectors
sta sp1,x
dex
bpl H2D0D
bpl .2
lda A4L get command.
beq stat 0 = status
cmp #$04 check for command too high.
@ -33,11 +31,10 @@ H2D0D lda passit,x save xfer vectors
* it it used for read, write and format. after the request is completed,
* control is passed back to 'noerr'.
format lda #ramdest card entry point
format lda #RAMXDRV card entry point
sta passit
lda /ramdest
gocard .EQ *-ofsR2 also used by 'mainwrt'
sta passit+1
lda /RAMXDRV
gocard sta passit+1 also used by 'mainwrt'
sec direction ram -> card
clv start with original zero page
jmp xfer transfer control
@ -46,7 +43,7 @@ ioerr lda #$27
lda #$2B write protect error.
H2D41 sec flags error
bcs H2D47
noerr .EQ *-ofsR2
noerr .EQ *
stat lda #$00
clc
H2D47 php save status
@ -64,8 +61,7 @@ H2D4B lda a1l1,x
pla restore error code
plp and status.
rts
mainwrt .EQ *-ofsR2 transfer data to card.
sta SETWRITEAUX write to alt 48K
mainwrt sta SETWRITEAUX write to alt 48K
ldy #$00
H2D6A lda (A1L),y pointers set in card by 'setptr'
sta (A4L),y
@ -78,14 +74,13 @@ H2D6A lda (A1L),y pointers set in card by 'setptr'
sta passit
lda /donewrt
jmp gocard
sp1 .EQ *-ofsR2
.HS 0000
a1l1 .EQ *-ofsR2 13 bytes of storage
sp1 .HS 0000
a1l1 .BS 13 13 bytes of storage
* end of obj ram_2
r2_end .EQ *
.BS $2D9B-* fill to lanirq ($FF9B see note below)
RAMDRV.END .EQ *
.BS $FF9B-* fill to lanirq ($FF9B see note below)
*--------------------------------------
MAN
SAVE USR/SRC/PRODOS.203/PRODOS.S.RAM

View File

@ -5,34 +5,32 @@ NEW
* /RAM installer - transfer part of the driver to the aux bank
* and front part of the driver to the main bank (language card).
RAM_1 .BS $2C80-*
RAMDRV.Install ldy #$99 move $9A bytesfrom lcsrc to lcdest.
H2C80 ldy #$99 move $9A bytesfrom lcsrc to lcdest.
.1 lda lcsrc,y transfer main bank portion of driver
sta lcdest,y
.1 lda RAM,y transfer main bank portion of driver
sta RAMDRV,y
dey
cpy #$FF
bne .1
ldx #ramsrc set up to move aux portion of driver
ldx #RAMX set up to move aux portion of driver
stx A1L
dex
stx A2L
ldx /ramsrc
ldx /RAMX
stx A1L+1
inx
stx A2L+1
lda #ramdest
lda #RAMXDRV
sta A4L
lda /ramdest ramsrc to ramdest
lda /RAMXDRV RAMX to RAMXDRV
sta A4L+1
sec irection = to aux bank.
jsr auxmove move aux bank portion of driver.
lda #lcdest put driver address into
lda #RAMDRV put driver address into
sta drivertbl2+6 slot 3, drive 2.
lda /lcdest
lda /RAMDRV
sta drivertbl2+7
inc numdevs count (-1) active devices

View File

@ -16,9 +16,7 @@ NEW
* $60-$67: returns blocks $68-$7F in bank 1 of language card
* $68-$7F: returns blocks $68-$7F in bank 2 of language card
ofsR0 .EQ *-ramdest offset to /RAM driver org
ramsrc lda RD80STORE read 80 store
H5100 lda RD80STORE read 80 store
pha save for later
sta CLR80STORE turn off 80 store
ldx #$04 move the parameters for use:
@ -74,8 +72,7 @@ L5163 tax save R1 for later.
jsr setptr get direction
php and save it.
bcs L51B8 if it's a write.
lcrd .EQ *-ofsR0
txa get R1 back
lcrd txa get R1 back
cmp #$CF which bank is it in ?
bcs L5173 in main bank.
ora #$10 in secondary bank.
@ -118,12 +115,9 @@ L51B8 jsr blockdo0 transfer main to dbuf.
* language card, so the language card is always switched in. if cmd is 2, a
* write is done (R2->R1); if cmd is 1, a read is done (R1->R2).
blockdo0 .EQ *-ofsR0 set up R1 = dbuf
lda /dbuf
blockdo1 .EQ *-ofsR0
sta R01
blockdo .EQ *-ofsR0
jsr setptr set pointers.
blockdo0 lda /dbuf set up R1 = dbuf
blockdo1 sta R01
blockdo jsr setptr set pointers.
bcs L51DB it's a write.
sta CLRWRITEAUX transfer buffer directly to main.
tay 0 left from setptr.
@ -134,8 +128,8 @@ L51CC lda (A1L),y transfer A1,A2 to A4,A3
dey
bne L51CC
sta SETWRITEAUX back the way it was.
donewrt .EQ *-ofsR0 mainwrt returns here
rts
donewrt rts mainwrt returns here
L51DB lda #mainwrt pointers set up,
sta passit pass control to main ram
lda /mainwrt
@ -143,8 +137,7 @@ L51DB lda #mainwrt pointers set up,
* setptr is used by other routines to set up pointers and dtect read or write
setptr .EQ *-ofsR0
lda tcmd is it read or write ?
setptr lda tcmd is it read or write ?
lsr
bcs L5208 taken if write.
lda R2H destination page
@ -186,12 +179,9 @@ tzip jsr clrbuf0 fill dbuf with 0's
* clrbuf fills the buffer indicated by R01 to 0's.
* should only be called on a read or format.
clrbuf0 .EQ *-ofsR0
lda /dbuf dbuf is temp buffer.
clrbuf1 .EQ *-ofsR0
sta R01 assign to block.
clrbuf2 .EQ *-ofsR0
jsr setptr set pointers
clrbuf0 lda /dbuf dbuf is temp buffer.
clrbuf1 sta R01 assign to block.
clrbuf2 jsr setptr set pointers
tay acc = 0
L523A sta (A1L),y
sta (A2L),y
@ -203,8 +193,7 @@ L523A sta (A1L),y
* so that 8k data files will be contiguous (the index
* blocks will not be placed within data).
treg .EQ *-ofsR0
cmp #$04 page 4 = vdir
treg cmp #$04 page 4 = vdir
bne L524A not vdir, continue
lda #$07 else transfer block 7
bne L5258
@ -227,7 +216,7 @@ L525E cmp #$11 if <=17 then done
sbc #$11 else block=block-17.
inx iteration count.
bpl L525E should branch always
.HS 00 otherwise crash !!!
brk otherwise crash !!!
L5268 tay remainder in y
* if remainder is 1 then it's an index block:
@ -242,7 +231,7 @@ L5268 tay remainder in y
txa index = 2 * (8 + x)
clc
adc #$08
bne L5285 multiply by 2.
bne times2 multiply by 2.
L5273 inx iteration + 1.
txa page = 2 * (16 + 8x)
asl
@ -256,8 +245,7 @@ L5273 inx iteration + 1.
tya
L5281 clc
adc R01
times2 .EQ *-ofsR0
L5285 asl acc = 2 * acc
times2 asl acc = 2 * acc
jsr blockdo1 store in R01 and transfer
jmp exitcard and return
@ -265,8 +253,7 @@ L5285 asl acc = 2 * acc
* 16 bytes long; the rest of the block is synthesized. the temporary buffer
* at $800 is used to build/read a full size bitmap block.
tbmap .EQ *-ofsR0
lda /dbuf use temp buffer as block
tbmap lda /dbuf use temp buffer as block
sta R01
jsr setptr set pointers, test read/write.
bcs L52A9 branch if it's write.
@ -287,48 +274,36 @@ L52B1 lda (A4L),y (pointer set by setptr)
bpl L52B1
jmp exitcard
formatflg .EQ *-ofsR0
.HS 00 not formatted yet
tcmd .EQ *-ofsR0
.HS 00 command
formatflg .HS 00 not formatted yet
tcmd .HS 00 command
.HS 00 unit (not used)
R2L .EQ *-ofsR0
.HS 00 R2 = user buffer
R2H .EQ *-ofsR0
.HS 00
R01 .EQ *-ofsR0
.HS 00 page requested
BITMAP .EQ *-ofsR0
.HS 00FFFFFF blocks 0-7 used
R2L .HS 00 R2 = user buffer
R2H .HS 00
R01 .HS 00 page requested
BITMAP .HS 00FFFFFF blocks 0-7 used
.HS FFFFFFFF
.HS FFFFFFFF
.HS FFFFFFFE
VDIR .EQ *-ofsR0 start of vdir.
.HS F3 storage type = F, name length = 3
VDIR .HS F3 storage type = F, name length = 3
.AS "RAM"
access .EQ *-ofsR0
.DA #$C3 destroy, rename, read enabled
access .DA #$C3 destroy, rename, read enabled
.HS 27 entry length
.HS 0D
.HS 0000
.HS 0300 block 3
.HS 7F 128 blocks
exitcard .EQ *-ofsR0
lda RRAMWRAMBNK1 restore language card
exitcard lda RRAMWRAMBNK1 restore language card
lda RRAMWRAMBNK1
pla get 80store
bpl L52EA 80store wasn't on
sta SET80STORE enable 80store
L52EA jmp bypass jump around passit
passit .EQ *-ofsR0
.HS 0000
bypass .EQ *-ofsR0
lda #noerr set up return to noerr
passit .HS 0000
bypass lda #noerr set up return to noerr
sta passit
lda /noerr
ex1 .EQ *-ofsR0
sta passit+1 also used by blockwrite
ex1 sta passit+1 also used by blockwrite
clc transfer card to main
clv use standard zeropage/stack
jmp xfer jmp back from language card.

View File

@ -2,7 +2,7 @@ NEW
AUTO 3,1
.LIST OFF
.OP 65816
.OR $0000
.OR $2000
.TF PRODOS203,TSYS
*--------------------------------------
.INB INC/ZP.I
@ -48,11 +48,11 @@ TLTextMountVolume .EQ $1201
P8QUIT .EQ $E0D000
GSOS .EQ $E100A8
GSOS2 .EQ $E100B0
OS_BOOT .EQ $E100BD indicates O/S initially booted
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
idapple .EQ $0C model machine id
idxl .EQ $10 general use 16 bit index pointer
devid .EQ $12
src .EQ $12
dst .EQ $14
@ -72,96 +72,94 @@ 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.
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)
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
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
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
*--------------------------------------
tst128 .EQ $0080 temp page 0 routine for memory test
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
RAMXDRV .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
vmode .EQ $04FB video firmware operating mode
clkmode .EQ $0538 clock mode
ch80col .EQ $057B 80 column ch position
vline5 .EQ $0600 line 5 of display
vline10 .EQ $04A8 line 10 of display
vline11 .EQ $0528 line 11 of display
vline12 .EQ $05A8 line 12 of display
vline13 .EQ $0628 line 13 of display
vline14 .EQ $06A8 line 14 of display
vline16 .EQ $07A8 line 16 of display
vline23 .EQ $0750 line 23 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
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
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
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
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
rdtcp .EQ $C108 Thunderclock read entry
wttcp .EQ $C10B Thunderclock write entry
auxmove .EQ $C311 move (3C)-(3E) to (42)
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
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
*--------------------------------------
* $2000 mli_0 mli loader/relocator
* $2C80 ram_1 installer for /RAM
@ -176,17 +174,28 @@ lcdest .EQ $FF00
* $5A00 sel_0 dispatcher
* $5D00 sel_1 enhanced quit code (Bird's Better Bye)
* $6000 sel_2 GQuit dispatcher support
.PH $2000
*--------------------------------------
.INB USR/SRC/PRODOS.203/PRODOS.S.LDR.A
.INB USR/SRC/PRODOS.203/PRODOS.S.LDR.B
.INB USR/SRC/PRODOS.203/PRODOS.S.RAMI
RAM .PH $FF00
.INB USR/SRC/PRODOS.203/PRODOS.S.RAM
.EP
IRQ .PH $FF9B
.INB USR/SRC/PRODOS.203/PRODOS.S.IRQ
.EP
GP .PH $BF00
.INB USR/SRC/PRODOS.203/PRODOS.S.GP
.EP
.INB USR/SRC/PRODOS.203/PRODOS.S.TCLK
.INB USR/SRC/PRODOS.203/PRODOS.S.CCLK
XDOS .PH $DE00
.INB USR/SRC/PRODOS.203/PRODOS.S.XDOS.A
.INB USR/SRC/PRODOS.203/PRODOS.S.XDOS.B
.INB USR/SRC/PRODOS.203/PRODOS.S.XDOS.C
@ -194,13 +203,27 @@ lcdest .EQ $FF00
.INB USR/SRC/PRODOS.203/PRODOS.S.XDOS.E
.INB USR/SRC/PRODOS.203/PRODOS.S.XDOS.F
.INB USR/SRC/PRODOS.203/PRODOS.S.XDOS.M
.INB USR/SRC/PRODOS.203/PRODOS.S.RAMX
.INB USR/SRC/PRODOS.203/PRODOS.S.DISKII
.INB USR/SRC/PRODOS.203/PRODOS.S.SEL0
.INB USR/SRC/PRODOS.203/PRODOS.S.SEL1
.INB USR/SRC/PRODOS.203/PRODOS.S.SEL2
.EP
.EP
RAMX .PH $200
.INB USR/SRC/PRODOS.203/PRODOS.S.RAMX
.EP
XRW .PH $D000
.INB USR/SRC/PRODOS.203/PRODOS.S.DISKII
.EP
SEL0 .PH $D100
.INB USR/SRC/PRODOS.203/PRODOS.S.SEL0
.EP
SEL1 .PH $D100
.INB USR/SRC/PRODOS.203/PRODOS.S.SEL1
.EP
SEL2 .PH $D100
.INB USR/SRC/PRODOS.203/PRODOS.S.SEL2
.EP
*--------------------------------------
MAN
SAVE USR/SRC/PRODOS.203/PRODOS.S