IMD 1.16: 28/05/2007 16:34:33 -FOG/UTL009         EPSNPRTRDOCAUTOMOD COM AUTOMOD ASM-AUTOST ASM% AUTOST COM!SETAUTO COM"SETAUTO DOC#AUTOMOD DOC!$%&UNERA COM'UNERA DOC (FUNCTIONCOM)FUNCTIONDOC *FUNCTN2 COM+RPIP HEXRPIP SUB,; PIP Patch to add (R)eset Disks and (Q)uick Repeat function ; ; LIFELINES, Vol III, Number 3 Page 15 ; Patching PIP for multiple file transfers-Kelly Smith ; ; ; A>ddt pip.com invoke DDT to load memory with PIP.COM ; DDT VERS 2.2  DDT telling us that PIP.COM ; NEXT PC uses 29 pages of memory ; 1E00 0100 ; -irpip.hex input the patch file rpip.hex ; -r read it to memory(overlaying parts of PIP) ; NEXT PC ; 1E00 0100 DDT t-FOG/UTL009RPIP ASM!DISK DOC"DSCLABELASMS DSCLABELCOM MAKE COMEPSNPRTRASM\EPSNPRTRCOM  o if no filename lxi d,msg1 ; and sign in please cz prnt$messg ; print message jmp start$pip ; and off to pip ; added: lxi h,con$buff ; point to pip's console buffer mvi m,128 ; set-up for 128 character command string xchg ; pointue PIPing(may be different formats from previous) ; ; *q which resets disk drives as above, and also repeats last ; commands(great for B:=A:*.*-just keep changing source and ; destination disks) ; ; bdos equ 05h ; bdos entry address er swapped to [DE] for CP/M mvi c,rdcbuf ; read console buffer function call bdos ; let CP/M do the work lda con$buff+1 ; check how many characters typed cpi 1 ; just one? jnz save$char$cnt ; if not, save char count and return lda con$buff+fcb equ 5ch ; default file control block address dfcb equ 080h ; default disk/command buffer ; pmessg equ 9 ; print message function rdcbuf equ 10 ; read console buffer function rsetdsk equ 13 ; reset disk syst2 ; get single character command ani 05fh ; force to uppercase character cpi 'Q' ; repeat pip function last specified jnz reset$dsk$sys ; if not, check for reset disk system lhld char$cnt ; get character count shld con$buff+1 ; stuff back toem function ; start$pip equ 04ceh ; normal start of PIP con$buff equ 1ecbh ; pip's internal console buffer pip$cr$lf equ 082eh ; pip's internal cr/lf output routine pip$prompt equ 053ch ; pip's command parser entry address pip$patch equ 096fh ; pip g console buffer lxi d,msg3 ; tell them repeating last process call prnt$messg ; print message lxi h,con$buff+1 ; point to last command entry in console buffer mov c,m ; get command length to calculate offset mvi b,0 ; clean high byte bias iets patched at this address ; lf equ 0ah ; line feed character cr equ 0dh ; carriage return character ; org 100h ; jmp begin ;jump over INP:/OUT: vectors and EOF ; org 010ah ; begin: lda dfcb ; filename specified? ora a ; zernx h ; bump to start of command string address dad b ; add bias to locate end of string mvi m,'$' ; tag end of command string for message lxi d,con$buff+2 ; point to command string for message out call prnt$messg ; print message mvi c,rsetelling us again ; -^C Control C to exit DDT ; A>save 29 rpip.com save 29 pages of memory as RPIP.COM ; ; ; You now have two new PIP commands ; ; *r which allows you to insert different disk(s) in any drive ; and contin  t R/W call prnt$messg ; print message mvi c,rsetdsk ; reset disk system function call bdos ; let CP/M do the work call pip$cr$lf ; do carriage return/line feed pop h ; clean the stack for pip restart jmp pip$prompt ; do pip '*' prompt and wait for command ; save$char$cnt: ; lhld con$buff+1 ; save character count + character shld char$cnt ; save character count ret ; return ; prnt$messg: ; mvi c,pmessg ; print message function call bdos ; let CP/M do the work ret ; return ; msg1 db cr,lf,'PIP 1.5 with (R)eset Disks and (Q)uick Repeat',cr,lf,'$' ; msg2 db cr,lf,'Resetting all disks to R/W$' ; msg3 db cr,lf,'Repeating: $' ; char$cnt dw 0 ; console buffer character count ; org pip$patch ; patch to get to added code goes here ; jmp added ; check for reset or repeat command ; ; end  msg3 db cr,lf,'Repeating: $' ; char$cnt dw 0 ; console buffer character count ; org pip$patch ; patch to get tdsk ; reset disk system function call bdos ; let CP/M do the work ret ; return ; reset$dsk$sys: ; cpi 'R' ; reset disk system? jnz save$char$cnt ; if not, restore chracter count and return lxi d,msg2 ; tell them all disk se  ive A. At the A> prompt, type AUTOMOD The program is self-prompting. Upon completion, move the modified disk from drive B to drive A and press . AUTOST.ASM is from Chapter 8 of the Osborne 1 User's Reference Guide. This particular version is programmed to auto-start SuperCalc. You may modify it to start some other program of your choice. Refer to the User's Guide. SETAUTO was received from the Osborne Users Group (OUG) of the Washington D.C. area. It enables  DISK.DOC -FOG/UTL.009 First Osborne Group (FOG) Utilities Disk This disk contains three utilities for manipulating the Osborne 1 auto-start (AUTOST) feature. AUTOMOD enables entry of a command l changing the command executed upon cold start (or ) to a command of your choice (6 characters or less). It also enables automatic execution of the command upon warm start () or upon both cold start and warm start. Place ine up to 36 characters which will be executed upon cold start (or ). If the command line is N characters, where N > 6, first use SETUP to program function key 0 (zero) to contain (N - 6) dummy characters (e.g., blanks). Place th SETAUTO.COM in drive A. At the A> prompt, type SETAUTO d:option command where d is the drive containing the disk to be modified, option is COLD or WARM or BOTH, and command is the command to be executed (6 characters maximum). When completee disk to be modified in drive B and SETUP.COM in drive A. At the A> prompt, type SETUP Select source drive B, function E, and key 0. Type (N - 6) blanks terminated by . Press X, then X, then B. Finally, place AUTOMOD.COM in dr, place the modified disk in drive A and press . For additional information, see SETAUTO.DOC. DSCLABEL was submitted by Dennis McFerran of FOG. It will print 3 1/2" x 15/16" labels containing a list of files found in the disk di  ives and repeat the last PIP function. To use, place RPIP.COM in drive A. At the A> prompt, type RPIP For further information, refer to the first 26 lines of RPIP.ASM. As per discussion in the FOGHORN, RPIP.COM was removed from this disk an to setup special printing features on your Epson printer. The program is self-prompting. Place EPSNPRTR.COM in drive A. At the A> prompt, type EPSNPRTR Also, see EPSNPRTR.DOC. FUNCTION was submitted by John Florent of FOG. It will lid RPIP.SUB and RPIP.HEX as added. To patch your PIP.COM, you must have the following files on a disk: DDT.COM PIP.COM SUBMIT.COM XSUB.COM * RPIP.HEX * RPIP.SUB The marked files are on this disk, the others should be on your CP/M diskst function key settings on the screen. Place FUNCTION.COM in drive A. At the A> prompt, type FUNCTION See FUNCTION.DOC for information. FUNCTN2 is identical to FUNCTION, but was patched to eliminate blank lines on the screen. This provides. At the A> type: SUBMIT RPIP You will then find the file RPIP.COM on your disk and can proceed as above. UNERA will unerase (recover) a file which was previously ERAsed. Place UNERA.COM in drive A. At the A> prompt, type UNERA d:f a more compact display of the function key settings. MAKE redefines the USER number for specified files. Instructions are built-in. Place MAKE.COM in drive A. At the A> prompt, type MAKE This utility was received from OUG. RPIP extenilename.typ To identify erased files, see DUU on -FOG/UTL.006. Jim Woolley FOG Disk Librarian September, 1982 ds PIP to allow reseting disk drives without exiting. This premits you to change a disk, reset it to R/W, then continue with standard PIP functions. New functions recognized by RPIP are R, which will reset all drives, and Q, which will reset dr> *N& N2 !p+q!6!6+6 !6: S: M!6g8:N2M*M8p!6!6!6>!ڕ*&P 6!4z!6!6#6#6!6*M8:ھ:*͇g2ê::¿::,͡A<2O>rectory. It will aslo print a list of function keys programmed on the disk. An Epson printer is required to properly utilize this program. For instructions, refer to the first 48 lines of DSCLABEL.ASM. EPSNPRTR, received from OUG, may be used  :=O!L NE!4 E E:/.*&L 6$L9k9.Xͯ *KM^020 :020:121'ͳ':²ͯ !G6!"!"7 *M^n/ :a/:H!6:ͯ !&6:[ ͱ!N5!6:%:<2*6 * 6å!q!6> !d*&I :]>!4A>:<2O* :w:?†!6!q!6?!:ҠgÐ!q*&*~!6:22: :]Hں:A2O>: 2ͯ :03010000C30A012E :10010A003A8000B7117A01CC7401C3CE0421CB1E08 :10011A003680EB0E0ACD05003ACC1EFE01C26D01F7 :10012A003ACD1EE65FFE51C256012AD90122CC1EE3 :10013A0011C901CD740121CC1E4E060023093624B3 :10014A0011CD1ECD74010E0DCD0500C9FE52C26D32 :10015A00011÷:S:QHI:N<22: H@"2Í202O> c!6Í202O> ڍ*&O*& !sc*&P :w:·>!ұͯ :22:_!6=!6>'!E!4!p+q*0 !1AC01CD74010E0DCD0500CD2E08E1C3 :10016A00C33C052ACC1E22D901C90E09CD0500C9F6 :10017A000D0A50495020312E35207769746820289D :10018A00522965736574204469736B7320616E64C8 :10019A00202851297569636B205265706561740D59 :1001AA000A240D0A526573657474696E6720616C5Er+s+p+q*~$7*>*>H&>*#"*#"> 2:R͎:!6!6=2:ʙ!6:“H9Ž>!6-e!6ͻ2=2ʺ-é:>>"ͻ2:!!5ͻ2ͬ!\ :1001BA006C206469736B7320746F20522F57240D5F :1001CA000A526570656174696E673A2020202400BE :0101DA000024 :03096F00C31701AA :0000000000 -:>>!p+q:,!6*DM9:<!6:z 2W!6D*&L :w:<2Ov*:>=20O> ڒ:0:AO>Ҥ::A }}Hͬ!wͻO`idͻV[2O>2:!X!6:!' !'6!36' :1/!aE*#">z?C9IͲÁ.!6> !ڇ*&' ~2 ʀ: y.*M!4Q>!қ:=2á:2:Ҭ\>!ҿ:=2K:2K!:!:K\: \!p+q͈**M8):[ͱ!N5!6ñ:5!6#6>!ڰ!6:<2O>/:!O!T *M͡H~K:¡!6[–ͱ!N5:2:2!4=:[¼ͱ4:!6:.2O8: :* ͇g   WILL WORK WITH MX-80 BUT TRY IT. IT USES ; EPSON CONTROL CODES SO WOULD PROBABLY HAVE ; TO BE MODIFIED FOR OTHER PRINTERS. ; ; ANY SUGGESTIONS OR COMMENTS SHOULD BE FORWARDED ; TO: DENNIS MC FERRAN ; 1038 POLK LANE ; SAN JOSE, CA 95117 ; (408-296-6021) ; ; ; TO USE-------- ; 1) PLACE DISC WITH THIS PROGRAM ON IT IN DRIVE B ; 2) TURN ON YOUR PRINTER. ; 3) PLACE DISC THAT YOU WOULD LIKE TO LABEL IN DRIVE A: ; 4) GET INTO CPM (IF YOU'RE NOT THERE ALREADY). ; 5) TYPE B:DIRLABEL ; 6) PLACE ANOTHER DISC IN DRIVE A AND REPEAT ; AS MANY TIMES AS YOU WOULD LIKE. ; ; 8/82 Revised by Jim Woolley, FOG Disk Librarian ; 4 files/line, " | " between files, unidirectional print ; (unidir. print = esc,U,1 may only work with Graftrax) ; ; 9/82 Revised by Dennis McFerran, FOG, to look for disk ; number on USER 15. This was you can ERA *.* without ; effecting the disk number. Also if there is room on ; the label, the program will now; 6/25/82---THIS PROGRAM, WHICH WAS ADAPTED FROM ; THE FMAP(CATALOG) PROGRAM, WILL LIST ; YOUR FILE DIRECTORY ON A LABEL SIZED ; OUTPUT. IT WAS WRITTEN USING AN EPSON ; MX-100. I DON'T KNOW WHETHER OR NOT IT ; print SPACE LEFT on ; the disk and the DATE that you labelled the disk. ; ;*********EQUATE TABLE - BDOS*********************** ; * RDCHR EQU 1 ;READ CHAR FROM CONSOLE * WRCHR EQU 5 ;WRITE CHR TO PRINTER * PRINT EQU 9 ;PRINTDM!  ::=H-\:N2O_og_{ozg^#V))) _{ozg^#V) d^#V|g}o n_{ozgO{ozgi`N#Fogo&og H ©=¨   FCB SPECIFIED? MKBLANK MVI A,' ' STA DATEBUFF+2 RET OKDATE LDA DATEBUFF+2 CPI '0' CZ MKBLANK LXI H,FCB+1 MOV A,M CPI ' ' JNZ GOTFCB ;NO FCB - MAKE FCB ALL '?' MVI B,11 ;FN+FT COUNT QLOOP MVI M,'?' ;STORE '?' IN FCB INX H DCR B OF TRANSIENT PROG AREA* DATEBUFF EQU TPATOP-16;BEGINNING OF DATE BUFFER * ; * ;**********EPSON MX-100 PRINTER CODES*************** ESCAPE EQU 27 ; * SPACING EQU 65 ;LINE SPACING * CONDON EQU 15 ;CONDENSE JNZ QLOOP ;LOOK UP THE FCB IN THE DIRECTORY GOTFCB MVI C,FSRCHF ;GET 'SEARCH FIRST' FNC LXI D,FCB CALL BDOS ;READ FIRST INR A ;WERE THERE ANY? STA TEMP ;SAVE CNZ SOME ;GOT SOME - PRT TITLE, CONT GOTFCB1 MVI E,15 MVI C,32 CALL BDOSD PRINTING ON * CONDOFF EQU 18 ;CONDENSED PRINTING OFF * UNIDIR EQU 'U' ;UNIDIRECTIONAL PRINT * FORLEN EQU 67 ;SETS FORM LENGTH * FORMFEED EQU 12 ;FORM FEED * CR EQU 13 ;CARRIAGE RETURN * LF EQU 10 ;LINE FEED  MVI C,FSRCHF ;GET 'SEARCH FIRST' FNC LXI D,FCB CALL BDOS ;READ FIRST INR A ;WERE THERE ANY? STA TEMP ;SAVE CNZ SOME1 ;GOT SOME - PRT TITLE, CONT LXI D,NONMSG MVI C,9 CALL BDOS JMP EXIT1 SOME1 CALL SOME MVI E,00 MVI C,32 CALL* ;*************************************************** ; ORG 100H START LXI H,0 ;SAVE THE OLD STACK DAD SP ;H=STACK SHLD STACK ;SAVE IT LXI SP,STACK ;GET NEW STACK ;RESET SYSTEM MVI C,13 CALL BDOS ;SAVE FILE WRITE REQUEST CHAR LDA FC BDOS JMP PRTTL ;READ MORE DIRECTORY ENTRIES MOREDIR MVI C,FSRCHN ;SEARCH NEXT LXI D,FCB CALL BDOS ;READ DIR ENTRY INR A ;CHECK FOR END (0FFH) RZ ;GOTFCB1 ;NO MORE - SORT & PRINT ;POINT TO DIRECTORY ENTRY SOME DCR A ;UNDO PREV 'INR A' B+17 STA FILESW ;DATE REQUEST MVI A,'$' STA DATEBUFF+10 MVI A,8 STA DATEBUFF DTE LDA DATEBUFF+8 CPI '8' JZ OKDATE LXI D,DATEREQ MVI C,PRINT CALL BDOS MVI C,RDCON LXI D,DATEBUFF CALL BDOS JMP DTE ;NO ANI 3 ;MAKE MODULUS 4 ADD A ;MULTIPLY... ADD A ;..BY 32 BECAUSE ADD A ;..EACH DIRECTORY ADD A ;..ENTRY IS 32 ADD A ;..BYTES LONG LXI H,81H ;POINT TO BUFFER ;(SKIP TO FN/FT) ADD L ;POINT TO ENTRY MOV L,A ;SAVE (CAN'T CARRY TO H) ;MOVE  CONSOLE BUFF * RDCON EQU 10 ;READ CONS BUFFER * CONST EQU 11 ;CHECK CONS STAT * FSRCHF EQU 17 ; " " * FSRCHN EQU 18 ; " " * FCB EQU 5CH ;FILE CONTROL BLOCK * BDOS EQU 5 ; * TPATOP EQU 0C700H-1;TOP  T ENTRIES DONE LXI H,ORDER SHLD NEXTT MVI A,4 STA PRCOUNT ;PRINT AN ENTRY ENTRY MVI C,CONST ;CK STATUS OF KB CALL BDOS ;ANY KEY PRESSED? DCR A JZ ABORT ;YES, ABORT LHLD NEXTT ;GET ORDER TABLE POINTER MOV E,M ;GET LO ADDR INX H MOV COUNT INR A STA COUNT JMP MOREDIR ;PRINT TITLE PRTTL LXI H,TTL CALL WRCON ;SORT AND PRINT SPRINT LDA COUNT ;INIT THE ORDER TABLE LXI H,ORDER LXI D,TABLE LXI B,31 ;ENTRY LENGTH BLDORD MOV M,E ;SAVE LO ORD ADDR INX H MOV M,D ;SA D,M ;GET HI ADDR INX H SHLD NEXTT ;SAVE UPDATED TABLE POINTER XCHG ;TABLE ENTRY TO HL MVI B,8 ;FILE NAME LENGTH CALL TYPEIT ;TYPE FILENAME MVI A,'.' CALL TYPE MVI B,3 ;GET THE FILETYPE CALL TYPEIT INX H ;SKIP EXTENT INX H ;SKIP VE HI ORD ADDR INX H XCHG ;TABLE ADDR TO HL DAD B ;POINT TO NEXT ENTRY XCHG DCR A ;MORE? JNZ BLDORD ;..YES LDA COUNT ;GET COUNT STA FILCOUNT;SAVE AS # TO PRINT STA SCOUNT ;SAVE AS # TO SORT DCR A ;ONLY 1 ENTRY? JZ DONE ;..YES, SO SKINX H ;UNUSED MOV A,M ;GET REC COUNT DCR A ;FUDGE RAR ;DIVIDE RAR ;..BY 8 RAR ANI 1FH ;DELETE GARBAGE INR A ;MAKE RELATIVE TO 1, NOT 0 MVI B,16 ;SAVE AS MAX # EXTENTS MOV A,M ;RELOAD RECORD COUNT INX H ;SKIP RECORD COUNT EXTLP MOIP SORT SORT XRA A ;GET A ZERO STA SWITCH ;SHOW NONE SWITCHED LDA SCOUNT ;GET COUNT DCR A ;USE 1 LESS STA TEMP ;SAVE # TO COMPARE STA SCOUNT ;SAVE HIGHEST ENTRY JZ DONE ;EXIT IF NO MORE LXI H,ORDER ;POINT TO ORDER TABLE SORTLP CALL COMPR ;CV A,M ;GET EXTENT BYTE ORA A ;EMPTY? JZ ENDEXT ;..YES PUSH PSW LDA EXTCOUNT INR A DAA INR A DAA STA EXTCOUNT POP PSW INX H ;POINT TO NEXT CHR DCR B ;MORE IN EXTENT? JZ ENDEXT MVI A,0 CMP M JNZ EXTLP ;YES OMPARE 2 ENTRIES CM SWAP ;SWAP IF NOT IN ORDER INX H ;BUMP ORDER INX H ;..TABLE POINTER LDA TEMP ;GET COUNT DCR A STA TEMP JNZ SORTLP ;CONTINUE ;ONE PASS OF SORT DONE LDA SWITCH ;ANY SWAPS DONE? ORA A JNZ SORT ;SORT IS ALL DONE - PRINENDEXT MVI B,16 LDA NFILE ;GET # FILES INR A ;BUMP DAA ;MAKE DECIMAL STA NFILE ;SAVE IT BACK LDA PRCOUNT DCR A STA PRCOUNT CPI 0 JZ CLCR LXI H,SPACES CALL WRCON JMP CLCRPLUS CLCR CALL CR1 ;END, TYPE C/R MVI A,4 ENTRY TO TABLE XCHG ;ENTRY TO DE LHLD NEXTT ;NEXT TABLE ENTRY TO HL MVI B,31 ;ENTRY LENGTH TMOVE LDAX D ;GET ENTRY CHAR MOV M,A ;STORE IN TABLE INX D INX H DCR B ;MORE? JNZ TMOVE SHLD NEXTT ;SAVE UPDATED TABLE ADDR LDA COUNT ;GET PREV   EXTCOUNT MOV B,A MVI A,92H SUB B DAA CALL XO MVI A,'K' CALL TYPE LXI H,LABDAT CALL WRCON LXI H,DATEBUFF+2 CALL WRCON EXIT1 MVI E,00 MVI C,32 CALL BDOS LXI H,RESPRINT CALL WRCON LHLD STACK ;GET OLD STACK SPHL CMP M RZ MOV A,M PUSH H CALL TYPE POP H INX H JMP WRCON TYPEIT MOV A,M CALL TYPE INX H DCR B JNZ TYPEIT RET SPACE MVI A,' ' JMP TYPE CR1 MVI E,13 ;PRINT MVI C,5 ;C/R CALL BDOS MVI E,10 ;LF MVI C,5 JMP BDOS TEMP DS 1;MOVE TO STACK RET ;..AND RETURN RESPRINT DB FORMFEED,CONDOFF,ESCAPE,SPACING,12 DB ESCAPE,FORLEN,66 ;EPSON CODES DB ESCAPE,UNIDIR,0,'$' ;TO RESTORE PRINTER TO NORMAL ;COMPARE ROUTINE FOR SORT COMPR PUSH H ;SAVE TABLE ADDR  ;SAVE DIR ENTRY ;ERROR EXIT ERXIT POP D ;GET MSG MVI C,PRINT JMP CALLB ;PRINT MSG, EXIT ;ABORT - READ CHAR ENTERED ABORT MVI C,RDCHR CALLB CALL BDOS ;DELETE THE CHAR ;FALL INTO EXIT ;EXIT - ALL DONE , RESTORE STACK EXIT LDA FILCOUNT CPI MOV E,M ;LOAD LO INX H MOV D,M ;LOAD HI INX H MOV C,M INX H MOV B,M ;BC, DE NOW POINT TO ENTRIES TO BE COMPARED XCHG CMPLP LDAX B CMP M INX H INX B JZ CMPLP POP H RET ;COND CODE TELLS ALL ;SWAP ENTRIES IN THE ORDER TABLE SWAP 25 ;DID IT PRINT MORE THAN SIX LINES JNC EXIT1 ;IF SO DON'T PRINT SPACE MESSAGE CPI 24 ;DID IF PRINT 6 FULL LINES JZ NOCRLF ;IF SO DON'T DO EXTRA CR/LF CPI 21 ;DID IT PRINT MORE THAN FIVE LINES JNC NOCRLF2 ;IF SO DON'T DO EXTRA CR MVI A,1 STA SWITCH ;SHOW A SWAP WAS MADE MOV C,M INX H PUSH H ;SAVE TABLE ADDR+1 MOV B,M INX H MOV E,M MOV M,C INX H MOV D,M MOV M,B POP H MOV M,D DCX H ;BACK POINTER TO CORRECT LOC'N MOV M,E RET ;HEX OUTPUT XO PUSH PSW /LF CPI 20 JZ NOCRLF2 CPI 16 JZ NOCRLF2 CPI 12 JZ NOCRLF2 CPI 8 JZ NOCRLF2 CPI 4 JZ NOCRLF2 MVI A,CR CALL TYPE MVI A,LF CALL TYPE NOCRLF2 MVI A,CR CALL TYPE MVI A,LF CALL TYPE NOCRLF LXI H,EXTMSG CALL WRCON LDA ;SAVE CHAR RAR RAR RAR RAR CALL NIBBL ;PRINT LEFT NIBBLE POP PSW ;GET VALUE BACK NIBBL ANI 0FH ;ISOLATE NIBBLE CPI 10 ;NUMBER? JC XNUM ;YES ADI 7 ;FUDGE ALPHA HEX XNUM ADI '0' ;MAKE PRINTABLE JMP TYPE DS 30 ;STACK AREA STACK DS 2 ; STA PRCOUNT ;SEE IF MORE ENTRIES CLCRPLUS LDA COUNT DCR A STA COUNT JNZ ENTRY ;YES, MORE JMP EXIT ;TYPE CHAR IN A TYPE PUSH B PUSH D PUSH H MOV E,A MVI C,WRCHR CALL BDOS POP H POP D POP B RET WRCON MVI A,24H   E EQU $ ;READ ENTRIES IN HERE END 100H DS 1 ;'F' IF WRITING FILE BUFAD DW 80H ;OUTPUT ADDR MYFCB DB 0,'NAMES SUB',0 DS 19 DB 0 ORDER DS 128 ;ORDER TABLE TABL 0 SPACES DB ' | $' DATEREQ DB 'Please enter today''s date as mm/dd/yy---->$' NONMSG DB CR,LF,'++This program is looking for a file with the name' DB CR,LF,' -disknam.###(disk number) in USER 15. This becomes' db CR,LF,' the disc referencMB DB '$' COL2 DB CR,' | $' HDG DB ' SPECIAL FUNCTION KEYS' CRLF DB CR,LF,'$' SAVADDR DS 2H SAVLENGTH DS 2H LENGTHFLAG DB 00H ENTRYFLAG DB 01H FLAG1 DB 01H ADDER DB 30H SPCS DB ' = $' BACKSe and will remain on the disc even' db CR,LF,' if you ERA *.*.' db CR,LF,LF,'Please save your disk number now as follows:' db CR,LF,' A> USER 15' db CR,LF,' A> SAVE 0 -disknam.### ' db CR,LF,' this dash--^ is IZE DB FORMFEED,CONDOFF,ESCAPE,SPACING,12,ESCAPE,FORLEN,66,'$' COUNT DB 0 ;ENTRY COUNT SCOUNT DB 0 ;# TO SORT PRCOUNT DB 0 ;COUNTER FOR ITEMS ON LINE SPACES DB ' | $' SWITCH DB 0 ;SWAP SWITCH FOR SORT FILESW DS 1 ;'N' IF NO SP FUN KEY LABEL BUFmandatory' db CR,LF,' A> USER 0',CR,LF,'$' TTL DB ESCAPE,FORLEN,0,1 ;SET PAGE LENGTH AT 1". DB ESCAPE,SPACING,8 ;SET LINE SIZE TO 8/72" DB ESCAPE,UNIDIR,1 ;SET UNIDIRECTIONAL PRINT.AD DW 80H ;OUTPUT ADDR MYFCB DB 0,'NAMES SUB',0 DS 19 DB 0 ORDER DS 128 ;ORDER TABLE TABLE EQU $ ;READ ENTRIES IN HERE END 100H  DB CONDON,'$' ;SET CONDENSED PRINT. LABDAT DB ' Label Date--$' SWITCH DB 0 ;SWAP SWITCH FOR SORT FILESW DS 1 ;'F' IF WRITING FILE BUFAD DW 80H ;OUTPUT ADDR MYFCB DB 0,'NAMES SUB',0 DS 19 DB 0 ORDER DS 128 ;ORDER TABLE TABLSAVE OLD STACK HERE NFILE DB 0 ;NUMBER OF FILES PRINTED ; NEXTT DW TABLE ;NEXT TABLE ENTRY EXTCOUNT DB 02 EXTMSG DB 'Space Left on Disk = $' COUNT DB 0 ;ENTRY COUNT SCOUNT DB 0 ;# TO SORT PRCOUNT DB 0 ;COUNTER FOR ITEMS ON LINE FILCOUNT DB   y's date as mm/dd/yy---->$ ++This program is looking for a file with the name -disknam.###(disk number) in USER 15. This becomes the disc reference and will remain on the disc even if you ERA *.*. Please save your disk number now as follows:  A> USER 15 A> SAVE 0 -disknam.### this dash--^ is mandatory A> USER 0 $CAU$ Label Date--$rNAMES SUBsc even if you ER!9"1 :m2>$2>2:8@  > 2:0:!]~ Z 6?#S\<2ġ \<2Ċ R͡ \<=!o*w#´":<2×!~ͺ:!Is#r# =:22= 2:=22 !p##:=2:!">2 =*^#V#">.ͭ###~=<~#~y:<'<'2#y>]:<'2:=2ʘ!ͺà>2:=2+_>$~ͭ#ú~ͭ#> í   :R0&&& &&&> ͭ> ͭ> ͭ> ͭ!ͺ:G>'͖>Kͭ!ͺ!ͺ !dͺ* A CBU$^#V#N#F #y>2N#F#^q#Vpr+s͟ ڨ0í_>$~ͭ#ú~ͭ#ISpace Left on Disk = $ | $Please enter toda  .g.: *.ASM B:TEMP.* CR???.BAS C:*.COM C*.COM etc. [New user #] may be any desired user area from 0 to 31. At least one space should be between the [Filename.typ] and [New user #]. MAKE defaults to changing only files in the ACTIVE user area. TNOT to make change $$$ is SYS CR to make change or any other input NOT to make change $$$ = $$$????????????????P*'"c 2!m ~ $0< < # ¨{<x Ҫڪ2# x Ҫڪ2~ ?*0ڪhis may be optionally over-ridden by specifying the user area FROM which you desire the files moved. [From user #] may be any user area 0 through 31 or may ambiguously specify the entire directory with a "*". The [New user #] should be followed immed Ҫ # x Ҫڪ2:\02822:O Qgg}oCڞ:_:2\f2:_!"!!\ ?ʥ# ™*! ~k#~y*:w:e<2e\͵: 0_ͺ o&)|g,>0_ͺiately by the option flag "$$$" and the [From user #], e.g.: MAKE *.BAS 3$$$10 or MAKE B:*.COM 0$$$2$$$͵Ô͵Ôʇ͇    ͺ úͿ* #>~ _ͺ #.ͺ |:<2s:e#2ef#2sͿ͵͉͵͉͵͉͵͇ `͵͉͵͉N͵͉g$ͺMAKE USER NUMBER CHANGE SYNTAX: DEFAULT: A>MAKE [Filename.typ] [New user #] OPTIONAL: A>MAKE [Filename.typ]b¤WxG [New user #]$$$[From user #] EXAMPLES: A>MAKE CBASIC.COM 5 A>MAKE *.BAS 5 B>MAKE A:*.HEX 15 A>MAKE B:*.* 21$$$0 A>MAKE *.ASM 3$$$* CR to continue : $$$ [Filename.typ] may be any ambiguous file reference, e*. ͵Ͱ ҌB͵Ϳ MAKE USER CHANGE - Ver. 1.5 $$$ Requires CP/M version 2.0 or higher. Drive select error $$$ Bad Sector Write Error $$$ Drive is set to R/O $$$ User must be 0-31 $$$ is R/O CR to make change or any other input    ;******************************** ;* * ;* Setup Epson Printer * ;* For a CPM system * ;* Written by M.M. Hessel * ;* 2/15/82 * ;* * ;******************************** ; ORG 0100H JMP START ; START IN THE MAIN PROGRAM ; ; DATA STORAGE AREA ; NTRY EQU 0005H ; CPM OUTPUT SUBROUTINE PSTR EQU 09 ; PRINT BUFFER FUNCTION GSTR EQU 0AH ; READ BUFFER FUNCTION PRTR EQU 05 ; PRINTER WRITE CHAR FUNCTION RFUNC EQU 01 ; CONSOLE READ CHAR FUNCTION WFUNC EQU 02 ; CONSOLE WRITE CHAR FUNCTION CS EQU 1AH ; ^Z, CLEAR SCREEN (HARDWARE DEPENDENT) CR EQU 0DH ; CARRIAGE RETURN LF EQU 0AH ; LINE FEED ; ; WRITTEN DATA STORAGE ; PRINON DB 0DH DB ' *****EPSON PRINTER PROGRAM*****' DB 0AH,0AH,0AH,0AH,07H,0DH DB ' !!!!! Load the PAPER FIRST!',0DH,0AH,0AH,0AH DB ' ***** Then TURNON the PRINTER****',0DH,0AH,0AH,0AH,07H DB ' Hit Any Key To Start The Program $' ; HLP DB 0DH DB '*****HELP INFORMATION*****',0DH,0AH,0AH,0AH   ,0AH,0AH DB ' 1. Emphasized Print On',0DH,0AH,0AH DB ' 2. Condensed Print On',0DH,0AH,0AH DB ' 3. Emphasized Print Off',0DH,0AH,0AH DB ' 4. Condensed Print Off',0DH,0AH,0AH DB ' 5. Double Strike On',0DH,0AH,0AH DB ' 6. Doubled',0DH,0AH,0AH DB 'You can select emphasized and then doublestrike',0DH,0AH DB 'to get boldface type.',0DH,0AH,0AH,0AH,0AH DB 'HIT ANY KEY TO CONTINUE $' ; SETUP DB 0DH DB ' ***SETUP PRINTER***',0DH,0AH,0AH DB ' 1. Select Ty Strike Off',0DH,0AH,0AH DB ' 7. No change',0DH,0AH,0AH DB ' Enter your Selection $' ; PSEL DB ' ***SELECT PAPER OUT MODE***',0DH,0AH,0AH DB ' 1. Select Paper End Detector',0DH,0AH,0AH DB ' 2. Deselects Paper End Detector',0DH,0AH,0AHpesize',0DH,0AH,0AH DB ' 2. Select Line Spacing',0DH,0AH,0AH DB ' 3. Select Paper Out Mode',0DH,0AH,0AH DB ' 4. Select International Font',0DH,0AH,0AH DB ' 5. Help Information',0DH,0AH,0AH DB ' 6. Exit Program',0DH,0AH,0AH DB ' Ent DB ' Enter your Selection $' ; INTFONT DB ' ***SELECT CHARACTER SET***',0DH,0AH,0AH DB ' 0. U.S.A.',0DH,0AH,0AH DB ' 1. France',0DH,0AH,0AH DB ' 2. Germany',0DH,0AH,0AH DB ' 3. England',0DH,0AH,0AH DB ' 4. Denmark',0DH,0AH,0AHer Your Selection $' ; SLINSP DB ' ***SELECT LINE SPACING',0DH,0AH,0AH DB ' 1. 6 lines/inch (Default)',0DH,0AH,0AH DB ' 2. 8 lines/inch',0DH,0AH,0AH DB ' 3. Choose special spacing!',0DH,0AH,0AH DB ' Enter Your Selection $' ; SPSPC DB ' 5. Sweden',0DH,0AH,0AH DB ' 6. Italy',0DH,0AH,0AH DB ' 7. Spain',0DH,0AH,0AH DB ' Enter Your Selection $' ; ERRMSG DB 07H,' DEFAULT USED $' ; SPCNG DS 4 ; Stores line spacing OLDSTK DS 2 DS 60 STACK EQU $ ; Allows 30 items  DB ' ***VARIABLE LINE SPACING***',0DH,0AH,0AH DB ' You can set line spacing between 1/72 to',0DH,0AH DB ' 85/72 of an inch',0DH,0AH,0AH,07H DB ' Enter a number between 1 and 85 ',0DH,0AH,0AH,'$' ; TSIZE DB ' ***SELECT TYPEFACE***',0DHon the stack ; ;******************************** ;* Subroutine "Savstk" * ;* Saves CPM registers/stack * ;* Define SP * ;******************************** SAVSTK POP B LXI H,0000 ; Clear HL DAD SP ; Get Stack Pointer  DB 'This program will setup your Epson printer until you',0DH,0AH DB 'turn on it off or select a new set of options.',0DH,0AH,0AH DB 'The enlarged print option was not included since',0DH,0AH DB 'it resets to normal size after each line printe  ED EXIT RET ; RETURN TO CPM ; ;******************************** ;* Subroutine "HELP" prints * ;* information about program * ;******************************** HELP CALL CLEAR CALL CRLF LXI D,HLP CALL PRINT CALL READ JMP M****************** ; RESTOR LHLD OLDSTK ; Get old Stack Pointer SPHL ; Put it in the register RET ; This returns to CPM ; ;******************************** ;* Subroutine "TURNON" reminds * ;* you to turn on the printer * ;*****ENU ; ;******************************** ;* Subroutine "CHARSET" selects * ;* one of an eight possible * ;* character sets U.S.A.,France,* ;* Germany,etc. * ;******************************** ; CHARSET CALL CLEAR *************************** ; TURNON CALL CLEAR CALL CRLF LXI D,PRINON CALL PRINT CALL READ RET ; ;******************************** ;* Subroutine "Menu" the main * ;* selection menu. Program * ;* returns to this menu aft CALL CRLF LXI D,INTFONT CALL PRINT CALL READ MVI E,1BH CALL PCHAR ; Escape to Printer MVI E,52H CALL PCHAR ; "R" to Printer SUI 30H ; Convert console input fom ASCII to Binary CMP B ; Is input < 0 ? JC INCORR ; If yes invalid er * ;* selecting option. Exit goes * ;* back to CPM * ;******************************** ; MENU CALL CLEAR CALL CRLF MVI E,CR CALL PCHAR LXI D,SETUP CALL PRINT CALL READ MVI B,36H CMP B JZ EXIT ; EXIT TO CPM DCR B C MVI B,08H CMP B ; Is input > 7 ? JZ SKIP JNC INCORR ; If yes invalid SKIP MOV E,A CALL PCHAR ; "Character Set" to printer JMP FIN INCORR MVI E,00H CALL PCHAR ; Default Set is USA FIN JMP MENU ; End of Character Set!! ; ;**MP B JZ HELP ; TO WRITE HELP INFORMATION DCR B CMP B JZ CHARSET ; CHARACTER SET FONT DCR B CMP B JZ PSMODE ; PAPER SELECTOR DCR B CMP B JZ LINESP ; LINE SPACING DCR B CMP B JZ TYPE ; TYPESIZE JMP MENU ; INCORRECT NUMBER SELECT****************************** ;* Subroutine "PSMODE" turn * ;* the paper end detector off * ;* or on. Default is on * ;******************************** PSMODE CALL CLEAR CALL CRLF LXI D,PSEL CALL PRINT CALL READ MVI E,1BH  SHLD OLDSTK ; Save SP LXI H,STACK ; Set HL with address of SP SPHL ; Set new Stack Pointer PUSH B ; Return address set RET ; ;******************************** ;* Subroutine "Restor" * ;* Restores stack to CPM * ;**************   an inch* ; spacing on the Epson. * ;******************************** LINESP CALL CLEAR CALL CRLF LXI D,SLINSP CALL PRINT ; Your choice line of spacing MVI E,1BH CALL PCHAR ; Send escape to the printer CALL READ MVI B,32H CM*********** ; TYPE CALL CLEAR CALL CRLF LXI D,TSIZE CALL PRINT CALL READ MVI B,37H ; Test the selection CMP B JZ MENU ; No change DCR B CMP B JZ DSOFF ; Doublestrike off DCR B CMP B JZ DSON ; Doublestrike on DCR B CMPP B JNZ SPSP MVI E,30H ; 8 Lines/inch CALL PCHAR ; To the printer JMP MENU SPSP MVI B,33H CMP B JZ SPECL DFL MVI E,31H CALL PCHAR ; 6 Lines/inch (Default) JMP MENU SPECL CALL CLEAR ; Variable line spacing CALL CRLF LXI D,SPSPC CA B JZ CNOFF ; Condensed printing off DCR B CMP B JZ EMOFF ; Emphasized printing off DCR B CMP B JZ CNON ; Condensed printing on DCR B CMP B JZ EMON ; Emphasized printing on JMP MENU ; To Menu DSOFF MVI E,1BH CALL PCHAR MVI E,LL PRINT MVI E,41H CALL PCHAR ; Send "A" to printer(Esc A) LXI H,SPCNG ; Address of console buffer MOV D,H ; Put H & L in MOV E,L ; D & E registers MVI M,02 ; Maximum buffer length = 2 INX H ; Point to character count byte MVI M,48H ; Doublestrike off JMP PTR DSON MVI E,1BH CALL PCHAR MVI E,47H ; Doublestrike on JMP PTR CNOFF MVI E,12H ; ^R Condensed off JMP PTR EMOFF MVI E,1BH ; Escape to printer CALL PCHAR MVI E,46H ; "F" emphasized off JMP PTR CNON MVI00 ; Zero charcter count CALL CHRSTR ; Console buffer read subroutine CKCHR LXI H,SPCNG+1 ; This routine checks input is it 1 to 85? MOV A,M ; Character counter CPI 02H ; Two characters? INX H INX H ; Point to units digit JZ CTES ; If yes  E,0FH ; ^O Condensed on JMP PTR EMON MVI E,1BH ; Escape to printer CALL PCHAR MVI E,45H ; "E" emphasized on PTR CALL PCHAR NOCHG JMP MENU ; ;******************************** ; Subroutine "LINESP" provides a* ; choice of 1 - 85/72 ofprocess two digits CPI 1 ; One character? JZ SHIFT ; If yes shift tens to unit position JMP DEF ; If 0 set default CTES MOV A,M ; Put units digit in A CALL TEST ; Test if it is in the range 0 to 9 TENS DCX H ; Point to tens digit MOV A, CALL PCHAR MVI B,32H CMP B JNZ SELECT MVI E,38H CALL PCHAR JMP MENU SELECT MVI E,39H CALL PCHAR JMP MENU ; ;******************************** ;* Subroutine "TYPE" sets the * ;* typeface * ;*********************  ***** ;* Subroutine "Clear Screen" * ;* for Osborne ^Z =1AH * ;******************************* ; CLEAR PUSH PSW MVI A,CS CALL WCHAR POP PSW RET ; ;******************************* ;* Subroutine "Write" one * ;ns input to hex ADD A ; *2 ADD A ; *4 ADD M ; *5 ADD A ; *10 INX H ; point M to units ADD M ; Conversion complete CPI 0 ; Is it 0 JZ DEF CPI 86 ; Is it >85 JNC DEF MOV E,A CALL PCHAR ; Send spacing to printer RET SHIFT * character to the console * ;******************************* ; WCHAR PUSH H PUSH D PUSH B PUSH PSW MOV E,A ; PUT CHAR IN THE E REGISTER MVI C,WFUNC ; WRITE CHARACTER FUNCTION CALL NTRY POP PSW POP B POP D POP H RET ; DCX H ; Point to tens digit MOV A,M ; Move it to accumulator MVI M,30H ; Store ASCII 0 in tens INX H ; Point to units digit MOV M,A ; Put tens in unit place JMP CTES BLANK CPI 20H ; Is it blank? RNZ MVI A,30H ; Yes put an ASCII 0 in A. ;******************************* ;* Subroutine CRLF * ;******************************* ; CRLF PUSH PSW MVI A,CR ; Carriage return CALL WCHAR MVI A,LF ; Line Feed CALL WCHAR POP PSW RET ; ;*************************** MOV M,A ; Store it RET DEF POP D DEFLT MVI E,0CH CALL PCHAR ; Send 12/72 to printer 6 lines/inch LXI D,ERRMSG CALL PRINT JMP MENU ; ;******************************** ;* Subroutine "Print" a string * ;* on the console. St***** ;* Subroutine "READ" character* ;* from the console * ;******************************** ; READ EQU $ ; REGISTERS NOT SAVED MVI C,RFUNC CALL NTRY ; STORES THE CHARACTER IN A RET ; ;********************************ring must * ;* end with a $ sign * ;******************************** ; PRINT PUSH H ; PRESERVE REGISTERS PUSH D PUSH B PUSH PSW MVI C,PSTR CALL NTRY POP PSW POP B POP D POP H RET ; ;************************** ;* Subroutine "CHRSTR" reads a * ;* string of characters from * ;* the console * ;******************************** ; CHRSTR MVI C,GSTR CALL NTRY RET ; ;******************************** ; Subroutine "PCHAR" lists a *M CALL BLANK ; Is it blank? CALL TEST ; Test for 0 to 9 CALL CONV ; Convert to hex from decimal JMP MENU ; Done! TEST SUI 30H ; Tests for digit JC DEF ; <0 CPI 0AH JNC DEF ; >9 MOV M,A ; Store digit RET CONV MOV A,M ; Converts te   select a new set of options. The enlarged print option was not included since it resets to normal size after each line printed You can select emphasized and then doublestrike to get boldface type. HIT ANY KEY TO CONTINUE $ ***SETUP PRINTER***CALL SAVSTK ; Preserves CPM registers/stack CALL TURNON ; Reminds you to turn on printer CALL MENU MVI E,0AH ; Send CR to printer CALL PCHAR CALL RESTOR ; Returns to CPM END 0100H 1. Select Typesize 2. Select Line Spacing 3. Select Paper Out Mode 4. Select International Font 5. Help Information 6. Exit Program Enter Your Selection $ ***SELECT LINE SPACING 1. 6 lines/inch (Default) 2. 8 lines/inch 3. Choose special spacing! Enter Your Selection $ ***VARIABLE LINE SPACING*** You can set line spacing between 1/72 to 85/72 of an inch  Enter a number between 1 and 85 $ ***SELECT TYPEFACE*** 1. Emphasized Print On 2. Condensed Print On 3. Emphasized Print Off 4. Condensed Print Off 5. Double Strike On 6. Double Strike Off 7. No change Enter your Selection $ ***SELECT PAPER OUT MODE*** 1. Select Paper End Detector p *****EPSON PRINTER PROGRAM*****  !!!!! Load the PAPER FIRST! ***** Then TURNON the PRINTER****  Hit Any Key To Start The Program $ *****HELP INFORMATION***** This program will setup your Epson printer until you turn on it off or 2. Deselects Paper End Detector Enter your Selection $ ***SELECT CHARACTER SET*** 0. U.S.A. 1. France 2. Germany 3. England 4. Denmark 5. Sweden 6. Italy 7. Spain Enter Your Selection $ DEFAULT USED $  ; character on the printer * ;******************************** ; PCHAR PUSH PSW MVI C,PRTR CALL NTRY POP PSW RET ; ;******************************** ;* MAIN PROGRAM * ;******************************** ; START   a9h a8 O * \ 7aAKUZdiah Hph Gpph Fpph Eh a8 O * h \ 2˜0h a3ʦ1h a8 O G* Ah !T]6#6b !~##  ~+~ a0  w~# V _h +~60#w >0w h * a >@ _> @ > @  >Qa h L 2. Deselects Paper End Detector Enter your Selection $ !9"!>*8 O * \ 8 O  h * \ 6ʗʘʪv a8 O * \ a8 O ;* \ h Rh 0_h h a8 O * \ h 28h   TR and follow the menu. If you have any problems call Merrill Hessel, (301) 2295182 nights and weekends.ly program is well documented and is easily modified to provide the additional options of GRAFTRAX PLUS. Just enter EPSNPR~ AUTOMOD REV. 1.1 PROGRAM TO INSERT A USER SELECTABLE COMMAND LINE INTO CP/M ON DISK, TO BE EXECUTED ON ALL COLD STARTS FOR OSBORNE CP/M 2.2A-00F ENTER CP/M SOURCE DRIVE (A or B): ?$ ENTER COMMAND LINE TO BE INSERTED, (36 CHARACTERS MAXIMUM) OR FOR NO COMMAND. If COMMAND LINE has N characters, where N > 6, first use SETUP.COM to establish (N - 6) dummy characters in FUNCTION KEY 0 (zero). This will avoid disastrous overlay of FUNCTION and ARROW  EPSON PRINTER OPTION PROGRAM This program provides most of the options that the EPSON printer allows. The Assembly program is well documented and is easily modified to provide the additional options of GRAFTRAX PLUS. Just enter EPSNPR  2 2 *O !~`! # >2= R!"!"! "*DM*DM*DM:€ʒ :ʒ b::*¦*#"!#"*'z¾{"O ^#V^#V{=2>2$ 2:  : ;************************************* ;* * ;* "AUTOMOD" * ;* * ;* LEE SWORDY 14/5/82 * ;* * ;* Revision 1.2 WRONG!$ lDISK READ ERRORm $ lERROR: CP/M NOT PRESENT ON SOURCE DISKm $ lDISK WRITE ERRORm $ʒ b::*¦*#"!#"*'z¾{"O ^#V^#V{=2>2$ 2:  :1 by Jim Woolley, FOG * ;* Disk Librarian, 8/82. * ;************************************* ; AUXBUF EQU 200AH ; CP/M AUX CMND BFR ST ADR (BYTE CNT = 1st) ; ORG 100H JMP START ; MSG1 DB 1AH,' AUTOMOD REV. 1.1',0DH,0AH  DB ' PROGRAM TO INSERT A USER SELECTABLE COMMAND LINE',0DH,0AH DB 'INTO CP/M ON DISK, TO BE EXECUTED ON ALL COLD STARTS',0DH,0AH,0AH DB ' FOR OSBORNE CP/M 2.2A-00F',0DH,0AH,0AH,0AH DB 'ENTER CP/M SOURCE DRIVE (A or B): ?',8,8,8,'$' MSG2 DB 0DH,0AH,0AH,'ENTER COMMAND LINE TO BE INSERTED,',0DH,0AH DB '(36 CHARACTERS MAXIMUM) OR FOR NO COMMAND.',0DH,0AH,0AH ; db 'If COMMAND LINE has N characters, where N > 6,',0dh,0ah db 'first use"SETUP.COM to establish (N - 6) dummy',0dh,KEY information but, also, will render FUNCTION KEY 0 unusable. COMMAND ?: $ **** COMMAND INSERTION COMPLETE **** $1 :` A ÉO* ^#V^#V{=2>2=:  2:  :   DAD D ; +DPH BASE ADRS ; MOV E,M INX H MOV D,M ; GET DPB ADRS ; XCHG ; MOV E,M INX H MOV D,M ; GET 'SPT' ; MOV A,E DCR A ; -1 STA SPT ; SAVE SECTRS/TRACK ; ;**** READ CP/M FROM DISK INTO CORE STARTING AT 980H (NO BOOT LOADG3 DB 0DH,0AH,0AH,0AH,'**** COMMAND INSERTION COMPLETE ****',0DH,0AH,0AH DB '$' ; ;**** PRINT HEADER AND REQUEST DRIVE ID START LXI SP,STACK ; LOCAL STACK ; MVI C,9 LXI D,MSG1 ; HEADER MSG/DRIVE ID REQ TO CONS CALL 0005 ; RETRY1 MVI C,1 ; INER) MVI A,0 STA FLAG ; RD/WRT FLAG TO READ (0) CALL RDWRT ; DISK READ/WRITE ROUTINE ; ;**** CHECK IF CP/M IS VALID (1st BYTE OK ?) LDA 980H ; GET BYTE 1 OF CPM CPI 0C3H ; SHOULD BE 'JMP' OP CODE JZ REQUEST ; YES: CPM OK ; MVI C,9 LXI D,PUT 'DRIVE ID' CALL 0005 CPI 03 ; ^C ? JZ EXIT ; YES: ABORT CPI 60H JM UPPER SUI 20H ; MAKE UPPER CASE UPPER SUI 41H ; CONV A or B TO 0 or 1 JM CHERROR ; IF NOT 0 or 1 CPI 2 JM DRIVEOK ; CHERROR MVI C,9 LXI D,ERR1 ; 'WRONG' MSG TERR3 ; 'CPM BAD' MSG TO CONS CALL 0005 JMP EXIT ; ;**** REQUEST COMMAND STRING AND INPUT THE STRING REQUEST MVI C,9 LXI D,MSG2 ; 'CMND REQ' MSG TO CONS CALL 0005 ; MVI C,10 LXI D,INBUFF ; INPUT 'CMND STRING' CALL 0005 ; ;**** TRANSFER 'O CONS CALL 0005 JMP RETRY1 ; DRIVEOK MOV C,A PUSH B ; SAVE DRIVE # ; ;**** MOVE PART OF BIOS VECTOR TABLE INTO LOCAL CORE FOR CALLS LHLD 0001 ; GET WARM ST VCTR ADRS LXI D,24 ; INDEX INTO VCTR TBLE DAD D ; HL + INDEX = SOURCE LXI D,VECCMND STRING' FROM IP BUFF TO AUX CMND BUFF LDA INBUFF+1 ; GET INPUT BYTE CNT ADI 2 ; +2 FOR CCP STA AUXBUF ; SAVE AS AUX CMD BFR BYTE CNT SUI 2 ; = 0 ? JNZ JUMP1 ; NO STA AUXBUF ; YES: MAKE AUX BYTE CNT = 0 JMP JUMP4 ; JUMP1 MOV C,A ; BYTBL ; DESTINATION LXI B,18 ; BYTE COUNT (6 JUMP INSTR'S) DB 0EDH,0B0H ; Z80 'LDIR' INST (BLOCK MOVE) ; ;**** GET 'SECTORS PER TRACK' FROM 'DISK PARAM BLOCK' POP B ; GET DRIVE # CALL SELDSK ; SELECT DISK DRIVE ; LXI D,10 ; INDEX INTO DP HEADERTE CNT LXI D,AUXBUF+1 ; DESTINATION LXI H,INBUFF+2 ; SOURCE LOOP1 MOV A,M ; GET A SOURCE BYTE CPI 60H ; MAKE UPPER CASE JM JUMP5 SUI 20H ; JUMP5 STAX D ; BYTE TO DEST. INX D ; DEST. + 1 INX H ; SOURCE + 1 DCR C ; BYTE CNT - 1 JNZ0ah db 'characters in FUNCTION KEY 0 (zero). This will',0dh,0ah db 'avoid disastrous overlay of FUNCTION and ARROW',0dh,0ah db 'KEY information but, also, will render FUNCTION',0dh,0ah db 'KEY 0 unusable.',0dh,0ah,0ah ; DB ' COMMAND ?: $' MS  ; +1 SHLD SECTOR ; RE-SAVE SECTOR # ; LHLD DMAADR ; DMA ADRS + 128 LXI D,128 DAD D LXI D,2780H ; END OF CPM ? MOV A,D CMP H JNZ NOTEND ; NO MOV A,E CMP L JZ ENDCPM ; NOTEND SHLD DMAADR JMP LOOP2 ; DO NEXT SECTOR ENDCPM RET ; ;5 ; EXIT JMP 0000 ; CPM WARM ST ENTRY ; ;******* READ/WRITE CPM TO/FROM DISK SUBROUTINE: ; 'FLAG' = 0 FOR READ, = 1 FOR WRITE ; RDWRT LXI H,0 ; INIT SECTOR = 0 SHLD SECTOR LXI H,0 ; INIT TRACK = 0 SHLD TRACK LXI H,980H ; INIT DMA ADRS = 9**** BUFFERS, STORAGE AND MESSAGES: ; VECTBL ; PORTION OF BIOS VECTOR TABLE SELDSK DS 3 SETTRK DS 3 SETSEC DS 3 SETDMA DS 3 READ DS 3 WRITE DS 3 ; SPT DB 0 ; 'SECTORS PER TRACK -1' FLAG DB 0 ; CPM RD/WRT FLAG; ; SECTOR DW 0 TRACK DW 0 DM80H SHLD DMAADR ; LOOP2 LHLD DMAADR MOV B,H MOV C,L CALL SETDMA ; SET DMA ADRS ; LHLD TRACK MOV B,H MOV C,L CALL SETTRK ; SET TRACK # ; LHLD SECTOR MOV B,H MOV C,L CALL SETSEC ; SET SECTOR # ; LDA FLAG ; READ ? (=0) ORA A AADR DW 0 ; INBUFF DB 36,0 DS 36 ; ERR1 DB 12,12,12,'WRONG!',8,8,8,8,8,8,8,8,8,8,'$' ERR2 DB 0DH,0AH,0AH,1BH,6CH,'DISK READ ERROR',1BH,6DH,0DH,0AH,'$' ERR3 DB 0DH,0AH,0AH,1BH,6CH,'ERROR: CP/M NOT PRESENT ON SOURCE' DB ' DISK',1BH,6DH,0DH,0AH,'$'  JNZ DSKWRT ; NO: WRITE ; CALL READ ; READ A RECORD ORA A ; READ ERROR ? JZ GOODRD ; NO ; MVI C,9 LXI D,ERR2 ; 'SOURCE READ' ERR MSG TO CONS CALL 0005 JMP EXIT ; DSKWRT CALL WRITE ; WRITE A RECORD ORA A ; WRITE ERROR ? JZ GOODRD ; N ERR4 DB 0DH,0AH,0AH,1BH,6CH,'DISK WRITE ERROR',1BH,6DH,0DH,0AH,'$' ; DS 64 STACK END AD ERROR',1BH,6DH,0DH,0AH,'$' ERR3 DB 0DH,0AH,0AH,1BH,6CH,'ERROR: CP/M NOT PRESENT ON SOURCE' DB ' DISK',1BH,6DH,0DH,0AH,'$' O ; MVI C,9 LXI D,ERR4 ; 'DEST WRITE' ERR MSG TO CONS CALL 0005 JMP EXIT ; GOODRD LDA SPT LHLD SECTOR CMP L ; END OF TRACK ? JNZ JUMP3 ; NO ; LHLD TRACK INX H SHLD TRACK ; TRACK # +1 ; LXI H,0FFFFH ; SECTOR # = -1 JUMP3 INX H  LOOP1 ; IF NOT DONE ; XRA A ; A = 0 STAX D ; LINE TERMINATOR ; ;**** WRITE CP/M BACK TO SOURCE DISK JUMP4 MVI A,01 ; RD/WRT FLAG TO WRITE STA FLAG CALL RDWRT ; DISK READ/WRITE ROUTINE ; MVI C,9 LXI D,MSG3 ; 'ALL DONE' MESSAGE CALL 000  t lxi d,filename ;point to file name lxi b,10 ;set counter move: lhld ccp ;get CCP back mvi l,07 ;bias by 7 bytes call again ;move file name to CCP lhld ccp ;get CCP back mvi l,88h ;offset to counter mvi a,08h ;lsb of ccp pointer mov m,a --------------------------- ; ; EQUATES ; clear equ 26 ;clear screen escape equ 1bh ;escape character graph equ 'g' ;graphics nograph equ 'G' ;nographics pbuff equ 9 ;BDOS print buffer bdos equ 5 ;location of BDOS cr equ 0dh ;carriage return lf;put it in place lhld ccp ;get CCP one more time mvi l,89h ;offset to counter mov a,h ;put it in place mov m,a ;counter restored lhld ccp ;get CCP last time pchl ;execute cold start again: ldax d ;get byte to move mov m,a ;move it inx h equ 0ah ;line feed ; ; START OF PROGRAM ; org 0100h ; lhld 01 ;get warm start address mvi l,00 ;zero L register mov a,h ;get page boundary in A sui 16h ;subtract 16 to find CCP mov h,a ;put back new page boundary shld ccp ;store it lxi ;increment location inx d ;increment location dcx b ;decrement counter mov a,b ;get counter in a ora c ;check if done jnz again ;...not done ret ;...done print: mvi c,pbuff ;get proper call in c jmp bdos ;do it ; ;STORAGE AREA ; ccp:  d,logo ;point to logo lxi b,2047 ;number of characters in logo over: ldax d ;get byte of logo sui 65 ;convert to graphics stax d ;store it inx d ;new address dcx b ;decrement byte counter mov a,b ;ggt in A ora a ;are we done? jnz over ;ids 2 ;temp storage of CCP filename: db 06,'SC',0,0,0,0,0,0,0,0,0 ; / \ ; length / command must be followed by at ; of command string least one zero to work properly ; ; note: if command string is longer than 8 charactef no, back again start: lxi d,startgr ;point to startgraphics call print lxi d,logo ;point to logo message call print ;display it lxi d,stopgr ;point to end of graphics call print ;display it lxi d,endmes ;point to load message call prinrs, ; you must change "lxe b,10" just before MOVE: to ; "lxi b,length+2" ; startgr: db clear db escape,graph,'$' stopgr: db escape,nograph,'$' endmes: db cr,lf,lf,lf,9,'Loading SUPERCALC...',cr,lf,lf,'$' ; / ; message to print under l ;------------------------------------------------ ; AUTOCPM.ASM version 1.0 10/12/81 ; ; copyright 1981 by Thom Hogan ; Basically Speaking Press ; Palo Alto, CA ; ; This program loads and executes MBASIC.COM ; ;---------------------  YYYY' db 'YYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaWWWWWWWaaaaaaaaaaaaWWWWW' db 'WWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa' dbaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY' db 'Iaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaKWWWWWWZaaaa 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY' db 'YYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaVWWWWWWIaaaaaaaaaaKWWWWW' db 'WZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVWWWWW' db 'WIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY' db 'YYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY' db 'Zaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaVWWWWWWWWWWWWWWWWWWWWZ' aa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaWWWWWWWaaaaaaaaaaaaWWWWW' db 'WWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY' db 'YYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadb 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa$' end aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaVWWWWWWWWWWWWWWWWWWWWZ' aaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaWWWWWWWaaaaaaaaaaaaWWWWW' db 'WWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYogo ; logo: db 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaKWWWWWWWWWWWWWWWWWWWWI' db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKWWWWWWWWWWWWWWWWWWWWIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKWWWWWWZaaaaaaaaaaVWWWWWWIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWWWWWWWaaaaaaaaaaaaWWWWWWWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWWWWWWWaaaaaaaaaaaaWWWWWWWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa*.|g"fA xtaaxa{ah *f.V*f.>w*f.|w*fw# xV 4SCg$G$ Loading SUPERCALC... $YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWWWWWWWaaaaaaaaaaaaWWWWWWWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVWWWWWWWWWWWWWWWWWWWWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa$FSETAUTO version 1.0 (23 Apr 82)copyright 1982 Michael M Rubenstein!91@":\ :<=!@$?|> :]N C W B :_!^#V  !~( ( _# 1!qm (## (w#6!@ \|> Kͣ!ͣ{Oͣ|ʘͣBKͣ!ͣ$ͣBKͣ!ͣ'ͣ{ !!! * DISK READ ERROR $ DISK WRITE ERROR $ INVALID DRIVE $ Option: $ Program: $ $ NONE$COLD$WARM$BOTH$* DISK READ ERROR $ DISK WRITE ERROR $ INVALID DRIVE $ Option: $ Program: ${ !!! * DISK READ ERROR $ DISK WRITE ERROR $ INVALID DRIVE $ Option: $ Program: $aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVWWWWWWIaaaaaaaaaaKWWWWWWZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  rformed. Warning i bot i specifie an th comman terminate wit war boot th comman wil b reissued when the program terminates. Examples: Set no autostart: setauto none Se autostar t supercal o colt 3. Autostar o war boo (le m kno i anyone finds a use for this one.) 4. Autostart on warm or cold boot Additionally th dis ca b se t autostar an comman wit th restrictio tha th comman canno  boot Us dis on drive b: setauto b:cold sc Don' chang th autostar command bu se autostart on cold or warm boot: setauto both Display the selected autostart: setauto End of document  b mor tha character long. Setaut ha bee teste unde Osborn Re 1.3 I shoul als wor unde Re 1.2. Syntax: General form: setauto [d:][opt] [cmd] where i th driv specifier I omitted th defaul drive will be used. opt one of the options none -- no autostart will be performed cold -- autostart on cold boot warm -- autostart on warm boot both -- autostart on cold or warm boot Onl th firs lette o op i sig.p 90 AUTOMOD.DOC CP/ COMMAN LIN INSERTIO PROGRAM DOCUMENTATION Th CP/ comman lin insertio progra 'AUTOMOD.COM change th boo cop o CP/ o track - nificant I op i omitte o invalid th curren optio an command for the disk will be displayed. cm i an comman les tha character long Operand o driv specifier ar no permitted N checking for validity is pe o th diskett i th speci fie drive Thi chang consist o insertin 'comman line int buffe are o CP/ provide fo thi purpose Thi 'comman line i rea b CP/ immediatel followin 'cold- start (rese butto.he setauto.doc page # Copyright 1982 Michael M Rubenstein Description: Setaut set autostar option fo dis o th Osborn 1 Possibl option are: 1. No autostart 2. Autostart on cold boo   progra AUTOMOD.CO simpl pu th diskett containin thi progra int eithe drive plac th dis wit th CP/ cop yo desir t modif int th othe drive unpro tected (neve us th origina diskette supplie wit th Osbor loade int memor an run th AUTOS progra merel draw th 'BI O o th scree the load th mai progra supplie o th dis (MBASIC WORDSTAR SUPERCAL etc. o i th cas o th syste disk th HEL program B usin th comman lne Wit CP/ running issu th command: AUTOMOD (assumin i i i th selecte drive) Whe th 'CP/ sourc drive i requested respon appropriatel (th sourc driv wil als b th destinatio drive) Whe AUTOMO request tin inser tio program thi comman ca b change t anythin yo want o ma b delete altogether i whic cas CP/͠ load ver quickl an start u cleanl (th wa i wa originall intende to) Som example o command whic ch desire 'command t insert typ i i (u t 3 characters an terminat i wit carriag return I n comman i t b entere (quick-start) simpl typ carriag return thi wil eras an previou comman i th CP/ buffer Tha b inserte are DIR whic wil caus th 'A dis director t b displaye o start- up XDIR print th extende director (sam a th utilit dis does bu faster) MBASIC o th 'BASIC dis wil loa an start MBASI immediately  ne comman wil b inserte ont th dis an th messag *** COMMAN INSERTIO COMPLET *** shoul appear I a erro occurs th sourc o th erro shoul b correcte an AUTOMO re-run. AUTOMOĠ ca b use t chang th comman MBASI NAME.BAS wil caus MBASI t loa an automaticall loa th 'Basic languag progra NAME.BAӠ an star runnin i ('turnkey syste ) Th sam ma b don wit Wordstar Supercal o an othe use program. T us th insertiobuffe an numbe o time o th sam cop o CP/M. Th AUTOMO progra i addres dependant an futur release o CP/ ma requir ne versio o AUTOMO b obtained. ADDENDUM by Jim Woolley, FOG Disk Librarian, 8/82 Th Osborn  ) thi comman i the execute a i i wher an othe comman entere o th keyboard Al th diskette supplie b Osborn hav th comman line AUTOSԠ i thi buffe initially thi comman cause th AUTOS progra t b!  T wil overla thi information Therefore i i necessar t firs assig enoug dumm spac t functio ke (zero) s tha onl th dumm spac wil b overlayed Thi actio will however rende functio ke unusable. Assumin tha th comman lin t b inserte ha characters i i les tha 7 the ther i n specia concern I i greate tha 6 the firs ru SETU t alte th functio ke definitio o th diskett t b configure b AUTOMOD Se functio ke t b ( - 6 blank o othe dumm characters Thi wil se asid enoug spac fo th comman lin t b inserte b AUTOMOD Bu remembe tha functio ke wil n longe b meaningful Instead i wil b overlaye b th inserte comman line.AUTOMOD Bu remembe tha functio ke wil n longe b meaningful Instead i wil b overlaye b th inserte commimplementatio o CP/ make us o th 'comman line buffe are i th firs thre diskett track t stor functio an arro ke information Usin AUTOMO t ente comman lin havin mor tha si character (th amoun allowe fo AUTOS"  Error occured during disk Write - ABORT$ Specified an illegal disk drive - ABORT$ Recovered - Please DOUBLE CHECK before using$ No File Name specified - ABORT$ File NOT found$0 Unerase Version 1.2 (02/09/82) (CP/M Version $2.2) $1.4) $!4w_#~ ʸ A:4~~# ¼ > \ ?ʻ w# !ͼ ? !ͼ !)ͼ !ͼ :5͡ :6:6͡ :71 *yDd  :=Ryy:\Q<=2\:] y  >*;Ԡ2y:\Oͱ|~:0^#V"^#V#n}2!~2>04*:Ge::Oʹ:O͐ͷͽɯ2!~R6>2:<2 :C:Oʹ:O͐ͷ‡:=2:<2#] # Y~#eq|g}o (yy*M#V"^#V#n}2!~2>04* n::Oʹ      #   ALL the comments, so be ; sure to read the article ; and the printed program listing in the ; magazine ; ; ; Proper credit given to original author: ; ; Gene Cotton ; ; All I did was to type this in from the ; magazine ; Hopefully without adding any typing errors ; ; HBR Version 1.0 as of 11/17/81 ; ; Henry B. Rothberg ; 4 Laticrete Park North ; Bethany, Ct 06525 ; ; VERSION 1.1 AS OF 11/19/81 ; ; ADDED CONDITIONAL EQUATES FOR CP/M 1.4 ; AND 2.2 AS WELL AS EQUATES FOR STANDARD  ; CP/M AND MICROPOLIS CP/M (DIFFERENT ; SECTOR SKEW TABLES) ; ; BRUCE E. BLAKESLEE ; 906 CRESTWOOD ROAD - WEST ; WESTFIELD, N.J. 07090 ; ; ; Version 1.2 as of 2/9/82 ; ; Added modifications for Compatibility ; to the Osborne 01 Computer ; ; *.|g"! "!k"*^##"~Gk^{8̈́;ͮ#+*:=2 ͮ ͮ *.y*.>w*.|*w# xyKʤ2{_ҞzW:Êͽ͸ ͽ!8"*T]ͽ*} o|g"ɡ :6 Byron A. Mckay ; 80 West El Camino Real ; Mountain View Ca. 94040 ; (415) 961-2670 D, N.J. 07090 ; ; ; Version 1.2 as of 2/9/82 ; ; Added modifications for Compatibility ; to the Osborne 01 Computer ; ; )- - - - F U N C T I O N K E Y M E N U - - - - -($ ) 0: ($ ) 1: ($ ) 2: ($ ) 3: ($ ) 4: ($ ) 5: ($ ) 6: ($ ) 7: ($ ) 8: ($ ) 9: ($@$000000000000^A$00000000000^B$00000000000^C$00000000000^D$00000000000^E$0000000UNERA.DOC The following was extracted from UNERA12.ASM. The entire file could not be copied successfully. Jim Woolley, FOG Disk Librarian, 8/82 ; Program to recover Erased file ; ; From Interface Age December 1981 pg 98+ ; ; I didn't type in$  ^X$00000000000^Y$00000000000^Z$00000000000)($000000^O$00000000000^P$00000000000^Q$00000000000^R$00000000000^S$00000000000^T$00000000000^U$00000000000^V$00000000000^W$00000000000FUNCTION.DO John S. Florent Th capabilit o programmin functio key i ver useful However ɠ hav foun tha ther ar time whe i woul b nic t displa thos key o th screen Th FUNCTION.CO progra doe jus that Whe use i conjunctio wit AUTOST.COM th "big-O i dis playe an i cleare soo thereafter replace b men o func- ctio ke value currentl loade int th system Whe FUNCTION.CO i rename a AUTOST.COM th "big-O (whic i pretty bu non- functional i replace b th men (no a prett bu ver function al!) Wha ar th uses Well hav severa diskette containin jus games Wit suc diskette i i ver nic t se eac functio ke t contai th comman t execut specifi gam program Whe th diskett i booted th men appear immediately showin al game o th diskett (i 1 o fewer) wit on (two-finger keystrok0000^F$00000000000^G$00000000000^H$00000000000^I$00000000000^J$00000000000^K$00000000000^L$00000000000)($00000^N$00000000000^O$00000000000^P$00000000000^Q$00000000000^R$00000000000^S$00000000000^T$00000000000^U$00000000000^V$00000000000^W$00000000000%  )- - - - F U N C T I O N K E Y M E N U - - - - -($ ) 0: ($ ) 1: ($ ) 2: ($ ) 3: ($ ) 4: ($ ) 5: ($ ) 6: ($ ) 7: ($ ) 8: ($ ) 9: ($@$000000000000^A$00000000000^B$00000000000^C$00000000000^D$00000000000^E$0000000h "editin n file menu yo ca execut th FUNCTION.CO program, which will display all the WordStar function keys. On functio ke ca b se u whic woul execut th progra and print the function key values on your printer: ^PF0000^F$00000000000^G$00000000000^H$00000000000^I$00000000000^J$00000000000^K$00000000000^L$00000000000)($00000^N$00000000000^O$00000000000^P$00000000000^Q$00000000000^R$00000000000^S$00000000000^T$00000000000^U$00000000000^V$00000000000^W$00000000000UNCTION^P However thi ma no wor o al printer ( hav a Epso MX-8 II F/T).  On functio ke ca b se u whic woul execut th progra and print the function key values on your printer: ^PF^X$00000000000^Y$00000000000^Z$00000000000)($0000C–EQyQxQRQ** {zҷ*~#" <AOGƐ'@'OxƐ'@'ON# *.|g"! "!k"*^##"~Gk^{8̈́;ͮ#+*:=2 ͮ ͮ *.y*.>w*.|*w# xyKʤ2{_ҞzW:Êͽ͸ ͽ!8"*T]ͽ*} o|g"ɡ :6 e an game can be started! Anothe use I yo hav se variou functio key o you WordSta diskette yo ma no remembe exactl whic i whic ( can't) o yo ma no eve remembe the all Usin th "R comman a t&  ive A. At the A> prompt, type AUTOMOD The program is self-prompting. Upon completion, move the modified disk from drive B to drive A and press . AUTOST.ASM is from Chapter 8 of the Osborne 1 User's Reference Guide. This particular version is programmed to auto-start SuperCalc. You may modify it to start some other program of your choice. Refer to the User's Guide. SETAUTO was received from the Osborne Users Group (OUG) of the Washington D.C. area. It enables XSUB DDT PIP.COM IRPIP.HEX R G0 SAVE 29 RPIP.COM 'R' ; reset disk system? jnz save$char$cnt ; if not, restore chracter count and return lxi d,msg2 ; tell them all disk se changing the command executed upon cold start (or ) to a command of your choice (6 characters or less). It also enables automatic execution of the command upon warm start () or upon both cold start and warm start. Place ine up to 36 characters which will be executed upon cold start (or ). If the command line is N characters, where N > 6, first use SETUP to program function key 0 (zero) to contain (N - 6) dummy characters (e.g., blanks). Place th SETAUTO.COM in drive A. At the A> prompt, type SETAUTO d:option command where d is the drive containing the disk to be modified, option is COLD or WARM or BOTH, and command is the command to be executed (6 characters maximum). When completee disk to be modified in drive B and SETUP.COM in drive A. At the A> prompt, type SETUP Select source drive B, function E, and key 0. Type (N - 6) blanks terminated by . Press X, then X, then B. Finally, place AUTOMOD.COM in dr, place the modified disk in drive A and press . For additional information, see SETAUTO.DOC. DSCLABEL was submitted by Dennis McFerran of FOG. It will print 3 1/2" x 15/16" labels containing a list of files found in the disk di'  ives and repeat the last PIP function. To use, place RPIP.COM in drive A. At the A> prompt, type RPIP For further information, refer to the first 26 lines of RPIP.ASM. UNERA will unerase (recover) a file which was previously ERAsed. Plac to setup special printing features on your Epson printer. The program is self-prompting. Place EPSNPRTR.COM in drive A. At the A> prompt, type EPSNPRTR Also, see EPSNPRTR.DOC. FUNCTION was submitted by John Florent of FOG. It will lie UNERA.COM in drive A. At the A> prompt, type UNERA d:filename.typ To identify erased files, see DUU on -FOG/UTL.006. Jim Woolley FOG Disk Librarian September, 1982 st function key settings on the screen. Place FUNCTION.COM in drive A. At the A> prompt, type FUNCTION See FUNCTION.DOC for information. FUNCTN2 is identical to FUNCTION, but was patched to eliminate blank lines on the screen. This provides a more compact display of the function key settings. MAKE redefines the USER number for specified files. Instructions are built-in. Place MAKE.COM in drive A. At the A> prompt, type MAKE This utility was received from OUG. RPIP extends PIP to allow reseting disk drives without exiting. This premits you to change a disk, reset it to R/W, then continue with standard PIP functions. New functions recognized by RPIP are R, which will reset all drives, and Q, which will reset drrectory. It will aslo print a list of function keys programmed on the disk. An Epson printer is required to properly utilize this program. For instructions, refer to the first 48 lines of DSCLABEL.ASM. EPSNPRTR, received from OUG, may be used