* C$MR - C$FR - C$BR - C$FF - C$BF - MAY 29 2006 - VERSION 1 * * MAGTAPE CONTROL ROUTINES * C$MR: REWIND TAPE * C$FR: FORWARD ONE RECORD * C$BR: BACKSPACE ONE RECORD * C$FF: FORWARD ONE FILE * C$BF: BACKSPACE ONE FILE * * HONEYWELL X16 16 BIT COMPUTER SOFTWARE * * PROGRAM LENGTH: 67 WORDS * * THIS SOURCE IS RECREATED FROM THE EXISTING SLST FILE: * - SLST-DAP-16.IMG (WHICH ORIGINATES FROM HONEYWELL) * * THE SOURCE IS RECREATED BY: THEO ENGEL (THEO.ENGEL@HETNET.NL) * * CALLING SEQUENCE: * CALL C$MR, C$FF, C$BF * DEC LOGICAL TAPE UNIT NUMBER * (NORMAL RETURN) * * CALL C$FR, C$BR * DEC LOGICAL TAPE UNIT NUMBER * (EOF RETURN) * (NORMAL RETURN) * SUBR C$MR SUBR C$FR SUBR C$BR SUBR C$FF SUBR C$BF REL C$MR DAC *-* REWIND TAPE LDA* C$MR LOGICAL TAPE UNIT NUMBER JST SET SET IO INSTRUCTIONS FOR THIS UNIT OCP3 OCP 0 OCP 141X = REWIND IRS C$MR JMP* C$MR RETURN * C$FR DAC *-* FORWARD ONE RECORD LDA* C$FR LOGICAL TAPE UNIT NUMBER JST SET SET IO INSTRUCTIONS FOR THIS UNIT OCP1 OCP 0 OCP 111X = SPACE FORWARD ONE RECORD C1 JST RDY TAPE UNIT READY? SKS2 SKS 0 SKS 61X = SKIP IF NO EOF JMP *+2 EOF DETECTED IRS C$FR SET NORMAL RETURN IRS C$FR SET EOF RETURN JMP* C$FR RETURN * C$BR DAC *-* BACKSPACE ONE RECORD LDA* C$BR LOGICAL TAPE UNIT NUMBER JST SET SET IO INSTRUCTIONS FOR THIS UNIT OCP4 OCP 0 OCP 151X = BACKSPACE ONE RECORD LDA C$BR STA C$FR SET RETURN ADDRESS JMP C1 * C$FF DAC *-* FORWARD ONE FILE LDA* C$FF LOGICAL TAPE UNIT NUMBER JST SET SET IO INSTRUCTIONS FOR THIS UNIT OCP2 OCP 0 OCP 121X = SPACE FORWARD ONE FILE IRS C$FF JMP* C$FF RETURN * C$BF DAC *-* BACKSPACE ONE FILE LDA* C$BF LOGICAL TAPE UNIT NUMBER JST SET SET IO INSTRUCTIONS FOR THIS UNIT OCP5 OCP 0 OCP 161X = BACKSPACE ONE FILE IRS C$BF JMP* C$BF RETURN * * SET IO INSTRUCTIONS FOR THE SELECTED MAGTAPE UNIT * A-REG = REQUESTED LOGICAL UNIT NUMBER * SET DAC *-* CALL M$UNIT TRANSLATE LOGICAL UNIT TO PHYSICAL DEVICE NUMBER ADD OCP OCP + DEV = OCP 111X STA OCP1 OCP 111X = SPACE FORWARD ONE RECORD ADD B1 ='100 STA OCP2 OCP 121X = SPACE FORWARD ONE FILE ADD B2 ='2OO STA OCP3 OCP 141X = REWIND ADD B1 ='100 STA OCP4 OCP 151X = BACKSPACE ONE RECORD ADD B1 ='100 STA OCP5 OCP 161X = BACKSPACE ONE FILE ERA B3 ='41700 ERA 3161X = 7011X = SKS 11X STA SKS1 SKS 11X = SKIP IF NOT BUSY ADD B4 ='500 STA SKS2 SKS 61X = SKIP IF NO EOF ADD B5 ='600 STA SKS3 SKS 141X = SKIP IF NOT REWINDING JST RDY UNIT READY? JMP* SET * RDY DAC *-* TAPE UNIT READY? SKS1 SKS 0 SKS 11X = SKIP IF NOT BUSY JMP *-1 SKS3 SKS 0 SKS 141X = SKIP IF NOT REWINDING JMP *-1 JMP* RDY * B5 OCT 600 B4 OCT 500 B3 OCT 41700 B2 OCT 200 B1 OCT 100 OCP OCP '1110 END