* C$6TO8 - MAY 29 2006 - VERSION 1 * * CONVERT BUFFER FILLED WITH MAGTAPE CODE (6 BIT) TO ASCCI CODE (8 BIT). * THE BUFFER IS ASSUMED TO CONTAIN DATA STORED IN BITS 1-6 AND 7-12 * OF EACH WORD IN THE BUFFER. BITS 13-16 ARE IGNORED. * CONVERSION TAKES PLACE ON A CHARACTER BY CHARACTER BASIS. * THE CHARACTER IN BITS 1-6 WILL AFTER CONVERSION OCCUPY * BITS 1-8 IN THE SAME WORD AND THE CHARACTER IN BITS 7-12 WILL OCCUPY * THE BITS 9-16 OF THAT WORD. * * HONEYWELL X16 16 BIT COMPUTER SOFTWARE * * PROGRAM LENGTH: 62 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$6TO8 * DAC BUFFER ADDRESS * DEC NUMBER OF WORDS IN BUFFER * (X-REG UNCHANGED AFTER RETURN) * SUBR C$6TO8,C628 REL C628 DAC *-* LDA* C628 BUFFER ADDRESS STA PBUF BUFFER POINTER IRS C628 LDA* C628 GET BUFFER LENGTH (WORDS) TCA STA LEN - WORD COUNT LDA 0 A = X (SAVE X) NX IMA* PBUF A = (PBUF), (PBUF) = A = X LRL 10 A[1-6] => A[11-16] A[7-16] => B[1-10] LGR 1 TRUNCATE A TO 5 BIT AND C = LSB STA 0 X = A = INDEX IN 32 WORD TABLE LDA TAB,1 GET 2 ASCII'S SSC IF C==1 RIGHT BYTE IS REQUIRED LGR 8 LEFT BYTE IS REQUIRED IAB TO A[9-16]; TO B; 2ND CHAR => A[1-10] LGR 11 TRUNCATE TO 5 BIT, LSB => C STA 0 X = A = INDEX IN 32 WORD TABLE LDA TAB,1 GET 2 ASCII'S SRC LGL 8 IF C==1 RIGHT BYTE IS REQUIRED LRR 8 SHIFT IN 1ST BYTE IMA* PBUF RESTORE CONVERTED WORD IN BUFFER AND IRS PBUF RESTORE A (WHICH IS THE SAVED X) IRS LEN JMP NX STA 0 END; RESTORE X IRS C628 JMP* C628 LEN OCT 0 - BUFFER LENGTH IN WORDS PBUF OCT 0 POINTER TO BUFFER * * 6-BIT MAGTAPE CODE TO 8-BIT ASCII CONVERSION TABLE (6 TO 8) * 32 ENTRIES TAB BCI 1,01 BCI 1,23 BCI 1,45 BCI 1,67 BCI 1,89 BCI 1, = BCI 1,': BCI 1,!> BCI 1, / BCI 1,ST BCI 1,UV BCI 1,WX BCI 1,YZ BCI 1, , BCI 1,( BCI 1,]" BCI 1,-J BCI 1,KL BCI 1,MN BCI 1,OP BCI 1,QR BCI 1,;$ BCI 1,*[ BCI 1, < BCI 1,+A BCI 1,BC BCI 1,DE BCI 1,FG BCI 1,HI BCI 1,^. BCI 1,)% BCI 1,\_ END