* * ************************************************************************* E5B3 DB &21,&E8 ;OSBYTE 0 (&E821) E5B5 DB &88,&E9 ;OSBYTE 1 (&E988) E5B7 DB &D3,&E6 ;OSBYTE 2 (&E6D3) E5B9 DB &97,&E9 ;OSBYTE 3 (&E997) E5BB DB &97,&E9 ;OSBYTE 4 (&E997) E5BD DB &76,&E9 ;OSBYTE 5 (&E976) E5BF DB &88,&E9 ;OSBYTE 6 (&E988) E5C1 DB &8B,&E6 ;OSBYTE 7 (&E68B) E5C3 DB &89,&E6 ;OSBYTE 8 (&E689) E5C5 DB &B0,&E6 ;OSBYTE 9 (&E6B0) E5C7 DB &B2,&E6 ;OSBYTE 10 (&E6B2) E5C9 DB &95,&E9 ;OSBYTE 11 (&E995) E5CB DB &8C,&E9 ;OSBYTE 12 (&E98C) E5CD DB &F9,&E6 ;OSBYTE 13 (&E6F9) E5CF DB &FA,&E6 ;OSBYTE 14 (&E6FA) E5D1 DB &A8,&F0 ;OSBYTE 15 (&F0A8) E5D3 DB &06,&E7 ;OSBYTE 16 (&E706) E5D5 DB &8C,&DE ;OSBYTE 17 (&DE8C) E5D7 DB &C8,&E9 ;OSBYTE 18 (&E9C8) E5D9 DB &B6,&E9 ;OSBYTE 19 (&E9B6) E5DB DB &07,&CD ;OSBYTE 20 (&CD07) E5DD DB &B4,&F0 ;OSBYTE 21 (&F0B4) E5DF DB &6C,&E8 ;OSBYTE 117 (&E86C) E5E1 DB &D9,&E9 ;OSBYTE 118 (&E9D9) E5E3 DB &75,&E2 ;OSBYTE 119 (&E275) E5E5 DB &45,&F0 ;OSBYTE 120 (&F045) E5E7 DB &CF,&F0 ;OSBYTE 121 (&F0CF) E5E9 DB &CD,&F0 ;OSBYTE 122 (&F0CD) E5EB DB &97,&E1 ;OSBYTE 123 (&E197) E5ED DB &73,&E6 ;OSBYTE 124 (&E673) E5EF DB &74,&E6 ;OSBYTE 125 (&E674) E5F1 DB &5C,&E6 ;OSBYTE 126 (&E65C) E5F3 DB &35,&E0 ;OSBYTE 127 (&E035) E5F5 DB &4F,&E7 ;OSBYTE 128 (&E74F) E5F7 DB &13,&E7 ;OSBYTE 129 (&E713) E5F9 DB &29,&E7 ;OSBYTE 130 (&E729) E5FB DB &85,&F0 ;OSBYTE 131 (&F085) E5FD DB &23,&D9 ;OSBYTE 132 (&D923) E5FF DB &26,&D9 ;OSBYTE 133 (&D926) E601 DB &47,&D6 ;OSBYTE 134 (&D647) E603 DB &C2,&D7 ;OSBYTE 135 (&D7C2) E605 DB &57,&E6 ;OSBYTE 136 (&E657) E607 DB &7F,&E6 ;OSBYTE 137 (&E67F) E609 DB &AF,&E4 ;OSBYTE 138 (&E4AF) E60B DB &34,&E0 ;OSBYTE 139 (&E034) E60D DB &35,&F1 ;OSBYTE 140 (&F135) E60F DB &35,&F1 ;OSBYTE 141 (&F135) E611 DB &E7,&DB ;OSBYTE 142 (&DBE7) E613 DB &68,&F1 ;OSBYTE 143 (&F168) E615 DB &E3,&EA ;OSBYTE 144 (&EAE3) E617 DB &60,&E4 ;OSBYTE 145 (&E460) E619 DB &AA,&FF ;OSBYTE 146 (&FFAA) E61B DB &F4,&EA ;OSBYTE 147 (&EAF4) E61D DB &AE,&FF ;OSBYTE 148 (&FFAE) E61F DB &F9,&EA ;OSBYTE 149 (&EAF9) E621 DB &B2,&FF ;OSBYTE 150 (&FFB2) E623 DB &FE,&EA ;OSBYTE 151 (&EAFE) E625 DB &5B,&E4 ;OSBYTE 152 (&E45B) E627 DB &F3,&E4 ;OSBYTE 153 (&E4F3) E629 DB &FF,&E9 ;OSBYTE 154 (&E9FF) E62B DB &10,&EA ;OSBYTE 155 (&EA10) E62D DB &7C,&E1 ;OSBYTE 156 (&E17C) E62F DB &A7,&FF ;OSBYTE 157 (&FFA7) E631 DB &6D,&EE ;OSBYTE 158 (&EE6D) E633 DB &7F,&EE ;OSBYTE 159 (&EE7F) E635 DB &C0,&E9 ;OSBYTE 160 (&E9C0) E637 DB &9C,&E9 ; E639 DB &59,&E6 ; ************************************************************************* * * * OSWORD LOOK UP TABLE * * * ************************************************************************* E63B DB &02,&E9 ;OSWORD 0 (&E902) E63D DB &D5,&E8 ;OSWORD 1 (&E8D5) E63F DB &E8,&E8 ;OSWORD 2 (&E8E8) E641 DB &D1,&E8 ;OSWORD 3 (&E8D1) E643 DB &E4,&E8 ;OSWORD 4 (&E8E4) E645 DB &03,&E8 ;OSWORD 5 (&E803) E647 DB &0B,&E8 ;OSWORD 6 (&E80B) E649 DB &2D,&E8 ;OSWORD 7 (&E82D) E64B DB &AE,&E8 ;OSWORD 8 (&E8AE) E64D DB &35,&C7 ;OSWORD 9 (&C735) E64F DB &F3,&CB ;OSWORD 10 (&CBF3) E651 DB &48,&C7 ;OSWORD 11 (&C748) E653 DB &E0,&C8 ;OSWORD 12 (&C8E0) E655 DB &CE,&D5 ;OSWORD 13 (&D5CE) ************************************************************************* * * * OSBYTE 136 Execute Code via User Vector * * * * *CODE effectively * * * ************************************************************************* E658 LDA #00 ;A=0 ************************************************************************* * * * *LINE entry * * * ************************************************************************* E659 JMP (&0200) ;Jump via USERV ************************************************************************* * * * OSBYTE 126 Acknowledge detection of ESCAPE condition * * * ************************************************************************* E65C LDX #&00 ;X=0 E65E BIT &FF ;if bit 7 not set there is no ESCAPE condition E660 BPL &E673 ;so E673 E662 LDA &0276 ;else get ESCAPE Action, if this is 0 ;Clear ESCAPE ;close EXEC files ;purge all buffers ;reset VDU paging counter E665 BNE &E671 ;else do none of the above E667 CLI ;allow interrupts E668 STA &0269 ;number of lines printed since last halt in paged ;mode = 0 E66B JSR &F68D ;close any open EXEC files E66E JSR &F0AA ;clear all buffers E671 LDX #&FF ;X=&FF to indicate ESCAPE acknowledged ************************************************************************* * * * OSBYTE 124 Clear ESCAPE condition * * * ************************************************************************* E673 CLC ;clear carry ************************************************************************* * * * OSBYTE 125 Set ESCAPE flag * * * ************************************************************************* E674 ROR &FF ;clear bit 7 of ESCAPE flag E676 BIT &027A ;read bit 7 of Tube flag E679 BMI &E67C ;if set TUBE exists so E67C E67B RTS ;else RETURN ; E67C JMP &0403 ;Jump to Tube entry point ************************************************************************* * * * OSBYTE 137 Turn on Tape motor * * * ************************************************************************* E67F LDA &0282 ;get serial ULA control setting E682 TAY ;Y=A E683 ROL ;rotate left to get bit 7 into carry E684 CPX #&01 ;if X=1 then user wants motor on so CARRY set else ;carry is cleared E686 ROR ;put carry back in control RAM copy E687 BVC &E6A7 ;if bit 6 is clear then cassette is selected ;so write to control register and RAM copy E689 LDA #&38 ;A=ASCII 8 ************************************************************************* * * * OSBYTE 08/07 set serial baud rates * * * ************************************************************************* on entry X=baud rate A=8 transmit A=7 receive E68B EOR #&3F ;converts ASCII 8 to 7 binary and ASCII 7 to 8 binary E68D STA &FA ;store result E68F LDY &0282 ;get serial ULA control register setting E692 CPX #&09 ;is it 9 or more? E694 BCS &E6AD ;if so exit E696 AND &E9AD,X ;and with byte from look up table E699 STA &FB ;store it E69B TYA ;put Y in A E69C ORA &FA ;and or with Accumulator E69E EOR &FA ;zero the three bits set true E6A0 ORA &FB ;set up data read from look up table + bit 6 E6A2 ORA #&40 ; E6A4 EOR &025D ;write cassette/RS423 flag E6A7 STA &0282 ;store serial ULA flag E6AA STA &FE10 ;and write to control register E6AD TYA ;put Y in A to save old contents E6AE TAX ;write new setting to X E6AF RTS ;and return