LDA =B30400 INITIATE CARRIAGE STA LASTC CONTROL WORD. * LOOPD JSB .IOC. READ RECORD ABS 10000B+MAG JMP *-2 INTO BUFFER #1. D1 DEF BUF1 DEC 215 JSB LPST WAIT FOR PREVIOUS LINE TO FINISH. JSB MAGST WAIT FOR TAPE READ TO FINISH. ALF,ALF END OF FILE? SSA JMP EOFRD YES. ELB,CLE,ERB STB LP+1 CONFIGURE LINE PRINT ROUTINE. LDA D1 STA LP JSB LINEP GO INTITATE PRINTING OF THIS LINE. ISZ REC INCREMENT RECORD COUNT. * JSB .IOC. READ RECORD ABS 10000B+MAG INTO BUFFER #2. JMP *-2 D2 DEF BUF2 DEC 215 * JSB LPST WAIT FOR PREV. LINE TO FINISH. JSB MAGST WAIT FOR TAPE TO FINISH. ALF,ALF END OF SSA FILE? JMP EOFRD YES. ELB,CLE,ERB STB LP+1 CONFIGURE LINE PRINT ROUTINE. LDA D2 STA LP JSB LINEP INITIATE PRINTING. ISZ REC INCREMENT RECORD COUNT. JMP LOOPD SPC 4 EOFRD JSB LPST END OF FILE, JSB .IOC. REWIND TAPE, ABS 30400B+MAG JMP *-2 LDB =D9 GO PRINT COMPLETION JSB CNSL JMP MTS SPC 4 LINEP NOP LDA LP+1 CHECK IF RECORD ADA =D-12 WAS A SHORT ONE. SSA,RSS JMP LP-3 NO. LDB LP+1 YES, STRIP OFF CMB,INB BINARY 0'S ADDED STB TEMP BY MAG TAPE DRIVER. LDB =A LDA LP STA WORK * LOOPZ LDA WORK,I SZA,RSS STB WORK,I ISZ WORK ISZ TEMP JMP LOOPZ * * JSB .IOC. PRINT ONE OCT 20006 LINE. JMP *-2 LP NOP NOP JMP LINEP,I RETURN. SPC 4 LPST NOP JSB .IOC. WAIT TILL THE OCT 40006 LINE PRINTER IS SSA NOT BUSY. JMP *-3 JMP LPST,I RETURN. SPC 4 CRGE NOP LDA BUFA,I SINCE IBM OUTPUTS AND =B177400 "PRINT THEN SPACE" AND LDB A HP EXPECTS "SPACE THEN PRINT", LDA BUFA,I THIS CODE DELAYS AND =B377 CARRIAGE CONTROL IOR LASTC FOR ONE LINE. STA BUFA,I STB LASTC JMP CRGE,I SKP * * *** READ ONE CARD IMAGE. *** * INPUT NOP LDA INIO CARD INPUT? SZA,RSS JMP DEFIN-3 NO, MAG TAPE. JSB READC YES, GO READ A CARD. JMP INPUT,I RETURN. * JSB .IOC. ABS 10000B+MAG JMP *-2 DEFIN DEF IMAGE DEC 40 * JSB MAGST JMP INPUT,I SPC 4 READC NOP JSB .IOC. READ A CARD. ABS 10100B+CARD (COLUMN IMAGE BINARY!!) JMP *-2 DEF IMAGE DEC 80 * JSB .IOC. GET CARD READER ABS 40000B+CARD STATUS. SSA JMP *-3 WAIT TILL NOT BUSY. ALF,ALF RAL,RAL GET THIS TEST IN RAL THE RIGHT POSITION SSA HOPPER EMPTY BIT ON? JMP PANIC YES, OUTPUT MESSAGE LDA READC+4 JSB CB2EB CONVERT BINARY IMAGE TO EBCDIC. LDB IMAGE WAS THE LAST CPB =B60541 CARD A "//"? RSS YES. JMP NOT// NO. LDB DEFIN SET UP 14 CHARACTER INB LOOP SCAN. LDA =D-7 STA TEMP LOOP2 LDA B,I CHECK FOR COLUMNS CPA =B40100 3-16 FOR BLANKS. RSS IF SO, TREAT AS END JMP NOT// OF JOB STATUS. INB ISZ TEMP JMP LOOP2 LDA =B200 SIMULATE EOF JMP READC,I RETURN. NOT// CLA JMP READC,I RETURN. SPC 4 DREC NOP LDA REC DISPLAY RECORD CLB COUNT ON THE CONSOLE. JSB B2ASC DEF MSG13+8 DEC 3 LDB =D13 JSB CNSL JMP DREC,I * PANIC LDB =D27 MESSAGE TO CONSOLE JSB CNSL JMP READC+1 SPC 4 * * *** CRC-16 GENERATOR. *** * BCC NOP LDB A STB TEMP LDA =D-8 SET UP 8 STA WORK BIT LOOP CONTROL. LDA BCCCH GET PREV PARITY WORD. BCC1 SLB SKIP IF DATA BIT IS 0. XOR =B1 EXCLUSIVE 'OR' DATA BIT. RAR AND CRC0. SSA SKIP IF FEEDBACK DATA IS 0. XOR =B20001 XOR CONSTANT DIVISOR INTO CRC. RBR ISZ WORK LOOP UNTIL ALL JMP BCC1 8 BITS ARE PROCESSED. STA BCCCH LDA TEMP JMP BCC,I RETURN. SKP * * *** ROUTINE TO SIGN-ON TO IBM SYSTEM. *** * SGNON NOP LDA ON1 SHOULD WE SING-ON TO SZA,RSS THE HOST SYSTEM? JMP SGNON,I NO, RETURN. * JSB .IOC. SEND "ENQ" TO CAPTURE CONTORL ABS 30300B+DATA OF THE LINE. JMP *-2 JSB DSTAT JSB .IOC. SEND SIGN-ON CARD IMAGE. ABS 20000B+DATA JMP *-2 DEFSG DEF SIGN DEC -83 JSB DSTAT WAIT TILL SENT. JSB .IOC. SEND EOT. ABS 31100B+DATA JMP *-2 JSB DSTAT JMP SGNON,I RETURN. SPC 4 * * *** ROUTINE TO SIGNOFF FROM THE HOST SYSTEM. *** * SGNOF NOP LDA OFF1 SHOULD WE SIGN-OFF FROM SZA,RSS THE HOST SYSTEM. JMP RESET NO, RETURN. * JSB .IOC. RECAPTURE CONTROL ABS 30300B+DATA OF THE LINE. JMP *-2 JSB DSTAT * JSB .IOC. SEND SIGNOFF CARD. ABS 20000B+DATA JMP *-2 DEFSO DEF SOFF DEC -83 JSB DSTAT * JSB .IOC. SENT EOT. ABS 31100B+DATA JMP *-2 JSB DSTAT JSB SHUT SEND SHUT DOWN CODE. LDB =D23 TYPE SHUTDOWN MESSAGE. JSB CNSL RESET LDA ON RESET SIGNON & SINGOFF STA ON1 LOGIC TO THEIR DEFAULT VALUES. LDA OFF STA OFF1 JMP SGNOF,I RETURN. * * *** ROUTINE TO HANDLE PHONE LINE STATUS. *** * DSTAT NOP JSB .IOC. WAIT FOR ABS 40000B+DATA LAST SSA OPERATION JMP *-3 TO COMPLETE. RAL SSA JMP *+3 ERROR!. RAR RETURN A-REG STATUS TO ORIG. * JMP DSTAT,I RETURN * LINER LDB =D6 INFORM OPERATOR JSB CNSL OF ERROR. JMP MTS SPC 4 * * *** MAG TAPE STATUS ROUTINE. *** * MAGST NOP JSB .IOC. GET TAPE STATUS ABS 40000B+MAG SSA JMP *-3 STA ASTOR SAVE A REG STB BSTOR SAVE B REG RAL SSA ERROR CONDITION JMP MTERR YES ALF,ALF RAL CHECK BIT 5 (EOT) SSA EOT SENSED JMP MTEOT YES ALF,RAL RAL JMP MAGST,I RETURN MTERR LDB =D7 INFORM OPERATOR JSB CNSL OF ERROR JMP MTS * MTEOT JSB .IOC. ABS 30500B+MAG JMP *-2 LDB =D29 INFORM OPERATOR JSB CNSL OF EOT LDB =B20040 (BLANK RESPONSE WORD.) STB RSP JSB .IOC. SEE IF SIGNED ON ABS 40000B+DATA ALF,ALF RAL CHECK BIT 6. SSA ON-LINE JMP ONLIN YES JSB RESP NO,WAIT FOR RESPONSE CPA =AGO 'GO' JMP MAGRT YES,PREPARE RETURN CPA =AOF 'OFF' JMP MTS YES GET FUNCTION JMP MTEOT+3 NEITHER LOOP ONLIN LDB =D28 TYPE TIME WARNING JSB CNSL LDA =D10 SET UP TIMER FOR 10 MINS JSB TIMIN JSB .IOC. ALLOW CONSOLE INPUT OCT 10401 JMP *-2 DEF RSP DEC 40 TIMLP JSB TIMER CHECK TIME JSB .IOC. TIME LEFT, CHECK CONSOLE OCT 40001 SSA INPUT JMP TIMLP NO,LOOP LDA RSP GET RESPONSE CPA =AGO 'GO'? JMP MAGRT YES,PREPARE RETURN CPA =AOF 'OFF' JMP NOWAT YES,GO SIGNOFF JMP ONLIN NEITHER, RESTART TIMER MAGRT LDA ASTOR RESTORE LDB BSTOR REGISTERS JMP MAGST,I RETURN SPC 3 * * *** LINE SHUT DOWN ROUTINE. *** * SHUT NOP JSB .IOC. ABS 30100B+DATA JMP *-2 JSB DSTAT JMP SHUT,I SPC 4 GETCD NOP JSB CNSL ASK FOR CODE. JSB RESP GET RESPONCE. CLB CPA =AAS ASCII? INB YES. CPA =AEB EBCDIC? LDB =D2 YES. SZB NEITHER? JMP GETCD,I NO, RETURN. LDB =D16 YES, TYPE "??" JSB CNSL GET RESPONCE AGAIN. JMP GETCD+2 SKP * * *** ROUTINE TO ASSIGN INPUT & OUTPUT DEVICES. * (DEFAULT IS CARD INPUT & PRINTER OUTPUT) * ASSGN LDB =D21 JSB CNSL ASK FOR INPUT DEVICE 24380-18017 1402