/DECTAPE INPUT: DEC FORMAT .LOC 17000 .SIZE .SIXBT 'DTD' 200001 /INPUT UNIT 1 BLOCK1 2 .SIXBT 'N' DID SPA!CLA; JMP D9 /CLOSE -> JMP* USE /EXIT FROM COROUTINE D1 JMS .BU; DAC DV+3 /GET BUFFER LAC BLOCK1 D2 DAC DV+1 /BLOCK NUMBER D3 LAC (2000; XOR UNIT /FUNCTION + UNIT DAC DV LAC (DV GUARD; JMP .DH /CALL HANDLER GUARD /WAIT FOR TRANSFER LAC DV; SMA!SZA; WAIT ION SMA!CMA; JMP D4 /OK -> GUARD; JMP .MH /REPORT JMP D3 D4 LAC DV+3; DAC CA TAD (377; DAC BE D5 LAC CA /END OF BLOCK? SAD BE; JMP D7 /YES -> LAC* CA; AND (777 /DATA MODE 2? SAD (2; SKP; JMP D7 /NO -> XOR* CA; DAC J /WPC (<<9) ISZ CA D6 ISZ CA LAW -1000; TAD J; DAC J /LINE FINISHED? SNA; JMP D5 /YES -> LAC* CA; ISZ CA /EXTRACT CHAR 1 DAC I RTL; RTL; RTL; RTL JMS USE LAC I /EXTRACT CHAR 2 RTR; RTR JMS USE LAC I /EXTRACT CHAR 3 RCL; RCL; RCL; DAC I LAC* CA RTL; RTL; AND (7; XOR I JMS USE LAC* CA /EXTRACT CHAR 4 RTR; RTR; RTR; RTR JMS USE LAC* CA; RCR /EXTRACT CHAR 5 JMS USE JMP D6 D7 LAC* BE /EOF? SPA; JMP D9 /YES -> DX CMA; TAD DV+1 /COMPARE WITH CURRENT SPA; JMP D8 /SAME DIRECTION -> LAC DX; DAC DY /SWOP CMA XOR (1; DAC DX /AND NOP D8 LAC* BE DY NOP JMP D2 D9 LAC (D1; DAC USE /FOR RE-ENTRY LAC DV+3 /RELEASE BUFFER SZA; JMS .BU /IF FILE OPEN DZM DV+3 CLL; LAC DID-1 /CONCATENATED FILE JMP* DID /COROUTINE USE D1 AND (177 SNA!STL; JMP* USE /IGNORE NULL SAD (15; SKP /CR -> JMP* DID DZM I; DZM* CA /IN CASE RUBBISH LAC .NL JMP* DID DV 0; 0; -400; 0 I;J;CA;BE GUARD=JMS 3;WAIT=JMP 2 .BU=16000;.DH=16010;.MH=16020;.NL=16030 .END