ProDOS 203 Source code

This commit is contained in:
Rémy GIBERT 2019-05-07 13:18:47 +02:00
parent 3a016ff58b
commit cda867763e
14 changed files with 444 additions and 439 deletions

View File

@ -53,19 +53,19 @@ H2FB9 sta p8date+1 year
xce to continue with Prodos 8
rts
savestate .EQ *-ofsC
dc h'00' state of the state register
.DA #00' state of the state register
dc c'JIMJAYKERRY'
dc h'26' ampersand (Orca assembler doesn't like)
dc c'MIKE'
dc h'0000000000000000' pad 0's until length
dc h'0000000000000000' of driver = 125 bytes.
dc h'000000000000'
.DA #0000000000000000' pad 0's until length
.DA #0000000000000000' of driver = 125 bytes.
.DA #000000000000'
cclk_end .EQ * end of obj cclock_0.
dc h'000000' pad to page boundary
LONGI OFF
*--------------------------------------
MAN
LOAD USR/SRC/PRODOS/PRODOS.S.CCLK
SAVE USR/SRC/PRODOS/PRODOS.S
LOAD USR/SRC/PRODOS.203/PRODOS.S.CCLK
SAVE USR/SRC/PRODOS.203/PRODOS.S
ASM

View File

@ -270,28 +270,28 @@ clrphase .EQ *-ofsD
* other tables since no valid nibles are in these ranges.
dnibl .EQ *-ofsD aligned to page boundary minus $96
dc h'0004FFFF080CFF10'
dc h'1418'
.DA #0004FFFF080CFF10'
.DA #1418'
twobit3 .EQ *-ofsD used in fast prenib as lookup for
dc h'008040C0FFFF' 2-bit quantities.
dc h'1C20FFFFFF24282C'
dc h'3034FFFF383C4044'
dc h'484CFF5054585C60'
dc h'6468'
.DA #1C20FFFFFF24282C'
.DA #3034FFFF383C4044'
.DA #484CFF5054585C60'
.DA #6468'
twobit2 .EQ *-ofsD used in fast prenib.
dc h'00201030'
endmrks .EQ *-ofsD table using 'unused' nibbles:
dc h'DEAAEBFF' ($C4,$C5,$C6,$C7)
dc h'FFFFFF6CFF70'
dc h'7478FFFFFF7CFFFF'
dc h'8084FF888C909498'
dc h'9CA0'
.DA #FFFFFF6CFF70'
.DA #7478FFFFFF7CFFFF'
.DA #8084FF888C909498'
.DA #9CA0'
twobit1 .EQ *-ofsD used in fast prenib.
dc h'0008040CFFA4'
dc h'A8ACFFB0B4B8BCC0'
dc h'C4C8FFFFCCD0D4D8'
dc h'DCE0FFE4E8ECF0F4'
dc h'F8FC'
.DA #A8ACFFB0B4B8BCC0'
.DA #C4C8FFFFCCD0D4D8'
.DA #DCE0FFE4E8ECF0F4'
.DA #F8FC'
* 6-bit to 2-bit conversion tables:
*
@ -315,46 +315,46 @@ dnibl4 .EQ *-ofsD
* or with no adjacent ones (except B7) are excluded.
nibl .EQ *-ofsD
dc h'960200'
dc h'00970100009A0300'
dc h'009B0002009D0202'
dc h'009E0102009F0302'
dc h'00A6000100A70201'
dc h'00AB010100AC0301'
dc h'00AD000300AE0203'
dc h'00AF010300B20303'
dc h'00B3000002B40200'
dc h'02B5010002B60300'
dc h'02B7000202B90202'
dc h'02BA010202BB0302'
dc h'02BC000102BD0201'
dc h'02BE010102BF0301'
dc h'02CB000302CD0203'
dc h'02CE010302CF0303'
dc h'02D3000001D60200'
dc h'01D7010001D90300'
dc h'01DA000201DB0202'
dc h'01DC010201DD0302'
dc h'01DE000101DF0201'
dc h'01E5010101E60301'
dc h'01E7000301E90203'
dc h'01EA010301EB0303'
dc h'01EC000003ED0200'
dc h'03EE010003EF0300'
dc h'03F2000203F30202'
dc h'03F4010203F50302'
dc h'03F6000103F70201'
dc h'03F9010103FA0301'
dc h'03FB000303FC0203'
dc h'03FD010303FE0303'
dc h'03FF'
.DA #960200'
.DA #00970100009A0300'
.DA #009B0002009D0202'
.DA #009E0102009F0302'
.DA #00A6000100A70201'
.DA #00AB010100AC0301'
.DA #00AD000300AE0203'
.DA #00AF010300B20303'
.DA #00B3000002B40200'
.DA #02B5010002B60300'
.DA #02B7000202B90202'
.DA #02BA010202BB0302'
.DA #02BC000102BD0201'
.DA #02BE010102BF0301'
.DA #02CB000302CD0203'
.DA #02CE010302CF0303'
.DA #02D3000001D60200'
.DA #01D7010001D90300'
.DA #01DA000201DB0202'
.DA #01DC010201DD0302'
.DA #01DE000101DF0201'
.DA #01E5010101E60301'
.DA #01E7000301E90203'
.DA #01EA010301EB0303'
.DA #01EC000003ED0200'
.DA #03EE010003EF0300'
.DA #03F2000203F30202'
.DA #03F4010203F50302'
.DA #03F6000103F70201'
.DA #03F9010103FA0301'
.DA #03FB000303FC0203'
.DA #03FD010303FE0303'
.DA #03FF'
* nibl buffer 'nbuf2' must be on a page boundary !!!
nbuf2 .EQ *-ofsD nibl buffer for read/write of low
ds 86 2-bits of each byte.
ibtrk .EQ *-ofsD
dc h'00'
.DA #00'
ibsect .EQ *-ofsD
dc h'00'
ibstat .EQ *-ofsD
@ -364,7 +364,7 @@ iobpdn .EQ *-ofsD
curtrk .EQ *-ofsD
dc h'00'
dc h'00000000000000' for slots 1 thru 7
dc h'00000000000000' drives 1 & 2
.DA #00000000000000' drives 1 & 2
retrycnt .EQ *-ofsD
dc h'00'
seekcnt .EQ *-ofsD
@ -376,7 +376,7 @@ last .EQ *-ofsD 'odd bit' nibls.
csum .EQ *-ofsD used for address header cksum
dc h'00'
csstv .EQ *-ofsD
dc h'00'
.DA #00'
sect .EQ *-ofsD
dc h'00'
track .EQ *-ofsD
@ -394,10 +394,10 @@ trkn .EQ *-ofsD
ontable .EQ *-ofsD
dc h'013028'
dc h'24201E1D1C1C'
.DA #24201E1D1C1C'
offtable .EQ *-ofsD
dc h'702C'
dc h'26221F1E1D1C1C'
.DA #26221F1E1D1C1C'
* mswait subroutine
*
@ -941,20 +941,20 @@ L59E6 sec error.
L59E8 clc
rts end of obj xrw_0
dc h'0000' pad bytes to $D6EC (pathbuf-$14)
.DA #0000' pad bytes to $D6EC (pathbuf-$14)
* variables used by mli for smartport interface
spstatlist .EQ *-ofsD ref pathbuf-$14
dc h'00000000' smartport status list buffer
spunit .EQ *-ofsD ref pathbuf-$10
dc h'0000000000000000' smartport unit numbers
dc h'0000000000000000'
.DA #0000000000000000' smartport unit numbers
.DA #0000000000000000'
* pathname buffer starts at this page boundary (pathbuf = $D700)
*--------------------------------------
MAN
LOAD USR/SRC/PRODOS/PRODOS.S.DISKII
SAVE USR/SRC/PRODOS/PRODOS.S
LOAD USR/SRC/PRODOS.203/PRODOS.S.DISKII
SAVE USR/SRC/PRODOS.203/PRODOS.S
ASM

View File

@ -10,13 +10,13 @@ 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.
dc i2'tclk_in' clock routine entry address.
.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
dc h'00'
.DA #00'
drivertbl1 .EQ *-ofsG device driver table 1
dc i2'nodevice' slot 0 reserved
dc i2'nodevice' s1, d1
@ -36,13 +36,13 @@ drivertbl2 .EQ *-ofsG device driver table 2
dc i2'nodevice' s6, d2
dc i2'nodevice' s7, d2
devnum .EQ *-ofsG most recent accessed device
dc h'00'
.DA #00'
numdevs .EQ *-ofsG count (-1) active devices
dc h'FF'
devlist .EQ *-ofsG active device list
dc h'00000000000000' up to 14 units may be active
dc h'00000000000000'
dc h'00'
.DA #00'
msb off
dc c'(C)APPLE '
mlient1 .EQ *-ofsG
@ -53,7 +53,7 @@ aftirq .EQ *-ofsG irq returns here.
sta ramin read/write RAM bank 1
jmp fix45 restore $45 after interrupt in LC
oldacc .EQ *-ofsG
dc h'00'
.DA #00'
afbank .EQ *-ofsG
dc h'00'
@ -63,7 +63,7 @@ afbank .EQ *-ofsG
memmap .EQ *-ofsG P8 memory bitmap
dc h'C000000000000000'
dc h'0000000000000000'
dc h'0000000000000001'
.DA #0000000000000001'
* table of buffer addresses for currently open files.
* these can only be changed thru the mli call setbuf.
@ -73,7 +73,7 @@ buftbl .EQ *-ofsG
dc h'0000' file #2
dc h'0000' file #3
dc h'0000' file #4
dc h'0000' file #5
.DA #0000' file #5
dc h'0000' file #6
dc h'0000' file #7
dc h'0000' file #8
@ -84,12 +84,12 @@ buftbl .EQ *-ofsG
* with the address interrupted.
inttbl .EQ *-ofsG interrupt table
dc h'0000' int #1
.DA #0000' int #1
dc h'0000' int #2
dc h'0000' int #3
dc h'0000' int #4
p8areg .EQ *-ofsG A register savearea
dc h'00'
.DA #00'
p8xreg .EQ *-ofsG X register savearea
dc h'00'
p8yreg .EQ *-ofsG Y register savearea
@ -177,7 +177,7 @@ bnkbyt2 .EQ *-ofsG
dc h'00'
dc h'00000000' pad to before $BFFA
dc h'04' gsos compatibility byte ($BFFA)
dc h'00' pad
.DA #00' pad
dc h'00' reserved
dc h'00' version # of running interpreter
dc h'00' preserved for System Utilities
@ -187,6 +187,6 @@ kversion .EQ *-ofsG kernal version
* end of obj mli_1
*--------------------------------------
MAN
LOAD USR/SRC/PRODOS/PRODOS.S.GP
SAVE USR/SRC/PRODOS/PRODOS.S
LOAD USR/SRC/PRODOS.203/PRODOS.S.GP
SAVE USR/SRC/PRODOS.203/PRODOS.S
ASM

View File

@ -64,14 +64,14 @@ stapfx .EQ *-ofsR2
* these 3 vectors hard-coded into processor
dc i2'nmivect' nmi handler
dc i2'lreset' reset handler
.DA nmivect' nmi handler
.DA lreset' reset handler
irqv .EQ *-ofsR2
dc i2'lanirq' irq handler
* end of obj mli_3
*--------------------------------------
MAN
LOAD USR/SRC/PRODOS/PRODOS.S.IRQ
SAVE USR/SRC/PRODOS/PRODOS.S
LOAD USR/SRC/PRODOS.203/PRODOS.S.IRQ
SAVE USR/SRC/PRODOS.203/PRODOS.S
ASM

View File

@ -368,94 +368,94 @@ LDR.MLIREADBLOCK.P
.DA 0 2 byte data buffer
.DA 0 2 byte block number
cortland dc i1'$00' cortland loader flag (1 = Cortland)
newquitflag dc i1'$00' 1 = old quit code
cortland .BS 1 cortland loader flag (1 = Cortland)
newquitflag .BS 1 1 = old quit code
H232B dc i1'$01' move interpreter loader code
dc i2'lodintrp' destination address
dc i2'H257B-licode' length to move
dc i2'licode' source address
dc i1'$01' move $3F0 vectors
dc i2'p3vect' destination
dc i2'$0010' 16 bytes to move
dc i2'H257B' source
dc i1'$01'
dc i2'lookptr'
dc i2'$0002'
dc i2'ZP.DstPtr'
dc i1'$01' move 128k test to zero page
dc i2'tst128' destination
dc i2'H2622-H25DC' length
dc i2'H25DC' source
dc h'FF' done
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 ZP.DstPtr'
.DA #$01' move 128k test to zero page
.DA tst128' destination
.DA H2622-H25DC' length
.DA H25DC' source
.DA #FF' done
dsp64 dc i1'$01' move p8 dispatcher code
dc i2'displc2' destination
dc i2'birdbye-disp1obj' length (must be <= 3 pages)
dc i2'disp1obj' source
dc h'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
newquitbl dc i1'$01' move Bird's Bye code
dc i2'displc2' dest
dc i2'GQdisp-birdbye' length (must be <= 3 pages)
dc i2'birdbye' source
dc h'FF' done
.DA displc2' dest
.DA GQdisp-birdbye' length (must be <= 3 pages)
.DA birdbye' source
.DA #FF' done
altdsptbl dc i1'$01' move GQuit launcher
dc i2'displc2' destination
dc i2'$0300' length (must be <= 3 pages)
dc i2'GQdisp' source
dc i1'$01' move a copy of GQuit launcher
dc i2'dispadr' to dispadr for gsos
dc i2'$0300' length (must be <= 3 pages)
dc i2'GQdisp' source
dc h'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
.DA #FF' done
* tables for moving 64k version of mli for execution
H2367 dc i1'$01' relocation table. 1=move src to ZP.DstPtr
dc i2'lanirq' destination
dc i2'H2E00-H2D9B' length to move
dc i2'H2D9B' source
dc i1'$01'
dc i2'MLI' globals
dc i2'$0100' in one page
dc i2'H2E00'
dc h'00' 0=clear buffers $D700-$DDFF
dc i2'pathbuf'
dc i2'xdosorg-pathbuf'
dc i1'$01'
dc i2'xdosorg'
dc i2'ramsrc-xdosobj' length of mli
dc i2'xdosobj'
dc i1'$01'
dc i2'rwts'
dc i2'disp1obj-blockio' length of disk ii driver
dc i2'blockio'
dc h'FF' done
H2367 .DA #$01' relocation table. 1=move src to ZP.DstPtr
.DA lanirq' destination
.DA H2E00-H2D9B' length to move
.DA H2D9B' source
.DA #$01'
.DA MLI' globals
.DA $0100' in one page
.DA H2E00'
.DA #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'
.DA #FF' done
* move thunderclock
rlclk64 dc i1'$01' relocation table. 1=move src to ZP.DstPtr
dc i2'tclk_in' destination
dc i2'tclk_end-tclock_0' length of thunderclock driver
dc i2'tclock_0' source
dc i1'$04' 4=relocate and move program
dc i2'tclk_in'
dc i2'H2F69-tclock_0'
dc i2'tclk_in'
dc h'00'
rlclk64 .DA #$01' relocation table. 1=move src to ZP.DstPtr
.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'
.DA #00'
dc h'C1C1'
clock64 dc i1'$00'
dc h'FF' done
clock64 .DA #$00'
.DA #FF' done
* move cortland clock
cortclock dc i1'$01' relocation table. 1=move src to ZP.DstPtr
dc i2'tclk_in' destination
dc i2'cclk_end-cclock_0' length of cortland clock driver
dc i2'cclock_0' source
dc h'FF' done
.DA tclk_in' destination
.DA cclk_end-cclock_0' length of cortland clock driver
.DA cclock_0' source
.DA #FF' done
* load and run appletalk configuration file (atinit) if present
* or continue loading and running .system file
@ -466,28 +466,28 @@ ofsL .EQ licode-lodintrp offset from loader org
licode jsr MLI check for file 'atinit'
.DA #MLIGETFILEINFO
dc i2'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
.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
dc i1'$C8'
dc i2'atopen' parms
.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'
dc i1'$CA'
dc i2'rdparm'
.DA #$CA'
.DA rdparm'
bne H23E2 error - too big
jsr MLI close 'atinit' file
dc i1'$CC'
dc i2'clparm'
.DA #$CC'
.DA clparm'
bne H23E2 error
lda romin enable ROM
jsr sysentry execute ATinit
@ -506,20 +506,20 @@ H23F0 .DA #$1A length of message
.AS "Unable to load ATInit file"
gfi_list .EQ *-ofsL
dc h'0A'
.DA #0A'
dc i2'atinitname'
dc h'00'
gfi_type .EQ *-ofsL
dc h'00000000'
dc h'0000000000000000'
dc h'0000'
.DA #0000000000000000'
.DA #0000'
atopen .EQ *-ofsL parms to open 'atinit'
dc h'03'
dc i2'atinitname'
dc i2'iobuf' i/o buffer
dc h'01' ref# hard coded since no other files
atinitname .EQ *-ofsL
dc h'06' length of name
.DA #06' length of name
dc c'atinit' name of appletalk config file
goloadint .EQ *-ofsL
lda #>dbuf search directory buffer
@ -576,12 +576,12 @@ H247A iny
adc #$13 (carry set)
sta ierlen
jsr MLI open interpreter file
dc i1'$C8'
dc i2'opparm'
.DA #$C8'
.DA opparm'
bne badlod
jsr MLI get eof (length of file)
dc i1'$D1'
dc i2'efparm'
.DA #$D1'
.DA efparm'
bne badlod
lda eof+2
bne toolong
@ -592,15 +592,15 @@ H247A iny
lda eof
sta rdlen (read entire file)
jsr MLI read interpreter file
dc i1'$CA'
dc i2'rdparm'
.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
dc i1'$CC'
dc i2'clparm'
.DA #$CC'
.DA clparm'
bne badlod hopefully never taken
* if booting on a //c then see if esc is in keyboard buffer
@ -616,11 +616,11 @@ H24C8 jsr MLI close interpreter file
H24DF lda romin enable ROM
jmp sysentry go run interpreter
cflag .EQ *-ofsL
dc h'00' set if a //c.
.DA #00' set if a //c.
nointrp .EQ *-ofsL no interpreter found,
jsr MLI so quit.
dc i1'$65'
dc i2'quitparm'
.DA #$65'
.DA quitparm'
badlod ldy ierlen center the error message
lda #$27
sec
@ -646,7 +646,7 @@ iomess .EQ *-ofsL
dc c'** Unable to load'
dc c' X.System *********'
ierlen .EQ *-ofsL
dc h'00'
.DA #00'
opparm .EQ *-ofsL parms for open call
dc h'03'
dc i2'PrefixBuf'
@ -654,7 +654,7 @@ opparm .EQ *-ofsL parms for open call
dc h'01'
efparm .EQ *-ofsL parms for get eof call
dc h'02'
dc h'01'
.DA #01'
eof .EQ *-ofsL
dc h'000000' length of file.
rdparm .EQ *-ofsL parms for read call
@ -662,7 +662,7 @@ rdparm .EQ *-ofsL parms for read call
dc h'01'
dc i2'sysentry'
rdlen .EQ *-ofsL
dc h'0000'
.DA #0000'
dc h'0000'
clparm .EQ *-ofsL parms for close call
dc h'01'
@ -670,7 +670,7 @@ clparm .EQ *-ofsL parms for close call
quitparm .EQ *-ofsL parms for quit call
dc h'04'
dc h'00'
dc h'0000'
.DA #0000'
dc h'00'
dc h'0000'
iterp .EQ *-ofsL interpreter suffix that is required
@ -679,12 +679,12 @@ iterp .EQ *-ofsL interpreter suffix that is required
* 16 bytes moved to $03F0 vectors
H257B dc i2'breakv'
dc i2'oldrst'
dc h'5A' powerup byte
.DA oldrst'
.DA #5A' powerup byte
jmp oldrst '&' vector
jmp oldrst ctrl-y vector
dc h'004000'
dc i2'irqent' global page interrupt vector
.DA #004000'
.DA irqent' global page interrupt vector
lc1in lda ramin read/write language card RAM bank 1
lda ramin
rts
@ -1036,64 +1036,69 @@ H27F3 lda idxl+1 mark a bit in slot byte
sta rommap slot ROM bit map
H2801 rts
H2802 dc i2'rwts' disk ii driver
H2802 .DA rwts disk ii driver
* id bytes: evens for clock, odds for disk
dskid dc h'082028005803703C'
dskid .HS 082028005803703C
* slot bits
sltbit dc h'0002040810204080'
sltbit .HS 0002040810204080
fndtrd clc
ldy sltbit
H2818 lda (lookptr),y
and #$DF
adc sltbit
sta sltbit
rol sltbit
iny
cpy sltbit+3
bne H2818
tya
asl a
asl a
asl a
asl a
tay
eor sltbit
adc #$0B
bne H283B
lda idapple
rts
H283B lda #$00
rts
installdev php how many drives (carry).
lda idxl+1 get index to global device table
and #$07 for this slot...
asl a
tay into y reg.
asl a
asl a now form device # = slot #
asl a in high nibble.
jsr stadrv OR in low nibble, store in dev list.
plp restore # of devices in carry.
ror a if 2 drives, then bit 7=1.
bpl H2853 branch if a 1 drive device (e.g. hard drive)
inx else presume that 2nd drive is present.
sta devlist,x active device list.
H2853 stx numdevs save updated device count.
asl a shift # of drives back into carry.
lda driveradr get high address of device driver.
sta drivertbl1,y device driver table 1.
bcc H2862 branch if single drive.
sta drivertbl2,y device driver table 2.
H2862 lda driveradr+1
sta drivertbl1+1,y
bcc H286D
sta drivertbl2+1,y
H286D rts
fndtrd clc
ldy sltbit
H2818 lda (lookptr),y
and #$DF
adc sltbit
sta sltbit
rol sltbit
iny
cpy sltbit+3
bne H2818
tya
asl a
asl a
asl a
asl a
tay
eor sltbit
adc #$0B
bne H283B
lda idapple
rts
H283B lda #$00
rts
installdev php how many drives (carry).
lda idxl+1 get index to global device table
and #$07 for this slot...
asl a
tay into y reg.
asl a
asl a now form device # = slot #
asl a in high nibble.
jsr stadrv OR in low nibble, store in dev list.
plp restore # of devices in carry.
ror a if 2 drives, then bit 7=1.
bpl H2853 branch if a 1 drive device (e.g. hard drive)
inx else presume that 2nd drive is present.
sta devlist,x active device list.
H2853 stx numdevs save updated device count.
asl a shift # of drives back into carry.
lda driveradr get high address of device driver.
sta drivertbl1,y device driver table 1.
bcc H2862 branch if single drive.
sta drivertbl2,y device driver table 2.
H2862 lda driveradr+1
sta drivertbl1+1,y
bcc H286D
sta drivertbl2+1,y
H286D rts
* query smartport status to determine # of devices
* and install up to 4 units in table if card is in slot 5
@ -1135,12 +1140,12 @@ pscall jsr $0000 self modifying code
* and report true # of devices attached
jsr spvect status of Cocoon
dc h'00'
dc i2'spcparms' ignore any errors.
.DA #00'
.DA spcparms' ignore any errors.
H28B1 stz statunit set unit# = 0
jsr spvect call to get the device count.
dc h'00' this is a status call
dc i2'spcparms'
.DA #00' this is a status call
.DA spcparms'
lda numdev2
beq donesp no devices, so done.
cmp #$02 carry set if 2,3,4
@ -1190,26 +1195,26 @@ H2903 rts
* smartport call parameters
spcparms dc i1'$03' # of parms
statunit dc i1'$00' unit number (code for smartport stat)
dc i2'numdev2'
dc h'00' status code (0 = general status)
spcparms .DA #$03 # of parms
statunit .DA #$00 unit number (code for smartport stat)
.DA numdev2
.DA #00 status code (0 = general status)
* indexes into driver table
driveridx dc h'06' s3, d1
dc h'1E' s7, d2
dc h'0E' s7, d1
dc h'1C' s6, d2
dc h'0C' s6, d1
dc h'1A' s5, d2
dc h'0A' s5, d1
dc h'14' s2, d2
dc h'04' s2, d1
dc h'12' s1, d2
dc h'02' s1, d1
dc h'18' s4, d2
dc h'08' s4, d1
driveridx .DA #$06 s3, d1
.DA #$1E s7, d2
.DA #$0E' s7, d1
.DA #$1C' s6, d2
.DA #$0C' s6, d1
.DA #$1A' s5, d2
.DA #$0A' s5, d1
.DA #$14' s2, d2
.DA #$04' s2, d1
.DA #$12' s1, d2
.DA #$02' s1, d1
.DA #$18' s4, d2
.DA #$08' s4, d1
* self modifying jmp = smartport entry address
@ -1230,8 +1235,8 @@ H291F jsr H29EB is there a smartport device here?
jsr H28E8 set up device attributes
stz statunit
jsr spvect do a status call on smartport itself
dc h'00'
dc i2'spcparms'
.DA #00'
.DA spcparms'
lda numdev2 # of devices on smartport
cmp #$03
bcc H2974 only 2 devices,skip to next one.
@ -1251,8 +1256,8 @@ H295B cmp driveradr have we done all units in this slot?
bcs H2974 yes, skip to next slot.
sta statunit store the unit#.
jsr spvect do status call
dc h'00'
dc i2'spcparms'
.DA #00'
.DA spcparms'
lda numdev2 is this a block device?
bmi mount yes, so mount it.
H296E lda statunit go check the next unit#
@ -1580,20 +1585,20 @@ H2B89 and #$03
* relocation table contains length of each opcode in 2-bit groups
opcodln dc h'0928193C0A280D3C'
dc h'0B2A193F0A280D3C'
dc h'0928193F0A280D3C'
dc h'0928193F0A280D3C'
dc h'082A113F0A2A1D0C'
dc h'2A2A193F0A2A1D3F'
dc h'0A2A193F0A280D3C'
dc h'0A2A193F0A280D3C'
opcodln .DA #0928193C0A280D3C'
.DA #0B2A193F0A280D3C'
.DA #0928193F0A280D3C'
.DA #0928193F0A280D3C'
.DA #082A113F0A2A1D0C'
.DA #2A2A193F0A2A1D3F'
.DA #0A2A193F0A280D3C'
.DA #0A2A193F0A280D3C'
wsize dc i1'$00'
sgcnt dc i1'$00'
limlo dc h'0000000000000000'
limhi dc h'0000000000000000'
ofset dc h'0000000000000000'
wsize .DA #$00'
sgcnt .DA #$00'
limlo .DA #0000000000000000'
limhi .DA #0000000000000000'
ofset .DA #0000000000000000'
* patch to gsos vectors so error is returned for os calls - rev note #101
@ -1663,7 +1668,7 @@ L2C4D lda $01,s
.BS $2C80-*
*--------------------------------------
MAN
LOAD USR/SRC/PRODOS/PRODOS.S.LDR
SAVE USR/SRC/PRODOS/PRODOS.S
LOAD USR/SRC/PRODOS.203/PRODOS.S.LDR
SAVE USR/SRC/PRODOS.203/PRODOS.S
ASM

View File

@ -79,7 +79,7 @@ H2D6A lda (A1L),y pointers set in card by 'setptr'
lda #>donewrt
jmp gocard
sp1 .EQ *-ofsR2
dc h'0000'
.DA #0000'
a1l1 .EQ *-ofsR2 13 bytes of storage
* end of obj ram_2
@ -88,6 +88,6 @@ r2_end .EQ *
ds $D9B-(r2_end-H2000) fill to lanirq ($FF9B see note below)
*--------------------------------------
MAN
LOAD USR/SRC/PRODOS/PRODOS.S.RAM
SAVE USR/SRC/PRODOS/PRODOS.S
LOAD USR/SRC/PRODOS.203/PRODOS.S.RAM
SAVE USR/SRC/PRODOS.203/PRODOS.S
ASM

View File

@ -39,7 +39,7 @@ r1_end .EQ * end of /RAM installer
ds $D00-(r1_end-H2000) pad 0's to page boundary
*--------------------------------------
MAN
LOAD USR/SRC/PRODOS/PRODOS.S.RAMI
SAVE USR/SRC/PRODOS/PRODOS.S
LOAD USR/SRC/PRODOS.203/PRODOS.S.RAMI
SAVE USR/SRC/PRODOS.203/PRODOS.S
ASM

View File

@ -227,7 +227,7 @@ L525E cmp #$11 if <=17 then done
sbc #$11 else block=block-17.
inx iteration count.
bpl L525E should branch always
dc h'00' otherwise crash !!!
.DA #00' otherwise crash !!!
L5268 tay remainder in y
* if remainder is 1 then it's an index block:
@ -288,7 +288,7 @@ L52B1 lda (A4L),y (pointer set by setptr)
jmp exitcard
formatflg .EQ *-ofsR0
dc h'00' not formatted yet
.DA #00' not formatted yet
tcmd .EQ *-ofsR0
dc h'00' command
dc h'00' unit (not used)
@ -300,15 +300,15 @@ R01 .EQ *-ofsR0
dc h'00' page requested
BITMAP .EQ *-ofsR0
dc h'00FFFFFF' blocks 0-7 used
dc h'FFFFFFFF'
.DA #FFFFFFFF'
dc h'FFFFFFFF'
dc h'FFFFFFFE'
.DA #FFFFFFFE'
VDIR .EQ *-ofsR0 start of vdir.
dc h'F3' storage type = F, name length = 3
msb off
dc c'RAM'
access .EQ *-ofsR0
dc h'C3' destroy, rename, read enabled
.DA #C3' destroy, rename, read enabled
dc h'27' entry length
dc h'0D'
dc h'0000'
@ -323,7 +323,7 @@ exitcard .EQ *-ofsR0
sta store80on enable 80store
L52EA jmp bypass jump around passit
passit .EQ *-ofsR0
dc h'0000'
.DA #0000'
bypass .EQ *-ofsR0
lda #<noerr set up return to noerr
sta passit
@ -338,11 +338,11 @@ ex1 .EQ *-ofsR0
* since the interrupt vector must go there if aux interrupts
* are to be used. no room for expansion here !!
dc h'0000' $3FE-$3FF
.DA #0000' $3FE-$3FF
* end of obj ram_0
*--------------------------------------
MAN
LOAD USR/SRC/PRODOS/PRODOS.S.RAMI
SAVE USR/SRC/PRODOS/PRODOS.S
LOAD USR/SRC/PRODOS.203/PRODOS.S.RAMI
SAVE USR/SRC/PRODOS.203/PRODOS.S
ASM

View File

@ -37,8 +37,8 @@ L5A2D jsr home clear screen
sta cv
jsr crout
jsr MLI get prefix
dc i1'$C7'
dc i2'dsp1pfx'
.DA #$C7'
.DA dsp1pfx'
ldx PrefixBuf get prefix length
lda #$00 put 0 at end of prefix
sta PrefixBuf+1,x
@ -99,8 +99,8 @@ L5ABD cpx #$00 prefix length = 0 ?
beq L5AD3 if yes, don't set length.
stx PrefixBuf set prefix length.
jsr MLI call mli to set prefix.
dc i1'$C6'
dc i2'dsp1pfx'
.DA #$C6'
.DA dsp1pfx'
bcc L5AD3 if ok, go get filename.
jsr bell if not, ring bell
lda #$00 and try again for prefix.
@ -159,8 +159,8 @@ 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
dc i1'$C4'
dc i2'dsp1info'
.DA #$C4'
.DA dsp1info'
bcc L5B4F if no errors.
jmp dsp1error
L5B4F lda dsp1type
@ -171,8 +171,8 @@ L5B4F lda dsp1type
L5B5B lda #$00 it's a system file
sta dsp1cln
jsr MLI close all open files
dc i1'$CC'
dc i2'dsp1cls'
.DA #$CC'
.DA dsp1cls'
bcc L5B6B
jmp dsp1error
L5B6B lda dsp1acess check for proper access.
@ -181,16 +181,16 @@ L5B6B lda dsp1acess check for proper access.
lda #$27 i/o error
jmp dsp1error
L5B77 jsr MLI open the file
dc i1'$C8'
dc i2'dsp1open'
.DA #$C8'
.DA dsp1open'
bcc L5B82
jmp dsp1error
L5B82 lda dsp1refn copy the reference number
sta dsp1rdn
sta dsp1eofn
jsr MLI get eof
dc i1'$D1'
dc i2'dsp1eof'
.DA #$D1'
.DA dsp1eof'
bcs L5BE2
lda dsp1eofb+2 3rd of 3 bytes.
beq L5B9C if 0 then ok
@ -201,12 +201,12 @@ L5B9C lda dsp1eofb move eof to # of bytes to read.
lda dsp1eofb+1
sta dsp1cnt+1
jsr MLI read the file
dc i1'$CA'
dc i2'dsp1read'
.DA #$CA'
.DA dsp1read'
php save the status.
jsr MLI close the file.
dc i1'$CC'
dc i2'dsp1cls'
.DA #$CC'
.DA dsp1cls'
bcc L5BBB
L5BB7 plp get status (it is irrelevant now)
bne L5BE2 if close generated an error
@ -261,24 +261,24 @@ L5C0B jsr prntmsg
dsp1msgs .EQ *-ofsS
dsp1msg0 .EQ *-ofsS
dc c'ENTER PREFIX (PRESS "RETURN" TO ACCEPT)'
dc h'00'
.DA #00'
disp1msg .EQ *-ofsS
dc c'ENTER PATHNAME OF NEXT APPLICATION'
dc h'00'
.DA #00'
dsp1err1 .EQ *-ofsS
dc h'87'
.DA #87'
dc c'NOT A TYPE "SYS" FILE'
dc h'00'
.DA #00'
dsp1err2 .EQ *-ofsS
dc h'87'
.DA #87'
dc c'I/O ERROR '
dc h'00'
.DA #00'
dsp1err3 .EQ *-ofsS
dc h'87'
.DA #87'
dc c'FILE/PATH NOT FOUND '
dc h'00'
.DA #00'
dsp1info .EQ *-ofsS get file info parms
dc h'0A' 10 parameters
.DA #0A' 10 parameters
dc i2'PrefixBuf' pathname buffer
dsp1acess .EQ *-ofsS
dc h'00' access
@ -292,7 +292,7 @@ dsp1open .EQ *-ofsS open file parms
dsp1refn .EQ *-ofsS
dc h'00' reference #
dsp1cls .EQ *-ofsS close file parms
dc h'01' 1 parameter for close
.DA #01' 1 parameter for close
dsp1cln .EQ *-ofsS
dc h'00' reference #
dsp1read .EQ *-ofsS
@ -302,7 +302,7 @@ dsp1rdn .EQ *-ofsS
dc i2'sysentry' .SYS load address
dsp1cnt .EQ *-ofsS
dc h'0000' byte count
dc h'0000'
.DA #0000'
dsp1eof .EQ *-ofsS get eof parms
dc h'02' 2 parameters
dsp1eofn .EQ *-ofsS
@ -310,7 +310,7 @@ dsp1eofn .EQ *-ofsS
dsp1eofb .EQ *-ofsS
dc h'000000' 3 byte eof
dsp1pfx .EQ *-ofsS get/set prefix parms
dc h'01' 1 parameter
.DA #01' 1 parameter
dc i2'PrefixBuf' prefix buffer
disp1end .EQ *
@ -319,6 +319,6 @@ disp1end .EQ *
* end of obj sel_0
*--------------------------------------
MAN
LOAD USR/SRC/PRODOS/PRODOS.S.SEL0
SAVE USR/SRC/PRODOS/PRODOS.S
LOAD USR/SRC/PRODOS.203/PRODOS.S.SEL0
SAVE USR/SRC/PRODOS.203/PRODOS.S
ASM

View File

@ -46,8 +46,8 @@ L5D3F dex decrement list pointer and restore.
volname sta ol_unit store unit number for online.
jsr MLI
dc i1'$C5' online call
dc i2'ol_parms'
.DA #$C5' online call
.DA ol_parms'
bcs L5D32 error check.
stz dlevel haven't read root directory yet.
lda PrefixBuf+1 load description byte.
@ -65,8 +65,8 @@ vnam1 .EQ *-ofsB
* open and read directory
jsr MLI
dc i1'$C8' open
dc i2'op_parms'
.DA #$C8' open
.DA op_parms'
bcc L5D7F good open.
lda dlevel trying to open root directory ?
beq L5D32 yes, just move to next volume.
@ -124,8 +124,8 @@ L5DCE dey decrement file block counter
L5DD8 adc #$04 add 4 and put in
sta fpos_lo low byte of setmark.
jsr MLI call mli
dc i1'$CE' set mark
dc i1'smparms' parameters address = $0060
.DA #$CE' set mark
.DA #smparms' parameters address = $0060
dc h'00'
bcs L5DB3 error
jsr doread
@ -161,8 +161,8 @@ L5E15 lda sysentry,y get byte of filename
bne L5DB5 get next file (branch always)
L5E26 jmp ds2 error. try next unit.
L5E29 jsr MLI close directory file
dc i1'$CC'
dc i2'cl_parms'
.DA #$CC'
.DA cl_parms'
bcs L5E26 error.
jsr settxt use full screen for windows
jsr home
@ -262,8 +262,8 @@ L5EF1 jmp vnam1 get new directory info.
* run selected file
L5EF4 jsr MLI set prefix
dc i1'$C6'
dc i2'pf_parms'
.DA #$C6'
.DA pf_parms'
bcs L5EED error.
ldx valcnt get name number.
jsr namecalc set up name storage area (on return y=0)
@ -283,8 +283,8 @@ L5F04 iny start at y = 1.
lda #$95 ctrl-u
jsr cout turn off 80 columns.
jsr MLI open file
dc i1'$C8'
dc i2'op_parms'
.DA #$C8'
.DA op_parms'
bcs L5EED if error.
lda op_refn move reference number
sta rd_refn for read.
@ -294,8 +294,8 @@ L5F04 iny start at y = 1.
jsr doread read selected file.
php save possible error.
jsr MLI close file. ignore any error from close
dc i1'$CC'
dc i2'cl_parms'
.DA #$CC'
.DA cl_parms'
plp restore status from read.
bcs L5EED if any errors.
jmp sysentry execute selected system file.
@ -374,8 +374,8 @@ output .EQ *-ofsB
L5FB1 jmp cout output to screen.
doread .EQ *-ofsB
jsr MLI mli read call
dc i1'$CA'
dc i2'rd_parms'
.DA #$CA'
.DA rd_parms'
rts
* data area
@ -383,16 +383,16 @@ doread .EQ *-ofsB
dsp2msg .EQ *-ofsB
dc c'RETURN: Select | TAB: Chg Vol | '
dc c'ESC: Back'
dc i1'$00'
.DA #$00'
fldrmsg .EQ *-ofsB
dc h'0F' inverse control code
.DA #0F' inverse control code
dc h'1B' enable mousetext
dc c'XY' folder characters
dc h'18' disable mousetext
dc h'0E' normal control code
dc h'00'
op_parms .EQ *-ofsB open parameters
dc h'03' 3 parms
.DA #03' 3 parms
dc i2'PrefixBuf' pathname
dc i2'op_buf' file buffer
op_refn .EQ *-ofsB
@ -406,10 +406,10 @@ ol_unit .EQ *-ofsB
dc h'60' unit number, default = s6, d1
dc i2'PrefixBuf+1' data buffer
pf_parms .EQ *-ofsB set prefix parameters
dc h'01' one parm
.DA #01' one parm
dc i2'PrefixBuf' pathname
rd_parms .EQ *-ofsB read parameters
dc h'04' 4 parms
.DA #04' 4 parms
rd_refn .EQ *-ofsB
dc h'01' reference number
dc i2'sysentry' data buffer
@ -426,6 +426,6 @@ dhdr_len .EQ *-ofsB directory header length
* end of obj sel_1
*--------------------------------------
MAN
LOAD USR/SRC/PRODOS/PRODOS.S.SEL1
SAVE USR/SRC/PRODOS/PRODOS.S
LOAD USR/SRC/PRODOS.203/PRODOS.S.SEL1
SAVE USR/SRC/PRODOS.203/PRODOS.S
ASM

View File

@ -20,7 +20,7 @@ GQdisp lda ramin read/write LC bank 1
clc
xce 16 bit native mode.
jmp >P8QUIT go to GQuit.
dc h'0000000000' offset to paragraph boundary.
.DA #0000000000' offset to paragraph boundary.
dc c'GQ' id bytes so GQuit can identify this
* load application
@ -58,8 +58,8 @@ GQdisp lda ramin read/write LC bank 1
* prefix is passed at $00/0200 by GQuit.
L6020 jsr MLI set prefix
dc i1'$C6'
dc i2'pfxparms'
.DA #$C6'
.DA pfxparms'
bcc L602D if prefix ok.
jsr gqerror error handler.
bra L6020 try again
@ -76,8 +76,8 @@ L602D xce native mode (carry clear)
L603D sec back to emulation mode.
xce
L603F jsr MLI open the application file
dc i1'$C8'
dc i2'opnparms'
.DA #$C8'
.DA opnparms'
bcc L604C if open ok.
jsr gqerror handle error.
bra L603F try again.
@ -89,8 +89,8 @@ L604C lda oprefnum copy ref number to parameter lists
* do a geteof call for how many bytes to read
L6058 jsr MLI get eof
dc i1'$D1'
dc i2'eofparms'
.DA #$D1'
.DA eofparms'
bcc L6065 eof ok.
jsr gqerror handle error.
bra L6058 try again.
@ -102,14 +102,14 @@ L6065 lda eofval
lda eofval+1
sta rdcount+1
L6071 jsr MLI read
dc i1'$CA'
dc i2'readparm'
.DA #$CA'
.DA readparm'
bcc L607E read ok
jsr gqerror
bra L6071
L607E jsr MLI close
dc i1'$CC'
dc i2'closeprm'
.DA #$CC'
.DA closeprm'
bcc L608B close ok
jsr gqerror
bra L607E
@ -157,8 +157,8 @@ L60AB clc native mode
sec emulation mode
xce
jsr MLI quit back to GQuit
dc i1'$65'
dc i2'quitparms'
.DA #$65'
.DA quitparms'
* p8 mount volume
*
@ -346,8 +346,8 @@ L621B cmp inbuf,x
L6225 dex don't include trailing slash.
stx inbuf set new length.
jsr MLI set the P8 prefix.
dc i1'$C6'
dc i2'pfxparms'
.DA #$C6'
.DA pfxparms'
lda #$00 set z-flag
L6231 rts and go launch the app.
@ -366,8 +366,8 @@ ckfordrv .EQ *-ofsQ
L623C sec emulation mode.
xce
jsr MLI get info on the volume.
dc i1'$C4'
dc i2'gfiparms'
.DA #$C4'
.DA gfiparms'
bcc L6252 branch if volume found,
clc (native mode)
xce
@ -382,7 +382,7 @@ L6252 rts
* Prodos 8 parameter lists
pfxparms .EQ *-ofsQ set prefix parms.
dc h'01' one parm.
.DA #01' one parm.
dc i2'inbuf' address of prefix.
opnparms .EQ *-ofsQ open parms.
dc h'03' 3 parms.
@ -391,13 +391,13 @@ opnparms .EQ *-ofsQ open parms.
oprefnum .EQ *-ofsQ
dc h'00' reference #
eofparms .EQ *-ofsQ
dc h'02' 2 parms
.DA #02' 2 parms
eofrefn .EQ *-ofsQ
dc h'00' reference #
eofval .EQ *-ofsQ
dc h'000000' 3 byte eof value
readparm .EQ *-ofsQ
dc h'04' 4 parms
.DA #04' 4 parms
rdrefnum .EQ *-ofsQ
dc h'00' reference #
dc i2'sysentry' read into $2000 (bank 0).
@ -409,23 +409,23 @@ closeprm .EQ *-ofsQ
closeref .EQ *-ofsQ
dc h'00' reference #
quitparms .EQ *-ofsQ
dc h'04' 4 parms.
.DA #04' 4 parms.
dc h'00' quit back to launcher (GQuit)
dc h'0000'
dc h'00'
dc h'0000'
gfiparms .EQ *-ofsQ get file info parms.
dc h'0A' 10 parms
.DA #0A' 10 parms
dc i2'volbuf' volume buffer
dc h'00' access
dc h'00' file type
dc h'0000' aux type
dc h'00' storage type
dc h'0000' blocks used
dc h'0000' modification date
.DA #0000' modification date
dc h'0000' modification time
dc h'0000' creation date
dc h'0000' creation time
.DA #0000' creation time
* messages for P8 fatal error. maximum length of message is 35 characters.
* the error code will be displayed immediately after the final character.
@ -450,7 +450,7 @@ mountmsg .EQ *-ofsQ
button1 .EQ *-ofsQ
dc h'0D'
dc c'Accept: '
dc h'1B' mousetext on
.DA #1B' mousetext on
dc h'0F' inverse on
dc h'4D' mousetext return
dc h'0E' normal on
@ -462,6 +462,6 @@ button2 .EQ *-ofsQ
* end of obj sel_2 (must be < GQdisp+$300)
*--------------------------------------
MAN
LOAD USR/SRC/PRODOS/PRODOS.S.SEL2
SAVE USR/SRC/PRODOS/PRODOS.S
LOAD USR/SRC/PRODOS.203/PRODOS.S.SEL2
SAVE USR/SRC/PRODOS.203/PRODOS.S
ASM

View File

@ -71,7 +71,7 @@ H2F69 rts
* one entry for each month. the values are modulo 256.
tdays .EQ *-ofsT
dc h'00' January
.DA #00' January
dc h'1F' February
dc h'3B' March
dc h'5A' April
@ -79,7 +79,7 @@ tdays .EQ *-ofsT
dc h'97' June
dc h'B5' July
dc h'D3' August
dc h'F2' September
.DA #F2' September
dc h'14' October (MOD 256)
dc h'33' November
dc h'51' December
@ -95,13 +95,13 @@ yradj .EQ *-ofsT
dc h'5F' Sunday
dc h'5E' Saturday
dc h'5D' Friday
dc h'62' Thursday
.DA #62' Thursday
dc h'61' Wednesday
dc h'60' Tuesday
tclk_end .EQ * end of obj tclock_0.
dc h'000000' pad
*--------------------------------------
MAN
LOAD USR/SRC/PRODOS/PRODOS.S.TCLK
SAVE USR/SRC/PRODOS/PRODOS.S
LOAD USR/SRC/PRODOS.203/PRODOS.S.TCLK
SAVE USR/SRC/PRODOS.203/PRODOS.S
ASM

View File

@ -263,14 +263,14 @@ irqdev .EQ *-ofsX
sta mslot slot being accessed.
H31DD jmp irqexit do necessary bank switches and return.
irqflag .EQ *-ofsX
dc h'00' 0 = old roms. 1 = new roms.
.DA #00' 0 = old roms. 1 = new roms.
irqcount .EQ *-ofsX
dc h'00' # of unclaimed interrupts.
svstack .EQ *-ofsX temporary save area from stack
dc h'0000000000000000'
dc h'0000000000000000'
.DA #0000000000000000'
svzerop .EQ *-ofsX temporary save area for zero page
dc h'000000000000'
.DA #000000000000'
goint1 .EQ *-ofsX
jmp (inttbl) interrupt routine 1
goint2 .EQ *-ofsX
@ -4041,15 +4041,15 @@ L4F65 and #$44 mask all but write allowed and write
L4F6D sec
L4F6E rts
spvectlo .EQ *-ofsX storage for low byte of smartport
dc h'0000000000000000' entry.
dc h'00000000000000'
.DA #0000000000000000' entry.
.DA #00000000000000'
spvecthi .EQ *-ofsX storage for high byte of smartport
dc h'0000000000000000' entry.
dc h'00000000000000'
.DA #0000000000000000' entry.
.DA #00000000000000'
statparms .EQ *-ofsX # of parms (always 3 except format)
dc h'03'
sp_unitnum .EQ *-ofsX
dc h'00' unit number
.DA #00' unit number
sp_bufptr .EQ *-ofsX
dc h'0000' data buffer
dc h'000000' block number (3 bytes)
@ -4058,49 +4058,49 @@ sp_bufptr .EQ *-ofsX
scnums .EQ *-ofsX table of valid mli command numbers.
dc h'D3000000'
dc h'40410000808182'
dc h'65C0C1C2C3C4C5C6'
dc h'C7C8C9CACBCCCDCE'
dc h'CF00D0D1D2'
.DA #40410000808182'
.DA #65C0C1C2C3C4C5C6'
.DA #C7C8C9CACBCCCDCE'
.DA #CF00D0D1D2'
pcntbl .EQ *-ofsX parameter counts for the calls
dc h'02FFFF'
dc h'FF0201FFFF030300'
dc h'04070102070A0201'
dc h'0103030404010102'
dc h'02FF020202'
.DA #FF0201FFFF030300'
.DA #04070102070A0201'
.DA #0103030404010102'
.DA #02FF020202'
* command table
cmdtable .EQ *-ofsX
dc i2'create' create
dc i2'destroy' destroy
dc i2'rename' rename
.DA rename' rename
dc i2'setinfo' setinfo
dc i2'getinfo' getinfo
dc i2'online' online
dc i2'setprefx' set prefix
.DA setprefx' set prefix
dc i2'getprefx' get prefix
dc i2'openf' open
dc i2'newline' newline
dc i2'readf' read
.DA readf' read
dc i2'writef' write
dc i2'closef' close
dc i2'flushf' flush
dc i2'setmark' set mark
.DA setmark' set mark
dc i2'getmark' get mark
dc i2'seteof' seteof
dc i2'geteof' geteof
dc i2'setbuf' setbuf
.DA setbuf' setbuf
dc i2'getbuf' getbuf
* corresponding command function bytes
disptch .EQ *-ofsX
dc h'A0A1A2A3'
dc h'84050607'
.DA #84050607'
dc h'88494A4B'
dc h'2C2D4E4F'
dc h'50515253'
.DA #2C2D4E4F'
.DA #50515253'
dinctbl .EQ *-ofsX table to increment
dc h'0100000200' directory usage/eof counts
@ -4112,14 +4112,14 @@ compat .EQ *-ofsX
dc h'00'
dc h'C3270D000000'
rootstuf .EQ *-ofsX
dc h'0F02000400000800'
.DA #0F02000400000800'
whichbit .EQ *-ofsX
dc h'8040201008040201'
.DA #8040201008040201'
ofcbtbl .EQ *-ofsX
dc h'0C0D1819151617'
.DA #0C0D1819151617'
inftabl .EQ *-ofsX
dc h'1E101F2080939421'
dc h'22232418191A1B'
.DA #1E101F2080939421'
.DA #22232418191A1B'
deathmsg .EQ *-ofsX
dc h'20'
msb on
@ -4132,7 +4132,7 @@ deathmsg .EQ *-ofsX
* variables in the file control block and temporary directory.
own_blk .EQ *-ofsX
dc h'0000'
.DA #0000'
own_ent .EQ *-ofsX
dc h'00'
own_len .EQ *-ofsX
@ -4140,7 +4140,7 @@ own_len .EQ *-ofsX
h_credt .EQ *-ofsX
dc h'0000' directory creation date
dc h'0000' directory creation time
dc h'00' version under which this dir created
.DA #00' version under which this dir created
dc h'00' earliest version that it's compatible
h_attr .EQ *-ofsX attributes (protect bit, etc.)
dc h'00'
@ -4151,7 +4151,7 @@ h_maxent .EQ *-ofsX maximum number of entries per block
h_fcnt .EQ *-ofsX current # of files in this directory
dc h'0000'
h_bmap .EQ *-ofsX address of first allocation bitmap
dc h'0000'
.DA #0000'
h_tblk .EQ *-ofsX total number of blocks on this unit
dc h'0000'
d_dev .EQ *-ofsX device number of this directory entry
@ -4161,12 +4161,12 @@ d_head .EQ *-ofsX address of <sub> directory header
d_entblk .EQ *-ofsX address of block which contains entry
dc h'0000'
d_entnum .EQ *-ofsX entry number within block
dc h'00'
.DA #00'
d_stor .EQ *-ofsX
dc h'0000000000000000' file name
dc h'0000000000000000'
d_filid .EQ *-ofsX user's identification byte
dc h'00'
.DA #00'
d_frst .EQ *-ofsX first block of file
dc h'0000'
d_usage .EQ *-ofsX # of blocks allocated to this file
@ -4174,7 +4174,7 @@ d_usage .EQ *-ofsX # of blocks allocated to this file
d_eof .EQ *-ofsX current end of file marker
dc h'000000'
d_credt .EQ *-ofsX
dc h'0000' file creation date
.DA #0000' file creation date
dc h'0000' file creation time
d_sosver .EQ *-ofsX sos version that created this file
dc h'00'
@ -4183,18 +4183,18 @@ d_comp .EQ *-ofsX backward version compatibility
d_attr .EQ *-ofsX attributes (protect, r/w, enable, etc.)
dc h'00'
d_auxid .EQ *-ofsX user auxilliary identification
dc h'0000'
.DA #0000'
d_moddt .EQ *-ofsX
dc h'0000' file's last modification date
dc h'0000' file's last modification time
d_dhdr .EQ *-ofsX file directory header block address
dc h'0000'
scrtch .EQ *-ofsX scratch area for
dc h'00000000' allocation address conversion.
.DA #00000000' allocation address conversion.
oldeof .EQ *-ofsX temp used in r/w
dc h'000000'
oldmark .EQ *-ofsX
dc h'000000'
.DA #000000'
xvcbptr .EQ *-ofsX used in 'cmpvcb' as a temp
dc h'00'
vcbptr .EQ *-ofsX
@ -4208,7 +4208,7 @@ reql .EQ *-ofsX
reqh .EQ *-ofsX
dc h'00'
levels .EQ *-ofsX
dc h'00'
.DA #00'
totent .EQ *-ofsX
dc h'00'
entcntl .EQ *-ofsX
@ -4224,7 +4224,7 @@ bmcnt .EQ *-ofsX
saptr .EQ *-ofsX
dc h'00'
pathcnt .EQ *-ofsX
dc h'00'
.DA #00'
p_dev .EQ *-ofsX
dc h'00'
p_blok .EQ *-ofsX
@ -4241,7 +4241,7 @@ half .EQ *-ofsX
bmastat .EQ *-ofsX
dc h'00'
bmadev .EQ *-ofsX
dc h'00'
.DA #00'
bmadadr .EQ *-ofsX
dc h'0000'
bmacmap .EQ *-ofsX
@ -4255,7 +4255,7 @@ tposhi .EQ *-ofsX
rwreql .EQ *-ofsX
dc h'00'
rwreqh .EQ *-ofsX
dc h'00'
.DA #00'
nlchar .EQ *-ofsX
dc h'00'
nlmask .EQ *-ofsX
@ -4274,7 +4274,7 @@ vcbentry .EQ *-ofsX
* xdos temporary variables
namcnt .EQ *-ofsX
dc h'00'
.DA #00'
rnptr .EQ *-ofsX
dc h'00'
namptr .EQ *-ofsX
@ -4293,7 +4293,7 @@ firstbl .EQ *-ofsX
firstbh .EQ *-ofsX
dc h'00'
stortyp .EQ *-ofsX
dc h'00'
.DA #00'
deblock .EQ *-ofsX
dc h'0000'
dtree .EQ *-ofsX
@ -4310,9 +4310,9 @@ loklst .EQ *-ofsX look list of recognized device numbers
dealbufl .EQ *-ofsX
dc h'0000000000000000'
dealbufh .EQ *-ofsX
dc h'0000000000000000'
.DA #0000000000000000'
cbytes .EQ *-ofsX
dc h'0000'
.DA #0000'
dc h'00' cbytes+2 must = 0
bufaddrl .EQ *-ofsX
dc h'00'
@ -4321,7 +4321,7 @@ bufaddrh .EQ *-ofsX
goadr .EQ *-ofsX
dc h'0000'
delflag .EQ *-ofsX used by 'detree' to know if called
dc h'00' from delete (destroy).
.DA #00' from delete (destroy).
* zero fill to page boundary - 3 ($FEFD). so that cortland flag stays
* within page boundary.
@ -4336,8 +4336,8 @@ cortflag .EQ *-ofsX cortland flag. 1 = Cortland system
* end of obj mli_2
*--------------------------------------
MAN
LOAD USR/SRC/PRODOS/PRODOS.S.XDOS
SAVE USR/SRC/PRODOS/PRODOS.S
LOAD USR/SRC/PRODOS.203/PRODOS.S.XDOS
SAVE USR/SRC/PRODOS.203/PRODOS.S
ASM

View File

@ -33,22 +33,22 @@ DirBlkBuf .EQ $C00
.PH $2000
.INB USR/SRC/PRODOS/PRODOS.S.LDR
.INB USR/SRC/PRODOS/PRODOS.S.RAMI
.INB USR/SRC/PRODOS/PRODOS.S.RAM
.INB USR/SRC/PRODOS/PRODOS.S.IRQ
.INB USR/SRC/PRODOS/PRODOS.S.GP
.INB USR/SRC/PRODOS/PRODOS.S.TCLK
.INB USR/SRC/PRODOS/PRODOS.S.CCLK
.INB USR/SRC/PRODOS/PRODOS.S.XDOS
.INB USR/SRC/PRODOS/PRODOS.S.RAMX
.INB USR/SRC/PRODOS/PRODOS.S.DISKII
.INB USR/SRC/PRODOS/PRODOS.S.SEL0
.INB USR/SRC/PRODOS/PRODOS.S.SEL1
.INB USR/SRC/PRODOS/PRODOS.S.SEL2
.INB USR/SRC/PRODOS.203/PRODOS.S.LDR
.INB USR/SRC/PRODOS.203/PRODOS.S.RAMI
.INB USR/SRC/PRODOS.203/PRODOS.S.RAM
.INB USR/SRC/PRODOS.203/PRODOS.S.IRQ
.INB USR/SRC/PRODOS.203/PRODOS.S.GP
.INB USR/SRC/PRODOS.203/PRODOS.S.TCLK
.INB USR/SRC/PRODOS.203/PRODOS.S.CCLK
.INB USR/SRC/PRODOS.203/PRODOS.S.XDOS
.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
*--------------------------------------
MAN
SAVE USR/SRC/PRODOS/PRODOS.S
SAVE USR/SRC/PRODOS.203/PRODOS.S
ASM