diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 732f69f1..aedba464 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/ProDOS.203/ProDOS.S.GP.txt b/ProDOS.203/ProDOS.S.GP.txt index 5b7964b0..f086f00d 100644 --- a/ProDOS.203/ProDOS.S.GP.txt +++ b/ProDOS.203/ProDOS.S.GP.txt @@ -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 diff --git a/ProDOS.203/ProDOS.S.IRQ.txt b/ProDOS.203/ProDOS.S.IRQ.txt index 71d9cede..ef51a767 100644 --- a/ProDOS.203/ProDOS.S.IRQ.txt +++ b/ProDOS.203/ProDOS.S.IRQ.txt @@ -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 *-------------------------------------- diff --git a/ProDOS.203/ProDOS.S.LDR.A.txt b/ProDOS.203/ProDOS.S.LDR.A.txt index 81fb929b..f034dd69 100644 --- a/ProDOS.203/ProDOS.S.LDR.A.txt +++ b/ProDOS.203/ProDOS.S.LDR.A.txt @@ -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 diff --git a/ProDOS.203/ProDOS.S.RAM.txt b/ProDOS.203/ProDOS.S.RAM.txt index 1360b09c..5c19e247 100644 --- a/ProDOS.203/ProDOS.S.RAM.txt +++ b/ProDOS.203/ProDOS.S.RAM.txt @@ -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 diff --git a/ProDOS.203/ProDOS.S.RAMI.txt b/ProDOS.203/ProDOS.S.RAMI.txt index a484b913..62075f6f 100644 --- a/ProDOS.203/ProDOS.S.RAMI.txt +++ b/ProDOS.203/ProDOS.S.RAMI.txt @@ -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 diff --git a/ProDOS.203/ProDOS.S.RAMX.txt b/ProDOS.203/ProDOS.S.RAMX.txt index 2c693bed..37ead827 100644 --- a/ProDOS.203/ProDOS.S.RAMX.txt +++ b/ProDOS.203/ProDOS.S.RAMX.txt @@ -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. diff --git a/ProDOS.203/ProDOS.S.txt b/ProDOS.203/ProDOS.S.txt index 9256f18e..20fc74c7 100644 --- a/ProDOS.203/ProDOS.S.txt +++ b/ProDOS.203/ProDOS.S.txt @@ -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