; DECODE - program to decode a file ; ; Copyright [c] Noel Alaska Systems Technology, 1983. VMAJOR = 1. ; version equates VMINOR = 0. VSUB = 0. VEDIT = 1. ; CHANGE EACH EDIT <----------- VWHO = 0. SEARCH SYS ; AMOS librarys SEARCH SYSSYM SEARCH TRM SEARCH MFN ; My library DSECT .=0 ; define impure area IDDB: BLKB D.DDB ; input file ODDB: BLKB D.DDB ; output file BLKW 3 ; rename area COL: BLKW 1 ; 'rba' EVEN IMPURE = . PSECT .=0 BEGIN: PHDR -1,-1,PH$REE!PH$REU GETIMP IMPURE,A5 ; get memory OPENEM: BYP PUSH A2 ; save pointer FSPEC IDDB(A5),M68 ; spec input CMMW #[TMP],D.EXT+IDDB(A5) BNE 1$ TYPECR EXIT 1$: INIT IDDB(A5) ; get I/O buffer OPENI IDDB(A5) ; open input POP A2 ; restore spec pointer FSPEC ODDB(A5),TMP ; spec output MOVW #[TMP],D.EXT+ODDB(A5) ; force .TMP extension INIT ODDB(A5) LOOKUP ODDB(A5) BNE 2$ DSKDEL ODDB(A5) 2$: OPENO ODDB(A5) GETPAS: TYPESP JOBIDX A0 MOV JOBTRM(A0),A0 ORW #T$ECS!T$ILC,T.STS(A0) KBD ABORT CRLF CLR D0 1$: MOVB (A2)+,D1 AND #377,D1 CMPB D1,#9. BEQ 2$ CMPB D1,#32. BLO 3$ 2$: ADD D1,D0 AND #377,D0 BR 1$ 3$: MOVW D0,COL(A5) TYPE LOOP: CTRLC ABORT ; main process loop FILINB IDDB(A5) TST IDDB+D.SIZ(A5) BEQ DONE AND #377,D1 CLR D0 MOVW COL(A5),D0 INC D0 AND #377,D0 BNE 1$ TYPE <.> 1$: MOVW D0,COL(A5) ; CALL ENCODE CALL DECODE FILOTB ODDB(A5) BR LOOP DONE: CLOSE IDDB(A5) CLOSE ODDB(A5) MOV D.FIL+IDDB(A5),D.DDB+ODDB(A5) MOVW D.EXT+IDDB(A5),D.DDB+4+ODDB(A5) DSKDEL IDDB(A5) DSKREN ODDB(A5) CRLF TYPECR EXIT ABORT: CLOSE IDDB(A5) CLOSE ODDB(A5) DSKDEL ODDB(A5) CRLF TYPESP EXIT ; ----- ENCODE DATA ENCODE: ADDW COL(A5),D1 AND #377,D1 LEA A0,TBL1 ADD D1,A0 MOVB @A0,D1 AND #377,D1 RTN ; ----- DECODE DATA DECODE: LEA A0,TBL2 ADD D1,A0 MOVB @A0,D1 AND #377,D1 SUBW COL(A5),D1 AND #377,D1 RTN COPY TBLS END