NEW AUTO 3,1 * object code = mli_1 * global page H2E00 jmp mlient1 $2E00-2EFF moved to $BF00 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 jmp syserr1 error reporting hook. sysdeath jmp sysdeath1 system failure hook. p8error .DA #0 drivertbl1 .DA nodevice .DA nodevice .DA nodevice .DA nodevice .DA nodevice .DA nodevice .DA nodevice .DA nodevice drivertbl2 .DA nodevice .DA nodevice .DA nodevice .DA nodevice .DA nodevice .DA nodevice .DA nodevice .DA nodevice .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 php sei jmp mlicont aftirq sta RRAMWRAMBNK1 read/write RAM bank 1 jmp fix45 restore $45 after interrupt in LC oldacc .DA #0 afbank .HS 00 * memory map of lower 48k. each bit represents 1 page. * protected pages = 1, unprotected = 0 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 .HS 0000 file #1 .HS 0000 file #2 .HS 0000 file #3 .HS 0000 file #4 .HS 0000 file #5 .HS 0000 file #6 .HS 0000 file #7 .HS 0000 file #8 * table of interrupt vectors. these can only be changed * by the mli call allocate_interrupt. values of the registers * at the time of the most recent interrupt are stored here along * with the address interrupted. inttbl .HS 0000 int #1 .HS 0000 int #2 .HS 0000 int #3 .HS 0000 int #4 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 eor $E000 test for rom enable beq .1 taken if ram enabled sta RROMBNK2 read ROM bne .2 always .1 lda bnkbyt2 for alternate ram eor $D000 test beq .2 branch if not alternate ram lda RRAMWRAMBNK2 else enable alt $D000 .2 pla return code rti re-enable interrupts and return mlicont sec ror mliact notify interrupt routines MLI active. lda $E000 preserve language card/rom orientation sta bnkbyt1 for proper restoration when mli exits. lda $D000 sta bnkbyt2 lda RRAMWRAMBNK1 force ram card on lda RRAMWRAMBNK1 with write allowed jmp xdosmli irqexit lda bankid determine state of ram card (ROM/RAM) irqxit0 beq .2 branch if ram card enabled. bmi .1 branch if alternate $D000 enabled. lsr determine if no ram card present. bcc .3 branch if rom only system. lda RROMWRAMBNK2 enable rom bcs .3 always taken .1 lda RRAMWRAMBNK2 enable alternate $D000 .2 lda #$01 preset bankid for rom. sta bankid (reset if ram card interrupt) .3 lda p8areg restore acc rti exit irqent bit RRAMWRAMBNK1 this entry only used when rom bit RRAMWRAMBNK1 was enabled at time of interrupt. jmp irqrecev 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 .HS 23 represents release 2.0.3 *-------------------------------------- MAN SAVE usr/src/prodos.203/prodos.s.gp LOAD usr/src/prodos.203/prodos.s ASM