;********************************************** ; SHORT - Shortens ASCII file to 80 chars ; ; by Dave Heyliger - AMUS Staff ; ; Directions: just type SHORT and follow 'em! ;********************************************** ;--- Get symbols and macros ; SEARCH SYS SEARCH SYSSYM SEARCH TRM ;--- Define version number ; VMAJOR=1. VMINOR=0. VEDIT=100. ;original by Doug Dozier, M.D. ;--- Define variables ; .OFINI .OFDEF IDDB,D.DDB ;Input DDB for input file .OFDEF ODDB,D.DDB ;Output DDB for output file .OFSIZ IMPSIZ ;--- Define a "PRINT TAB (#,#)" macro ; DEFINE PRTTAB AA,BB MOVB #AA,D1 LSLW D1,#10 MOVB #BB,D1 TCRT ENDM ;--- Program header and variable offset assignments ; PHDR -1,0,PH$REE!PH$REU ;re-entrant, re-usable GETIMP IMPSIZ,A3 ;A3 points to variables LEA A5,IDDB(A3) ;A5 points to input file LEA A4,ODDB(A3) ;A4 point to output file ;--- type out introduction ; PRTTAB -1,0 ;clear screen PRTTAB 6,34 ;tab to here TYPE PRTTAB 10,24 ;tab to here TYPE ;--- get input file and output file (not intensive error checking) ; PRTTAB 12,20 TYPE KBD FSPEC @A5 PRTTAB 13,20 TYPE KBD FSPEC @A4 INIT @A5 ;initialize both files INIT @A4 LOOKUP @A5 ;if input file not found JNE BOOBOO ;error LOOKUP @A4 ;if output file found JEQ BOOBOO ;error OPENI @A5 ;open them OPENO @A4 PRTTAB 15,1 TYPE ;gizmo effects! ;--- read input file byte-by-byte, write to output file byte-by-byte, ; but add a CRLF after 80 characters... ; BYB: MOV #80.,D4 5$: FILINB @A5 ;get a byte TST IDDB+D.SIZ(A3) ;eof? BEQ EOF ;yup FILOTB @A4 ;nope, output a byte DEC D4 ;decrement counter BNE 5$ ;if not 80 times, get another ; MOVB #15,D1 ;yup, get a CR FILOTB @A4 ;write the CR MOVB #12,D1 ;and get the LF 10$: FILOTB @A4 ;write out the LF TYPE <.> ;gizmo effects! BR BYB ;goto top ;--- if no input file or output file exists, type message ; BOOBOO: PRTTAB 15,23 TYPE MOV #7,D1 ;get a bell TTY ;beep! BR EXIT ;--- EOF hit, so close files, finish gizmo effects! ; EOF: CLOSE @A5 ; MOVB #15,D1 ;get a CR FILOTB @A4 ;write the CR MOVB #12,D1 ;and get the LF FILOTB @A4 ;write out the LF CLOSE @A4 ; EXIT: TYPECR EXIT END .