Private workspace: -------------------------------------------------------------------------------- &03 &816B: bit 7 and bit 0 are set if IRQ is issued and intstatus1 bit0 is set &8185: bit 7 and bit 6 are set if IRQ is issued and intstatus1 bit6 is set &82D6: This value is stored in &B9 when OSWORD &80 is called &84CA: Set to &00 by OSWORD &80 command &00 &05 Set to &00 if OSWORD &80 command &10 (reset) is called Set to &FF if OSWORD &80 command &11 (reset+Send REN+strobe SIC) is called &07 &9C1F: Only used here: when &00 (default) set this to &FF. When not &00 send clr+rhdf to auxcmd &EC &82D0: Stack pointer &83CE: Contents is transfered to the stack pointer &F6 Read mode flag: bit 0: if 0: use 1 closing byte (cleared using OSWORD &80 command &03 with 1 parameter) (serial poll???) if 1: use 2 closing byte (set using OSWORD &80 command &03 with 2 parameters) (serial poll???) bit 1: if 1: use timer during a data transfer (set using OSWORD &80 command &06) if 0: do not use timer during a data transfer (cleared using OSWORD &80 command &07) bit 2: if 0: TUBE is not active (autodetected; set or cleared during OSWORD &80 command &0A) if 1: TUBE is active (autodetected; set or cleared during OSWORD &80 command &0A) &F7 Write mode flag: bit 0: if 0: use 1 closing byte (cleared using OSWORD &80 command &03 with 1 parameter) (serial poll???) if 1: use 2 closing byte (set using OSWORD &80 command &03 with 2 parameters) (serial poll???) bit 1: if 0: do not use timer during a data transfer (cleared using OSWORD &80 command &07) if 1: use timer during a data transfer (set using OSWORD &80 command &06) bit 2: if 0: TUBE is not active (autodetected during OSWORD &80 command &0A) if 1: TUBE is active bit 4-3: set by OSWORD &80 command &03) set during OSWORD &80 command if 00: use EOS characters (&F8/&F9), don't send EOI with last byte if 01: don't use EOS characters, send EOI with last byte if 10: don't use EOS characters, send EOI with last byte if 11: use EOS characters (&F8/&F9), don't send EOI with last byte bit 5-7: unused &FE bit 4-0: Primary address for the TMS9914A bit 5-6: unused bit 7 : ??? (set at OSBYTE &80 command &11, cleared at OSBYTE &80 command &10) &FF Should &B9 be updated during an interrupt? #&00 = No, #&FF = Yes &8459: Set to #&FF (at the beginning of an OSWORD &80 call) &8460: Set to #&00 (after an OSWORD &80 call has been handled) &8161: If != 0 then &B9 = &B9 OR #&81 &817B: If != 0 then &B9 = &B9 OR #&C0 Procedures: -------------------------------------------------------------------------------- &804E language ROM Language call entry point &804F service ROM Service call entry point &8065 Service calls lookup table, MSB &8093 Service calls lookup table, LSB &80C1 &80C7 Service call &xx : Entry for all other unused service calls &80CE Service call &02 : Relative space claim &80E3 initwrkspc Initialise the workspace &8133 Service call &05 : Unknown interrupt &8275 Service call &08 : Unrecognised OSWORD call &82DD OSWORD &80 call function lookup table MSB &831D OSWORD &80 call function lookup table LSB &835D Service call &08 : Unrecognised OSWORD call: exit procedure &83D7 Service call &09 : *HELP command interception &8417 Service call &22 : Claim absolute workspace in Hazel &8427 Service call &24 : Absolute workspace in Hazel count &842F Set pwrkspc+&04 to #&00 &8436 Set pwrkspc+&05 to #&00 &843D Set pwrkspc+&06 to #&00 &8444 Set pwrkspc+&04 to #&FF &844B Set pwrkspc+&05 to #&FF &8452 Set pwrkspc+&06 to #&FF &8459 Set pwrkspc+&FF to #&FF &845D Store A in pwrkspc+Y &8460 Set pwrkspc+&FF to #&00 &8467 checkos Check what OS version is available &8471 &84A1 OSWORD call &80 function &00 &8D3A Stores values in parameterblock+&0E - &11 from pwrkspc+&0A - &0C and &B6-&B8 &8D60 Jumps to function stored in pwrkspc+&F7 &8D6E Lookup table for routine at &8D60 (MSB) &8D8E Lookup table for routine at &8D60 (LSB)