; BACI serial support ; modified 12/5/07 - clears control flag after input/output ; modified 8/28/04 - watchdog-compatible for 0.58, requires new CREATE ; modified 12/29/03 - self patching, rearranged code "Setting BACI slot to 22, poke 271 to change" $PRINT CRLF 271 22 PUT "Loading !BACI" $PRINT CRLF ; ; "!BACI" - initialize BACI board ; CREATE !BACI ** zp location with auto-patch slot... 12/29/03 ZBACI EQU 271 LDA PL LDB ZBACI JSB PSUBA,I ** internal baci slot... BSLOT EQU 22 ** LDA BACW1 BAC17 OTA BSLOT LDA BACW6 BAC18 OTA BSLOT INA CPA BACLR RSS JMP BAC18 LDA BACW5 BAC19 OTA BSLOT LDA BACW3 BAC20 OTA BSLOT JMP ZNXT,I BXSUA DEF BXSUB BRSUA DEF BRSUB * subroutine to input 1 char from baci... * modified 8/2/02 to eliminate strange behavior * modified 8/28/04 to reset watchdog after input/output BRSUB NOP BRSU1 LDA BACW5 BAC1 OTA BSLOT LDA BACWR BAC2 OTA BSLOT BAC3 STC BSLOT,C BAC5 SFS BSLOT JMP *-1 BAC7 STC BSLOT,C BAC8 LIA BSLOT SSA,RSS * skip if valid data (bit 15 set) JMP BRSU1 * bit 15 clear, try again BAC8A CLC BSLOT * 12/5/07 AND BABMS CLB * 8/28/04 STB WDTMR * clear WDT after every input JMP BRSUB,I * subroutine to output 1 char to baci... BXSUB NOP AND BABMS * zero high byte STA BABUF * save character to send LDA BACW5 BAC9 OTA BSLOT LDA BACWT BAC10 OTA BSLOT BAC11 STC BSLOT,C BAC12 CLC BSLOT LDA BABUF BAC13 OTA BSLOT BAC14 STC BSLOT,C BAC15 CLC BSLOT BAC16 SFS BSLOT JMP *-1 BAC16A CLC BSLOT * 12/5/07 CLB,INB STB TXTWP * set text-was-printed flag CLB * 8/23/04 STB WDTMR * clear WDT after every output JMP BXSUB,I * BACWR OCT 040017 BACWT OCT 040417 BABMS OCT 000377 BABUF OCT 0 PL DEF *+1 DEF BAC1 DEF BAC2 DEF BAC3 DEF BAC5 DEF BAC7 DEF BAC8 DEF BAC8A * 12/5/07 DEF BAC9 DEF BAC10 DEF BAC11 DEF BAC12 DEF BAC13 DEF BAC14 DEF BAC15 DEF BAC16 DEF BAC16A * 12/5/07 DEF BAC17 DEF BAC18 DEF BAC19 DEF BAC20 OCT 0 BACW1 OCT 110040 BACW3 OCT 030023 * FOR AUTO-ECHO OF RECEIVED CHARS! * make BACW3 = 030003 to not echo characters BACW5 OCT 050077 BACW6 OCT 060000 BACLR OCT 060400 END ; "Loading MSBACI" $PRINT CRLF ; ; "MSBACI" - direct mass storage IO to BACI interface ; CREATE MSBACI /KEEP LDA BXSUA * get address of TX sub STA ZMOUT * store in ZMOUT vector LDA BRSUA * get address of RX sub STA ZMINP * store in ZMINP vector END ; "Loading BACI" $PRINT CRLF ; ; ">BACI" - redirect output to go to baci ; CREATE >BACI /KEEP LDA BXSUA * get address of baci TX sub STA ZOUT * put in output vector END ; "Loading BACICON" $PRINT CRLF ; ; "BACICON" - allows using BACI serial for console ; CREATE BACICON /KEEP LDA PBCO1 * get address of baci receive sub STA ZCHIN * store in console char in vector STA ZIN * store in main in vector LDA PBCO2 * get address of baci transmit sub STA ZCOUT * store in console char out vector STA ZOUT * store in main out vector JMP ZNXT,I PBCO1 DEF BRSUB PBCO2 DEF BXSUB END ; "Loading TTYCON" $PRINT CRLF ; ; "TTYCON" - switches console back to TTY ; CREATE TTYCON /KEEP LDA CHINS * get address of tty char in sub STA ZCHIN * store in console char in vector STA ZIN * store in main out vector LDA CHOUS * get address of tty char out sub STA ZCOUT * store in console char out vector STA ZOUT * store in main out vector END ; "Done" $PRINT CONSOLE