IMD 1.16: 31/05/2007 19:53:36 FOGCPM.105 --FOGCPM105LIST BAS LIST3 COM LIST3 DOCLIST3 ASMv LISTT COMLISTT DOC'LISTT AQM{ !"#$%&'()*+,-.P-ASP COM/012P-ASP DOCC3456789:;P-ASP AQMt<=>?@ABCDEFGHIJPRINT22 COM KLPRINT22 DOCMNOPQLIST14 COMQRSTQLIST DOC$UVWXYQLIST14 AQMZ[\]^_`abcdefghiQLIST14 AQM^jklmnopqrstu-07-00 86 SHOW COMvSHOW DOCwSHOW ASMxyz{SLIST COM |}SLIST DOC~TYPELZ13COMTYPELZ13DOC TYPELZ13ZZ0TYPELZ13ZZ05-CPM105 DOCVLIST COM VLIST DOC XTYPE COMFXTYPE DOCThis is the disk name. 10 'listing printer 20 'this is setup to print 50 lines per page 30 'space is thus available if some lines are 40 'longer than 80 characters. 50 'lines 60 & 300 are commands for Gemimi-10X printer 60 LPRINT CHR$(27);CHR$(55);CHR$(0) 70 DIM LN$(60) 80 PRINT CHR$(26) 90 INPUT"What is the program name";N$ 100 PRINT CHR$(26) 110 PN$=N$ + ".BAS" 120 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT 130 PRINT TAB(10)"PRINTING FROM FILE":PRINT:PRINT TAB(10)PN$ 140 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT 150 LPRINT:LPRINT"LISTING FROM ";PN$;" FILE" 160 LPRINT:LPRINT 170 OPEN"I",#1,PN$ 180 FOR X = 1 TO 50 190 IF EOF (1) THEN GOTO 310 200 LINE INPUT #1,LN$(X) 210 NEXT X 220 FOR P = 1 TO 50 230 LPRINT LN$(P) 240 NEXT P 250 LPRINT CHR$(12) 260 GOTO 180 270 PRINT CHR$(26):PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT 280 PRINT TAB(15) "LISTING COMPLETED" 290 CLOSE #1 300 PRINT:PRINT:LPRINT CHR$(27);CHR$(55);CHR$(1):END 310 'print the last lines 320 FOR P = 1 TO X-1  330 LPRINT LN$(P) 340 NEXT P 350 LPRINT:LPRINT:LPRINT TAB(10)"END OF ";PN$;" FILE" 360 LPRINT CHR$(12) 370 GOTO 270  X-1 n 80 characters. 50 'lines 60 & 300 are commands for Gemimi-10X printer 60 LPRINT CHR$(27);CHR$(55);CHR$(0) 70 DIM LN$(60) 80 PRINT CHR$(26) 90 INPUT"What is the program name";N$ 100 PRINT CHR$(26) 110 PN$=N$ + ".BAS" 120 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT 130 PRINT TAB(10)"PRINTING FROM FILE":PRINT:PRINT TAB(10)PN$ 140 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT 150 LPRINT:LPRINT"LISTING FROM ";PN$;" FILE" 160 LPRINT:LPRINT 170 OPEN"I",#1,PN$ 180 FOR X = 1 TO 50 190 IF EOF (1) THEN GOTO 310 200 LINE INPUT #1,LN$(X) 210 NEXT X 220 FOR P = 1 TO 50 230 LPRINT LN$(P) 240 NEXT P 250 LPRINT CHR$(12) 260 GOTO 180 270 PRINT CHR$(26):PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT 280 PRINT TAB(15) "LISTING COMPLETED" 290 CLOSE #1 300 PRINT:PRINT:LPRINT CHR$(27);CHR$(55);CHR$(1):END 310 'print the last lines 320 FOR P = 1 TO X-1 !9"b1͛͊{3'> > *b> 7?P , SOME KIND OF ERROR $FILE NOT FOUND $:j"!\ʲE*X"X:iʷÃ>2j*X+"X!"T*X|x*T~"#"T*X+"X!\4 :f~q5 2\ .:]83> !]4 ;[{ O> :\@e O>  [>^@:gG> u_\gH:!2i:] ?:mP:n0:02g!] y>.~# >2>2>2fH List - will list a source text file in ascii form (or compressed ascii) from a file to either the printer or console. The 1st argument is the source filename. The 2nd argument may be: " " = list to console. or "Pn" = list to printer. where n = 0,1...9 is the number of left margin spaces desired. $:fu!ͷ:'!ͷ> :fʑ*^L!ͷ*^#"^2]2\ More.... ~#÷}0>02h>0]T< =kbG:h> x>2h Listing of File: Page 123 0'!ͷ> :fʑ*^L!ͷ*^#"^2]2\ More.... ~#÷}0>02h>0]T< =kbG:h> x>;,!Ù!;qz8O! !;,z;qyO! ͣͣW_͕qyO! ͣ͒qyH List - will list a source text file in ascii form (or compressed ascii) from a file to either the printer or console. The 1st argument is the source filename. The 2nd argument may be: " " = list to console. or "Pn" = list to printer. where n = 0,1...9 is the number of left margin spaces desired. $:fu!ͷ:'!ͷ> :fʑ*^L!ͷ*^#"^2]2\ More.... ~#÷}0>02h>0]T< =kbG:h> x> LIST3.DOC by John M. Steele THIS PROGRAM IS BASED ON LIST.COM WHICH IS FOUND ON -FOG/UTL.002. LIST.COM WAS DISASSEMBLED AND THE RESULTANT PSUED0-SOURCE CODE MODIFIED TO PRODUCE LIST3.ASM. LIST3.CO i versatil fil listin progra whic wil lis a asci fil o eithe th consol scree o th printe a th user' option I ha specia feature suc a zeroin th hig orde bi t suppor Wordsta files expansio o tab t multiple o eigh columns re-expansio o th 48K ) ; TO REDUCE WEAR ON DRIVES ; ; *SENDS FORM FEED TO PRINTER AT END OF ; FILE, NOT BEGINNING ; ; *"More...." MESSAGE STARTS ONLY AFTER THE ; FIRST SCREENFULL AND IS ALWAYS ERASED ; ; *CONSOLE IS DEFAULT. TO LIST ON PRINTER ; YOU MUST TYPE P (SAVES A LOT OF PAPER) ; ; *SUPPORTS LEFT MARGIN OF 0-9 SPACES IN ; PRINTER MODE. DEFAULT IS 5 SPACES. ; ; *2 LINE HEADER MODIFIED TO PUT FILE NAME IN ; TOP LINE AND LEAVE 2ND LINE BLANK. ; ; *LINES/PAGE REDUCED TO 57 FOR BETTER ; BOTTOM MARGIN. ; ; USAGE ; ----- ; ; LIST3 Describes LIST3 on console ; LIST3 x:filename ext Displays file on console ; LIST3 x:filename.ext Pn Prints file, n space margin ; ; Where x: is optional drive specification ; filename.ext is any standard CP/M filename ; (wildcard ? or * selects first match) ; n is a digit 0,...,9 controls number of added ; spaces in left margin. If not specified, or ; out-of-bounds, a default of 5 is used. ; ;--------------------------------------------------- ; ; EQUATES SECTION ; BDOS EQU 05H COMBUF EQU 80H CONINCH EQU 01H CONSTAT EQU 0BH CR EQU 0DH FCB1 EQU 5CH FCB2 EQU 6CH FF EQU 0CH LF EQU 0AH OPNFIL EQU 0FH OUTSTR EQU 09H READSEQ EQU 14H WARMST EQU 00H ;-------------------------------------------------- ; ; MAINLINE SECTION ; ORG 0100H ;SAVE OLD STACK POINTER AND SET NEW STACK POINTER LXI H,0 DAD SP SHLD OLDSTK LXI SP,NEWSTK ;CALL INITIALIZATION SUB, OPEN FILE, DO PAGE HEADER CALL INIT CALL OPNFILE CALL NXTPAGE ; ; MAIN LOOP OF PROGRAM MAINLP: CALL READCHR ;READ CHAR. FROM FILE BUFFER CALL WRITCHR ;WRITE CHAR. ON SELECTED DEVICE CALL CONCHK ;CHECK CONSOLE STATUS JC EXIT ;EXIT IF ^C WAS TYPED JMP MAINLP ;CONTINUE ; ;EXIT ROUTINE:CALLED FROM MAINLP, ; AND FROM ERROR MESSAGE ROUTINES. ;OUTPUT , RECOVER STACK, AND RETURN TO CP/M. ;EXITFF ROUTINE IS CALLED WHEN EOF OR ^Z IS FOUND. ;PROVIDES FORM FEED PRIOR TO EXIT. EXITFF: MVI A,FF CALL OUTCHR EXIT: MVI A,CR CALL OUTCHR LHLD OLDSTK SPHL MVI A,0 RET ;-------------------------------------------------- ;END OF MAINLINE ROUTINE ;SUBROUTINE SECTION FOLLOWS ;-------------------------------------------------- ; ;SUBROUTINE CONCHK:GETS CONSOLE STATUS BY BDOS CALL ; CONCHK: MVI C,CONSTAT CALL BDOS RAR ;ROTATE BIT 0 TO CARRY ; 0 = NO CHARACTER, RETURN; ELSE GET CHARACTER RNC ;-------------------------------------------------- ; ;SUBROUTINE INCHAR: GETS CHARACTER BY BDOS CALL ; INCHAR: MVI C,CONINCH CALL BDOS CPI 3 ;TEST FOR ^C. IF ^C STC ;RETURN WITH CARRY SET RZ CMC ;ELSE RETURN WITH IT CLEAR. RET ;-------------------------------------------------- ;SUBROUTINE SAYERR: SET ERROR MESSAGE ADDRESS, ;CONTINUE INTO SUBROUTINE CONSTRG. SAYERR: LXI D,ERRMESS ;-------------------------------------------------- ; ;SUBROUTINE CONSTRG: PRINTS MESSAGE STRING ON CONSOLE ;VIA BDOS CALL AND EXITS. ; CONSTRG:MVI C,OUTSTR CALL BDOS JMP EXIT ; ; MESSAGE TABLE FOR CONSTRG ; ERRMESS:DB CR,LF,'SOME KIND OF ERROR' DB CR,LF,'$' NFMESS: DB 'FILE NOT FOUND',CR,LF,'$' ;-------------------------------------------------- ; ;SUBROUTINE DISKRD: READS SEQUENTIAL RECORDS USING ;FCB1 AT 5CH, INTO FILE BUFFER. PROCESS STOPS AT ;LAST SECTOR, OR WHEN BUFFER REACHES BOTTOM OF CCP. ;DISKRD IS ENTERED FROM READCHR AND FLOWS BACK ; INTO SUBROUTINE READCHR ; DISKRD: LDA DSKFLG ;CHECK WHETHER LAST SECTOR CPI 0FFH ;WAS ALREADY READ. JZ EXITFF ;IF SO, EXIT LXI H,BUFFER;LOAD BUFFER ADDRESS AS POINTER DISKLP: XCHG ;POINTER TO MVI C,1AH ;SET DMA ADDRESS=POINTER CALL BDOS LXI D,FCB1 ;READ SEQUENTIAL RECORD MVI C,READSEQ CALL BDOS CPI 1 ;TEST FOR LAST SECTOR JZ FILEND ORA A ;IF A<>0, CALL ERROR JNZ SAYERR ;MESSAGE ROUTINE. LXI D,80H ;ADD 128 TO FBCNTR LHLD FBCNTR DAD D SHLD FBCNTR ;AND STORE IT. LDA FILPAGS ;COMPARE H TO # OPEN PAGES CMP H JZ BUFFULL ;IF =, THEN BUFFER FULL LXI D,BUFFER;ADD BUFFER TO FBCNTR DAD D JMP DISKLP ;GET NEXT SECTOR FILEND: MVI A,0FFH ;SET LAST SECTOR FLAG STA DSKFLG BUFFULL:LHLD FBCNTR ;CORRECT FBCNTR DCX H SHLD FBCNTR LXI D,COMBUF;RESET TO NORMAL DMA MVI C,1AH CALL BDOS LXI H,BUFFER;RESET POINTER TO BUFFER START SHLD FBPNTER ;------------------------------------------------- ; ;SUBROUTINE READCHR: TESTS STATUS OF FILE BUFFER, ;REFILLS IT WHEN EMPTY, AND MOVES CHARACTERS TO A. ;INCLUDES TEST FOR ^Z END-OF-FILE AND CALL TO EXIT. ; READCHR:LHLD FBCNTR ;CHECK FOR FILE BUFFER MOV A,H ;COUNTER EQUAL TO ZERO. ORA L JZ DISKRD ;YES, READ DISK. LHLD FBPNTER ;LOAD FILE BUFFER POINTER MOV A,M ;GET CHARACTER CPI 1AH ;TEST IT FOR ^Z (EOF) JZ EXITFF ;IF SO EXIT INX H ;ELSE, INCREMENT FILE SHLD FBPNTER ;BUFFER POINTER, RESTORE H LHLD FBCNTR ;DECREMENT THE FILE BUFFER DCX H ;COUNTER SHLD FBCNTR RET ;-------------------------------------------------- ; ;SUBROUTINE WRITCHR: MAINTAINS CHARACTER/LINE AND ;LINES PER PAGE COUNTS. HANDLES SPECIAL CHARACTERS ;AND OUTPUTS CHARACTERS BY CALLS TO OUTCHR. ; WRITCHR:LXI H,CHRCNT;INCREMENT CHARACTER COUNT INR M ;ZERO HIGH ORDER BIT OF CHAR. ANI 7FH CPI ' ' ;TEST FOR PRINTABLE CHAR. JM CNTLCHR ;IF NOT, JUMP TO CNTLCHR ;IF CHRCNT=1 AND DEVICE=PRINTER, EXPAND MARGIN PUSH PSW LDA PTRFLG ;CHECK DEVICE CPI 0 ;IF CONSOLE, PRINT CHAR JZ PRTCHR MOV A,M ;ELSE CHECK CHAR. COUNT CPI 1 CZ MARGIN ;IF 1, CALL MARGIN PRTCHR: POP PSW ;PRINT PRINTABLE CHARACTER JMP OUTCHR ; ;THIS SECTION HANDLES CONTROL CHARACTERS ;IT DOES , , , SUPPORTS EVERY ;8TH COLUMN, SUPPORTS SEQUENCE FOR COMPRESSED ;SPACES, PRINTS ALL OTHER CONTROL CHAR IN ^ FORMAT. ; CNTLCHR:DCR M ;SUBTRACT FROM LINE COUNT PUSH PSW ;SAVE CHAR. ON STACK TESTCR: CPI CR ;TEST FOR CARRIAGE RETURN JNZ TESTLF XRA A ; IS . ZERO CHAR. COUNT STA CHRCNT ;AND OUTPUT THE . POP PSW JMP OUTCHR TESTLF: CPI LF ;TEST FOR LINE FEED JNZ TESTFF LDA LINECNT ;IS . CHECK LINE COUNT LINES: CPI 56 ;COMPARE TO MAX LINES/PAGE ;NOTE: 56 GIVES 57 LINES PER PAGE ON PRINTER, BUT ;SUBROUTINE SETCON CHANGES THE OPERAND AT LINES+1 ;FOR CONSOLE MODE TO BE NUMBER OF LINES PER SCREEN. JP FORMFD ;IF PAGE FULL GO TO FORMFD MVI A,LF ;ELSE OUTPUT CALL OUTCHR ; LXI H,LINECNT INR M ;INCREMENT LINE COUNT POP PSW ;RESTORE STACK AND RETURN RET TESTFF: CPI FF ;TEST FOR FORM FEED JNZ TESTTAB FORMFD: CALL ENDPAGE ;IS . CALL END PAGE CALL NXTPAGE ; AND NEXT PAGE ROUTINES POP PSW ;RESTORE STACK RET ;AND RETURN TESTTAB:CPI 9 ;TEST FOR TAB JNZ TESTDLE TABLOOP: ;IS .SEND BLANKS UNTIL MVI A,' ' ;CHRCNT IS A MULTIPLE OF 8. CALL WRITCHR LDA CHRCNT ANI 7 ;NOTE 1 SPACE SENT BEFORE JNZ TABLOOP ;TEST IS MADE. POP PSW ;RESTORE STACK, RETURN RET TESTDLE:CPI 10H ;TEST FOR SEQUENCE JNZ ELSE POP PSW ;IS . DISCARD CHAR. CALL READCHR ;NEXT CHAR IS NUMBER OF BLANKS SUI 20H ;AFTER 20h IS SUBTRACTED. MOV C,A ;PUT BLANK COUNT IN C. DLELOOP:MVI A,' ' ;SEND A BLANK CALL WRITCHR DCR C ;DECREMENT COUNT AND JNZ DLELOOP ;TEST IF DONE RET ;ALL OTHER CONTROL CHRACTERS, SEND "^" AND FORM ;PRINTING CHAR = CHR. + 40H ELSE: MVI A,5EH CALL WRITCHR POP PSW ORI 40H CALL WRITCHR ;023FH RET ;-------------------------------------------------- ; ;SUBROUTINE MARGIN: OUTPUTS SPACES FOR LEFT MARGIN ;USING NUMBER IN MARGCNT. ; MARGIN: LDA MARGCNT ;LOAD MARGIN COUNT TO B MOV B,A MARGLP: DCR B ;DECRMENT MARGIN COUNT RM ;RETURN IF MINUS MVI A,' ' ;ELSE, SEND BLANK AND LOOP CALL OUTCHR JMP MARGLP ;-------------------------------------------------- ; ;SUBROUTINE OUTCHR: SENDS ONE CHAR. VIA BDOS CALL ;NOTE: OPERAND AT "DEVICE" IS SET FOR PRINTER ;BUT SUBROUTINE "SETCON" CHANGES DEVICE+1 TO 2 ;IN CONSOLE MODE. ; OUTCHR: PUSH B ;SAVE REGISTERS PUSH D MOV E,A ;PUT CHAR. IN E DEVICE: MVI C,5 ;SET BDOS FUNCTION CALL BDOS POP D ;RECOVER REGISTERS POP B RET ;-------------------------------------------------- ; ;SUBROUTINE OPNFILE: OPENS FILE WHOSE NAME IS IN ;FCB1 OR SENDS MESSAGE IF FILE NOT FOUND. ; OPNFILE:MVI C,OPNFIL;SET BDOS FUNCTION LXI D,FCB1 ;LOAD FCB ADDRESS CALL BDOS CPI 0FFH ;CHECK FOR NO FILE (FFh) LXI D,NFMESS;LOAD MESSAGE ADDRESS JZ CONSTRG ;AND SEND IF NO FILE RET ;-------------------------------------------------- ; ;SUBROUTINE INIT: INITIALIZATION ROUTINE SETS ;COUNTERS, DISPLAYS HELP MESSAGE IF REQUIRED, ;SETS CONSOLE/PRINTER MODE, PUTS FILE NAME IN ;PRINT MODE HEADER. ; INIT: LDA WARMST+2;GET HI BYTE OF WARMST SUI 16H ;GET CCP PAGE LXI H,BUFFER;GET BUFFER PAGE SUB H ;PAGES OPEN FOR FILE BUFFER STA FILPAGS ;SAVE # OF PAGES LDA FCB1+1 ;GET 1ST CHAR. OF FCB1 CPI ' ' ;IF NO FILE NAME OR "?" JZ DESCRIB ;DISPLAY DESCRIPTION OF LIST CPI '?' JZ DESCRIB LDA FCB2+1 ;GET 1ST CHAR. OF FCB2 CPI 'P' ;CHECK FOR "P" = PRINTER JNZ SETCON ;IF NOT, SET CONSOLE MODE ;THIS SECTION DONE FOR PRINTER MODE ONLY LDA FCB2+2 ;GET DESIRED MARGIN CPI 30h ;CHECK CHAR BETWEEN 30-39h JM MOVNAM CPI 3Ah JP MOVNAM SUI 30H ;OK-CONVERT FROM ASCII STA MARGCNT ;AND STORE MARGIN. ;MOVE FILE NAME TO NAME BUFFER MOVNAM LXI D,NAMBUF;POINT TO NAME BUFFER LXI H,FCB1+1;POINT TO NAME IN FCB1 MVI C,11 ;LOAD LENGTH OF NAME+EXT LOOP1: DCR C ;DECREMENT AND TEST IF RM ;RETURN IF DONE MOV A,C ;ELSE MOVE COUNT TO A CPI 2 ;CHECK COUNT.IF 2, SEND "." JNZ NOTDOT ;BETWEEN FILE NAME MVI A,'.' ;AND EXTENSION STAX D INX D NOTDOT: MOV A,M ;GET CHARACTER INX H ;INC FCB POINTER ANI 7Fh ;ZERO HIGH ORDER BIT CPI ' ' ;CHECK IF SPACE JZ LOOP1 ;IF SO, IGNORE STAX D ;ELSE STORE IT IN NAME INX D ;BUFFER, INC. POINTER JMP LOOP1 ;AND LOOP ;SET UP FOR CONSOLE PRINTING SETCON: MVI A,2 ;MOVE 2 TO DEVICE+1 STA DEVICE+1 MVI A,21 ;SET LINES PER SCREEN STA LINES+1 MVI A,0 ;SET PRINTER FLAG TO STA PTRFLG ;CONSOLE MODE RET ;-------------------------------------------------- ; ;SUBROUTINE DESCRIB: OUTPUTS DESCRIPTION OF ;LIST.COM ON CONSOLE AS A HELP MESSAGE ; DESCRIB:LXI D,DESCRIP ;LOAD POINTER JMP CONSTRG ;CONSOLE STRING OUTPUT DESCRIP:DB CR,LF,'List - will list ' DB 'a source text file in',CR DB LF,' ascii form (or ' DB 'compressed ascii)',CR,LF DB ' from a file to either ' DB 'the printer',CR,LF,' ' DB ' or console.',CR,LF DB LF,'The 1st argument is ' DB 'the source filename.',CR DB LF,'The 2nd argument may ' DB 'be:',CR,LF,' " " ' DB '= list to console.',CR DB LF,' or "Pn" = list to ' DB 'printer.',CR,LF DB 'where n = 0,1...9 is the number' DB CR,LF,'of left margin spaces desired.' DB CR,LF,'$' ;--------------------------------------------------- ; ;SUBROUTINE ENDPAGE: HANDLES THE "MORE" MESSAGE IN ;CONSOLE MODE AND THE FORM FEED IN PRINTER MODE. ; ENDPAGE:LDA PTRFLG ;TEST PRINTER FLAG ORA A JNZ PTR ;JUMP IF PRINTER MODE CON: LXI H,MORMESS;LOAD THE "MORE" MESSAGE CALL OUTSTRG ;AND SEND IT. CALL INCHAR ;WAIT FOR KEYBOARD INPUT JC EXIT ;EXIT IF IT WAS ^C LXI H,MORERAS ;LOAD THE ERASE-MORE MESSAGE CALL OUTSTRG ;AND SEND IT RET PTR: MVI A,FF ;SEND A FORM FEED CALL OUTCHR RET ;--------------------------------------------------- ; ;SUBROUTINE NXTPAGE: HANDLES PAGING FOR BOTH ;PRINTER AND CONSOLE MODE, AND PRINTS PAGE HEADER ;IN PRINTER MODE ; NXTPAGE:LDA PTRFLG ;TEST PRINTER FLAG ORA A JZ ALLPAGE ;JUMP IF CONSOLE MODE LHLD PAGECNT ;CONVERT HEX PAGE COUNT LXI D,DCPAGE;TO ASCII IN HEADER MESSAGE CALL FIXPAGE LXI H,HEADER;LOAD HEADER ADDRESS CALL OUTSTRG ;AND OUTPUT HEADER ALLPAGE:LHLD PAGECNT ;BOTH MODES. INC PAGE COUNT INX H SHLD PAGECNT XRA A ;ZERO LINE AND CHAR. COUNT STA LINECNT STA CHRCNT RET MORMESS:DB CR,LF,'More....',0 MORERAS:DB CR,' ',CR,0 ;------------------------------------------------- ; ;SUBROUTINE OUTSTRG: MOVES CHAR. STRING TO ;CHAR. OUTPUT SUB UNTIL NULL IS FOUND. ; OUTSTRG:MOV A,M ;GET CHAR ORA A RZ ;RETURN IF CHAR IS INX H ;ELSE OUTPUT IT PUSH H CALL OUTCHR POP H JMP OUTSTRG ;LOOP UNTIL FOUND ;-------------------------------------------------- ; ;SUBROUTINE FIXPAGE: CONVERTS HEX PAGE NUMBER ;TO ASCII UP TO PAGE 999. ; FIXPAGE:LXI B,0FF9CH;LOAD -100 INTO B CALL CONVERT ;CONVERT HUNDREDS DIGIT CALL LDZERO ;CHECK LEADING ZERO LXI B,0FFF6H;LOAD -10 INTO B CALL CONVERT ;CONVERT TENS DIGIT CALL LDZERO ;CHECK LEADING ZERO MOV A,L ;UNITS DIGIT IS L REMAINDER ADI '0' ;CONVERT TO ASCII STAX D ;AND STORE IT MVI A,'0' ;RESTORE LEADING ZERO FLAG STA LZFLAG ;FOR NEXT TIME RET ;AND RETURN ;------------------------------------------------- ; ;SUBROUTINE CONVERT: CONVERTS MOST SIGNIFICANT ;REMAINING DIGIT BY SUBTRACTING ITS DECIMAL VALUE ;AND COUNTING NUMBER OF SUBTRACTS. ; CONVERT:MVI A,'0' ;INIT DIGIT TO ASCII 0 PUSH D ;SAVE D ;INC. A AND ADD NEGATIVE DIGIT VALUE UNTIL ;CARRY OCCURS CONVLP: ;053D MOV E,L ;SAVE HL IN DE MOV D,H INR A ;INC. DIGIT VALUE (IN ASCII) DAD B ;SUBTRACT DIGIT VALUE JC CONVLP ;CONTINUE UNTIL NEGATIVE DCR A ;UNDO LAST INCREMENT MOV L,E ;UNDO LAST DAD BY MOV H,D ;RESTORING HL FROM DE POP D ;RESTORE D AND RETURN RET ;-------------------------------------------------- ; ;SUBROUTINE LDZERO: REPLACE LEADING ZERO WITH BLANK ; LDZERO: MOV B,A ;SAVE DIGIT IN B LDA LZFLAG ;LOAD LEADING ZERO FLAG CMP B ;CHECK FOR LEADING ZERO JNZ NOTLD0 ;IF NOT JUMP MVI A,' ' ;IF SO, STORE BLANK INSTEAD STAX D ;OF DIGIT IT PAGE NUMBER INX D ;INC. PAGE NUMBER POINTER RET NOTLD0: MOV A,B ;NOT LEAD. 0. GET DIGIT STAX D ;STORE IT INX D ;INC PAGE NUMBER POINTER MVI A,0FFH ;TURN OFF LEADING ZERO FLAG STA LZFLAG ;AND RETURN RET ;-------------------------------------------------- ; ; DATA STORAGE SECTION ; HEADER: DB ' Listing of File: ' NAMBUF DB ' ' DB '  ' DB 'Page ' DCPAGE: DB '123',CR,LF,CR,LF,0 FBPNTER:DW 0,0 ;FILE BUFFER POINTER FBCNTR: DW 0,0 ;FILE BUFFER COUNTER CHRCNT: DB 0 ;CHARACTER COUNTER LINECNT:DB 0 ;LINE COUNTER PAGECNT:DW 1,0 ;PAGE COUNTER OLDSTK: DW 0,0 ;RETURN STACK STORGAE PTRFLG: DB 0FFH ;PRINTER FLAG MUST BE NONZERO MARGCNT:DB 5 LZFLAG DB '0' ;LZFLAG "0" IF LOOKING FOR ;LEADING ZERO, FFh IF NOT FILPAGS:DB 0 DSKFLG: DB 0 ;LAST SECTOR FLAG DS 0050H ;RESERVED FOR STACK NEWSTK: DW 0,0 ;TOP OF NEW STACK BUFF EQU ($+127)/128*128 ;GET ON PAGE BOUND. ORG BUFF BUFFER DB 0 ;FILE BUFFER AREA ;------------------------------------------------- END ;end of list program ER POINTER MVI A,0FFH ;TURN OFF LEADING ZERO FLAG STA LZFLAG ;AND RETURN RET ;-------------------------------------------------- ; ; DATA STORAGE SECTION ; HEADER: DB ' Listing of File: ' NAMBUF DB ' ' DB ' DAN  Page  1  1  == No file by that name on this disk == $== No file requested == $== No "*" or "?" please == $ LISTT Pgm v1.0 10/10/82 Do you want tear tabs to use roll paper? (Y/N): Number of spaces to augment left margin? (0-9): Ignore FF (Y/N): Heading/date is: Start at page : Quit at page : HIGHEST PAGE IS: "1!V}!~ʆ!~:f!#?#~y yi!\ #~?ʒ ~:g2o|g"!\ j222*" "<ʌR͜ ͺ   ! [kz> z::<268> :<268> ͢zR͑Ͳ͢!3s> ͺ:[>^ͺ@ͺ z!͇!}Øx¤> î+> w>!#~ ¸++ Ë!#~ + + 2 !7s͑͢!?s* *}|g!"* {zY* S*"%*" !"* * }>*#" Ø~~9~!:͇2ʑɯ22: â!~ >0 ͺ:G:!s1!}ͯ1C:C0!:G> w#=!7}!}ͯ_Y\2!7}!}!Mͯ ʒ€͚mw#x}mͬͤm!7}!}!ͯ ¶͚ãw#xڣͬͤã!7}!}!ͯ ͚w#xͬͤ!7}: > :<26%> ͑!͇Ø!t}ͯ_YK2!?"L!7}͜ R R R~# j~ͺ#s~#}~#Ç!s>-:G> ¡>-ͺ!s2  :<2_: {__: z::<268> :<268> ͢zR͑Ͳ͢!3s> ͺ:[>^ͺ@ͺ z!͇!}Øx¤> î+> w>!#~ ¸++ Ë!#~ + + 2 !7s͑LISTT -- File utility program for printers -- 10/10/82 Irvin M. Hoff Los Altos Hills, CA 94022 "LISTT" is a printer utility program that lists any requested file on your printer. (The CRT also display what is being printed). The name was selected so it would be easy to type, easy to remember and be illus- trative of its capabilities. Include the name of the file (and its extent) that is to be listed when asking for the program: A>LISTT HELLO.ASM A menu then appears asking several questions: Do you want tear tabs to use roll paper? (Y/N): (1) Number of spaces to augment left margin? (0/9): (2) Ignore FF (Y/N): (3) Heading/date is: (4) Start at page : (5) Quit at page : (6)  1) A "Y" gives tear tabs for roll paper. Any other reply (including RET) defaults to fanfold with no tear tabs. 2) Ability to include 0-9 spaces at the left margin for those printers without adjustable margins. A RET de- faults to no spaces (normal left margin). 3) Responds to form feeds unless a 'Y' is typed. Outputs an appropriate number of line feeds enabling printers without form feed to paginate correctly. 4) Heading desired (such as current date, etc.) Up to 124 characters may be used. The name of the file plus cur- rent page number near the right margin are both automatic. A RET defaults to file name and page number. 5) Asks for starting page (defaults to page 1). 6) Asks for page to stop at (defaults to end of file). NOTE: There are two options which may be user-set. These are locations 0103 and 0104. They may be set with "DDT", "SID" or by editing and reassembling: 1) PAGCOL -- sets the column the Page number starts at. Some printers have 72 columns total, some 80, some 132, etc. (Byte 0103) 2) TTABN -- Sets the space between tear tabs for roll paper. Some printers have 72 columns, some 80 columns, etc. (Byte 0104) Thus you can compensate for various printers and also print any portion of the file you wish. FEATURES: a) Shows on the CRT what is being printed. b) Optional fanfold or roll paper. Adds tear tabs if roll paper is selected. c) Can abort at any time with CTL-C, but finishes the cur- rent line first. d) Can change the location of the Page number for use with printers of 72 columns, 80 columns, 132 columns, etc. (Byte at location 0103, via DDT.) e) Can change the spacing between the tear tabs for use with printers of 72 columns, 80 columns, 132 columns, etc. (Byte at location 0104, via DDT.) f) Can indent up to 9 spaces to effectively provide an ad- justable left margin (many printers do not permit changing the margin). g) Can start on any page desired, saving paper (and time!) if you only wish to reproduce certain portions of a file. h) Can stop at any page desired, allowing the operator to do other things when only part of the file is needed. i) Shows the total number of pages in the file if you intion- ally (or otherwise) ask for a page number that is too high for the file. j) If a heading/date is longer than normal spacing for the page number, it is automatically moved further along. Up to 124 characters may be used for the heading/date. k) An option on the menu allows you to ignore form feed chars. I t automatically paginates without form feeds in the text. l) Works equally well on printers without form feed since it inserts the correct number of line feeds to paginate. m) Visually prints control characters imbedded in the text other than CR, LF, form feed or tab. You can thus dis- cover any unknown characters that normally do not print. COMMENT: Line numbers can be added to any ASCII file with PIP.COM and the [N] option: A>PIP HELLO1.ASM=HELLO.ASM[N] Form feeds can be removed with PIP.COM and the [F] option. You can edit CTL-L (form feed char.) into the file to force a new page wherever desired. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 24 characters may be used for the heading/date. k) An option on the menu allows you to ignore form feed chars. IvLISTT.ASMi  o! "#$%&')(*,+-./1032547689:;<=>?@ABDCFEGHIKJLMNOPRQSUTVWYXZ\[^]_a`bcfeghdq.sFזUv*G\XJUy[YY=DI~ޞq-5dT]UNY JYOY SW*V*VT^Ureɑ[z(y5{WR25Ze*婮Sʕ\+ϓ9κUNM Q{ 2o#9bOԕު<9ꊧB$VWuQ{#G8PIU*<+_!"O{e UzOYսB8SdWV1oMݳr婪RT9Py(uejxʪ+J^y^* TA3E*Rx*<Q魜*ujbR{(T YyS7$9r)J)R9x`-bOuTx+ *Vs*TW #TW\U9S]T(߷J_OU*WVsޢ&(W)jy#Ǚ"+E Q2ꊧB$;r!zeyjF^M$J{^᪼׽juu%1d zJH Ǚ"B别+bʩʪ׽juu%1dRXqHE#VVP9uBJ-jU+'DTC<WAG7o`[ S}ސ*u5[SUr&TQ2{ϩzK.ޑ"!wS9OptmWrDŬ3+ =!9W?Qpt Bi+YWV&~m Q{6BBݕ%J*TUH~!I[USC*TUH~!"%L_=˂/h/YYj/nj#rD;rt;_usYݹmtrgL0ol:awpo>;\ r_v:?rnw @ ;_,,*d#Dž_,Kp~[nϿA{#i@ktO#πYYE D'=YtEN#r/NfwC"m=94 9"|iˁ2+>I}Oy|Y=+oTFO]}~C3đ&C$YyqE Of*xmiv?\w<Id2%~Q:4,_ π83bN<9Pfe1oQ};iۜdg fQ8tAzZC#G+ʶͮo&vCi_p&z oM6|q^HYשgoY π_g%\wuͺÿMmb"#G䓏#Gr~5O9sRߓeXK 3Yyk2L]}~CYI0SuuRvCӷmyf 5٠7&r:X*;@BYg^pۮ>A@6+O>܌|u:}!V#rDɌ9N_;?Rwovvp'Md9"dFdgQ,jq@WY RxH5{REB πYIk|<_~3Yw2aϥ? sgLeGT)ݿmp'MSy(;MӉ#rD鎻EN~GgV.>rDсgG_VJW_<g@,gճ/rDqiV..zG'đ/mp'Md9"π]}ɐ#rLfDFqa{|q~4#-v➻#89&3"#Gp<+:,d4?-i vRW πYYԩi3WY.Y71_4?}z׹M>rDJ"π8wVyE56ssRߓeX*T4P!π]}ɐg@yD-?!π_gގ<geQ͈> R @mV^H"%d 71 _pG9&3"#G+*va9kҹ='m'zϥ;rDɌ9"πmOxE‡Ǵ4+un 3=]Rv>tϥ? &*3&Lz.e:ٖY=3?ҿ9P8^-47qFKYL#GP+tmWrDo]M_68,|t7O_3b2]_sQ?C$YB!Gd@Eg%aNt{w3g ́܌cN) Gdm|ٛmo3?ҿ9t8St;r|9"G?-=&ޑ#s Ggn3/鴀<IdvOiZTT6 $"g@?yVt_ @,9(<ɳ\x2 O]}~C$Ys ygV7J8d'~(&um"GP?nwNunlgzّ;9C:[6&/lm3?ҿ9xqY3߭D9plwAunlgzّ;9CWY6?-f E\*;ʋ<IlV7ǜ.S/AgwV:άne'ȡʋ<Yt83<+ϧH zV7fobNWN < y<+oR׹ M|ZgCr ϊ,wg fsPČإoJ Gp)aM#GdisŝN3&8;3ßpg 6+/ sg π~d:  $=+]71K^CN\#π_g]<:A[> ܖCÙ9?t{|q~<I3+C׌cClu.9[#r%\J綳{.#sP4}.,ۙqpvo~ yunuEE~vCtz_miZg2s<OG#3Q7hVw׹ G]TI7׹-pus?_o3sϬ-wđϮX?!πm9?"Qb&/|K93s8-M,xM ŞA}۞K9(Y{.:> >g?<{n?.|Kx3+?;o{|uŠNʊ_HYf3d99л :߭D9عt7ͯγքfs_{2ݹ0 m|ٛXd񸛸=-<RK4bi:~@Ty٬oD8tAFDBy&? $Ϭo]3;rP*㻕9"Y<&Nptu7C%HLey<+oMP3݉|%m "πmЖϧEo{ZyG@gyV{3QPّ{Z'zyun|> $Ϭon"§wnj#rDɌF4"Yh599|1qn;3,qFh'b2 mM#G vH_gŹ#g@_6ymoggγRZf yun )g@?yV4!9W?zّ;9C@6+/,ۙq|yK#e;]9J}M ត<:"Pi9  /,ۡ"Qk|Zr/3s8-ygV~J>nbC/$9Z w_]!t}v?rwf#2+C|Y=+o TF=Re s9|ʋ<IlVºB<]7SYNwr'_7-]3WYyk3wO#@JXW rDuxH+tkN?u/gДYϼ;iۜdgγքgճүLelqW92u3sM GdXW4:[bMl_vvrDuxsM|ny?"G+vڿE⎜8r89K9" fϼFqN>-ޑg~+g~gQߣTn-L籓Ɂs7䈬+Er~59;_t|)ΊL<g@?yVF@@6+uxgДY#Gp<+ !լ2_",mϥBLJC:J]S!Gd]!*Kيרwrh1.t|7<f<IlV xq銜py-rDBSfe1uu§y M= J<IlV P!GHYyaNrDBJx5/lk3gV3gV3A9"G8]#'_N-wĹi9%u8YtD3QOwx: x:`p<+Rͺ(b28=A@CȺB.ҖeV31͡ZKqVd:e<ɳ0 $Y+BBSfegQ,߂Tnct|)ΊLT=  y<+uMu8T3QK@i9b2]oyJy٬␛q銜py-rDBSfe1uu§y M= J<IlV q# sg8뜄Iܑy%ʾe&N <gb.<: "Pi9׹ Grȁ^o3s[g&PpӵrDx!mge_]3s8-0 \:Grsߐ#i{3+ ؾ8}Z##YY #Y#@9Z"ُq[EKߗ-t #r=9"YTt6׻bKF׻bKi3Yyk<ʏ<g@,g I,*ގgQ [NCET{y\-gճyDy|Y=+o] πY#@RгȢr|<wŖfoѐgŬ,g{y<+uMY7Q¿EѾ3s\H<geQ!π_g^nb;?| R πlwV^H dȢ rDGɳISp+4<-fe<wŖfӐg feEr|79"YTx!mwŖfӐg@9"YT#mgeQ3WYk*E̺-@}B p<+<wŖfӐ#rEIE4 [ݿEC@YGP| [w?@>d4<v3 ۝= yVtb2]GF6SXzn(Fp#M"Gpťlkt; [Nwg{d7TO9;3eV3 zWliv9 y?"G),ou&aݥ}[yV3i9rg@_6ygV~J>nbŽӤ[(yV3\_;__,~k4 $ϬɆk%ʢkabKw{|5 ygVdCȿ5٠9JE֠34BV,~k4 $ϬɆM-rDSYGȟiVRڝw5^B~k}J9"J>]-fk5ߠ-ĉsۙL㻩E9gw&oGM_"'4t; ܐgi?SiLݐ|gM-rDq9?-|Ot{|q~s(~8=oTFqNޑgQk6:׹Mg&B[>@#Yyg@;+t~ql_i:~pgϬ|t2/lm3A9"G8oKw 䈜9~g~gγRZg@_6ynȳRLnHs[>3gV3gV3<+̼F-i%yf PĜ.zត<nj#rD&ʶ{.#rЇ&mvgEqt:Y7}Nw>LN83 ΝZ:?8/t?LN83;+Ź8^-Ntw3 ۝y4,AW3&tAA-$ygVPpfog9Ĺ9LHQ߂T3WYk*8#rE|Y=+oTFGYIa2f|v'w3D6K>ܨf?%tAO"0Ġg ) rD>ܨH_g /ŒLK J=es_9Z"@R [׌#-Wȝ/|ʙ 9"nH[gF41!"Gpܠ=/%ϥW G pHY׾iagwb.<:gQk_T71=<:gQ߂ &N F$Ϭx[!_Pnj#rD+xM ŞKKI<+oMaQ zVEWYÌ#ϞgZgyVvͼF-q_*OKi yDk/kRs?=Kexy,t39]?AgQ ÿM<I3+igobnn(N4,_ Gnj#rDB,;b;_,~Wȁ\/t|7Q,\X,mM:>}/rD~ZIR_ٛ9kҹ=;,ኊĥٹ6#w;ÙrDGɳ}AwtxyunZ#πm9<3Hۊ !π~$tf*沟dWJ @%;œdgmV3Q?ؑ% $Y^w8tA&r7#r%@o8 -_rD~ZHY׾iagwCr3s8-y%ʾU@Le_4 &N F3s[O8'bynȳi?Suw:9] 'JB"a29db9C@@6+k/3 Νi9[#r%\QTNk?9o+iB%ʾe&N < :G}i3(yV/?ȁ~[qϟ/h׹Mh<~upBGɳ *^#m:tΌ#*~",o+ޑg@?yV6ØEtyf O"g@?yVy٬|Zߎ<:B<3?i&뷓6_VJ3eV3C0 zVFYEEî&TuQoap'MC$=KxZ!πm  tB.ȳ뜄H@g fzM9"G8Kbl經9"?׊ mge_2{Ou݅#πm@kp<+tW<:gγ_3(yVs/]]3s+ă<I3+rD~ZHe<9Pfe<9Y #π/gaO^<용oϿw= M @%<]/׹ B}`]!ٛXyv);> $Ϭ|Z^qF$4Gɳ}A{:‡g@_6qZ5 㻩E9Iy\ȝIHwVsۙqoO/Nu;ʋ<Id pfs Ogd 󬼵n3sٛ(~(#ru6WYt83CyĹpg@?yVO93l9!π_g]<:A[>ygV6\׌#-W O:dBtv΅ŌX*οmy%ʾg&9\7;riY{.g@_6qZHY)̺ 9Zs Ke[ooXzC*] G7%ʾ@b9]G@I7׹Mh<:t ܐg~2u+r ODŒhg )ܧk1 |# Pڝw5^}r=߶sa<Yy΅ 8J}[t@.9*ryDͿ9(@arDn}HY׾ yunZ#@9Z2dӭKi1e{v3ąsEE~HR_68,sޑg@?yV<IdQY71K 'J"@,ATgM'*<ɳyf M:7&t_;9g@?yVi<IdQY71K^ly?"Gw "mwtM/mҟ #wie<\V @Y#@YY @۬3f8}h wS#rr8Xni9Гt7iIe<Yyg82tdI׹ T7q7q7{Zgyr~5O9sRߓe@$@ó7;_3>r|79"A[>W'NˁޑLi֤zVG3Ȑg@_6hGٛXd 8\" @= $ϬZB.|ʙo{G9"G丧pv'NˁLۮ> ,N C/gHwʋ<lƱ/#M"πmЖfor8m3eV3?Rg&r r&G9"G[b߶saT5ܞϹ mDYs~a&sߐgQk| &N 4<{\#E=3WYykBr m|/3;+ϹpqYosv.,gճ/rD>¢4:[F@}۠-y f%<IlVsaхgγք׹ T3(yVN> yunFJ"π8wVj0ؾgu0-;<nj7-?#AЖϧ"M?yV<(޻CF6S%~Q/A<ɳR7H"%@[>M,<Ӳ 'J"@,^fob!䙖pg~{t2[w?:y\qg39NaZvAڬ3 ΝZ:? #YLel_NW}]##2󽐦s5rDqЖϟo{ߑ{Z7 m.un|<nj#rD|9O]}~ۑ Gdhk|Y=+}g*8O|yGWY)mgƱ[$Y<&.g@;+/ zVTőyrD|&~g~+g~g~{y|Y=+}gγRZ93"EhȝO3-#πmp! <򙕏"#Y ##YY #Y#@9Z-+tmWv䞖 9"C[>!M?yV<(޻CF6S%~Q/A<30'}y\qg8o#'mgt<Yyg8~J>GO<:3gV3gV3A9"G(,L!\]?Gp'Mg cgVV=RuQ-Lݰ_ÞKg@6zV4E\]A 1Kx!GdVY 9ZgbVsA&:$ m|/3;+ϹpqYosv.,gճ/rD>¢4:[F@}۠-y f%<IlVsaхgγք׹ T3(yVN> yunFJ"π8wVj0ؾgu0-;<nj7-?#AЖϧ"M?yV<(޻CF6S%~Q/A<ɳR7H"%@[>M,<Ӳ 'J"@,^fob!䙖pg~{t2[w?:y\qg39NaZvAڬ3 ΝZ:? #YLel_NW}]##2󽐦s5rDqЖϟo{ߑ{Z7 m.un|<nj#rD|9O]}~ۑ Gdhk|Y=+}g*8O|yGWY)mgƱ[$Y<&.g@;+/ zVTőyrD|&~g~+g~g~{y|Y=+}gγRZ93"EhȝO3-#πmp! <򙕏"#Y ##YY #Y#@9Z-+tmWv䞖 9"C[>!M?yV<(޻CF6S%~Q/A<3S8@B Gemini 10X$ Page $1 !@~G$hͭ p#Y sn ************************* P-ASP Version 1.2 ************************* Copyright (C) 1985 by Peter C. Cole Duncanville, Texas. All commercial rights reserved. Released for free distribution only. Not to be sold. P-ASP is setup to print on: $ 0y!~ʘ~#  What is the file name to be printed? $>2 :Oʘ! >$w!~$3a/{/ w#!~$ʘ H#9#~+:e<@>:x~#~#~$ ~ ʉ$ʉ#x>$Ï! ~##~$.~#.$©~#$.~#$~$>m> > ~$>   Incorrect file name. Please try again or push CTRL C to return to CP/M. $ } Ø File not found. Please try again or push CTRL C to return to CP/M. $  P-ASP will print the file: $  O What is the first page to be printed (RETURN for beginning)? $>2_ _h!`~ʄG#~0:qâ>w#>1w â BEGINNING$  What is the last page to be printed (RETURN for end)? $>2 !~G#~0:3>w#>0w -3 END$!`eH!H}~#e]> _~#e!"p>!rw#w#w#w#w:2w:2x>2y>2z!@"{:! A >22 !; "! " ! "} " :ASM! A >22 !"! " !J "} " 0PRN>22 !; "! " ! "} " ::ʰ L_ Heading is now: $  rÞ Push ESC to change or RETURN to continue.$ 0ʰ:  Enter heading if desired (32 characters max.): $> 2 !:O! 6$0 ;q SEARCHING FOR FIRST PAGE. Push any key to stop. $ ʂ>2r*p~ ʐ !et¦#˜I *p~#"pG:y ͭ :@>2y x $ ; *p|æ:r  >2r!"pæͭ *{~ >2y!@"{ø#~"{$ :2xÐ:x=$ 2x T v PRINTING. Push any key to stop. $! ͼ ( :zʌ w *p~2H #"pG:y ͭ :@³ >2y x A :w= :2w:H _*p|   :r   >2r!"p ͭ *{~$ >2y!@"{á #~"{$³ >2z>2y!@"{ó ] w   :w=2w] :2w !t # :2w:2x>2z>2y!@"{  ͼ ( :x=w 2x ( n !    × PRINTING COMPLETE. Please push: V - To send a Form Feed to printer. S - To print the same file name. D - To print a different file name. X - To return to CP/M. $ V v SʏsʏDʘdʘXPxPP×  × !v~'Owy W+ >  " * ~$_#"   ' _ P-ASP STOPPED. Please push: R - Resume. Q - Quit. $ R} r} Qy qy _   P-ASP RESUMED. Push any key to stop. $x{һ aڻ _G( !  !t ~0# !  !  ! !  ! !  PAGE  $$ FILE: $ $ $:2' :' =2'  . C ( :zʌ w *p~2H #"pG:y ͭ :@³ >2y x A :w= :2w:H _*p|   :r   >2r!"p ͭ *{~$ >2y!@"{á #~"{$³ >2z>2y!@"{ó ] w   :w=2w] :2w !t # :2w:2x>2z>2y!@"{  ͼ ( :x=w 2x ( n !    × PRINTING COMPLETE. Please push: V - To send a Form Feed to printer. S - To print the same file name. D - To print a different file name. X - To return to CP/M. $ V v SʏsʏDʘdʘXPxPP×  × !v~'Owy W+ >  " * ~$_#"   ' _ P-ASP STOPPED. Please push: R - Resume. Q - Quit. $ R} r} Qy qy _   P-ASP RESUMED. Push any key to stop. $x{һ aڻ _G( !  !t ~0# !  !  ! !  ! !  PAGEApril 6, 1985 ***** P-ASP (Prints ASM, SYM, & PRN Files) ***** Version 1.2 Copyright (C) Peter C. Cole January, 1985 Duncanville, TX All commercial rights reserved. Released for free distribution. Not to be sold. Send suggestions for improvement to: Peter C. Cole 322 Harman Duncanville, TX 75116 General Description: P-ASP.CO wa designe t prin non-documen files I ha bee se u t prin fil type ASM SYM an PR tha ar create fo o create b Digita Research' MA assembler I ca als b usefu t prin other types of sourc code suc a BASI an C. Loading P-ASP: Th fil nam o th fil t b printe ca b entere a comman tai o i ca b entere fro withi P-ASP Th defaul driv i assume i non i given I smal letter ar entere i th fil nam the the ar converte t capita letters "blank o "$ i th fil nam wil signa th en o th fil name. The Three Modes of P-PRN: 1 Th AS mod i selecte whe th fil typ i ".ASM" P-AS ca als b setu t alway selec th AS mod n matte wha th fil typ i b changin addres 106 t non-zero I genera th AS mod ha "forc nex pag wit ASCI sequence" "coun lines" an "heading" 2 Th PR mod i selecte whe th fil typ i ".PRN" I genera th PR mod doe no hav "forc nex pag wit ASCI sequence" doe no hav "coun lines" an doe no hav "heading" I onl use embedde For Feed fo pag control 3 Th SY mod i selecte whe th fil typ i no ".ASM no ".PRN" I genera th SY mod ha "coun lines an "heading" I doe no hav "forc nex pag wit ASCI sequence". Bes Feature o P-AS: 1 P-AS find embedde sequence o ASCI code o character i th AS mod fo pag control 2 P-AS wil "pag search an "pag quit jus lik WordStar bu P-AS wil fin th firs pag fiv time faste tha WordSta (a leas i doe o m Osborn Executive) Th selectio o pag number wil remai o th scree fo referenc i needed. 3 P-AS ca creat headin i th AS an SY modes Th headin firs ha thre digi pag numbe (use character total) the 1 blanks the th fil nam printe ( t 1 characters the 1 blanks an the u t 3 character fo specia wordin suc a th date. After Printing is Completed Features: 1 P-AS wil allo re-printin th sam fil b jus pushin th "S key ne "star page an "sto page mus b specified The heading can be changed or re-used as is. 2 P-AS wil allo printin differen fil b pushin th "D ke withou havin t reloa P-ASP. 3 P-AS ca sen For Fee t th printe b pushin th "V ke i desired Us thi featur t releas th las pag printe fro you printer. 4 P-AS wil allo th retur t CP/ b pushin th ^ o keys. Installing P-ASP: 1 Th initializin strin sen t th printe i se u fo th Gemin 10X Th strin start a 110 an end a 11FH I mus en wit fla o 0FFH sugges tha thi strin include th code to print pica (12 characters per inch) 2 Th endin strin sen t th printe i als se u fo th Gemin 10X Thi strin start a 121 an end a 12FH I als mus en wit fla o 0FFH 3 Th nam o th printe ca b entere fro 130 t 13F an i mus terminat wit fla o "$". 4 Th embedde sequenc tha wil "forc nex pag i entere a addresse 140 t 14FH I mus en wit th fla o "$" hav initiall se u P-AS t fin th sequenc "0DH 0AH PAGE 0DH 0AH whic i th sequenc normall use fo pag contro i assembl languag programs Yo coul se u P-AS s tha i wil star ne pag an tim i see "RE PAGE i you BASI program o fo you program i coul loo fo "/*page*/" P- ASP treat uppe cas an lowe cas letter a th same 5 P-AS ha bee initiall se t pag qui afte countin 5 line (38H bu thi ca b change i neede b modifyin addres 0103H This feature is not used in the PRN mode. 6 Tab ar assume fo ever characters valu othe tha can be used by changing the data at address 104H. 7 lef margi o character i created T chang t anothe value change the data at address 105H. 8 P-AS i initiall se t ASM/SYM/PR mode T chang t AS mod alway the chang th dat a addres 106 fro zer t an other value. Page Formating of P-ASP: P-AS i probabl no ver usefu fo printin mos "document typ o files I perform thes limite pag formatings: 1 pag headin lin i printe i th AS an SY modes Thi headin contain th pag number th fil name an u t 3 characte strin tha ca b entere durin th program. 2 I send blank afte ever Lin Fee cod t for lef margin Modif addres 0105 t valu othe tha i desired. 3 I wil sen For Fee cod t th printe a require t en pag and/or start the next page Internal Workings of P-ASP: 1 P-AS doe no sen al ASCI code o you documen t th printer I wil sen al printabl character an thre contro codes Th thre contro code are: * Lin Fee cod (0AH) * Carriag Retur cod (0DH) * For Fee cod (0CH) Thes thre contro code mus b handle properl b you printe fo P-AS t work Note Th Delet cod (7FH an al contro code no liste abov wil b ignore an the wil no b sen t th printer Th eight bi (sometime calle th parit bit i se t zer s tha non-ASCI code ar no sen to the printer. 2 P-AS wil qui printin pag an sen For Fee cod t the printer under several conditions. They are: * A Form Feed code (0CH) was found embedded in the file. * Th numbe o line printe o th pag equal t th maximu allowe (AS an SY mode only) Th Lin Fee cod of 0AH is used t coun lines. * predetermine sequenc o ASCI code o character wa foun embedde i th fil (AS mod only) P-AS doesn' kno th differenc betwee uppe cas an lowe cas letters maximu o 1 character (includin th en fla o $ i allowed. * Th pag i th las pag t b printed tha is P-AS wil not stop in the middle of the last page. 3 P-ASP will stop printing in one of four ways. They are: * Push any key * End of File code (1AH) encountered * Sequential read finished * Last page printed Whe printin i complete the a installe "endin string i sen t th printer Afte th "endin string i sen the th Carriag Retur cod an For Fee cod ar sent Thes tw code complet th las pag an cause th printe t prin al remainin dat i it buffer. 4 P-ASP doe suppor Tabs I doe no sen th Ta cod (09H directl t th printer Instea Tab ar assume fo ever eight characte an whe Ta cod i encountere the u t Blank (20H ar sen t th printe t mov th prin hea t th nex Ta position valu othe tha ca b use b changin the data at addres 0104H. 5 P-AS i writte i CP/ 2. usin Inte 808 Assembl language I re-assembl i desire the MACR assemble suc a Digita Research' MA wil b needed I ha bee teste mor o les o m Osborn Executive. 6 Message ar 8 column o less 7 P-AS neve waste pape b startin th firs pag wit For Feed 8 P-ASP need 4 o spac o disk Thi mean tha i load faste tha WordStar I i smal enoug tha yo coul includ i o you assembl disk. Another Fine Printer Program: Anothe fin printe progra i LIST b Irvi M Hoff Versio 1. ha som feature tha PRIN doe not Fo example i wil handl rol paper i allow adjustmen o th lef margi fro withi LISTT i ca wor o printer tha canno handl th for fee code i wil allo th loadin comman lin t hav th heading an i als send th fil t th scree a i prints I doe no hav th featur o findin embedde sequences an i terminate afte printin th las pag an thu th headin mus b re-entere fo ever re-printing. Peter Cole e suc a Digita Research' MA wil b needed I ha bee teste mor o les o m Osborn Executive. 6 Message ar 8 column o less 7 P-AS neve waste pape b startin th firs pag wit For Feed 8 P-ASP need 4 o spac o disk Thi mean tha i load faste tha WordStar I i smal enoug tha yo coul includ i o you assembl disk. Another Fine Printer Program: Anothe fin printe progra i LIST b Irvi M Hoff Versio 1. ha som feature tha PRIN doe not Fo example i wil handl rol paper i allow adjustmen o th lef margi fro withi LISTT v4P-ASP.ASMX  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWoXnhi¿]nhi +== ~hQwwO?v'~H>=|Kv#+  ֪:Yjrt>{~vO"*:(rǪ(:ѐYuHrqTSdFHSjT )(uFET%VҨ{T]y]i:ц½pժZRm]%rc2Jc)ECvu~VCP@'宒ΨJNF =ڨ X *cLkWRG_R4V½p{_#=-?~=OGyG/ݣp½p~oO#iW;{o[{~x}^p>I;o(lNp؆}ӵ(*y[=*Ja7P?0=Ec*i( 缁m#QuA6Q8g#mDZ(+й GBIPs͗ Gl7B%U*p61ሟ<ҭy]M!<iG v; \5Ru,Ub0`}3 :t|*A%o/e*G^UzQcޫ AkX&UF]uK:]%HIO±0LRiھsJQDEXraEߐvWK_~ =m7]/n?Ow}FWQ?dIFGst\.JT,ܗKl&^4lsލ1jMXj]P:D QWݒdl56qOi;?i?]2,,,._p>I@.Uc]%_M|%R6{FQ/e96ZsV*o]Q%(jEѯ(tdDUn&444,,,.ؿَ|&.&U|> )I#2 AWc e ,,.ڎ|զȪC"EƒvJg]"eK9ꅺLix+?~=Ww;{@/=Ww;zqG{v|Nz „mm4 {(atuu; $:틏h &KYxRăKCT"t{',ܟjO=ޓ|x~L>>l^p}nB_?w 燧0{yݣ0=0Gۧ;a|>Ӥc(|> Oj1eCemˆ0O"c:'Uga\6al0„ ;a|wO4Xn0v{|~}Ƈ1Fa CLJ_hׯowR} a0„!|^^v3a0„AW_|{~wϻ>Fa CݽwGq?~pDO/}K0„-ۗoaqQ7?ڻ/vzx>>><ӆNpQߐ&Uꢄy6hgaăA}56*c:'U&*UzQ}6Q9pv߽~=ӷ/;z-=}& /> >÷t~{"=;eGOw_[ݏ/;eGw_gz@OpDaܦ½_N\ni8 ; =?tBt-}珻ޒpww~_LOˎ?}xx[><>~Gzxyw[{znvq÷D>$,,,ܟgZTl"U,,'L+E@IHY++MTΫx0_oGaăA tk%}@Z+Wm~USJ'EDEΫFIQ0G}gauvj"WtUJ:J5흰+: `svEǸߠtky4cuEvF U+: Ud2EQ[rEHѼ᛽0Vx2tRҨ-c: .}Z$ҭQf-슎񲁱XWt{a>(NQw9ix0\a"n =a4o0ap^=z#MQwK4)&*h`A+{EfЯ')NQw 0Q⑳}R.Y+*%Ui1keC5k(z.Q A+Z;~U 0BW(ҍW„Ux$,+(I#iھsPsFi e +.j6@0\a{@Fh0V eEQI⑓׋dDWQQժZl"U{+-5vFx& AXE :,egaʒ:](;l6Qm( œ$6hUMLj)tN,&*a˶ 8 vMTӋ]6QmPm,x0sq'a4#9a텋[>mFa C~x=}{Ӈ_vw;-|D4#L>~T#5OtKFa izQ|E%JJjl,,;eeY]^˶lPm,x0˶tB焱*.[amoFa~h #LO//ѷ/ a)(ꢄ]ăA YMLj)tNXw*9(awzQA? # ^MLj)tNE=lF0}|O~-O4#L~*ooOOO?k: }U:PvAY0\pUemV`f_tB焱*$KlK7^/JO%2L:a  o(z.VC cu0J4ka?o`0J070V .ۂ~U~E &ߐ=IU:kW~:rDzAsAD.Suˆi޾nGo(ܟmTFoWaă4o/BdFa("x0~{)|dr^6(k=o}KW;(*]0= #&7žnP5\/*_6*Zax3%}@@RWE0 0BW $,L@TEQWcgauEK]Ջ5LgpockU6Q6QtYUIUaW)o&l;Qdttlq ^ol;)o&lGy(Q/7׋: ^/ZwI86蓞uG6裱ZwI8N~0a~zQvrID]&)wG6&l^/rwaBlc gu E?dcy\.;c½&UQ%]jlήnavDTl阳:vFY0S蜰0`JԎ*(h:*ؤ*&k]t(k=oJGeёҁƍ*Pzԑj>ean2kaa{WT]"E;@9RGF(}UN%zQԺM: tkY Fan2ka{(ҭQf-,4JD;$ 4NMX1hDcCr*Q4VQ6 %h:5aa}UN%JN䒮LC66׋ȥjBK pI#N^Xem-z_Sll 5h0\mF<zQ}UN%^@36* 7ƀN^XE Xn?Hϻ ^>ܡ~ wӿ]}~U<=|K=/w/3=^v_ݓvpoeiW(x0`s,x0vEMLjVaOWœd$,]}A[2k @^/\.UNemmpI#g~K~~F[2k ;DXaă8l߾~F<" 7=Z'Eèt0v<*]෗opc 𯟿 cU)d*rꇣHUs  W) C[ -·=Ud2*a~Q:$rꇣHU 6he+x0sn0S0X],,;ȩ&#Uƍ* KS]5N4XkB]l阳9ă8z; Í1䅱*9O^/JrF]Fr|-߿n ?^ tkI+r/ѯ'F9a-*]izQ0@[a '/,WT!E ;cˆq^/JnE0V#g$,GVQW2T]h8 _ _n`0J0׋:ya4o0a9Я'vIXnݨ9v6Ps(k6)c:' m50❺Atd2(',۪*&zQԺMh:FN^XʩDXE;$4 %h:5aG^X%ƪsoĠU&*0VW/[dQN.iDcթ cU&:mu0a+,;ejl2vӋشAY0 ~/c:'Ua L|56%wt[tKa0„4 N@ƚdt4WLgɥj"/ă8k  '',;eJcalt. )*.]1NMLjX;eE]c{hzQ 9o6AßrwAjhaЯ'vXH@.uUQu%m۪*&JYuHF]I*?mt(z. TEU#I74$ 4ڨ0=`c@ ѐ r*}-ҭ1Z1hdc C[ -_Wœt׋6JNEQ6%je^@.Ucvi^^pq(4׋F+n6X+Ud2NXw*ѐ asKpX Qu~iҭIGa-Ud2(',GmԕZgS".Ѽe; clѯ'F9a>VUQ6Qh0bHz:5aVW/{%=Q6 bHz_nFө N@mԕRGT?mFuFPFYUMLj)tNXE Jd!Qu-:8!T地o7c hy:ya82 e&*9JfݎZ[Cϣ0X+x2nƪx7;uCF @9 0S0hw}1tpKMT4sVkaĠj>eahW~U;N;&cmUey(:ƶ  E7J]FYLo(0 {@MzC= NAsAD,& C^@Mz#5LёtX]FhFRWFl󈾪ҭ5]0JF5zȪb0JE%jahkߎX+m'~U;N;&c\.:ؤ*g~qK&ҡ 9SWi8 R6Pzvʆ M ;em '/~8l8yJ;c(z.rL&ea4o0Jjd< y4^tL4tkYF]uK F.uUM Í1)N^emWTF1b ƪx83Tc2Vѯ蝺!t t>{lӋ~n6(k6F<1 cU<ީWwAxqsb'0a :UxKew?Fa C_Q= 6 #L~_?ܿFa i蝺~n^7h:F,wFXw*蝺FC❺lѼ8cu;us yA+ީV ❺o*ͫ׋8$NcD_U֊JjI*UMX*}KT)(ߩv6hgaăAߩEMLj)tNU%wrG{Na@UcQ-w[zvFx& AXX?SXEٵ&JWv_w 񷧯pqxW0 W8~{;a|q{8 ?~=^6x {(|>;N;&c|56Ѩt0v,;eE]cGˆ N@׋A`0ΣaF1)NNX/Z׋"{,ˆqzQ&x0t_QFxT:7(z.vD:V5QHf cTK caAULX+F^XD^/L # yT:/h:F8e N@C6QmhF<tؿF1)NNXw&*(aă8gw"cS6p }<*h:F8e N@ƫ@Ҩt0vF<t"cS6p d{*'x0Q$cS60Jt0va4Je׋"{, <*o6+gՆNt  <* O-MQwNXE q1W UNTt]6ʉ4EmQ6 @X&U4Em9X6A#]cF,&,'LQDS9ep, bЈԄF}UX-L7 # - 4b95a)hھԑ&UQjhFYUMLj)tNEXXX?SXE74$[o6(ki~#܊ }@F+E^tL&%R?uFh0VV횎qWՒɤ~8(,,,i;]%t{'n6ܦ Û/!FuR6@ـv; b^ъ]1nPUұZ2G>mGn]"۴Apx%VUQ6Qh0bHz:5aVW/{%=Q6 bHzٵ&JWv_w 񷧯pqxW0 W8~{;a|q{8 ?~=^6x {(|>;N;&c|56Ѩt0v,;eE]cGˆ N@׋A`0ΣaF1)NNX/Z׋"{,ˆqzQ&x0t_QFxT:7(z.vD:V5QHf cTK caAULX+F^XD^/L # yT:/h:F8e N@C6QmhF<tؿF1)NNXw&*(aă8gw"cS6p }<*h:F8e N@ƫ@Ҩt0vF<t"cS6p d{*'x0Q$cS60Jt0va4Je׋"{,61SPRINT 2.2 - E.Meyer 12/84 U!~#Z .~# >?ʃ^ʡ-ʎ.ʬ@#"ʷZ++ Bad option ++:2>:2:2>:2>:2>2~#">lü2>l:@2>l2>T]~0 : #xlxl6Jl3l06=>dG'0J=> lG80X=lKx\<\Z( ʅ2c. M ¦Hë Z:c2u++ Aborted ++++ No file ++++ Read error ++ :>^M@: ' '>.:$( /(2c./:<2O:> M>2:<2O:_:=z:ʊ:@ʯ reading page : 2:~2:O::!t!Ut!t:~!t!t!t:@:2 [starting print] > M ... done.*~5#"ʹ\!"(_:O cy@yn{ k> _~#Mtdڐdڙ dÅ> 2dà>02dM ڶ  ë:d >0M0M㯆#kFile , page :2>:2:2>:2>:2>2~#">lü2>l:@2>l2>T]~0 : #xlxl6Jl3l06=>dG'0J=> lG80X=lKx\<\Z( ʅ2c. M ¦Hë Z:c2u++ Aborted ++++ No file ++++ Read error ++ :>^M@: ' '>.:$( /(2c./:<2O:> M>2:<2O:_:=z:ʊ:@ʯ reading page : 2:~2:O::!t!Ut!t:~!t!t!t:@:2 [starting print] > M ... done.*~5#"ʹ\!"(_:O cy@yn{ k> _~#Mtdڐdڙ dÅ> 2dà>02dM ڶ  ë:d >0M0M㯆#kFile , page  PRINT.DOC --------- Documentation for PRINT.COM (C)1984, Eric Meyer (Version 2.2 - 84/12/11) PRINT.COM is a file printing utility, originally written in C; version 2.0 has been rewritten in 8080 assembler, and is much smaller (1K) and faster. It is designed to give attractive, practical printouts of text files, with comfortable margins, and the filename and page number on each page top. Version 2.1 added better Wordstar support. Version 2.2 fixed a bug due to an incompatibility between CP/M 3.0 and 2.2, which often caused PRINT to fail to print a file under CP/M 2.2. SYNTAX: The only argument required is a valid filename. However, there are many convenient options. The general syntax is: A>print filename.typ [options] "Options" may be specified in any order, with or without spaces between them. Make sure your printer is set up as you wish (margins, pitch etc) beforehand. You may abort PRINT with control-C (^C). OPTIONS: (The first two are especially useful for WordStar files.) '.' - Instructs PRINT to ignore WordStar dot commands. Any lines beginning with a period (after a hard carriage return) will NOT print out when this option is in effect. '^' - Selects control-code filtering. All control codes (except CR and LF) will be replaced by two characters; thus DC3 (^S) will print as "^S". In this mode, a Wordstar file will print out much as it looks on your screen during editing. In default mode, all control codes are sent directly out. Thus you can, for example, get files with tabs and formfeeds printed properly, or put ESC codes for your printer in a file; on the other hand, nasty codes will also act (e.g. ^S will cause printing to stop). '@mm' - Begins actual printing "at" page number 'mm' (as counted by PRINT!) If the file isn't that long, nothing will print. The default is of course "@1". '#nn' - Prints out at most 'nn' pages. The default is "#255". (Note: PRINT cannot count beyond 255 pages.) "comment" - Puts the quoted comment, up to about 50 characters, at the top of each page, after the filename and page number. Useful for adding a date, or any other remarks. Be aware that the usual CP/M uppercase conversion will occur. '-' - Suppresses the page header (filename and page number). Each page will hold 4 more lines as a result. '?' - Displays the file on your screen, instead of printing it. Good for proofreading, finding pages you wish to print, etc. The display moves quickly; use ^S to pause and examine it. EXAMPLES: A>PRINT B:MY.DOC This whole file will print out, with the filename and page number on every page top. A>PRINT B:MY.DOC .^ This file will be printed, with dot commands ignored, and control codes filtered. A good way to study a WordStar rough draft. B>a:print my.doc #3"rough draft" The first three pages of the file will be printed, with the comment ROUGH DRAFT in the header on each page top. A>PRINT B:MY.DOC @10#4 ?- Pages 10 to 13 will be viewed at the terminal, with no page headers. USER PATCH: By default, PRINT prints 54 text lines per page, and the header takes another 4 lines, leaving 8 of the standard 66 lines blank for vertical margins. This was chosen for compatibility with my FTNOTE program, which also prints 54 lines per page. You can change this number to suit yourself by patching location 0104H in PRINT.COM. The default value is 36H (54 lines). ERROR MESSAGES: These are all fairly self-explanatory. ++ No file ++ The file given does not exist. ++ Bad option ++ You specified an illegal option. ++ Read error ++ PRINT cannot continue reading the file. ++ Aborted ++ You typed a ^C. fied an illenored, and control codes filtered. A good way to study a WordStar rough draft. B>a:print my.doc #3"rough draft" The fiZWWMD  Page 1 1  QLIST v1.4 File Listing Utility (Unsqueezes) Copyright (C) 1985 by UCS, inc. == No filename was specified ==  (use $S after filename.typ for CRT only)  (use $O after filename.typ for options)  ( ^X or ^C aborts at end of current line) == No file by that name on this disk == == No ambiguous filenames (*/?) please == Do you want tear tabs to use roll paper? (Y/N): Number of spaces for left margin (0-99): Accept Form Feed Characters? (Y/N): Heading/date or title (055 character limit) is: ---> Start printing at page # (Default = 1) : Quit printing at page # (Default = End): Do you want to use compressed print? (Y/N): Use expanded print for title? (Y/N): Highest page is: !9"!_ !~# *(>o"(*(",".:g2 o|g"4!\ #~?/ ¦!\6 H 2B2V*4"0"26<) !~:!#Z#~ x2*~+#$+6#~2S*2*>O26*!_ ͞|d}dd2)G:(WG:2J l> 6!_ s _Y2"J :Oª!_ s _Y§2'>2>x2J :O!_ s _Y2(J :*G:(xG:)G:G:(xG2+!9z0w#{0w#{0w!!_ :+͌'OhH J !\_ >͌@OH J !_ >͌YOH J ͉ 6!:v“:“*(*,: W ͡ Q  Ó*,~ʻ#: ¨m Unsqueeze error  ͱ 2&    p:&> :&:"8:&:#<2#68> W ͂ ͟ ' W :(U!t !ZQ :(k!t ͉ > ͱ :!p>^ͱ @ͱ 2 :!>͌!G0 )))o>gªxdGx G{_  :$5 ! t !t 5 !_ 5 !#~ - +H + :  !#~ R +¬ + _ 2%> :$Ă :'ʆ !t W :(ʖ !t !ZQ :(ʬ !t *0*2}| !"2*0{z *.6 *2"2 *2"0!"2*.*0}>*2#"2_ 5 ! !5 !` :'C ! t *!X_ Ͱ :) ^ :)2!  ɯ2#2!>2&:%L W !~ ʯ ± >0 ͱ :! !Q :% > :#<2#6 > ͂ :$5 !t 5 Q 0 0  0 ~# H ~ͱ #Q ~ #_ _ #~ #t :$ !Q >- :G> ˜ >-ͱ !Q 2! :!<2! _:%{__:S:%""z2"ɯ22*""Z Z "  & Z "$ p File has illegal decode size. Aborting.  *"&|ʙ Z s#r#Z s#r#*&+u !͕ _*:º ͡*w#"Ü *  m ERROR - Checksum error in file ~#  |}**  ~#"*""6I * & "* > k k gom Premature EOF on file... aborted.:ʥ =2:" ¸ >==2:"2":#O: k O>=2yO* ##^#Vz y2#z> {/ɀ*  ɯ2#2!>2&:%L W !~ ʯ ± >0 ͱ :! !Q :% > :#<2#6 > ͂ :$5 !t 5 Q 0 0  0 ~# H ~ͱ #Q ~ #_ _ #~ #t :$ !Q >- :G> ˜ >-ͱ !Q 2! :!<2! _:%{__:S:%""z2"ɯ22*""Z Z "  & Z "$ p File has illegal decode size. Aborting.  *"&|ʙ Z s#r#Z s#r#*&+u !͕ _*:º ͡*w#"Ü *  m ERROR - Checksum error in file ~#  Documentation for QLIST Version 1.4 HISTORY Version 1.4 March 19/86 Fixe severa bug wit header unde differen combination o compresse print/expande header Adde cod t allo heade messag t sho tota spac availab fo heade wit al combination o compressed/expanded Mad REV fla tha ca b change wit DDT. Version 1.3 Feb 18/86 Change strin prin subroutin t us hig bi se a en o strin marke instea o '0' Thi allow string containin zer t b sen t printer Sinc foun tha use th $ option mos o th time als adde switc t allo al option t b th defaul an $Ϡ t signif n options Move th expande an compresse prin string t 103 an adde spar byte s tha the coul b change withou havin t re-assembl th entir program. - IC Version 1.2 Jan 22/86 Adde compresse prin an expande titl options Mino (mostl cosmetic change t othe code. - Ian Cottrell Sysop, ICBBS Ottawa, Ont, Canada (613)-990-9774 Version 1.1 Nov 30/85 Fixe nast bu whe printin file o othe tha th defaul drive. - JG Version 1.0 Oct 02/85 by Jim Gronek QLISԠ i fil liste tha wil automaticall unsqueez file befor listing QLIS allow yo t selec formattin option fo th listing including lef margi setting lin fee recognition pag headers compresse prin fo bod o listin an expande prin fo th header (i you printe support thes features) an pag t start/sto printing. QLIS i base o KPLISTER bu lack th Okidat 9 printe option selectio feature an Kaypr vide code o KPLISTER QLIS i generi fil liste fo us wit AN Z-8 based CP/ 2. o 3. syste an an printer NOT - I yo desir expande prin heading o compresse prin i th body yo mus provid you printe equate befor assembly Th sourc cod i se t suppor Citize MSP-25/20/15/1 printer. QLISԠ combine th function o LISTT1 ((C Ir Hoff an USQB.RE̠ ((C Dav Rand t provid greate flexibilit fo th user. QLISԠ mus b execute wit filename.ty argument Th synta i a follows: QLIST filename.typ [$o] where: $ is the options menu flag $O toggles the formatting options for the listing (see below) $S sends output to the CRT only Th equat REV allow yo t selec th defaul settin fo th formattin option switch $O I REV i true the QLIS assume tha yo alway wan th formattin option an wil promp yo fo al allowe option i n option men fla i entered I thi case enterin $ o th comman lin wil caus option t b suppressed I REV i false the th operatio o th $ switc i reverse (i.e $Ϡ mean us options no $ mean n options). I yo wis t patc th REV fla withou recompiling i i locate a 104H Se t fo norma ($Ϡ require fo options o 0FF fo revers option (n $ required) Th .CO fil supplie i configure t suppor th expande an compresse code fo Citize MSP-25/20/15/1 printer Thi SHOUL wor wit an Epso o Epso compatibl printer I yo wis t chang thes code an d no wis t recompil th program us DDԠ (o SIĠ o Z8E t patc th followin locations: 103H Compressed print ON 109H Compressed print OFF 10FH Expanded print ON 115H Expanded print OFF NOTE Eac strin ma occup u t locations bu i mus terminat wit th hig bi o th las characte set I othe words i th las byt o th strin i 01H the ente 81H fo 'A (41H ente 0C1H etc Onl th las byt o th strin mus b treate thi way I you printe doe no suppor thes features o yo d no wan to use them, enter an 80H at each location. I execute withou filenam argument QLIS wil exi t CP/ wit war boot. QLIS ma b assemble wit AS ((C DRI) LAS o MA ((C DRI).  wor wit an Epso o Epso compatibl printer I yo wis t chang thes code an d no wis t recompil th program us DDԠ (o SIĠ o Z8E t patc th followin locations: 103H Compressed print ON 109H Compressed print OFF 10FH Expanded print ON 115H Expanded print OFF NOTE Eac strin ma occup u t locations bu i mus terminat wit th hig bi o th las characte set I v=QLIST14.ASMg o !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefS"]Q&-T߬?p_qzu:*SȂͤœנ3*č4-n|3nXq#Mk7g+׷AWglDx/|VkImZ?ˤVEɷMSLU<XI "]Em+[`[ ( x]_`%Vdx d_J+t TK3D Vk _u0ջo=k:t5ջ$Vo,V䦇6P+OaY$"]MW/|BoXGq#Mk7_q~+=6`b0U@2Lp6^ݩ{x\I$zlSJ H!F2mgZLWJi?K`/f =VXd4˯3D/aXTn[L^_f jNB0VHE̫h$|;:J2*G5(^g jN"Q',X`|i|m(I!hHt@2L%he^XrO^_Ⲿ>(XBix]_ЃMXU_&A9 FK( uAAڲXl}Uנ'!J3P^yf[Aڲ80y} z4c u~L]LzP,fJ`!DiJ:+鵾@זhTm5(. CҌ%ukHAڲHU_5(. CҌ%8`dB N}`BD26J# ltQgd_*kP\ЇK(q"! meV!WLXb-HXsxXgd_`1 x 7H~VȴfuoyMſKTw㝅0x ;ޝA 6;`|Xנ!*o/Vi F&l1*iMŷOK)(Lu7Y Id`wI"[,B@:`|k@yN`l[TV$B܍w<ǶEo$6zrӃt]?X_| r!&VI F&l1*d̼qpqyJ$sm/5 !v~2E6z6ab݌o@WKcHd`HsH(oEV>_:CV$ab~5j z VabVyyAWKctl o%zls8 _gmvȤluކż/נ%1D)=坐uކŨkb<֟zJUmt=o[)mXGk"ջ$-[6,&*kbnl+[(_uYmX,z/נ%1|;I!L4|JX _ΐN·XI,/5j z ޡvVVkN&,Xʳm ZOy,XQ^_]~;sL@W`2kղX87*K]-%sLFͳK]-%st,ŲXbY,e,ŲX| ZbY,e,ŲXbY,Y\]-e,ŲXbY,e,,XXIo%2mLXMkը)FM1jQSb5Ũ)FM1jQS$ʟ.@]-e,ŲXbY,e,ŲXb5jY,e,ŲXbY,e,ŲXK AWbY,e,ŲXbY,e,ŲX| ZbY,e,ŲXbY,e,ŒkղXbY,e,ŲXbY,e,,@._ŲXbY,e,ŲXbY,edrt,ŲXbY,e,ŲXbY,% נe,ŲXbY,e,ŲXMנCm$,f(|5j8.srƢנQSp  _FM1jh`)/5*\"8Ep.s\Oo3tEp.srƢtEp.s\"8Ep.ҺΟ.g,X,F | J"8| :x4/,@._n&O897>ay`rtu$?QZ&)kUZk>Ã7+Wp v5*\Oo3,/@]@W3I$^x AN̗-gP|`rtAEpfrtuq"^Awz;F= ȴAZж{ נ$.3 נ{˔4NZo'ߨ6ЃM~5j= "5u6Nڨ-ti: AWi]Oo3,_| :\#;SNB[q`rtEpv9cb1W _3oz ;iL ?5*rƂb]_| : xc𬂒N 800x4:q8rb1ަ _ 7N@gHo*dڠ3Oq8rb1 _ S9(,etoIuCqb\| :`&ַ_[OIhNWLWJtW?'5*\p8>]X,Fנ.3 נ#VvOa6̼qg.8>]X,FנȽ m$syNϘçh{;tuŹƃg8`d Oo3k:϶`|iNçhtAWff%Hçh _ҺΟ.g,Xߪz^^P<+ 1^JL!As G9(U Yh(@"d"Do콶$6 (ȥQoS,B$Rd~'K`/c(ٲ`Q6epP<+ zb+e4zlη; o@qT,@"-6R?0]y&oqg4,@#PC+9}LXm% {u_ jLno%w,@.9h,꿂>8k3P;o$ary! ˣǐ-nPK,@n߀⠈@,AdQ1dryq1DwXIx!Q9 ˣ[LK i[ O,@nTп"Q9S;OIwn;IY& dYɢ+cTZ!M;u%YF8=shX\pl@q^<}*Dw$2m(omS'Y\8=,@n4 r~}}$B^k3Ʒַ qIF M0>drtk8ˤ(V @:G@"V*tSxXoA!"ۢSO 6N o@@"-vXQ4@"{)%Nx.9c4>  !^7wP+2iJ(THo*;u ]Ab4>)MN,^kV2wN o@qPD Jc#N,brG !j;bձz sc (C,BdFJ$7^z~: _8CD#QHd42i?%  79hnɨyzb佔8LtnԊ;R"; $|4Vk}ieҰ1]sd8SϴLWJmgLUHV1ڰ`rų✮oA"V* @i2ƝB6=M-Cȶ<[Ld~'adl4#(C4vjMOg[ o@qT,@,tӃ,@.P|!ҕ>G 9~b&uׯ@"13F+r=cryZ51D.ӕg0cX(.2} q aZ=ެW+Xo'Yia/c("; aB$ZOyP(,@.86xV-HXIXo'C+3o)d (΋s} 2PUXC6=M !Dd[tn :C' Xo' ' Y\h?*z"-vzGϤH|Ul #ڴU|ٵ (>OO ϐMOȴ (>O_@"dr,AsLF3uO #Fo%^zX&,@n4 r`2Yh &UYއ,@.868/1V*d[% 2mpju7 (Nۯ!z,@._!drͼ1Dȴ4F w t5뾞DcfpBB ! 2)H ?/%^x v*_[h5VoS,X\pl@(/?JA('ۢ3,@n߀X8Dd[dRMW K.HWr6h99xSڰg)'+D'ϑ rgS,@.86xV>D-0(qZn3X\3?1Dc(dINg`b_JDwIxJzo7P+8ˤall巠!RaPJc%ַY& [4x],A4S=J,ʦ @!;5γ-:J - [78* dRMW8=(:1Dȴf[Oiʦ c4;zJC:C[Ҫ@"]sd@:CwI w tU6ep<ΐvȍ#AI+鵾42iX\3?l N N,2,@נx z Ag[L*iXݢeSOHjVS,XM~qt%ϑi<ۢm@qٔS !=TvmVB6aryz3c7}~?4k3t+_[ i@X8Dd[$JηJo= kGP<=hMCiAd (Cૂȍh "-iSҰj@atqt%ϑiC25RZh=X(.g(} dZj|;,@.O8=t,0h*(K+XIqI<:91V*u.g 1 +Wȴ`|a`XVQA+ 'o-*P7ssm{BE9Dד!V*RDB6Ay (@!Tarw@W۾*! VH ;(@!&]" RDB6)hL; (>іDa |Znpg4,@.ȣ#hClX\_7r#7+|L ƷJ Fo% A!pYݢ۾*cb}Uט%fJ GPCTڷ J3-Vk}ieҰ }z br}݀C߬p2m0*ij+=V,@nTFG>= ɛ>gz?D_#5}YyWד!V*RDB6Ay (@!Tarw@W۾*} dZH|m i@qTcIF&ЃM $FXܨ@9,X?nmƉ4,Xl\^@b+Jz;%AڲoΠy꫒ϊh{я0V8((Im$ K Ge=ߦ 4 оW%cT'9t,@.7ygmaS/,@.P|!"bȴA& w7}U.#q aA&KN`5G,@nTFxޗњŶetAh? >D15 bm;~2ϛ3!A%l 3A` vzP,XloΠyvW% (6я0VdƷ$6ȥQoSY\hOf^DThyxw;iXܢQ1qȶ9g7u#c@qU'Jk [78*,@.P|\8drwW,}} q ߰QETo9Hy/%^zXEE xx/%|5 OU4A"u l|ɿ@qz޲:A dHt<EEs/n,4,z^ @qm>[0xgiH 7^51D8Qȴo[i (m b_Di#Y\h? >D15 bm;(UĂEUҧ i@qT'A!jnp]m!цȥQi]>,@nQm_!)m$|L((M"i\TN`"V,@nTFiDFW,}U~.H WA3އ5@A[LMt'YOys=D?m1 zP,Xl|azߜAq_#DcW% h "]sdЃeriՀCq@ʯ!=V8|mY\pl@Xw! VP$v2Idri۔ȥQͼ.ACl8ȡ{`rѼ_38k34zdriՀ_ ӕ>G 293Ps!=V8<{xI2I>Qɱ9HIL2)[$/|5]U9 O^|z"ט]m16ѝdz?x|7A` +鵾@זm__/,@3(rhcodrAs0>JNڍZAgNZo'[J䢼_@!&p<ubr!FJ _xektAGxf!Rw'i3V!LX\x z -r (^CTc_M @qm>[((Lu7Yd`6v;IFkP=Hn:<%ޡvV^z~:LJ (^CbrAɱ9H<+Ұ@q}U~]D&ժ@XܢQqI;ubru"_O,@n߀u8D5VN9 (9CF"a4 >7!Rm_J4iL Ʒʷ P<+gUJVAit3 |ZiXܢQ8V*dIZ+  (>, -Q48^ (^C46FW$65#(CTڷ VS,@n߀⨘8V*t^*arѼrb%ϡ ~Ndrub_J(NONNY\],@S  (>, -Q48^ (^C4Vidx@!*[+) o@qTL@b+Z- (^g YYS'Y\7<8D4J'KXܢŋ"qK,@.86xV,F }~Jzo7$6ȥQoS (9CTyIQ+ ƊȥQI9*k  ;LMt'Y\_G8=HWr6Ɗ=]mDcfpaXܢi8B0VUP)2m/% (΋$ʟ@CDF* ڷJ(V&ʷeri c~)a4Vk}ieҰ<=ҾUP(LWo^ N,ytscT ]@b$VfiVI=VXdr2:91D5VN9m__ (@U'!r)eSmIyޜA*g[ڍ !((xEH,}UvazߜAq_#DQϊh{{я0VHgo#Im$ K Ge=ߦ M3Cl{NڍZAg0V,@.NQYDT0Vh=!3z$ GJN#V÷Xgm_E jl,a5|; [78-"X S= JcLKc󢊶ѧ'CDF*2Q-eX\h?*zb_Jv+(H$ m_EQɫO@CSSˠ-&,X?nBH,}Uϊh{я0VH0xLo#Y\h?*6-nPAb+v;tn :obrivR$BloB)u#ct%ϑiaX3ն?D jl,a5|; [78-"X S= JcLKc󢊶ן@ Lo=kAVI(@Q R·XAi2o#aǻ4,}U! O^|z"ט]m16ѝdz?xElX1]sd e,O";ɂE:6z}(@U} B[xo#Y\pl@q^5cZz-n#ڴ-g[N-nPO3#Ƴ0խdri:G! ]@,tD$t$<۲j@~8Dȴ!e,O멱,@n /fjCXʟ= @C LWrOAIdڰj@|>8$)c=56͟EAB3{XpH~KS ̂_L_ACz7׶F& t:c-c(91drh@!"b_J J4E ƾ A! fAگQ^DT$0N~ie@i: (N !Ra3LK m 42iXܢy8Dd[ cߢE ƾ K yS>h|JmXʟFo% K GAb_`l_RlVW,@.__$Bc52zN,ٸXݢu,X,f~FAo'e:} NJ"3zNj@?8+/A/,@!13-t$ K tV>j+AI w@"j,Xy`|i= /c)Ʉ:.G3~z 1^Jx]#7~Iiq G3>=,@@51drhWW Y\0 r~}}$B4W?%N,2,XAu (ClAIdFpg4,@.P< ӕ>G X3<9>8fh3c0r0Rerh@!FK8ˤ K tV>ǃ+drU_1D-ie`PmY\3?1DcJw %Y\G8M+HWr6pg4,@.]Txz Y(^_ 113 -t8ˤT,Xϓ WW QDi#1N~9$0r'JU}נǐU}sc䪾3cIɂE4F=Vȴ8I=9 f^| J"8\䗱?%1P'APu?]XݢK,B+J( =VXa7U$ȴI   I,tV_U88DȴT[et3 KAWU: c*;LWaJg_.(@WuSN@"D?VXa T[xE( w#PCOi42m`Fehsjl,tA:m$|7,@,XT@Z58A"]sd`jX3Uξ>8fhariՀ9qt%ϑiL2)[ w tU@B3{lB- KgпHWr6|+Iٲg*!13hη- K!ҕ>G wbrw@WU:{ lN,@nQ*+϶aj<*}WѶ b053X,@#PC WϟSPz`ri}1Dȴ6N( i@qT5C~Ҙj ϶(,BZu "]sd@xJx'm G3оqR$ K 2Z@Cc5Jz;%^xVɖȥQź}ةm$xwȥQQ"]sd m K y> "dƷ,@.#P<9V<wg[b0UȴU': {@C4V1Жϊɱ!&]" $Ra0U@iwg[b0U,@.|[.@pl@M>D?VXa6+鵾@iLg[tbri5 K h;ACc5o#aǻ4PSm]X\Gxry!^I#BBV* @iY& 2mpju7 (Ne4} p8Lbm; cuTȥQ>,@.#P\O!RaVAg0V<؀YQOO?JAVIazcrd"*QG+Thy|;2wjN³-ھFAi|![<׍%Tcce bսv;|tv+!豕2! m7,X䓴W,nP8V*wݨtc(@5HJc&,@ζ azà F+Y\pl@X8Dc}{Sd)(h (@!ҕ>G obr3п{XVXEE RbVAiX[apzP`rsc\N [%M A!""^J ڷJ 7n@ayqTۗ(LW83,@.]C3{LW vƟj#Y\Z5v JNC4`;i)g7SP7O q 1]yV+N{dry1b)Mݸlad2NPҲz4g[ɸS'ɸS(3c(3c䪾91D-d)dry@qz -ccUh4LƝbrQE"q7 (%C 9(C o@@ț h_(A!j(m$[% L}Ɗi נv+L* w7!=VP+Ǜ '% !SmIY& 2mʩo,ɢנqINڍZ_qzP2' AWKcc[$RSbrt,ŲXKCDS5:Y& =/A/QXwIk(u÷',Bc+eC5<"` ؀X8D-Jȩ_J$ [78* 1`ǻ4|ȍP|\t[ kPEE(Nͧ/,~~s{ (5 ]7vRUoX\3A-P." w@qon?ݲHX78*&,@R W) A:k o@X\=)Y)wx'mJN#zS;ipSݿc"Zuy7 (NQ# 9&H K y?}Y\ՠHWr6h=a02Vzjl,a5ZOy0V,@nqӀHy3QKT[ FAگ~j@qZ)Ct%ϑi~u_ cIv,@.P!DȴT[etw͟h%ccfp{ob"Zuy{AGxޗ1DȴAI@yUer}gɱ)AB3{X{BiL_w,X?zmN600x4,X\pl@(ur!*[%NgLX\h?*ϊMYo8u}η2ari $B w@ؔ!jBiLa5^xf֊hųuS_@ Q* 1xNZ+,BLWrJ#~#J#Qz`||T,XF@u=3 W]f} _؀YQEOO,XFhGPgr  w7o3 #(Y\Ai S w7oȍʨ.YQ,@.U7brAy_Fk (X\:2ZX\G8U=L2m0ջ$-[: {iX\pl@HU?1 JcwIV4 ~Tmbާ od^ @XE$B2Qȴ|7x-[B,@#PgۨcgXswg[b0UȴU'Y\h?*b"6*\؀Y1D- K Ge=߮Y\h_Ey<œcsQD!Vo| N@qo3 (c՟AC Ynl+[ ƷȥQo+,o Y\W8grU_ '% !)gZv3k[ieҰ`7o 9hnI0c:۲` &UYE"`r5(EbF5(Y] ʛѷ,X3ݠ d~42iX؀YdrY&Te͂ETB'ϑȩҦt%ϑii{g~'siXțѷ pLg[ ̂?7$YܢQ1ar5(XܢQz g,@n}̂EVҼTB"J,@.9hnI,@.rPc:۲M7 FAگ~c✮Yidri:G,@#P3P7o_X\pl@q^ M0ʚQs 79hnIU,@nQ}{b"Tȴ3y4S,Xۗ ̂?7*k 79hnI0`" 68Ldc"oF>_؀(3 [48-~cri:G,@.86xV,Yh &UY`b#Jw ӕg;ieҰ`7o_/1mY\0 r(Y\8grter,AsLɜ-P XQ1,@~<:9 fAڟ`R5 kGPϊh$Bl }Ҙ](@QYϷ)Hc5|IɂET0]yƛ*iZIY& I.@h7o,@.7 '% !|Ji+_33X&J,X4|2//G3оbrhگA!FKq"!i<ŋ6s S= :3bLy #cȶ m)L((d8,@n߀u8Dd[K qb>OkP=`癍o1cX3UO!=f7 (! Ng4 Uݔ $B w@q߂8Vհb@Gxf!RM<%ig6oJLn:uҪţ͟b]abXO`qӀ8,,Xh5(Xܢŋ"briՀßnY(/g i@8,,@.Ox) ?źebXן/@=)Yg*dSyxH,}5//@pl@X_X\h?*6erųb1>4 ~TmcglY\h?*6erw OMɂE((xo#Y_WvrApl@(u(|f"D'C=-[NҰ`QEy<UM-P." (hD3wg[b0U- G,@誊$B4.0y,@n߀X8ĤKdLu7Y WG5o!Xܢ"bQEy{QqȥQꦜ< @q9 ߲Y] erųb6/,@nQQYϷk,BuP|)ɂE@GxTFu: {ռdrGEZ4 Uݔ (yy # 7*#PȥUɱdrw}<M"84 Uݔ-*P\Ap˂EH 2ZX\Gxޗњu# w t596% (ȥQo+ w@ؔ,X7V)e6:o#Y}k 4 ~;) K5 {}k* V (,@jX\Z5xҟY3U K9 {}k* WOJ,B($e|0]y&y4>)m$N,^$,@n4 r~>9Q^އ,@n߀AbXiAI JZFe˾H,@@51Hi#:NdrU_1drYe&! '% =o}łEV~?A<3Dv'`[ɂ?(@!L%|+LW^Fe׋\Q:!"4FS fAѨ\L,@n4 r~ԯYh_4 ~;)_H CT>Oƻm(m$ ͂?7$SףOivR޲3P<'ǒu# w7GX\^.@hXhzq# PO_߲4 >]Tdtu=ze(@I]O% נ.sq$V^ʩn%|褍 ,@._֓ (ҺΟ.g,X\^Y_c:۲`} ;-Y ( ,@z+ G3>grivRbrU_ٖ-P(&,@A-P(r ̏x 4 ~;)_c:۲@-P(&,@A-P(r ̏xlYg,@nQ,X\^ (Kף׿]Tףh?crivRΏ% X(~ ( [48/,@.rPz4g,@@j c5}JVAitkᵭI<e_$B+9}o6Qm$t5x,@.]Txz do'1xYA&,@n uD8ˤjluxȥQuD8ˤA6S$8L ̂__Ϡ!jH8ˤ}a1ApAWbr/5#(,AXFy䪾3 w@o,X\^8- fAڟ`) K EOf?]X\h_ͼdrtEp.u_JN'1N5j= Oo3 w@K,&u=9T}g,@n߀X@q&Xf~3 W]fȥQi]E'u=9,X*̂ˢQ1cr9 XܢQtQ '% Iy{̂k wLg[ ̂k FAڧ* w t5 [78*,@AȍfAڏ5 K(X\=)YN hT.&  79h?,@n4 r~үYl'm}{Au=3 wLg[ i@qZ<(@uޏX\pl@q^5 [48-,@._U}g,@#P3P (΋ۧ,@.rPc:۲`d/&  FAڧ* wLg[ w7OAvRַ,~`4 r~үY1mY\0 r~ԯY\h.|2 X(N[ i@qT<}: '% I N[ w7Q^z4+ FAo'- ?(Yܢų"brU_j-P '% (/(@n% נ.sqyjl$&";x'mlX\]'Ar(^`cyAGN%C3j%۶ G_N7oX3vR (y<A4*Y\@qIb;)ivR?j@qLX(NW FAo'3 G,@n o'7 i@qT1DI V,,@.]T8brd.@֠8bryZȍdrA ,@.]T8brd`TF8F% K(X\=)YN PKo4?$Z @q:j o@qZD,r~{<Ep.Y\_G8brwgx;)O,@@ȥQIy@:k W(YܢiM-?]2d!ͣjGj͑x :c<2c*͞~Gr j2c> ͑͊͞*f > ͑> _ :d´ʴ7_<2d!~ɯ2|*e}C|O͞j\\ ERROR--Disk file not found$ Can't print com files$ Press space bar to continue, or anything else to quit.$PRINT22 DOCMNOPQLIST14 COMQRSTQLIST DOC$UVWXYQLIST14 AQMZ[\]^_`abcdefghiQLIST14 AQM^jklmnopqrstuSHOW $$$ SHOW SHO i progra writte b Ala R Miller Interfac Age November 198 - page 11 an 170-172 SHOW i use i plac o TYPE(filename.xxx t prin ou fil (hex doc,txt etc) I wil prin ou 2 line an wai fo th SPAC ba t b pressed An othe characte wil retur t CP/M Thi allow eas readin fro file withou usin CONTRO t stop Sinc SHO i a executabl fil i ma als b use unde th n fil leve o Wordstar. (Use "R" function). I you scree i not a 2 lin screen chang LMA to 2 less than lines of your screen. Us CP/ AS t asembl SHOW Tr i --- you'l lik it. Howie; FROM INTERFACE AGE NOVEMBER 1981 ; PAGES 112 AND 170-172 ; By Alan R. Miller ; SHOW - DISPAY FILES BY TYPING - SHOW(Filename.xxx) ; DISPLAYS 22 LINES - WAITS FOR "SPACE BAR" ; ELIMINATES NEED FOR CONTROL "S" TO STOP LISTING ; A CP/M PROGRAM TO DISPLAY ASCII FILES ; chs ; ORG 100H ; LMAX EQU 22 ;MAX LINES/SCREEN BDOS EQU 5 ;DOS ENTRY POINT CONS EQU 1 ;READ CONSOLE TYPEF EQU 2 ;WRITE CONSOLE PBUF EQU 9 ;PRINT CONSLOE BUFFER BRKF EQU 11 ;CONSOLE READY OPENF EQU 15 ;FILE OPEN READF EQU 20 ;READ FUNCTION ; FCB EQU 5CH ;FILE CONTROL BLOCK BUFF EQU 80H ;DISK BUFFER ADDRESS ; CR EQU 0DH ;CARRIAGE RETURN LF EQU 0AH ;LINE FEED EOF EQU 1AH ;END OF FILE ; ; FILE-CONTROL BLOCK DEFINITIONS ; FCBFN EQU FCB+1 ;FILE NAME FCBFT EQU FCB+9 ;FILE TYPE FCBCR EQU FCB+32 ;NEXT RECORD ; ; SAVE OLD STACK, SET UP NEW ONE ; START: LXI H,0 DAD SP SHLD OLDSP ;SAVE STACK LXI SP,STACK CALL SETUP ;SET UP INPUT FILE CPI 255 JZ NOFILE ;FILE NOT PRESENT MVI A,80H STA IBP ;BUFFER POINTER END LXI H,0 ;START POINTER AT 0 ; GLOOP: PUSH H ;SAVE POINTER CALL GNB POP H JZ FINIS ;END OF FILE MOV B,A CPI EOF ;END? JZ FINIS ;YES CALL PCHAR ;PRINT BYTE MOV A,B ANI 7FH CPI CR ;END OF LINE? JNZ GLOOP ;NO ; ; NEW LINE, INCREMENT COUNT ; LDA LCOUNT INR A STA LCOUNT CPI LMAX ;FULL PAGE? JNZ GLOOP ; ; FREEZE SCREEN UNTIL SPACE BAR PRESSED ; OR ABORT IF OTHER KEY PRESSED ; PUSH D LXI D,LMES ;MESSAGE CALL PRINT POP D FREEZE: CALL ABORT ;CHECK CONSOLE RRC JNC FREEZE ;LOOP UNTIL CHAR CALL READ ;GET THE CHAR ANI 7FH CPI ' ' ;BLANK? JNZ FINIS ;ABORT XRA A STA LCOUNT ;RESET LINE COUNT MVI A,CR CALL PCHAR ;SEND CARRIAGE RETURN JMP GLOOP ; ; NO SUCH FILE, GIVE ERROR MESSAGE AND QUIT ; NOFILE: LXI D,OPNMSG CALL PRINT ; ;DONE, RETURN TO CCP ; FINIS: CALL CRLF LHLD OLDSP ;GET OLD STACK SPHL RET ;TO THE CCP ; ; READ CONSOLE CHARACTER ; READ: PUSH H ;SAVE REGISTERS PUSH D PUSH B MVI C,CONS ;CONSOLE INPUT CALL BDOS POP B ;RESTORE REGISTERS POP D POP H RET ; ; CHECK CONSOLE FOR KEY PRESSED ; ABORT: PUSH H ;SAVE THE REGISTERS PUSH D PUSH B MVI C,BRKF CALL BDOS POP B ;RESTORE REGISTERS POP D POP H RET ; ; SEND CARRIAGE RETURN AND LINE FEED ; CRLF: MVI A,CR CALL PCHAR MVI A,LF ; ; PRINT CHARACTER IN ACCUMULATOR ; PCHAR: PUSH H ;SAVE REGISTERS PUSH D PUSH B MVI C,TYPEF MOV E,A CALL BDOS POP B ;RESTORE REGISTERS POP D POP H RET ; ; PRINT BUFFER UP TO $, POINTER IS DE ; PRINT: MVI C,PBUF JMP BDOS ; ; GET NEXT BUTE FROM DISK BUFFER ; GNB: LDA IBP CPI 80H JNZ GBYTE ; ; READ ANOTHER BUFFER ; CALL DISKR ORA A ;ZERO IF READ OK JZ GBYTE ;FOR ANOTHER BYTE STC ;END IF DATA RET ; ; READ THE BUTE AT BUFF + ACCUMULATOR ; GBYTE: MOV E,A ;PUT A IN DE MVI D,0 INR A ;NEXT STA IBP ;SAVE ADDRESS LXI H,BUFF DAD D ;ADD OFFSET MOV A,M ;GET BYTE ORA A ;RESET CARRY RET ; ; SET UP FILE AND OPEN FOR INPUT ; SETUP: XRA A ;ZERO ACCUMULATOR STA FCBCR ;RESET RECORD ; ; CHECK FOR COM FILE ; LHLD FCBFT ;FILE TYPE MOV A,L ;FIRST CHARACTER CPI 'C' JNZ SET2 ;NOT COM MOV A,H ;SECOND CHARACTER CPI 'O' JNZ SET2 ;NOT COM ; ; TELL ABOUT COM FILE AND THEN ABORT ; LXI D,CMES ;ERROR MESSAGE CALL PRINT ;SEND JMP FINIS ; SET2: LXI D,FCB MVI C,OPENF JMP BDOS ; ; READ DISK FILE RECORD ; DISKR: PUSH H ;SAVE REGISTERS PUSH D PUSH B LXI D,FCB MVI C,READF CALL BDOS POP B ;RESTORE REGISTERS POP D POP H RET ; ; STORAGE AREA ; OPNMSG: DB CR,LF DB 'ERROR--Disk file not found$' CMES: DB CR,LF,'Can''t print com files$' LMES: DB CR,LF DB 'Press space bar to continue,' DB ' or anything else to quit.$' ; LCOUNT: DB 0 ;LINES PER SCREEN IBP: DS 2 ;INPUT BUFFER POINTER OLDSP: DS 2 ;INCOMING STACK POINTER ; DS 30 ;STACK SPACE STACK: END H,BUFF DAD D ;ADD OFFSET MOV A,M ;GET BYTE ORA A ;RESET CARRY RET ; ; SET UP FILE AND OPEN FOR INPUT ; SETUP: X!9"1bV!NK %#~> > >JͲͷUI6> ?*> 7?r I SOME KIND OF ERROR $FILE NOT FOUND $\Ig!6!"!5*~I#"!4 ?5 2? :;> ?!4 Ͳ > :4ͷ O> ? *>^?@?_\j2|2ɯ222<2:] ʓ?ʓ:mC>2C>2>2̓!I List - will list a source text file in ascii form (or compressed ascii) from a file to either the printer or console. The 1st argument is the source filename. The 2nd argument may be: "C" = list to console. or " " = list to printer. :!\I> ?*Q!*#"22 More....~#? Sorcim List program. Version 00.01 Page 123 asm:I:I:I:I}0>02_>0]T< ==kbG:_V> x>2_0~0~0#y`2E#~:+:\•~@##:<~>:7.~.#y! :E7x7~#.*>?~# G>  x!|;=:@2#2*2?72Ea>{ wC>2C>2>2̓!I List - will list a source text file in ascii form (or compressed ascii) from a file to either the printer or console. The 1st argument is the source filename. The 2nd argument may be: "C" = list to console. or " " = list to printer. :!\I> ?*Q!*#"22 More....~#? Sorcim List program. Version 00.01 Page 123 asmLIST was submitted by Byron McKay of FOG. It lists an ASCII file on the printer (60 lines/page with heading and page number) or on the console (24 lines/screen). To use, place LIST.COM in drive A. At the A> prompt, type LIST for instructions, or LIST d:filename.typ for printer output (turn printer on), or LIST d:filename.typ C for console output. As when using the [Z] option in PIP, the high order bit is zeroed out leaving only printable 7 bit ASCII characters. Therefore, WordStar "document mode" files can be viewed on the screen without funny looking __ characters. The printer heading generated by LIST indicates that the program is from Sorcim. I can find no copyright or proprietary notice or serial number even using DDT to dump the file. 6PCOMOBJLBROV?ARCBADSYS??#LOGINTREL?RLEXEPLl >B {s 1:0 B :(4!~(,#~ +++~ #~/ #~N >w+w+w2:2:>(>2a q s N2  !Ny  J  p1 pN p! 6 A("  ( n* +" >:##(:#(#a" ++>1#; 4+J" +;4J~0 " +~+@!2 * # nD~.( (/+#~ (".  #~ (+#?#¶#¶òò p~#_N sM > #> #6# 6 #6#a{ !_ N:2 : :> ! ͬ N<  J :> : ` J :  J >(͌! 6: QZ s!v ( J ([  s>[͌, sa G>0 J !" q03': (q03M !9~L'~k##^#Vz 3#~#~2  J ?0W2 ::::_ _: W* " S z?}'̷~#: (* +" } 7: =2 ͬ J !!" 2 ': <2 !"%!%O%! +ɀͦDM~b##: #: #:  g W _*: `i{  y2 " {e_8 ~ Šb(* r#s: _: _: WBK%%{W|_bk))>%g!>)0 0= !(%!%!ͬ,,, sͬ(͌, sa 8̚8>>ͬ_ͬW8 J  !%bbz @ͬOͬ!!!!%G6,q,p,( y/,w,,ͬG7B%33 NM , sa !͌M ͌ J :> ! ͬ!LB" >R2  N<  J !ͬ-( J . , ,F. ͩ( ͩ(ͩ(ͩ((ͬ8- J N ^#V#N#FC S 2 ! N2 <2 2 >(͌! 6: QZʨ 対  #   . , ,}2 !7N Nѷ: M <2 88 (O͌ɷ( =Gy͌>͌ ~ (͌x >.#́ N > ͌> ͌M  > ͦ:  > _N :(=2 | J !45(?{ P! 5 4 sNM M !0(#( #(:=>2  sNM M :/G! 6~-͌́TYPELZ v1.3 $Input file not found.$Not enough memory.$Program requires Z-80.$ ---> $[more]$ $Invalid Crunched File.$File needs newer program revision.$Stack Overflow.$) ^C, ^X = abort; = next line; = next page $Invalid Squeezed File.$Invalid Library File.$File empty.$Member not found in Library.$ Usage: TYPELZ [d [u]:] [ ] Add ' /N' for no page breaks.$Invalid user code.$Invalid drive specification.$Invalid filename.$File is restricted - sorry.$Line count limit exceeded. Please download the file.$Can't type a .$ file.$ $ Copyright (c) Steven Greenberg 4/15/86 201-670-8724. May be reproduced for non-profit use only. Copyright (c) St> ͌> ͌M  > ͦ:  > _N :(=2 | J !45(?{ P! 5 4 sNM M !0(#( #(TO: Steven Greenberg FROM: Michael Conley July 4, 1986 Hi Steven ... here is the TYPELZ source with the changes I recommended. While they aren't explicitly marked in the source code, they should be easy to see if you want to work on them further. I've done the following: WHEEL byte implemented. The Wheel byte location is equated (set to 03EH) and is checked before the following restrictions are tested. If non-zero, all of the following tests are over-ridden. MAXLIN is implemented (set to 80 lines now, no limit if wheel.) NOTYP table is included. If a filetype is listed in the NOTYP table, program refuses to type it. (.COM, .OVR, etc...) SYSTEM files are not typed unless wheel. RESTRICTED files (high bit set on second character of filename) are not typed. This allows you to individually protect a file without putting it into the NOTYP table. Same bit is tested by some versions of XMODEM to restrict downloading. PAGINATION can be defeated by typing ' /N' at the end of the command line. The program will then type the entire file (up to the limit of MAXLIN if no wheel) without breaking for the [more] prompt. I believe these additions will make the program an ideal replacement for the earlier TYPEL program. I am now running TYPELZ version 13 on my system but will not release ANY version of the code (object or source) until you authorize it. MAXLIN is implemented (set to 80 lines now, no limit if wheel.) NOTYP table is included. If a filetype is listed in the NOTYP table, program refuses to type it. (.COM, .OVR, etc...) SYSTEM files are not typed unless wheel. RESTRICTED files (high bit set on second character of filename) are not typed. This allows you to individually protect a file without putting it into the NOTYP table. Same bit is tested by some versions of XMODEM to restrict downloading. PAGINATvTYPELZ13.Z80JZO0"AB"O"~+g!k\$| { Z~|+rN1k,"h""rA NHA=K({$"JaH[dVrNQ~uS_+"9B~f,wb!S Gυ YKԼ=xQh,| ۤ|M҉ K7")4!'S[ M8o|7胡XQ|K)wb ]Kj v.rA E+Jc L]%+ P[ D1+ R{clMN@B5ω Y6AgRԾM_21pcV$y8/_:eɜ,fԸ"a5]+i͎|YhѠK89$cNM *)Y* = n'I.wϝҿ^ě-{" C9Q9 ArΖ$o=nRRN |Xw̧6QDbQJi]ֲ l^;%=ϝ~k/ ֲ|=j+R{̵v' Q@)Bɜx=% !k!HM*!E ЪC.qHķ$߳qHi"Jiy"Դ$P+$R^ 4VM(""NVy|"z'0hS\r" Yһ} %5-w3r   TRƫ6ӕkE,$B ꩢ!=,hN6J[K _8R^UJd! Du|I,$,U1} o9һi8F7|rNSaϊEH"1t!N*,eW5TR5Ȑ׺zc Lؼװe*~(R &쓄x<=/Nk_Ȑ%BKȫrMNY |KueȠ*o뉖^δhtx5,ШhI-Կ"^_t)E)Z=u=)9T~ k8Nbc$0B5Nˁ囡<˶ /kԹ#R^Ic[D Jj@.EH]ɒC E9D 3F`dMIL8KDNyNԼ+MiaȒsxCGx6n6%N_R6!a_=E}3;Rac Aĸ7w GoiK%  ZOؾNN0T1|HcaHKɜ߰ذZNXN0UY1ku Erȧ9n1pt{^ɦ$0*N6"$ B8əXɛr0kY|N{BC*`a(3 ѐkͭna`M|߷"TZ [V| HU[A-/B=j = Gu<K!Qy8 kZ1KCw5L%B5HN_9=Ծr= C3 J8ka#o#( %=h-67Іu P1xz@GF4q\o+$wV&NJܝxrN!hT}"kAouwBki1ll%xR )3Vv"Ոu3[rLw{J$1|;LT!\~!fNInߝcÜr-_l]ѱF90QSՄimuOЧ; U}`B6|Y5X>KXhi5d4o>' l/ Ԏ[R A?1?MwWj&׵~lzYnB|XjK^kW/FH?zO}dwi ~Tw5$x=)QNI#R^F"I`/=VzWN|9/m<: h{2#<ꚦӝEtK(rdfqwdUIN`P"$|;0㒵0.c-| P*5nj 3o<$ V;?Cw'eOxQ]lM! FHQM"cL#p()Nఎj3tT7 jUaA]qgL|Q}Бi8>*WUK2׌1t R!! `n OP!Z|h(!Fy!TWI*مF] "FNB A{WZ9ܦ4 Q̹6@jU.l$? $x<, fb碨l uuBMCnIJR\|#n`R ,^ dnj =pe$]FIpAkxT` K{Oī?> MV䕝y1pqz^&!b֥z>RJኽo%Ek\!̢]ABsO`:M"lV뛫}1 xnͬS՚-Eڪ5sf~Y]P}Tz}1@AJܖO1tP.PvT0Z-)uˆ 19<,$7NTk ]2V`P2.la1s SZF?$R6KJ c7ssf5Tn۟ܘ/" !Je?I7e+x!`hYR2QUy}A"H:#L@(''#!` 6ȩ{&LQFn//| =2̂%ʀj>]~,55q*Jd+r_ֆpf>aŒ3hg$ufBwҐ`6 ohMT]*-F;xq'lͺ@Zl u#AGz=| t b$nrS3й5m!:Q܍Le+<fZz2(~xD[8&M-~.pOK|*DE+-ҼY0\Vs{T~-iPN[0L[Mz}f%SE~jGp(| 94 d}}76O 8" ~pBb̓K@-,w fT^BBĢV|H7x`)OVa,\: 4mT^3ʜu4Ry ]% <씩e:'ZZ8=^:ύo,g8rUp,\9-H-ub{!Mr nIPypnWc`%8 ͐>y"x}YX鴆 6|f4wG  Hc0YⷀF D.ȱH H;B\)1;ok1wa2EU*Bp/|jFrєsh~W8rw\NRQ5 d-RQBA?a*Qmnj+lqJɛKvePS)jX<19JiikU@oB&%k~pQ+z!J?> aH00(dzka̮?W,#1)sVZv%%v*Fe'ecZg;4aPu~ތu/^|(.#J^X6UUPd(/PퟹζRV:1aæL 2)n"z`ƻzo{*٢ -0G66\1(<~ik7K:h=1H=o!x͕/ZTnPyؿޞi%^()|+^C1gLjE6g4S6G g Bs U="3 b= eB$+Rh;obҳJχ?VlC2Bǁ\!"=yi m !Ej}xyK3Ի=al-W:e#M~g3Z؜Fi"!{r!KN 9qhRٛ#:oBwʔ~PЖI0q\y !GcvZLeb# uWTbΏ䅬O(qe0Ɖ l=#s y*jSg=Z.ٗPr*ȁwX5}~,3NH6]DŽxU ѓL2np1~jOr t#:mygkE+7Eȃ.F]z8|^ōs)cKBn FO* (M˻dL)xjS+lGIb9S"Ϳ$qC~ WPqvPq|p(K>Qlsn-4~m|m@F00ϼ/p 28g㞞;Ayvi@ 86Ng`l*}=%G>RǮEkc0zmjlāfΧ"gĝz4zU6(A?G~#XBel,(O^ . ׊.zU=V u>lgIzqsMk҉nus ^/]ETo$dae qyO6kqlZB҂N0\0AAcԾ;ҏ!,E}UݻKxw0V'DaN,7s_n&Bŗ MJlGv-eS[ #8 o#̠#뼞I A KG{@W+ۼ`ak$7+{QBBZsɊxڛb(!dPz?9h&iq! [!VBL ES 䑊rn#=7@`c;B&Q[2;3|3/V LW+ۿNF3L9xՌu-շK<5rDА"8ؕ鑟 S!LAc<-=Pg x|hKp5e`8ؓK̭Pu+/N9;Q2vQc8YWAւ#;D/-6E=aǍ$JcQ x 7yi--, uATd[4鵠PUЮ BFF`ciu/js(7`?^t3 lb,(fF^8Yx38(.=oOqn+96!H5! ַ{ka [>QkHWGAdAk]܃n+96;+A?$Jd N]~I@p|ƺ+Ln+96Čuz?_a57!> &ntȰ AHJg2d)16E=ˀAR:qi!QI"3qH`>AL8QQ0[ad,9؞qn+96ЖY<ɮ{kRchqjs"Hw jtsiu/lhV(|<TP*@_ƭ'>攋{ӁNNNk:'tٔ=Viu@_Ն>]<- *Հ ?NFRchq5o*<ɮ{h6Rchq! 3̚o]-ckΚ[j߼( n؞|H) Κ7!k3;`6|4j@UNafF@U؃] vSo&BS iYKj~j@UZP<biYHQjK߱f3KԾ)YA%lch٤c.KٸՅw+PN&KǤx~.J!k5RZLǮ+Sؕnj_Ť IgI \,h',Iƍv$io#!c>ǫ Ay{j^!V~;puxWA+Hn+NuSrS_x Y<ˤ* QQT{̫w;k,Ꙩ|#^\TAbR ^æSՈ=nȒU5$=ƭU5-KOYlHK;_2;IH|0Pn]̭Բ ߎYifYYrB4)R?Lk QQRqn+96ĉ)y4by= W[LQLfاRch趭ɾGC[eZ|xPw̬HQ/MoX ~|:P,DƭeSR%!Jm!Jm*/z߬DLa!Jm!Jm(!$S_؟-sDL|L[؀y{ۨU5-K%"=% "!RchqHP^8oҏ6*dYG60 m~|GC[-<@ > P[wP9;&&d LRLe5h$@!QCRY|^-;`0BşM*\0IIpAζ檩4])EDaק؃tsӓ$#Z~Iң_āh hs"|NRZ7q>nLG>^t|1t=|}Z| *~ j{Է?ܞ1ҪZAꡥrdYHg8QNҨQHM&@F|4$sǤx$=dҭtГ&N!V;GzK1%n YTǥQInMhkAyO^+5m3zQ}rnBgd #&KoQy7xoY*f&Q2/I8؝s=^/lzt1dflRCRpAȅ$JbiY~KrgʴCR]]Y+P9|Add^I f{I8Hdm9D mJXޔLP4 _sNQsm ꉻQdFHݞ+檩4UԻ xj9F;%JܞIch٤c{0vu1Kj-PPٙQGNK5mjJ5mYnx&XCR,5mII|bXIǮ{[sk5m U/V+SvfiQ0Y=Tb ]Dƥzxf8TH5! C( /d!<+-f!>#<ˤIU/V+S(A5mpN[|H^H5!u\$Qi[ܬ,zP Xy{ R's`~-Jc Nk0yPW;=#~/O-hsǤxciAkNb?~KXczGzՋd {) }J5Smj58}\,z/vaD1J"U8?&i$5/zP6~Y7P+wҬā45@?_;Ҭċ4Y$A vMVQǮ?jQH5!/Na/`WdYGMx q]E 4܎Nċ>Q'HMdpOL]xHzz&l[+^>RebS$bQcnðnK;Ay4@yND Q's` k)E!i0Y{ɪR舴=׈;ϪRyiz&w{`[Ay|Jxǩ!Tbj9fTƭ_K|5-j_Fr#~~I֝i=]%fze PRաxYjm]ؙߵ ` CFdi{~~Y+QD1s=UJn*K8tA"K@n\Iu& b|$аKrnĐQEK<ЦZd`NNk:2BşT1dfsm=mXAECD6F;H̖֣f;CF'T1']x_iEV 4m'Kٸx4HQǙYKfPt iY̒$5-lsgtǙYKfPty--/I8ؙI{I_f1dd<ޒ5i@Թ} scm*hݞ!dfApG{N}u$n=aQEF2{|u$j>#-*"@g˦8͓/|ĄMLċ&xP# xjQy99Mؼ c2TRh&TY8aiC;نhkR*0YQ5$n=d/zb?'Q1࣓s̩g;?=^H({oj)YX)YAQ>^:QT:,DV4h$Kۤ?Q4dk˴+ZJ66^Vxix] EQէE=cb7!m13qH`>@%PJ`IY}mpBjU+Zߡ>b̨k%#8 0#1`2QN98sO `2QN4vxR+ N0WsS4[j)y1ư0y ʵ^ `2QNR ̮9IIC#X6r3鈰A AA 'gƌVN:&,=rA  FM)5ɸuԠ-Q+9ؒPw yML(x+936rd0R̬Hq!SVJFAN]!92ADdkfF MBL]|Y5n^ a3k5R˴]a1zM4gԓSTckΔ船o R -hQ(Q&qz-R ^㐸QHQ&qz|;" &e_tLf6|eaZcRvv,Rߖm1yĦ(u 0Z/dYp] P'ԻZ]N; -R Qkq+9ċ=е 2#噊xo!R) 񏃷wΙ"&0[w;ǗHWA5q #Z=J 6s1淴 X1淴 X1淴 X1淴 ^mkI Q]/E IA2%jƷ%kq+9h; N 8>3=NvM~)8ؑ.a|y99Mؼ+J`b6|[檩4]#E<E` _nLGI&\IckΚsJ H ix *QsPlDTx{檩4$v;tn檩4])LV#urdg1ijCu檩4]8] "EwWU @r̀Gbvi}P^g8'?Ԡ3o)]a6FkZ] :&9C;6i @—_%(!+Ń2Ȳv0Y|ѻ+m &hY0@q! ʩg,8Q3~_!+(ZVR Y$cf6oLf6ciRcmBZB6E=ƈ5RcmBo&E={(SZ.ZBّݱSq><=XR`PxݻfQ$7+{QBBZs2x:&: xgl:h*:ۙo&"LcfBB SBaÙ"7N;_14XڛU/ɖǍ$5"ϡU0I.F9̃{ V3Ђk5up@q!Ac!0XQc8YWAc;N|No+9.H5!X6ہ=Yt{QSJ"[b^9gÜ}4,|k3]oUqvާW'.Ja!k0{sqVUx<| Gؿ|h#K$)Ls^ T]KrϾ%86!s0`g=1<Cm0`g=1<6}VlM9}G~#񼃻NC<M-lǤhBzd&_*ЦM'3qK0P΂^o)"{z&C~:46!_qko}:4>ŧ9CZqko}:405=,L^aQ'.+?+9gN U=Yek2ݴY_?(vr16ԩ>7ҍ_NpN)L]kRnA܎ p$:iNvCRNcKdbtJ"sARF"==CF6L:df<ˤmW7iL^75fTM4oQI/L^7*$1t Mcv\+ڛP?)NC6!s@Ҭ;~Lq|F0NC|~ Y6,ߍi!H=n66ːNcz| *ؑH=,$Y|1OF4pQH=yWqH=` Y8z' Kv9iBs^T4O$k=МaH=`x@ӯ>T8Ye}j*Unf) Κi*m3b6XIx Pm Uh s~n#78̒p@ n1 H*@@ʜ'B(Jd!:k5;,ک4Yn5` |6uo&E=;τ{4*R騍{= ryO9Ж@F&,| ̬H_!-2PCVԦB(hb6騜=L%GL{s%"ݫ@`*bnĞza*Vq{̬H_!QJxs{/cNک4R Rq+S qml/ށ'BBQ&' 7nb!H`6E=ˀi䝤MB"?(ş:+|JmV3ܯ7Q+{S0VqO_WGU/QQ2b!H`2ˀ_>/eZ?f+g(YJZiQv"CLx%03pA^7 : w #Eaxj"!NtƼJ8$Nlcf68$NllsQcnlsQgcf6>Lf6cnUyZcnU\)V(,cf6UbUb(Lk QQR QLk QQdA!.uXqNjLoY%G:7G|&ʥF7,АgP>MO3pYmKoZ}fVk MzajXdQvEZaIvæ=_ Wn|NGU`fEa!H o7xBˁ҉P{:` cG6KE%pUଡ଼{'Rfbr|(W|y(Bcfe |y'Rf1zg,3;6=e ֢أѥ6)r1|Lm0ϯ61|LF1|9UsRW^_/LeR_> MJl!H ܮ_>G)1҉dQ PsVAӯ#r=7kv--W|ǒ.&6`?6Q ǙMRu&k6rz4cg6r? }!_ 75Oj&_W6d%npz۶ۙ_6Jnp0xj_6J^1)g Y_6JemlπrDЖ_6Je_1p:/ƎN ʵBmM]MO- d]JDՙf'+d][xd Py5Md!1z,>kxQgl eI6Ռu|*̬Hq.QL߻*̬Hy/B5~P<~&s ^j=ߡ64[jg^j@Gc? P^jY. ̜_Qml(F i9K@ZMLe5bf>Ǯ*s yY̬Hу3Bӯw6Z/+?jmlx )ϪR罇j*C~MP^8A6ZDq{C~4W񤌳36Zkc0>IV{|榫4_q *x Q{檩4]w4F,@UGTLQ INXIJV=@n뻅mN'W-T!{MX;Cd맽o_ܢ"o] s!t5q-PP ߴ| x )1FL$c@ l9-džnfzKNjT Mq.Vt@^֔O%E@"Aw@8,D)s/|ď g,31Te%f=f1}JWN/|ď g,3;]%fVg'Is/|ď g,37x[PUBZm2Ia '[ƥg"T}μ[HQNk!Yf9+ QpAh"dQ`@n뻅mN'W-T!{MX;Cd맽o_ܢ"o] s!t5q-PP ߴ| x )1FL$c@ l9-džnfzKNjT Mq.Vt@^֔O%E@"Aw@8,D) FILE: XXXXXXXX.XXX ~# !\- T""LIST ver 1.1 CTL-S L@es*P*R}|ڭ!"R*P{zҟ*N-™*R"Rk*R"P!"R*N*P}>*R#"Rɯ292M!@"P"R-<  NO DISKIN FILE$!g~M8+~Oq+~Cq++CAN'T LIST A .COM FILE++ìJq+~Bq+~Oq++CAN'T LIST AN .OBJ FILE++ìWʬͺĆq>ö §>ö ±>ö >2 > > ~#~> > :    _  ++ABORTED++ *J2h2|:ʒ!\ :\2!\ \ú!\ \!\ \<7=Ɓo& ] 2h2|2~# x  VLIST.COM ver 1.1 10/16/80!9"J1J*""VLIST ver 1.1 CTL-S pauses, CTL-C aborts Type ^H,^J,^K,^L to vary speLE: XXXXXXXX.XXX ~# !\- T""LIST ver 1.1 CTL-S L@es*P*R}|ڭ!"R*P{zҟ*N-™*R"Rk*R"P!"R*N*P}>*R#"Rɯ292M!@"P"R-<  NO DISKIN FILE$!g~M8+~Oq+~Cq++CAN'T LIST A .COM FILE++ìJq+~Bq+~Oq++CAN'T LIST AN .OBJ FILE++ìWʬͺĆq>ö §>ö ±>ö >2 > > ~#~> > :    _  ++ABORTED++ *J2h2|:ʒ!\ :\2!\ \ú!\ \!\ \<7=Ɓo& ] 2h2|2~# x ----------------------------------------------------------------- VLIST.DOC 11/10/81 VLIST.COM is a version of MLIST.COM (see MLIST.DOC) which provides for varying the speed of display on the CRT. This is useful because you can skip past the unwanted parts of readable files such as .DOC files, and slow down to a comfortable reading speed when desired. This is much more relaxing to use than CTRL-S to stop start the display. How to use. A>VLIST filename.typ ...or wildcards as in MLIST ...then when the program signs on, you may begin using the "accelerator pedal" to go slowly or speed up. CONTROL - L is the lowest speed display. CONTROL - K is twice as fast as CONTROL - L. CONTROL - J is twice as fast as CONTROL - K. ..or four times as fast as CONTROL - L. CONTROL - H is "high" speed, the normally fast display speed you get from MLIST or TYPE. -----------------------------------------------------------------  display speed you get from MLIST or TYPE. ---------------------------------- ----------------------------------------------------------------- VLIST.DOC 11/10/81 VLIST.COM is a version of MLISkip past the unwanted parts of readable files such as .DOC files, and slow down to a comfortable reading speed when desired. This is much more relaxing to use than CTRL-S to stop start the display. How to use. A>VLIST filename.typ ...or wildcards as in MLIST ...then when the program signs on, you may begin using the "accelerator pedal" to go slowly or speed up. CONTROL - L is the lowest speed display. CONTROL - K is twice as fast as CONTROL - L. CONTROL - J is twice as fast as CONTROL - K. ..or four times as fast as CONTROL - L. CONTROL - H is "high" speed, the normally fast display speed you get from MLIST or TYPE. ----------------------------------*K͞+##+'+FÎr ͖ 8{ Ăw#w#w^#V#*~#fo^#*~#fo^#V#*n^#*n^#V# ~#fo^#& ~#fo!+!#!+!#!+!+}|z{|}|z7||7zZZ)|/g}/o#|͉k|/g}/o#ɯ2qZZk:q|/g}/o#|/g}/o#:q<2qqDM!xxGyO҃)v|͔`i|)Öxڷz/W{/_ѯzW{_=yOxGæ2qZZ͉M|}ȯ|g}o)|/g}/o#z/W{/_!9~#fo! ! ! ! ! ! !9~#A"s!`*"!"!Y">2>2>22!"!"!@"!" ʞ!F#x±~#±!b2r~# "2r+}|~#G:rx"2r+w# +6#!6#2w2x*s!>r<o&F=-` r'~h6!+`W?_!~7z?` :>ª@w#G.¶ww#?*>?w#> w#.7:77#!a{   `OE!y6$ -7rBo&))T])))!y":>""G #Ϳ,"x ..Ϳ,.ͭ'5':>?2>I#:>>2> *<-*N*l*2>ͻ':?[#7/ͽ6:>1$:>$:?$_,:>#)’#>66:?6#*?|£#2͈7#>66:?6>#6>66: ?6#*?">)#>6:?6>s6>@2>#2͈7#ͺ)#:>=2>))$>s6#́)($2:>"$2͈7#3͈7#*>">*?">:?ʒ$:>s$)f$>>6:?62͈7#2͈72>#)f$>6:?6>{62͈7#)«$:?„$>}62i$:?$.́)$>&663i$:?$_,w#:>$h-_,$:?>$>6_,>6>@2?$*>">óG=y E O!9DM! ! ͐͡|!ͤ!ͤ! ͤͧ!, ͤ! 6! n͐! ~#fo! n&)~#fo`iͪ>q?>f>aK>ʕ>xW>ʟ>c>ʢâ`iͭ>y>ʈ>a…>ʋÒÒ`iͰ`iͰ! ~#fo! n&)~#fo!e ͤ! 4!!9Syntax: XTYPE filname.typ ... Wild chars. (* and ?) OK, Multiple file names OK Ctrl-S pauses, Ctrl-C Aborts, Ctrl-X skips to next file can't type %s... Ô k=èÊ!9DM͐| | ͐!  !Í *͐͂ ! s#rz ͐!  !Í ͐ͅ ! s#r! ~#fo n&|? ͐!  *͈ !Í ! ~#fo#n&|j ! ~#fo##n&|ڢ ! ~#fo n&|Ґ ͐!  *͈ !xÍ ͐͐ ͋ ! ͐ ͎ |I !# ͐ ͎ |I !( ͐ ͎ |I !- ͐ ͎ |I !2 ͐ ͎ |I !6 ͐ ͎ |I !; ͐ ͎ |I !@ ͐ ͎ |[ *͈ !Í ͐ !.͑ `is#rzʇ ͐##n}Q‡ !qÍ !aÍ !9 '%s' bad name, (name too long) Error on %s, check your spelling. Error on %s, check your spelling. File %s not for distribution. .COM.OBJ.BAD.LOG.OV.REL.CRL.IRL` g=ë!9DM* w#wH K *N |ʠ *Q !a*N ! s#r`i! s#r͐*T s! ^#Vr+sn}¾ *N ! s#r͐| ͐|/ ͐!"W *Q !*6#6*##6#6! w#w͐͐ң ͐))**N s#r͐))*##*N s#r! ^#Vr+sI `i͐!CW *w#w*w#w*6#6*Z ! s#rzM|͐] *Q !!9%s has invalid decode tree size %s -> %s ^=ë!9DM͐!R*w#w*w#w*6#6*U`is#rzM|͐XÖ*[!!9 Listing file %s !9DM͐`is#r͐n}{͐n͐ n}m͐`is#r͐ ! s#r͐n}F͐Á`i^#Vr+sn! ^#Vr+sn}jm5! ^#Vr+s!Á!9!9DM͐n}! n͐n}³͐! ^#Vr+sÒ!*w#w*6c#6C!9DMM|*^#Vr+sMââ͐`is#r!p|d͐*s#rM#|Y*60#6uMââ͐*s#rz‡!ââ*~#fo++s#rMâ!9ñA!9DM! n&|g}o! s! n}*6#6A! n&| ! n&|5! n} 5! n} 5! n} 5! n} A! n&ͮI!9DM`iw#w*^#Vr+s!|͐F*s#rz!8*w#w͐))*M|g}o)~#fo`is#r͐))**~#fos#r!|g}o)~#fo`is#r͐|W͐#`is#r͐|'!+͐`is#r͐8!9M=!9DM!!D|!!D! s{ŠG! n}!!D|ʮÕ!!D! s! n}!;J*6#6! n&!D! n} ! n} *6#62! n} 2*^#Vr+s!9 FÚ !y9DM! `i@`iC!9!9DM`iw#w! ^#Vr+sn}ʘ`i^#Vr+sy͐ß!9î!9DM͐!͐ͫs#rz!͐##w#w͐~#foY!9DM͐!͐~#fo!9DM͐`is#r! ^#Vr+s! ^#Vr+sns{W1͐^!9m!9DM͐j`is#rz͐j! s#rz͐?͐ù!ù!9\Ñâ!9DM͐|Ñ͐+++|!Ñ͐##^#Vr+s|z!͐͐~#fo`is#r!M͐##^#Vr+sÑ͐##͐?+s#r͐͐s#r͐^#Vr+sn&Ñ!9é;w!h9DM! ^#Vr+s~#fo! s#r͐! s#r! ^#Vr+sn`is{`in}%! ! s#r! 6#6! s! s! s͐n}-9! ^#Vr+s! 4͐n}0I! 4͐n&͠}f! ͣi!! s#r! ^#Vr+sn`is{.±! ͣ! s#r! 4! ^#Vr+sn`is`in&ͦ}DUX"O+CqSʢ͐~#fo|! ^#Vr+s6-͐͐~#fos#r! ^#Vr+s! 6 1! 61! 6! ~#fo! n&! ^#Vr+s~#fo! ͝ѯgs#r! ^#Vr+s! ^#Vr+s~#fos! ^#Vr+s! n}µ! 6#6! ^#Vr+s~#fo! s#r͐n}͐|! ^#Vr+s! ^#Vr+sns! ^#Vr+s! ^#Vr+s͐6! ! s#r! n}q! ^#Vr+s!q! ^#Vr+s! n}h!0k! s6͐! ^#Vr+sns{ʚ! ^#Vr+sq! n}! ^#Vr+s!! ^#Vr+s6 ä! ^#Vr+s`ins! ^#Vr+s`ins͐6$!9!9DM͐n}9! ^#Vr+sn& A;!9DM͐͐ ґ͐^#Vr+s͐ ~͐0Æ͐7s!&͐ ͐͐ ͉͐>`is͐ ͐͐ )͐>`in&#&!9!9DM! n&0ͯ! n&9ͯ!9DM`iw#w͐~#fon&}g͐ ?͐^#Vr+snѯg`is#r(͐n!9}ï!9DM! n&z|ʤ! n&é! n&!9DM! n&aͯ! n&zͯ  ) ,7*+++:G_*DM!o&7,2q*&:q):Q=Q=r:qo&#:wok2w&!o Ž . &7:O*7:)~:,"s!"u*|**s! ~6*u*+"*"*u#"u  , > _ ;eÑo#K à##Ô k!!9DM!J!n s͐{~#fo! s#r͐y~#fo! s#r`i6#6!l w#w!M! s#rz!> !o 6#6͐o͐'! ~#fo͐o)~#fon}!Z͐o+|(! ~#fo͐)!G s#r! ^#Vr+s!l ^#Vr+s)!D ! ~#fo͐o)~#fo#s#r! ~#fo͐o)~#foP|¬! ~#fo`i^#Vr+s)! ~#fo͐o)~#fos#r! ~#fo͐o)~#fo! S!. !B s#r! ~#fo͐o)~#fo#n!/ s{:5! ~#fo͐o)~#fon!. s!0 !B s#r!. n&!J!- 6! !- n}P!S!J!, s!, n}m!- 6!, n& ?V|!, n& ?͐BY! ~#fo͐)!. \#Ms#rz!> !. ! ~#fo`i^#Vr+s)~#fo_;!n n&!J!o ^#Vr+s!o w#w͐o͐l !q 6#6͐q͐ !n n&! ~#fo͐q)~#fo͐o)!D ~#fob| ͐q`i^#Vr+s¨ ͐q!s s#r͐s͐! ~#fo͐s)! ~#fo͐s#)~#fos#r!s ^#Vr+sôX!q ^#Vr+sH!o ^#Vr+s/͐y͐s#r͐{͐s#r!> !u9*.*!9DM! ^#Vr+sn`is{ʅ `in}*| `in}?‚ !Ë S !Ë !9!9DM! w#w`i6#6͐|!! ~#fo͐n} !! ~#fo! ^#Vr+s! ~#fo͐n&|g}os`i^#Vr+së ! ~#fo n} A!! ~#fo! ^#Vr+s6.`i6 #6͐|ұ!! ~#fo͐n} n!ñ!! ~#fo! ^#Vr+s! ~#fo͐n&|g}os`i^#Vr+sH!! ~#fo͐6͐!!9!9DM! ~#fo#n}:4"! ~#fo#n}:1"! ~#fon&! n&+"! ~#fo##s#r1"!f#{"! ~#fo#n}:{"! ~#fon&! n&u"! ~#fo##s#r{"!f#! ^#Vr+sn`is{M#`in}?"! ^#Vr+sn`is{"`in}."{""!f#J#`in}*&#͐n`is{"! ^#Vr+s`in}."""͐n`is{##! ^#Vr+s`in}. ###"J#`in! ^#Vr+sn}D#{"J#!f#{"͐n}`#!f#f#!f#!9 *ڕ#+*|/g}/o#9͙#ҕ##"z{7*~# ʧ# ʧ#+*&! n&!q ^#Vr+sH!o ^#Vr+s/͐y͐s#r͐{͐s#r!> !u9*.*!9DM! ^#Vr+sn`is{ʅ `in}*| `in}?‚ !Ë S !Ë !9!9DM! w#w`i6#6͐|!! ~#fo͐n} !! ~#fo! ^#Vr+s! ~#fo͐n&|XTYPE.DOC 07/21/82 XTYPE14 IS AN EXTENDED "TYPE" WHICH WILL IDENTIFY SQUEEZED OR UNSQUEEZED ASCII FILES, AND THEN "TYPE" THEM. THIS ELIMINATES THE NEED FOR TYPESQ.COM AND MLIST.COM BOTH BEING ONLINE ON RCPM'S. ZED ASCII FILES, AND THEN "TYPE" TP-ASP COM/012P-ASP DOCC3456789:;P-ASP AQMt<=>?@ABCDEFGHIJPRINT22 COM KLPRINT22 DOCMNOPQLIST14 COMQRSTQLIST DOC$UVWXYQLIST14 AQMZ[\]^_`abcdefghiQLIST14 AQM^jklmnopqrstuSHOW COMvSHOW DOCwSHOW ASMxyz{SLIST COM |}SLIST DOC~TYPELZ13COMTYPELZ13DOC TYPELZ13ZZ0TYPELZ13ZZ05VLIST COM VLIST DOC XTYPE COMFXTYPE $$$ This is the release date of the disk. LIST3 COM LIST3 DOC LIST3 ASM ;LISTT COM LISTT DOC LISTT AQM =P-ASP COM / P-ASP DOC 3!P-ASP AQM <:PRINT22 COM KPRINT22 DOC MQLIST14 COM Q QLIST DOC UQLIST14 AQM Zo% Fog Library Disk FOG-CPM.105 Copyright (1986) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. File Listing Programs. Filename Description -07-00 .86 This is the release date of the disk. -CPM105 .DOC This is the description of the disk contents. LIST .BAS 9981 2K Print program listings from within MBASIC. LIST3 .COM 8736 2K [LIST3 1 of 3] List ASCII or WordStar files to screen or printer. ASseMbler source is included. LIST3 .DOC BF90 2K [LIST3 2 of 3] LIST3 .ASM 1278 15K [LIST3 3 of 3] LISTT .COM 22E4 2K [LISTT 1 of 3] Lists text file to printer with headings, page numbers, etc. Squeezed ASseMbler source code is included. LISTT .DOC DD75 5K [LISTT 2 of 3] LISTT .AQM 4F6B 16K [LISTT 3 of 3] P-ASP .COM 646A 4K [P-ASP 1 of 3] Designed to print .ASM, .SYM. and .PRN files. will not work with WordStar document files. Squeezed ASseMbler source is included. P-ASP .DOC E2AD 9K [P-ASP 2 of 3] P-ASP .AQM 74BA 15K [P-ASP 3 of 3] PRINT22 .COM 00C5 2K ver. 2.2 [PRINT 1 of 2] Prints files with margins, heading and page numbers. Many other options are also available. PRINT22 .DOC C7B3 4K ver. 2.2 [PRINT 2 of 2] QLIST14 .COM DB4F 4K ver. 1.4 [QLIST 1 of 3] List either squeezed or unsqueezed files. Squeezed ASseMbler source code is included. QLIST .DOC 4C24 5K ver. 1.4 [QLIST 2 of 3] QLIST14 .AQM 02AB 28K ver. 1.4 [QLIST 3 of 3] SHOW .COM 4009 1K [SHOW 1 of 3] Lists files to screen wit pagination. ASseMbler source code is included. SHOW .DOC D1C9 1K [SHOW 2 of 3] SHOW .ASM 0122 4K [SHOW 3 of 3] SLIST .COM EA49 2K [SLIST 1 of 2] List files to either the printer or the screen. SLIST .DOC B81B 1K [SLIST 2 of 2] TYPELZ13.COM 3091 3K ver. 1.3 [TYPELZ 1 of 3] Will display squeezed. ASCII, or crunched files. Crunched Z80 source is included. TYPELZ13.DOC 4EE8 2K ver. 1.3 [TYPELZ 2 of 3] TYPELZ13.ZZ0 420B 23K ver. 1.3 [TYPELZ 3 of 3] VLIST .COM A3C4 2K [VLIST 1 of 2] Varies speed at which a file is listed to the screen. VLIST .DOC E5F8 2K [VLIST 2 of 2] XTYPE .COM 0033 9K [XTYPE 1 of 2] Types squeezed or ASCII files to the screen. XTYPE .DOC 5646 1K [XTYPE 2 of 2] I, or crunched files. Crunched &'