.TITLE .SIXPK / / 23 JUN 78 - PAUL HENDERSON / / THIS ROUTINE CONSTRUCTS A .SIXBT FILE NAME AND EXTENSION AS / CHARACTERS ARE SUPPLIED, ONE CHARACTER PER CALL. THE CONVENTION / USED IS THAT CHARACTERS ARE PACKED, THREE PER WORD, IN THE / FILE NAME AND EXTENSION. ALL NON-SPACE CHARACTERS AFTER A / SPACE GO IN THE EXTENSION, EVEN IF THE FILE NAME IS NOT / COMPLETELY FILLED, OR IF THERE HAVE BEEN MORE THAN SIX / CHARACTERS. ALL CHARACTERS AFTER THE NINTH (IF NO SPACE) / OR AFTER THE THIRD EXTENSION CHARACTER ARE IGNORED, AS ARE / ALL CHARACTERS INCLUDING AND AFTER A LINE TERMINATOR. / THE ROUTINE MUST BE INITIALIZED BY A CALL TO 'SIX.IN', / WHICH ALSO ZEROS THE 3-WORD FILE NAME BUFFER. / / CALLING SEQUENCES: / / 1) TO INITIALIZE - / / LAC (ADDRESS OF 3-WORD FILE NAME BUFFER / JMS* SIX.IN / (RETURN) / / 2) TO PACK CHARACTERS - / / LAC CHARACTER / JMS* .SIXPK / (RETURN) / X10=10 SET=ISZ / SET A FLAG NON-ZERO .GLOBL SIX.IN / SIX.IN XX DAC KPNT / KEEP ORIGINAL POINTER DAC WPNT / WORKING POINTER GETS ALTERED DAC* (X10 DZM* WPNT DZM* X10 / ZERO THE 3-WORD BLOCK DZM* X10 LAC (FIRSTC DAC SWING / SET UP THE BRANCH ADDRESSES LAC (FNAME2 DAC SELECT DZM TERMIN / CLEAR 'LINE TERMINATOR FOUND' JMP* SIX.IN / KPNT;WPNT;TERMIN 1 .EJECT .GLOBL .SIXPK / .SIXPK XX AND (177 / ENSURE WE HAVE ONLY 7 BITS SAD (15 / IF (CARRIAGE RETURN SKP SAD (175 / OR ALT MODE) JMP CRALT / IGNORE ALL CHARACTERS UNTIL / AFTER NEXT 'SIX.IN'; SAD (40 / ELSEIF (SPACE) JMP EXT / CHARACTERS GO IN EXTENSION AAC -140 SMA / IF (LOWER CASE) AAC -40 / CONVERT TO UPPER CASE AAC 140 AND (77 / CHOP TO 6 BITS JMP* SWING / THEN PROCESS CHARACTERS IN TURN /\ SWING OVRFLOW / IGNORE CHARACTERS UNLESS SET UP JMP* .SIXPK / CRALT SET TERMIN / SET 'LINE TERMINATOR FOUND' FLAG JMP OVRFLOW / THEN IGNORE CHARACTERS / NXT JMS SWING / ESTABLISH CORRECT BRANCH ADDRESS / FIRSTC ALSS 14 DAC* WPNT / STORE FIRST CHARACTER JMS SWING / ALSS 6 XOR* WPNT / INCLUDE WITH 1ST CHAR DAC* WPNT / AND STORE FIRST 2 CHARACTERS JMS SWING / XOR* WPNT DAC* WPNT / WORD NOW FULL. JMP* SELECT / SELECT NEXT STAGE IN PROCESSING / .EJECT SELECT OVRFLOW / IGNORE IF NOT SET UP JMP NXT / SET UP WORD PACKER FOR / ANOTHER 3 CHARACTERS FNAME2 LAC KPNT IAC / POINT TO SECOND WORD OF BLOCK DAC WPNT JMS SELECT / EXT LAC TERMIN / MUST CHECK BECAUSE A SPACE AFTER SZA / A LINE TERMINATOR COULD WREAK HAVOC JMP OVRFLOW LAC KPNT AAC 2 DAC WPNT / SELECT 3RD WORD (EXTENSION) JMS SELECT / OVRFLOW JMS SWING / RETURN WITHOUT PROCESSING JMP OVRFLOW / OVERFLOW CHARACTERS .END