NEW AUTO 3,1 * object code = mli_1 * global page ofsG .EQ H2E00-MLI offset to global org 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. .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 .DA nodevice .DA nodevice .DA nodevice .DA nodevice .DA nodevice .DA nodevice .DA nodevice .DA nodevice drivertbl2 .EQ *-ofsG device driver table 2 .DA nodevice .DA nodevice .DA nodevice .DA nodevice .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 .HS 00000000000000 .DA #0 .AS "(C)APPLE " mlient1 .EQ *-ofsG php sei jmp mlicont aftirq .EQ *-ofsG irq returns here. sta ramin read/write RAM bank 1 jmp fix45 restore $45 after interrupt in LC oldacc .EQ *-ofsG .DA #0 afbank .EQ *-ofsG .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 .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 .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 .EQ *-ofsG interrupt table .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 * language card bank switching routines which must reside at $BFA0 because * workstation software patches this area HBFA0 .EQ *-ofsG eor $E000 test for rom enable beq .1 taken if ram enabled sta romin read ROM bne .2 always .1 lda bnkbyt2 for alternate ram eor $D000 test beq .2 branch if not alternate ram lda altram else enable alt $D000 .2 pla return code rti re-enable interrupts and return mlicont .EQ *-ofsG 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 ramin force ram card on lda ramin with write allowed jmp xdosmli irqexit .EQ *-ofsG lda bankid determine state of ram card (ROM/RAM) irqxit0 .EQ *-ofsG beq .2 branch if ram card enabled. bmi .1 branch if alternate $D000 enabled. lsr determine if no ram card present. bcc .3 branch if rom only system. lda romin1 enable rom bcs .3 always taken .1 lda altram enable alternate $D000 .2 lda #$01 preset bankid for rom. sta bankid (reset if ram card interrupt) .3 lda p8areg restore acc rti exit irqent .EQ *-ofsG this entry only used when rom bit ramin was enabled at time of interrupt. bit ramin jmp irqrecev bnkbyt1 .EQ *-ofsG .DA #0 bnkbyt2 .EQ *-ofsG .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 *-------------------------------------- MAN SAVE USR/SRC/PRODOS.203/PRODOS.S.GP LOAD USR/SRC/PRODOS.203/PRODOS.S ASM