2019-10-16 06:09:13 +00:00
|
|
|
|
NEW
|
|
|
|
|
AUTO 3,1
|
2019-10-19 18:35:30 +00:00
|
|
|
|
*--------------------------------------
|
2019-11-01 20:06:04 +00:00
|
|
|
|
GP.START jmp GP.MLIENTRY $2E00-2EFF moved to $BF00
|
2019-10-16 06:09:13 +00:00
|
|
|
|
jspare jmp * will be changed to point to dispatcher.
|
|
|
|
|
clockv rts changed to jmp ($4C) if clock present.
|
2019-11-23 15:24:55 +00:00
|
|
|
|
.DA XDOS.ClockDrv clock routine entry address.
|
2019-10-16 06:09:13 +00:00
|
|
|
|
GP.P8errv jmp XDOS.syserr error reporting hook.
|
|
|
|
|
sysdeath jmp sysdeath1 system failure hook.
|
|
|
|
|
p8error .DA #0
|
|
|
|
|
.DA nodevice
|
|
|
|
|
.DA nodevice
|
|
|
|
|
.DA nodevice
|
|
|
|
|
.DA nodevice
|
|
|
|
|
.DA nodevice
|
|
|
|
|
.DA nodevice
|
|
|
|
|
.DA nodevice
|
|
|
|
|
.DA nodevice
|
|
|
|
|
.DA nodevice
|
|
|
|
|
.DA nodevice
|
|
|
|
|
.DA nodevice
|
|
|
|
|
.DA nodevice
|
|
|
|
|
.DA nodevice
|
|
|
|
|
.DA nodevice
|
2019-11-09 12:19:41 +00:00
|
|
|
|
.DA nodevice
|
|
|
|
|
.DA nodevice
|
|
|
|
|
.DA #0 DEVNUM
|
|
|
|
|
.DA #$ff DEVCNT : count (-1) active devices
|
|
|
|
|
.HS 00000000000000 DEVLST : up to 14 units may be active
|
2019-10-16 06:09:13 +00:00
|
|
|
|
.HS 00000000000000
|
|
|
|
|
.DA #0
|
2019-10-19 18:35:30 +00:00
|
|
|
|
*--------------------------------------
|
2019-10-16 06:09:13 +00:00
|
|
|
|
.AS "(C)APPLE "
|
2019-10-19 18:35:30 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
GP.MLIENTRY php
|
2019-10-16 06:09:13 +00:00
|
|
|
|
sei
|
2019-10-19 18:35:30 +00:00
|
|
|
|
jmp GP.MLICONT
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
*aftirq sta RRAMWRAMBNK1 read/write RAM bank 1
|
|
|
|
|
* jmp fix45 restore $45 after interrupt in LC
|
|
|
|
|
*oldacc .DA #0
|
|
|
|
|
*afbank .HS 00
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
.LIST ON
|
|
|
|
|
GP.FREE1 .EQ $BF58-*
|
|
|
|
|
.LIST OFF
|
|
|
|
|
.BS GP.FREE1
|
|
|
|
|
*--------------------------------------
|
2019-10-16 06:09:13 +00:00
|
|
|
|
* memory map of lower 48k. each bit represents 1 page.
|
|
|
|
|
* protected pages = 1, unprotected = 0
|
|
|
|
|
|
2019-10-19 18:35:30 +00:00
|
|
|
|
*--------------------------------------
|
2019-11-09 12:19:41 +00:00
|
|
|
|
.HS C000000000000000 MEMTABL
|
2019-10-16 06:09:13 +00:00
|
|
|
|
.HS 0000000000000000
|
|
|
|
|
.HS 0000000000000001
|
2019-10-19 18:35:30 +00:00
|
|
|
|
*--------------------------------------
|
2019-10-16 06:09:13 +00:00
|
|
|
|
* table of buffer addresses for currently open files.
|
|
|
|
|
* these can only be changed thru the mli call setbuf.
|
2019-10-19 18:35:30 +00:00
|
|
|
|
*--------------------------------------
|
2019-10-16 06:09:13 +00:00
|
|
|
|
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
|
2019-10-19 18:35:30 +00:00
|
|
|
|
*--------------------------------------
|
2019-10-16 06:09:13 +00:00
|
|
|
|
* 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.
|
2019-10-19 18:35:30 +00:00
|
|
|
|
*--------------------------------------
|
2019-10-16 06:09:13 +00:00
|
|
|
|
inttbl .HS 0000 int #1
|
|
|
|
|
.HS 0000 int #2
|
|
|
|
|
.HS 0000 int #3
|
|
|
|
|
.HS 0000 int #4
|
2019-10-19 18:35:30 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
*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
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
.BS 8
|
|
|
|
|
*--------------------------------------
|
2019-10-16 06:09:13 +00:00
|
|
|
|
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
|
2019-10-19 18:35:30 +00:00
|
|
|
|
*--------------------------------------
|
2019-10-16 06:09:13 +00:00
|
|
|
|
* language card bank switching routines which must reside at $BFA0 because
|
|
|
|
|
* workstation software patches this area
|
2019-10-19 18:35:30 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
GP.MLIEXIT eor $E000 test for rom enable
|
2019-10-16 06:09:13 +00:00
|
|
|
|
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
|
2019-10-19 18:35:30 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
GP.MLICONT sec
|
2019-10-16 06:09:13 +00:00
|
|
|
|
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 XDOS.MLI
|
2019-10-19 18:35:30 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
*GP.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.
|
2019-10-16 06:09:13 +00:00
|
|
|
|
|
2019-10-19 18:35:30 +00:00
|
|
|
|
* lsr determine if no ram card present.
|
|
|
|
|
* bcc .3 branch if rom only system.
|
2019-10-18 19:57:38 +00:00
|
|
|
|
|
2019-10-19 18:35:30 +00:00
|
|
|
|
* lda RROMWRAMBNK2 enable rom
|
|
|
|
|
* bcs .3 always taken
|
2019-10-18 19:57:38 +00:00
|
|
|
|
|
2019-10-19 18:35:30 +00:00
|
|
|
|
*.1 lda RRAMWRAMBNK2 enable alternate $D000
|
2019-10-16 06:09:13 +00:00
|
|
|
|
|
2019-10-19 18:35:30 +00:00
|
|
|
|
*.2 lda #$01 preset bankid for rom.
|
|
|
|
|
* sta bankid (reset if ram card interrupt)
|
2019-10-16 06:09:13 +00:00
|
|
|
|
|
2019-10-19 18:35:30 +00:00
|
|
|
|
*.3 lda p8areg restore acc
|
|
|
|
|
* rti exit
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
.LIST ON
|
|
|
|
|
GP.FREE2 .EQ $BFEB-*
|
|
|
|
|
.LIST OFF
|
|
|
|
|
.BS GP.FREE2
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
GP.IRQV bit RRAMWRAMBNK1 ***NEW ROM ONLY IRQ $fffe > $Cxxx space***
|
|
|
|
|
bit RRAMWRAMBNK1 Entry used when rom/mainLC/auxLC
|
|
|
|
|
jmp XDOS.IRQV
|
|
|
|
|
*--------------------------------------
|
2019-10-16 06:09:13 +00:00
|
|
|
|
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
|
|
|
|
|
*--------------------------------------
|
2019-11-01 20:06:04 +00:00
|
|
|
|
GP.LEN .EQ *-GP.START
|
2019-10-16 06:09:13 +00:00
|
|
|
|
MAN
|
|
|
|
|
SAVE USR/SRC/PRODOS.FX/PRODOS.S.GP
|
|
|
|
|
LOAD USR/SRC/PRODOS.FX/PRODOS.S
|
|
|
|
|
ASM
|