* C$8TO6 - MAY 29 2006 - VERSION 1 * * CONVERT BUFFER FILLED WITH ASCII (8 BIT CODE) TO MAGTAPE CODE (6 BIT). * THE BUFFER IS ASSUMED TO CONTAIN ASCII DATA STORED IN BITS 1-8 AND 9-16 * OF EACH WORD IN THE BUFFER. CONVERSION TAKES PLACE ON A CHARACTER BY * CHARACTER BASIS. THE CHARACTER IN BITS 1-8 WILL AFTER CONVERSION OCCUPY * BITS 1-6 IN THE SAME WORD AND THE CHARACTER IN BITS 9-16 WILL OCCUPY * THE BITS 7-12 OF THAT WORD. BITS 14-16 OF EACH WORD ARE SET TO 0. * * HONEYWELL X16 16 BIT COMPUTER SOFTWARE * * PROGRAM LENGTH: 64 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$8TO6 * DAC BUFFER ADDRESS * DEC NUMBER OF WORDS IN BUFFER * (X-REG UNCHANGED AFTER RETURN) * SUBR C$8TO6,C826 REL C826 DAC *-* LDA* C826 GET BUFFER ADDRESS STA PBUF BUFFER POINTER IRS C826 LDA* C826 GET BUFFER LENGTH (WORDS) TCA STA LEN - WORD COUNT LDA 0 A = X (SAVE X) NX IMA* PBUF A = (PBUF), (PBUF) = A = X LLR 8 A[9-16] => A[1-8] A[1-8] => B[9-16] LGL 2 TRUNCATE A TO 6 BIT: A[1-6] JST CONV LRR 6 A[11-16] => B[1-6] B[11-16] => A[1-6] JST CONV LLL 6 A[11-16] => A[5-10] B[1-6] => A[11-16] LGL 4 C1=A[1-6] C2=A[7-12] A[13-16]=0 IMA* PBUF RESTORE CONVERTED WORD IN BUFFER AND IRS PBUF RESTORE A (WHICH IS THE SAVED X) IRS LEN JMP NX STA 0 BUFFER END; RESTORE X IRS C826 JMP* C826 * CONV DAC *-* A = 6 BIT ASCII LGR 11 TRUNCATE A TO 5 BIT AND C = LSB STA 0 X = A = INDEX IN 32 WORD TABLE LDA TAB,1 SSC IF C==1 RIGHT CHAR IS REQUIRED LGR 6 LEFT CHAR IS REQUIRED JMP* CONV RESULT IN A[11-16] LEN OCT 0 - BUFFER LENGTH IN WORDS PBUF OCT 0 POINTER TO BUFFER * * 8-BIT ASCII CODE TO 6-BIT MAGTAPE CODE CONVERSION TABLE (8 TO 6) * 32 ENTRIES TAB OCT 001461 OCT 006263 OCT 006465 OCT 006667 OCT 007071 OCT 004142 OCT 004344 OCT 004546 OCT 004750 OCT 005122 OCT 002324 OCT 002526 OCT 002730 OCT 003155 OCT 007636 OCT 007277 OCT 002016 OCT 003713 OCT 005375 OCT 006014 OCT 003474 OCT 005460 OCT 003340 OCT 007321 OCT 000001 OCT 000203 OCT 000405 OCT 000607 OCT 001011 OCT 001552 OCT 005713 OCT 001772 END