IMD 1.16: 22/08/2007 17:52:27 lib/asm (source)  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@П@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ХйдСз@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@хжгёдЦйТЧу@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@цШФйё@ФСуС@тХи№№@@@@@@@@@ёђј@№ё№№ђ@№є№ђі@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@№ђ№№ђ@ћяFiџDУи+YFˆ&™є.Ч<џhY[Fˆ#„№Ч]„р™ 4 YТа#YkFˆ#$€H>A$H>D.Y… 4 YF SA$ hxУиHХ<`[6.Ч$DА86.ч6 п6.ќ6ћ6.ч6пУ<џhv ыєFQАH„ 8FKFQаFQиТ<„0H@ УнцаЧАhv њF Fш6.ќ6ћыє86.ч6п0FЁhи 6.ч6п F‡6.ќ6ћыєЧАh 6.ч6пџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ С>ё6јшђќF ћ086. Чај6ЧрјьђчF п0FQјF Та+Dшџї‡ј6<.УјФ@$ўр€€ФрУˆи0ТаHћ ХАh3ѕ.Dљ 6<.п6=чFODIFOнц6.Я86.љ0Эж.ѕСВht Fs`lF D`Ф‚рУ‰иФ’рУ™и86.ч6п0„рУ иЦєрХыи†єрыиЯF–ЧЙ F–Та+DЁ86. Чја6Ч џ і їіяє8аFQјF ТHћDТ.Ё>ќ6?ћ6<Ч<hСЁFСFСšFС6>.Ё>ч6?п6..Ё.Fc6P.ЁPч6Qп86P.ЁPќ6Qћ0&.Ё. FcёFџјqп6џ@џп_#Jџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ0,ƒFILE POPEN$ PRINT$ PCLOSE$ PSUSP$  PRESTRT$ џ0'‚pqDСЇDС"DС$DС†DСЛ*00000001 PRINT FILE 00000000 q&@Ё@6..Ё.Fc&.Ё.6”.Fc&”6@.Ё@Fc0§6.ЁгFTзјТгFZУиЦ№HС/6.Ё FQП F Ц<+DСJ.&Ф€рУˆиФ€№УˆшЦ€№ХˆшФ†рУиFQ0„рУ иТаHС_FTАhџ0/џ0*‚з.Ёз0јF Ц<пHСу ФрУи`С6о.ЁоЧј<:`Ся0јFDСў6з.Ёз ЧFWF Ц<пHС1 6P.ЁPЧ @СI6".Ё"FС6#.Ё#FС6#.Ё#FС6#.Ё#FС6..Ё.FС†FС6–.Ч6—я№ўF8ЈFW< HСbFСš&FHFKF]FСF0HСлцнFџџ @ CHECK FOR NAME MLA *LFT+LF1+2 CP ' ' HL NAMREQ JTZ CMDAGN . CHECK FOR EXTENSION MLA *LFT+LF1+10 CP ' ' JFZ TSTDRV . NO EXTENSION - USE 'LIB' HL LIBMSG DE *LFT+LF1+10 LC 3 CALL BLKTFR . CHECK FOR VALID DRIVE TSTDRV @ . REVISION: 01/28/80 - ADD PRINT COMMAND . & ALLOW LIBRARY TO BE ADDED . REVISION: 01/31/80 - ALLOW '*' TO BE SPECIFIED IN GENERIC FIELDS . REVISION: 02/25/80 - CORRECT PROBLEM WITH DRIVE NO'S OVER 9 . REVISION: 06/30/80 - MISC ENHANCEMENTS .@+ . . PROGRAM TO PERFORM LIBRARY MAINTENANCE . . COPYRIGHT: CUSTOM COMPUTING, INC.  . JULY 21, 1980 . . REVISION: 12/15/78 . REVISION: 04/27/79 - ADD REPLACE OPTION & SORT NAMES FOR REORG . REVISION: 05/08/79 - ADD SPECIAL DELETE FUNCTION .@ N * ........................................ . . FIND PARAMETER . HL MCR$-1 LC 80 FIND CALL INCHL LAM CP 015  JTZ OPEN CP ';' JTZ FOUND LAC SU 1 LCA JFZ FIND JMP OPEN . FOUND PARM - SAVE IT FOUND CALL INCHL P@/79 - ALLOW 'Cx' TO BE SPECIFIED FOR EXISTING LIBRARY . AND INSTALL USE OF ADDITIONAL PARAMETERS . SUCH AS 'OVERRIDE' AND 'TEXT' . REVISION: 10/26/79 - CORRECT PROBLEM WITH END OF FILE ON NON-TEXT . LIBRARIES . REVISION: 10/27/79 - CHANGE DBC @MLA *LFT+LF1 CP 0376 HL BADDRV JTZ CMDAGN . EDIT & SAVE FILENAME HL LFT+LF1 DE FILE1 CALL BLDNAM MSA *FILE1L . OPEN FILE LB LF1 MLC *LFT+LF1 DE LFT+LF1+2 CALL OPEN$ JFC OPENOK . OPEN ERROR - CHECK FOR CREATE M@ REVISION: 07/13/80 - ADD ABILITY TO ADD A MEMBER OF ANOTHER LIBRARY . REVISION: 07/15/80 - CORRECT OCCASIONAL PROBLEM AT P@ REVISION: 05/09/79 - ADD LINE NO'S ON LIST . REVISION: 06/22/79 - BUILD CHAIN FILE TO FINISH REORGANIZATION . REVISION: 06/27/79 - CORRECT PROBLEM WHEN REORGANIZING EMPTY LIBRARY . REVISION: 07/11/79 - CORRECT PROBLEM WITH 'FILES' OPTION . RE@ USH DE PARM LC 60 . GET NEXT CHARACTER MOVPRM LBM CALL INCSWP LMB CALL INCSWP LAB CP 015 JTZ OPEN LAC SU 1 LCA JFZ MOVPRM * ........................................ . . OPEN & VALIDATE LIBRARY FILE . OPEN EQU $ .@LIBRARIES TO STOP AT EOF . REVISION: 11/01/79 - MISC MODIFICATIONS . REVISION: 12/10/79 - CHANGE 'ADDMEM' NOT TO PUT TEXT EOF AT END . MEMBER . REVISION: 01/09/80 - RESTORE ORIGINAL PROTECTION TO FILE . REVISION: 01/26/80 - ADD SEARCH COMMANDУSYSTEM6 SYSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@ SE . LAST REVISION: 03/01/81 - MODIFIED CREATE . INC DOS/EPT SET 020000 . DISPLAY SIGNON START HL SIGNON CALL ZERO CALL DSPLY$ CALL ROLL * . . DETERMINE TYPE OF PROCESSOR . XRA LLA LHA DECP HL HL BADPRC JFC CMDAG@VISION: 08/31/79 - CORRECT PROBLEM WITH TABLE BUILD . REVISION: 09/05/79 - ONLY PAUSE 500 MILLI-SECONDS ON CAT COMMAND . REVISION: 10/01/79 - ONLY PAUSE 250 MILLI-SECONDS ON CAT COMMAND . AND ALLOW LIBRARY TYPE TO BE SPECIFIED . REVISION: 10/22ROGRAM STARTUP . REVISION: 07/21/80 - ADD SUPPORT FOR NEW DATABUS COMPILER . REVISION: 02/28/81 - MODIFIED FOR EXTERNAL U @LA *PARM CP 'C' HL NOFILE JFZ CMDAGN . SEE IF LIBRARY TYPE WAS SPECIFIED HL PARM+1 LAM CP 015 JTZ LIBPRP . GO PROCESS LIBRARY TYPE CALL TYPTST MSA *LIBTYP . . GO CREATE LIBRARY LIBPRP LB LF1 MLC *LFT+LF1 DE *LFT+@MLC *LFT+LF2+PFN CPC JFZ ADDOK MLA *LFT+LF1+PDN ND 017 LCA MLA *LFT+LF2+PDN ND 017 CPC HL SAMLIB JTZ ERROR . POSITION TO RECORD ZERO ADDOK DE 0 CALL POSIT$ . CHECK FOR LIBRARY FILE CALL READ$ CALL GET$ CP 0 @JTZ REORG . SEE IF 'C' OPTION WAS ENTERED MLA *PARM CP 'C' JFZ NXTFNC . SEE IF SPECIFIC TYPE WAS GIVEN CALL INCHL LAM CP 015 JTZ NXTFNC . GO VALIDATE TYPE CALL TYPTST MSA *LIBTYP . GO PUT NEW LIBRARY TYPE IN ALL DIRECTORY @DDLB1 LAM CP '*' JTZ ADDALL CALL INCHL LAC SU 1 LCA JFZ ADDLB1 * . . JUST ADD 1 MEMBER . . SEE IF MEMBER EXISTS IN LIBRARY ADDONE HL *NAME1+18 LB LF2 CALL LOCATE HL BADMEM JFZ ERROR . SAVE MEMBER ADDRESS MSD  @ REPLC CP 'E' JTZ ENDFNC HL BADFNC JMP ERROR . INVALID FUNCTION BADFNC EX BEEP JMP NXTFNC * . . SET FILE PROTECTION THE SAME AS WHEN WE STARTED . ENDFNC LB LF1 MLA *PROT ND 0300 OR 001 LCA DE 0 CALL PROTE$ .  @LF1+2 CALL CREATE LA 0377 MSA *PROT JMP NXTFNC . READ FIRST DIRECTORY SECTOR OPENOK LB LF1 DE 0 CALL POSIT$ CALL READ$ CALL GET$ CP 0377 HL BADLIB JFZ CMDAGN . SAVE PROTECTION BYTE MLA *LFT+LF1+PDN MSA *PROT@377 JTZ ADDLIB * . . ADD A REGULAR FILE . . RE-POSITION FILE DE 0 CALL POSIT$ . SEE IF MEMBER NAME SPECIFIED & MO@ SECTORS LB LF1 CALL CNVLIB . REREAD 1ST SECTOR LB LF1 DE 0 CALL POSIT$ CALL READ$ * *************END DISABLED CODE + ........................................ . . START . NXTFNC CALL ROLL CALL KYFUNC . PUT RETURN ADDRESS ON BSYSTEM7 SYSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@END OF PROGRAM CALL CLOSE$ JMP EXIT$ + ................................... . . ADD A MEMBER TO LIBRARY . ADD EQU $ . SEE IF INPUT FILE EXISTS HL NAME1 LB LF2 CALL OPNLFN . SEE IF FILE IS THE SAME AS LIBRARY MLA *LFT+LF1+PFN  @ . SAVE TYPE OF LIBRARY CALL GET$ CALL GET$ MSA *LIBTYP . REMOVE WRITE PROTECTION LC 1 DE 0 CALL PROTE$ . DISABLE BELOW FOREVER********** JMP NXTFNC . * *********DISABLED . CHECK FOR FILE REORGANIZATION MLA *PARM CP 'R' @ADD MEMBER ADDINT LA LF1 MSA *LFN1 LA LF2 MSA *LFN2 HL NAME2+2 CALL ADDMEM JMP ADDEND * . . SPECIFIED FILE IS A LIBRARY . ADDLIB MLA *GMEMB1 CP ' ' JTZ ADDALL . SEE IF GENERIC NAME WAS SPECIFIED HL GMEMB1 LC 8 A @ TOP OF STACK HL NXTFNC PUSH . TEST FUNCTION PARAMETER MLA *PARM CP 015 JTZ ENDFNC CP 'A' JTZ ADD CP 'D' JTZ DELETE CP 'X' JTZ EXTRCT CP 'L' JTZ LIST CP 'N' JTZ NAME CP 'O' JTZ REORG CP 'R' JTZ VE FILENAME IF NOT MLA *NAME2+2 CP ' ' JFZ ADDINT HL NAME1+2 DE NAME2+2 LC 8 CALL BLKTFR . PREPARE TO    џџ@"E . CREATE CALL PREP$ DE 0 CALL DIRADD RET + ................................... . . DELETE A MEMBER FROM LIBRARY . DELETE EQU $ . SEE IF MEMBER EXISTS HL NAME1+2 LB LF1 CALL DELMEM RET + .................................. @OF ENTRIES LB LF2 CALL BLDTAB DE TABLE-10 MSD *PTR1 MSE *PTR1+1 . GET NEXT MEMBER TO COPY ADDAL1 CALL INCPT1 . SEE IF THIS IS END OF TABLE MLA *TABLST CPD JFZ ADDAL2 MLA *TABLST+1 CPE JTZ ADDEND . SEE IF MEMBER EXIS @%PUT FILE EXTOK HL NAME2 LB LF2 CALL OPNLFN JTC EXTFND . FILE ALREADY EXISTS, CHECK FOR LIBRARY FILE MLA *LFT+LF1+PFN MLC *LFT+LF2+PFN CPC JFZ EXTCHK MLA *LFT+LF1+PDN ND 017 LCA MLA *LFT+LF2+PDN ND 017 CPC HL @ TR1 DE MEMBER LC 8 CALL BLKTFR CALL ZERO CALL ROLL HL MEMBER CALL DSPLY$ HL ADDMG2 CALL DSPLY$ JMP ADDAL1 . JMP ADDALL1 * . . END OF ADD, CHECK FOR DELETE . . DISABLE THIS SUBROUTINE ADDEND RET . * ************ @*MEMADR MSE *MEMADR+1 . SEE NAME WAS SPECIFIED MLA *NAME2+2 CP ' ' . JFZ ADDONE1 JFZ ADDON1 . MOVE NAME HL NAME1+18 DE NAME2+2 LC 8 CALL BLKTFR . SEE IF MEMBER EXISTS IN CURRENT LIBRARY ADDON1 HL NAME2+2 LB LF1 CALL @#. . . EXTRACT MEMBER FROM LIBRARY . EXTRCT EQU $ . SEE IF NAME2 SPECIFIED & MOVE FILENAME IF NOT MLA *NAME2+2 CP ' @TS ADDAL2 CALL LDPTR1 LB LF1 CALL LOCATE JTZ ADDERR . CONTINUE ADDING EX CLICK CALL LDPTR1 DE MEMBER LC 8 CALL BLKTFR . GET DISK ADDRESS LEM CALL INCHL LDM LB LF2 CALL POSIT$ . DISPLAY MEMBER NAME CALL ZERO @&SAMLIB JTZ ERROR . . DISABLE BELOW FOREVER . . FILE ALREADY EXISTS, SEE IF OVERRIDE WAS SPECIFIED EXTCHK HL PRMOVR CALL PRMTST JTZ EXTFND HL PRMOVW CALL PRMTST JTZ EXTFND . . FILE ALREADY EXISTS, ASK OVERRIDE EXTASK HL OVRM@!DISABLED . ADDEND HL PRMDEL . CALL PRMTST . RFZ . DELETE ORIGINAL FILE . LB LF2 . HL NAME1 . LCM . DE NAME1+2 . CALL PREP$ . LD 0377 . CALL CHOP$ . CALL CLOSE$ . RET + ................................... . . CREATE LIBRARY FIL @ LOCATE HL DUPMEM JTZ ERROR . LOAD MEMBER ADDRESS & POSITION FILE MLD *MEMADR MLE *MEMADR+1 LB LF2 CALL POSIT$ JMP ADDINT * . . ADD COMPLETE LIBRARY . ADDALL HL GMEMB1 DE GNAME1 LC 8 CALL BLKTFR . GO BUILD TABLE  @$MREQ JTZ ERROR . TEST FOR EXTENSION MLA *NAME2+10 CP ' ' HL EXTREQ JTZ ERROR . LOCATE NAME IN DIRECTORY HL NAME1+2 LB LF1 CALL LOCATE HL BADMEM JFZ ERROR . SAVE MEMBER ADDRESS MSD *MEMADR MSE *MEMADR+1 . OPEN OUT @ CALL ROLL HL MEMBER CALL DSPLY$ HL ADDMG1 CALL DSPLY$ . SETUP CORRECT LFN'S LA LF1 MSA *LFN1 LA LF2  MSA *LFN2 HL MEMBER CALL ADDMEM . JMP ADDALL1 JMP ADDAL1 . MEMBER ALREADY EXISTS ADDERR EX BEEP CALL LDP   @2JMP FILTST . KEYIN FILENAME FILKEY HL ORGNAM CALL ZERO CALL DSPLY$ HL MCR$ LC 22 CALL KEYIN$ MLA *MCR$  CP 015 RTZ . SCAN FIELD FOR BLANKS CALL SCANBL DE LFT+LF2 CALL SCANFS . SEE IF EXTENT SPECIFIED - USE 'TXT' IF @-AME HL MEMBER LB LF1 LC 8 . GET NAME CATGET CALL GET$ CP 0377 JTZ CATNXT LMA CALL INCHL LAC SU 1  LCA JFZ CATGET . SEE IF NAME MATCHES MLA *GNAME1 CP ' ' JTZ CATMEM DE MEMBER LC 8 CATCMP LAM CP ' ' @($ . CHECK FOR END OF MEMBER LA 010 CALL TST000 JTZ EXTEND . MOVE BUFFER EXTMOV LA 3 MSA *LFT+LF1+BUFADR MSA *LFT+LF2+BUFADR . TRANSFER INPUT BUFFER TO OUTPUT BUFFER EXTXFR LB LF1 CALL GET$ JTC EXTWRT LB LF2 CALL PUT$ @0CALL DSPLY$ . CHECK FOR END OF LINE MLA *POS AD 21 MSA *POS CP 70 JTC CATTST . RESET LINE XRA MSA *POS . SEE IF KEYBOARD OR DISPLAY KEYS ARE PRESSED CATTST LA 6 LC 0 CALL DOSFNC JTS NXTFNC JTP CATTST JMP CATNXT @+RTZ LDA MLE *NXTDIR+1 . READ DIRECTORY SECTOR LB LF1 CALL POSIT$ CALL READ$ . CHECK FOR VALID DIRECTORY CALL GET$ CP 0377 HL BADLIB JFZ ERROR . SKIP 2 BYTES CALL GET$ CALL GET$ . GET ADDRESS OF NEXT DIRECTORY SECTOR џџ@.JTZ CATMEM LBA CALL INCSWP . CHECK FOR '*' LAB CP '*' JTZ CATINC . SEE IF CHARACTER MATCHES LAM CPB JFZ CATNXT CATINC CALL INCSWP LAC SU 1 LCA JFZ CATCMP . MEMBER OK - BUILD DISPLAY FIELD CATMEM HL MEMBER DE ME @)JMP EXTXFR . WRITE OUT BUFFER EXTWRT LB LF2 DE -1 CALL POSIT$ CALL WRITE$ JMP EXTCPY . END OF MEMBER EXTRACT EXTEND LB LF2 CALL PUT000 LA 003 CALL PUT$ CALL WRITE$ CALL CLOSE$ RET + ................................ @1 + ................................... . . PREPARE LIST OF MEMBER NAMES . FILES EQU $ . SEE IF FILENAME WAS SPECIFIED MLA *NAME2+2 CP ' ' JTZ FILKEY . MOVE FILENAME TO LFT & GO TEST HL NAME2 DE LFT+LF2 LC 16 CALL BLKTFR  @,CALL GET$ MSA *NXTDIR+1 CALL GET$ MSA *NXTDIR . INITIALIZE BUFFER POSITION XRA MSA *NXTDIR+2 . POSITION TO NEXT MEMBER CATNXT MLA *NXTDIR+2 AD 10 CP 250 JFC CATDIR MSA *NXTDIR+2 MSA *LFT+LF1+BUFADR . PREPARE TO GET N @'SG CALL ZERO CALL DSPLY$ HL MCR$ LC 2 CALL KEYIN$ MLA *MCR$ CP 'Y' RFZ . FOUND MEMBER EXTFND LB LF1  MLD *MEMADR MLE *MEMADR+1 CALL POSIT$ . BEGIN COPYING SECTORS EXTCPY LB LF1 DE -1 CALL POSIT$ CALL READ@/MFLD LC 8 CALL BLKTFR . GET & FORMAT SECTOR ADDRESS LB LF1 CALL GET$ LEA CALL GET$ LDA HL MEMFLD+10 CALL CVD5 MLA *POS . SEE IF WE NEED TO ROLL SCREEN ORA CTZ ROLL . DISPLAY MEMBER MLD *POS LE 11 HL MEMFLD @*... . . DISPLAY CATALOGUE OF MEMBERS . CAT LB LF1 XRA  MSA *NXTDIR MSA *NXTDIR+1 XRA MSA *POS . PAUSE 1/2 SECOND BEFORE DISPLAY LA 8 LC 0 DE 250 CALL DOSFNC . READ NEXT DIRECTORY SECTOR CATDIR MLA *NXTDIR CP 0377   M DE MCR$ LC 8 CALL BLKTFR HL MCR$+8 LC 70 CALL GETLIN JTC NXTFNC . PUT 003 AT END OF LINE LA 003 @8 TABENT+10 CALL CVD5 HL TABENT CALL WRTLIN . END OF MEMBER NAME LA 015 CALL PUT$ JMP FILNXT . END OF ALL MEMBERS FILEND LB LF2 LA 003 CALL PUT$ CALL WRITE$ . WRITE END OF FILE CALL PUT000 LA 003 CALL PUT$ CA @3 NOT FILTST MLA *LFT+LF2+10 CP ' ' JFZ FILOPN HL TXTMSG DE LFT+LF2+10 LC 3 CALL BLKTFR . OPEN OUTPUT FILE FILOPN LB LF2 HL LFT+LF2 CALL OPNLFN JTC FILBLD . FILE ALREADY EXISTS, CHECK FOR LIBRARY FILE MLA *LFT+LF1+P @;RTZ CALL PUT$ CALL INCHL JMP WRTLIN + ................................... . . DISPLAY HELP MESSAGE . HELP HL HLPMSG CALL ZERO CALL DSPLY$ RET + ................................... . . LIST A MEMBER ON SCREEN . LIST EQU $ .  @6KEYIN$ MLA *MCR$ CP 'Y' JFZ FILKEY . GO BUILD TABLE OF FILE NAMES FILBLD LB LF1 CALL BLDTAB . PREPARE TO RETREIVE FILES FROM TABLE LB LF2 DE TABLE-10 MSD *PTR1 MSE *PTR1+1 . INCREMENT TO NEXT TABLE ENTRY FILNXT CALL INCP @>LMA . INCREMENT LINE NO MLA *LINE MLL *LINE+1 LHA CALL INCHL LDH LEL MSD *LINE MSE *LINE+1 . FORMAT LINE NO HL MCR$ CALL CVD5 HL MCR$ LC 5 CALL BLKFIL . DISPLAY LINE CALL ZERO CALL ROLL HL MCR$ LD 0 @9LL WRITE$ CALL CLOSE$ RET + ................................... . . ROUTINE TO PUT AN 015 & 003 AT END OF LINE . . HL => @ OF 1ST POSITION . ENDLIN LA 015 LMA CALL INCHL LA 003 LMA RET + ................................... . @4FN MLC *LFT+LF2+PFN CPC . JFZ FILCHK JFZ FILOVR MLA *LFT+LF1+PDN ND 017 LCA MLA *LFT+LF2+PDN ND 017  CPC HL SAMLIB JTZ ERROR . FILE ALREADY EXISTS, SEE IF OVERRIDE WAS SPECIFIED . DISABLE BELOW FOREVER . * ********** @<SEE IF MEMBER WAS GIVEN MLA *NAME1+2 CP ' ' HL NAMREQ JTZ ERROR . LOCATE MEMBER HL NAME1+2 LB LF1 CALL LOCATE HL BADMEM JFZ ERROR . POSITION TO MEMBER LB LF1 CALL POSIT$ CALL READ$ . ZERO OUT LINE COUNTER LA 0 @7T1 . CHECK FOR END OF TABLE MLA *TABLST CPD  JFZ FILWRT MLA *TABLST+1 CPE JTZ FILEND . PREPARE ENTRY TO WRITE TO DISK FILE FILWRT LHD LLE DE TABENT LC 8 CALL BLKTFR . FORMAT SECTOR ADDRESS LEM CALL INCHL LDM HL џџ@: . ROUTINE TO WRITE A LINE TO AN OUTPUT FILE . . HL => @ OF LINE (TERMINATED BY 003) . B => LFN . WRTLIN PUSH HL *LFT+BUFADR LAB CALL ADDHL LAM CP 250 JTC WRTLN1 LA 3 CALL PUT$ CALL WRITE$ WRTLN1 POP LAM CP 3  @5*DISABLED . FILCHK HL PRMOVR . CALL PRMTST . JTZ FILBLD . HL PRMOVW . CALL PRMTST . JTZ FILBLD * ********END DISABLED CODE . . ASK IF FILE SHOULD BE OVERWRITTEN FILOVR HL OVRMSG CALL ZERO CALL DSPLY$ HL MCR$ LC 2 CALL  @= MSA *LINE MSA *LINE+1 . PAUSE 1 SECOND LA 8 LC 0 DE 1000 CALL DOSFNC . START OF NEW LINE LSTBGN HL LSTFR  @?LE 11 CALL DSPLY$ . SEE IF KEYBOARD OR DISPLAY WAS PRESSED LSTTST LA 6 LC 0 CALL DOSFNC JTS NXTFNC JTP LSTTST JMP LSTBGN . LSTFRM DC '00000. ' + ................................... . . RENAME A MEMBER . NAME EQU $ . SEE@GPOSIT$ CALL READ$ . CALL PRINT CALL PRTMEM JMP PRTAL1 * . . PRINT MEMBER . PRTMEM MLC *FILE1L HL FILE1 DE PRTLIB CALL BLKTFR LA '.' MSA *MCR$ LC 1 CALL BLKTFR HL MEMBER LC 8 CALL BLKTFR . PAD REST OF NAME@B TO DIRECTORY HL NAME2+2 LC 8 NAMMOV LAM CALL PUT$ CALL INCHL LAC SU 1 LCA JFZ NAMMOV . REWRITE DIRECTORY SECTOR MLD *DIRADR MLE *DIRADR+1 CALL POSIT$ CALL WRITE$ RET + ................................... . . P@JMSD *LINE MSE *LINE+1 . FORMAT LINE NO HL PRTBUF+1 CALL CVD5 HL PRTBUF+1 LC 5 CALL BLKFIL . CHECK FOR END OF PAGE MLA *LINCNT ORA CTZ PRTPAG MLA *LINCNT SU 1 MSA *LINCNT . PRINT LINE HL PRTBUF CALL PRINT$ . @ETMEM JMP PRTEND * . . PRINT ALL MEMBERS . PRTASK HL PRTMSG CALL ZERO CALL DSPLY$ HL MCR$ LC 2 CALL KEYIN$ MLA *MCR$ CP 'Y' RFZ . OPEN PRINTER PRTALL CALL PRTOPN LB LF1 CALL BLDTAB DE TABLE-10 MSD *PTR1 @@ IF FIRST NAME WAS SPECIFIED HL NAME1+2 LAM CP ' ' HL NAMREQ JTZ ERROR . CHECK FOR SECOND NAME HL NAME2+2 LAM CP ' ' HL NAMREQ JTZ ERROR . SEE IF NEW MEMBER NAME EXISTS HL NAME2+2 LB LF1 CALL LOCATE HL DUPMEM@H WITH BLANKS MLC *FILE1L LA 12 SUC JTZ PRTMB2 LCA LHD LLE PRTMB1 LA ' ' LMA CALL INCHL LAC SU 1 @CRINT A MEMBER . PRINT EQU $ . SEE IF MEMBER WAS GIVEN MLA *GNAME1 CP ' ' JTZ PRTASK . SEE IF AN ASTERISK WAS ENTERED LC 8 PRTAST LAM CP '*' JTZ PRTALL CALL INCHL LAC SU 1 LCA JFZ PRTAST . LOCATE MEMBER HL NAME1џџ@FMSE *PTR1+1 . GET NEXT MEMBER PRTAL1 CALL INCPT1 MLA *TABLST CPD  JFZ PRTAL2 MLA *TABLST+1 CPE JTZ PRTEND . POSITION TO MEMBER PRTAL2 CALL LDPTR1 DE MEMBER LC 8 CALL BLKTFR LEM CALL INCHL LDM LB LF1 CALL @A JTZ ERROR . SEE IF MEMBER EXIST HL NAME1+2 LB LF1 CALL LOCATE HL BADMEM JFZ ERROR . POSITION TO DIRECTORY SECTOR MLD *DIRADR MLE *DIRADR+1 CALL POSIT$ CALL READ$ MLA *DIRADR+2 MSA *LFT+LF1+BUFADR . MOVE NEW NAME@ICNT . START OF NEW LINE PRTMB3 HL PRTFRM DE PRTBUF LC 9 CALL BLKTFR HL PRTBUF+9 LC 120 CALL GETLIN RTC  . PUT 015 AT END OF LINE LA 015 LMA . INCREMENT LINE NO MLA *LINE MLL *LINE+1 LHA CALL INCHL LDH LEL @D+2 LB LF1 CALL LOCATE HL BADMEM JFZ ERROR . POSITION TO MEMBER LB LF1 CALL POSIT$ CALL READ$ . INITIALIZE PRINTER CALL PRTOPN . INITIALIZE MEMBER NAME HL NAME1+2 DE MEMBER LC 8 CALL BLKTFR . CALL PRINT CALL PR LCA JFZ PRTMB1 . INITIALIZE FIELDS PRTMB2 XRA MSA *LINE MSA *LINE+1 MSA *PAGCNT MSA *PAGCNT+1 MSA *LIN  џџ@RCPC JFZ ORGASK . JFZ ORGCHK MLA *LFT+LF1+PDN ND 017 LCA MLA *LFT+LF2+PDN ND 017 CPC HL SAMLIB JTZ ERROR . FILE ALREADY EXISTS, SEE IF OVERWRITE WAS SPECIFIED . DISABLE CODE BELOW FOREVER . * ***********DISABLED . ORGCHK @MT$ . SKIP 2 MORE LINES LA '0' MSA *MCR$ LA 015 MSA *MCR$+1 HL MCR$ CALL PRINT$ . SET NEW LINE COUNT LA 50 MSA *LINCNT RET . PRTFRM DC ' 00000. ' PRTHDR DC '-PAGE' PRTPGN DC 'XXXXX ' PRTLIB DC 'XXXXXXXX/XXX.XXXXX @U . GO BUILD A TABLE OF MEMBER NAMES & SORT THEM LB LF1 CALL BLDTAB . PREPARE TO FIND ALL MEMBERS DE TABLE-10 MSD *PTR1 MSE *PTR1+1 . GET NEXT MEMBER TO COPY ORGNXT CALL INCPT1 . SEE IF THIS IS END OF TABLE MLA *TABLST CPD JF@PL SCANFS . SEE IF EXTENT SPECIFIED - USE 'LIB' IF NOT ORGTST MLA *LFT+LF2+10 CP ' ' JFZ ORGSAV HL LIBMSG DE LFT+LF2+10 LC 3 CALL BLKTFR . BUILD COMPLETE FILENAME ORGSAV HL LFT+LF2 DE FILE2 CALL BLDNAM MSA *FILE2L . S @K SEE IF KEYBOARD OR DISPLAY WAS PRESSED PRTMB4 LA 6 LC 0 CALL DOSFNC JTS NXTFNC JTP PRTMB4 JMP PRTMB3 * . . END OF PRINT . PRTEND CALL PCLOSE$ JMP NXTFNC . NEW PAGE PRTPAG LA '1' MSA *MCR$ LA 015 MSA *MCR$+1 HL @SHL PRMOVR . CALL PRMTST . JTZ ORGCHG . HL PRMOVW . CALL PRMTST . JTZ ORGCHG * ***********END DISABLED CODE . . AS@NXXX',015 PAGCNT DC 0,0 LINCNT DC 0 PRTBUF SK 140 + ................................... . . REORGANIZE THE LIBRARY FILE . REORG EQU $ . SEE IF FILENAME WAS SPECIFIED MLA *NAME1+2 CP ' ' JTZ ORGFIL . MOVE FILENAME TO LFT & GO TEST @VZ ORGCNT MLA *TABLST+1 CPE JTZ ORGEND . CONTINUE WITH REORGANIZATION ORGCNT CALL LDPTR1 DE MEMBER LC 8 CALL BLKTFR . GET DISK ADDRESS LEM CALL INCHL LDM LB LF1 CALL POSIT$ . DISPLAY MEMBER NAME CALL ZERO CALL @QAVE REORGANIZATION FILE SPEC ORGOPN HL LFT+LF2 DE NAME1 LC 16 CALL BLKTFR . GO TRY TO OPEN FILE LB LF2 HL LFT+LF2 CALL OPNLFN JTC ORGOK . FILE ALREADY EXISTS - CHECK FOR LIBRARY FILE MLA *LFT+LF1+PFN MLC *LFT+LF2+PFN  @L MCR$ CALL PRINT$ . INCREMENT PAGE COUNT MLA *PAGCNT MLL *PAGCNT+1 LHA CALL INCHL LDH LEL MSD *PAGCNT  MSE *PAGCNT+1 . FORMAT PAGE COUNT HL PRTPGN CALL CVD5 HL PRTPGN LC 5 CALL BLKFIL HL PRTHDR CALL PRIN @TR$ CP 'Y' JFZ ORGFIL . CHANGE PROTECTION ORGCHG LB LF2 LC 1 DE 0 CALL PROTE$ CALL CLOSE$ . NOW, CREATE FILE MLC *NAME1 DE NAME1+2 CALL PREP$ . FILE OPENED - INITIALIZE FIRST DIRECTORY SECTOR ORGOK DE 0 CALL DIRADD@OHL NAME1 DE LFT+LF2 LC 16 CALL BLKTFR JMP ORGTST . KEYIN FILENAME ORGFIL HL ORGNAM CALL ZERO CALL DSPLY$ HL MCR$ LC 22 CALL KEYIN$ MLA *MCR$ CP 015 RTZ . SCAN FIELD FOR BLANKS CALL SCANBL DE LFT+LF2 CAL K IF FILE SHOULD BE OVERWRITTEN ORGASK HL OVRMSG CALL ZERO CALL DSPLY$ HL MCR$ LC 2 CALL KEYIN$ MLA *MC   @]P CALL ENDLIN . GO WRITE LINE HL MCR$ CALL WRTLIN . WRITE 'Y' RESPONSE TO FILE LA 'Y' MSA *MCR$ CALL INCHL  CALL ENDLIN . GO WRITE LINE HL MCR$ CALL WRTLIN * . . WRITE KILL COMMAND FOR CHAIN FILE . HL KILCMD DE MC@X0 CALL PROTE$ CALL CLOSE$ . CLOSE INPUT FILE LB LF1 CALL CLOSE$ . DISPLAY COMPLETE MESSAGE CALL ZERO CALL ROLL HL ORGDUN CALL DSPLY$ + . . PREPARE CHAIN FILE TO CLEAN UP . CHN LB LF1 LC 0377 DE CHNFIL CALL PREP  @[MD DE MCR$ LC 7 CALL BLKTFR . MOVE IN REORGANIZE FILENAME MLC *FILE2L HL FILE2 CALL BLKTFR . MOVE IN ';X' PARAMETER HL CHGPRM LC 2 CALL BLKTFR . GO PUT 015 & 003 AT END OF LINE CALL INCSWP CALL ENDLIN . GO WRITE LINџџ@^R$ LC 5 CALL BLKTFR . MOVE IN CHAIN FILENAME MLC *CHNLEN HL CHNNAM CALL BLKTFR . GO PUT 015 & 003 AT END OF LI@Y$ * . . WRITE 'COPY' COMMAND TO RESTORE ORIGINAL FILE . HL CPYCMD DE MCR$ LC 5 CALL BLKTFR . MOVE OUTPUT NAME TO COMMAND MLC *FILE2L HL FILE2 CALL BLKTFR . MOVE IN A COMMA HL COMMA LC 1 CALL BLKTFR . MOVE INPUT NAME  @\E HL MCR$ CALL WRTLIN * . . WRITE KILL COMMAND FOR REORGANIZE FILE . HL KILCMD DE MCR$ LC 5 CALL BLKTFR . MOVE IN REORGANIZATION FILENAME MLC *FILE2L HL FILE2 CALL BLKTFR . GO PUT 015 & 003 AT END OF LINE CALL INCSW@WROLL HL MEMBER CALL DSPLY$ HL ORGCPY CALL DSPLY$ . SETUP CORRECT LFN'S LA LF2 MSA *LFN1 LA LF1 MSA *LFN2 HL MEMBER CALL ADDMEM JMP ORGNXT . END OF REORGANIZATION - CLOSE OUTPUT FILE ORGEND LB LF2 LC 0377 DE @_A *MCR$ CALL INCHL CALL ENDLIN . GO WRITE LINE TO FILE HL MCR$ CALL WRTLIN * . . WRITE EOF & CLOSE FILE . LA 003 CALL PUT$ CALL WRITE$ CALL PUT000 LA 003 CALL PUT$ CALL WRITE$ CALL CLOSE$ * . . BUILD CHAIN @Z TO COMMAND MLC *FILE1L HL FILE1 CALL BLKTFR . GO PUT 015 & 003 AT END OF COMMAND CALL INCSWP CALL ENDLIN . WRITE LINE TO OUTPUT FILE HL MCR$ CALL WRTLIN * . . WRITE 'CHANGE' COMMAND TO UNPROTECT REORGANIZE FILE . HL CHGCNE CALL INCSWP CALL ENDLIN . GO WRITE LINE HL MCR$ CALL WRTLIN . PUT 'Y' RESPONSE AT END OF LINE LA 'Y' MS                    џџ                     џџ          SYSTEM0 SYSџCAT CMDџUTILITY LNKџСUTILITY RELџРLIBRARY PRGџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ                                   CSYSTEM1 SYSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ                                  УSYSTEM2 SYSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ      џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџы є  (WDFk Ј(Y џѓсD- D4 D; DB 6 DF 6DF 6DF 6%F)FID^ FI08Эж6. њ6 љ6. з6 ЯђщяТаСˆШ6&OF Х а$Ш6&F 6^. 8FЪ& Fk Y(Fxс QРA$h— ЈYU(Aр6$. F ЧМHТ F ї8. АHА Фш0`ї <@ї №С€€€ШТа$БШџ№ћі0цнDЪF>F>H FЪD FM0FMСШH1DЪFQFЪ.+DFQС$0+Шe№.Ч<џ+FЪDFŠ`г`ЮУboBщn№ќF ћe№Ч4 јиуFŠТ @ЃТ$РаЧ$?ВјУАp№DP6.П6+DЧ8єыјF цн0F џ‚аHИС6.јd№.&Fc6.ч6пФ6—рУ6 ŸHW6 .ЧFФК@W6џ Э2ё. јFсQРA 6 . Ч]M[6 з6 ЯFћ љ6 њ6 Чјhžџ№Т86d.ј6fљ6hњ6jћ6lќ0нц6n.ћ6pќ6„Пh`6r&dFcъ6+Ч6s.јD†йрFHFK6„.FT$јFT€€€€‡ј†№@J6…8&.6џ РР6+.зн&ЭF6`ЕFK6d.&rFc6у.&7FcD76П.FrD` џёљРУš@Ш„р‹иFŠFЮ`ЩF*`*FQ6ЏаFQ6ЏВаFQ6ЏВHУDžhЙDсFŠ`ЮFЮ`\6ЧFW6ЧFW6ЧFWF-@žhОDсFЪ` D8F>#6dЧ6eзF<hс<hЙ<hЩ<hУЈDйF>#6dЧ6eзDСf№.аЧјђЧ јЪ5ј06ь.ј6юљ6№њ6ђћ6єќ6ыDіF­@ъi06Ъ8&86+.џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ с ѓіТ$јЖа& Fk Х(WУ

а6Ч,>ВH* 6O.ј&6NFc6џ.F Ч< HЩ8ј& 6Fr0 јDu6џ.Ч$яјF6Я.H›& 6.PFoDu0F?СШH Ј6*.ј6.Ч< hл<*h0<:H< ј6*.ј6.&dF'F'F'F'6.Ч,#а6Ч, Вhl6n.Ч< цн6Ь.jc6.њ6i.886d.Ч6.џТ=юіљ„6=.ј‹6>ј6BЧј<§#`6@Ч6AЗH6CЧHW6<ј6=ј6Bз6HЧ6Gя№њDDFCHк<~H6CЧ<@мŠ6?јFC+`6?ЧА†h0FFwFC+`FF6?Ч<ŠhV<џh0јD\6CЧ<h.ŠD0{6?јFC`Ь 6=јЈ6>ј6@ј6AјFCH“6=Яј6>Чљ6@Яј6Aљ`Ь6>Ч,џ6=ПH <Уhc<H FC6AЧ,џ6@ПH џn‘фіФрТ$№аFT<џ+6K.&Fh‘FTD…Т$№ аFT< hДи/FУ&FhДFTDЈ F(F8Т$№64.‡и$&0$0FhуУиDб)FА6џ.Ч$ с Q(A$+F8i0D§6+.зD6-.Я6.яёЧ< +<;+ШF Ц86-.ј0Х6..ј4С A6Žј6EЧ$16˜ј6FrD`6=.Чј6>Чјџш–D,D‰DDIDDНDвDDeDjDsDЈDБDWDцABS NAMENAME/EXT (PFN)  NO SUCH NAME NAME REQ'D INVALID DRIVE Rџ Т=№$ DOS FUNCTION LIBRARY NOT FOUND FcџяЬDœDœDœDœ DœD'DD8D,DqDD’DЁ6<.Ч 6;Чџd~c3<8~F$ < +FF.D~ * ERROR X ON DECK Y *цн6I.јF 6Eљ6Fњ6Gћ6HќЁШ6IЗ6;ПHШ6<њ6;П+ЧАRxџ‚}ці<ўh6+.ј<џhЦШF!6л.8б&fF6`;6›.86d.Ч0АhО<`6e.зD6*.ЧАhтFFFFQF6›.DF6.ЧАHёFFF6.ЧИGэіШС ШТˆа@М6FЧК`cFF6CјDWFCH6@јFCH,џ6@ПHШ6CЧ<h=С6FП`WhŒD FC+`Ь6?ЧА†h FFqFF6?ЧDeD>D>6FљD0цн6f.ќ6gћF№QРA$+. HeUРADeF6=.Чј 6<ЧАh.Fs @Ё&ˆ6=ќ6>ћFF`ћ @ЁFяDЈ6=јF6=.Чџd›уі7@0јF 8Таh„F F7`i0ыєјF F7`„D6A.Ч, Ш6:Ч< џ+,DБh 6d.&ёFc68ж6.њ&F*`№6r.љ6:.FQПH№F BОHбF0жD6:.јD90†№<`ЕFў6ё.&dDcа6;ЧћFFя№QA}џ6;.јЈ6<јD6CјDWF6=.Чј 6<ЧАh6?јy6HЧ6=ј6GЧ 6>јЈ6Bј6@јFC# <h<УHFCHк<пєыџx‡хі`.6.ќ6Ÿћ6–.&Fc0D6.&F``86:.DcСr№.Ч.щ6њ& !F*#ќFTА66.јђ8F0жщ6њ& !F*#ќ66.ЧFZF-#"F-#D6‚.86Ђ.hr6Л.DrF]DЁЧ<§@баF уТ`YаЧЋиФЏрFDEЧаќFћF<јFУјD FœF 6FзDЁF Т6Lј,џ6Mј6JDТ€$\№.ќ№ћF џАHFQDлF!6+.зDF!џ&fF6`.0DЊ6d.&сDc6с.&dDcF!6+.зDVF!6+.зDVF!џ&F6`.6d.&Fc 6.&уFџ џїіFП ѓFџј6.Ч6Зh_ F™ `к Џ$РHB„аFT№„аFT86Џа0Ц6ЏВhlF™ `к $РаЧ$ВдFZФа6ЧFZФа6ЧFZFЌ 6Ч$ +F‹ 6ч6пЈ6ј6јFT`N <џ+FT$№€†№86‡ј6Ч јФ6—У6Ÿ0@„86Ч0–6ј6ЧјТ6јаFT6 јFT6 ј6Ч6—рЈаŠа§„р`к6 Ч$’hP иЧ$РВј$Рџі їіЯF' F' F' Т< H F' 6 Чр6 пFф ` 6Ч$и& Fэ ` 6Ч$№а6 Fђ F' F' 6ђ.ЧАhc 6єїш Fђ 6.Ч$№ЯF' & Fф ` №ƒиF-` 6Ч4 ј6ј6јЈ6ј6 ј6ј6ј6ј6ј6ј6ю.Чdр6.FcЈ6ЯF' ЫF' F' џF' 6 ЯF' 6 ЯF' џF' џF' 6 Чƒр6 пD-& џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџСџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџAџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџCSYSTEM5 SYSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџь іі!D*‚рЯF' F ТМHє  D h Т6№.ј€< Q YТ_аU(A< Q YТ_аС(W&.џ8800Та6ю.Чdр6.FcЈ6.Ч<џ+џј6ј6ј6ј6јD! 6№.ј€: Хѕ< Q YТ_аU(Aўї 6ј6ј6ј6јЈ6ј6ј6јџ6 ј6ђ.ЧАhэ 6џ.Ч$Hэ .F: <џ‰Ш‚а@‰ 6Ч$*№. ЧЙhэ љ< Q(A$Hэ & !Fш ` 6.Ч$Шьа*№. ЧFZF-` ƒиF-` Dэ D*џт ѕ№.њ€ўї6.зFT`t <џht 6јFT6ј$6ј6зџFZџFZ6њ6Ч$РаїТа`O У иD6 6зFZЧјї6зFTЃр6Ч`j јУ иФ@C DU 6зФFZD№ & !F-#"F-6ю.Я.6 п6 чF*`й Ј§FT6ЏрўFTД+0Dп & F-`й №ƒиF-`й d№.&Dc Dс 0Dс 0Hс 6џ6 ј6ђ.ЧАhэ 6џ.Ч$Hэ .F: <џ‰Ш‚а@‰ 6Ч$*№. ЧЙhэ љ< Q(A$Hэ & !Fш ` 6.Ч$Шьа*№. ЧFZF-` ƒиF-` Dэ D*џ і їЈ Ш@ёТ 0јВ0јF 8D 0Д0јФ$0јFФ  $рУ и$рДрУ$иџ‚аHN ўїIVE NUMBERINVALID TRAP NUMBERFAILURE IN SYSTEM DATAINVALID PHYSICAL FILE NUMBER* INTERNAL SџџAџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ0џЯР Ј6П.0јп>>>>>>>>.:>>*>>>8>>>:.>>>.>> >>>>>џі їі6=.Fr6 .Fr6.Fr6.Ч$<@$6.ј062.ј6.Ч$и& 63.ќ64ћF*`g 6.зF.FF 64.јFl 6K.FrD6.86(.Dr‘ Ќ Ш м ї  ( 8 G ] y Ž Ђ Й ж PARITY FAILURE DURING READPARITY FAILURE DURING WRITERECORD FORMAT ERRORRECORD NUMBER OUџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџСџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџAџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџBSYSTEM7 SYSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџь ііT OF RANGEWRITE PROTECT VIOLATIONDELETE PROTECT VIOLATIONFILE SPACE FULLDRIVE OFF LINELOGICAL FILE NOT OPENINVALID LOGICAL FILE NUMBERINVALID DRIVE NUMBERINVALID TRAP NUMBERFAILURE IN SYSTEM DATAINVALID PHYSICAL FILE NUMBER* INTERNAL SџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџСџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїіDG AT XXXXXX *** LFN X. LRN 0.  DRIVE ?. NAME  *** §„рџ‹и6 .FN 6ю.Ч8d№.&Fc6№.Ч6Л.ј6џ.Ч$яј6.Ч6с.ј0Ч $06.ј6.Чр6Чи6!.Fњ F$џ‚а`А €`Ц<`Ш6s. & F зF яђFcF@іi6с.Ч$јDоџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџB@BLLCA@HFAKO@@FIIO@LCB@HFBMO@F@A@J@DDCFO@FCE@NB@@KOF@O@DJD@AAHMFBL@FCIMNBO@HOFDJBB@DDCFO@FDIIO@CBF@@ODJHCFCFANB@@HO@CFA@AFDGBB@HOFDI@B@BLDAA@@MHDALO@DDCFO@FDIIO@CBHCDMF@@@FCDCNBGAHOFDNAGAF@C@HO@CHFCFO@MMFNFCKDNBGAFADAFDCFB@F@A@@KDDCFO@@@@@@@@@@@@@   япq^ A  ~!  6AAAA6€ ~п.CHARSET SYS6+.з& F9 6.F 6џ.Ч4јŒ sп`AA@ ьр$  ?H _џE@BLD@NOCBHENHO@@KG@@KG@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  SYSTEM MAIN   0ЯсЦ>>.:>*>>8>>:.>>.> >.:>>.:>.:.:.:*>.:8>.::..:>..: >*>>>*>>*>.:*>*>*>8>*>:.*>>.*> >ypp**$cdc9M2 @"AA">>`>EIQ>і с*!#EEI1BAIU" $rQQQN)IIF@GHP`6III61IIџC@NBO@F@LOBHCB@OGOHCG@FDHJO@CBF@D@FCBGNBC@HONB@@EOFDLLO@C@DLFDK@B@DDMIO@AMN@@@FDFCB@@FCFO@FCLFNBC@OMFCMFGNFCEFOLFCE@NB@@IOMLFџGџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџF@FCFONBO@HCBLD@DOCBD@FJ@OGOHCF@AN@BAEF@A@G@MKILMLGMMMOMJNKNLNMNNNINHBFDHGB@F@AN@BAEADJ@@DFJO@DLMED@DOCBCLKED@@KG@ADDBL@J@J@J@L@C@JGHGB@G@ADDBB@G@ADDBB@KBEEADFCDFHOG@FDJJO@ALGEG@F@FOD@J@FCLFHOHJFCJFHOG@HJ@H@H@H@HHLFDJJO@CBALIEG@HBDDCFO@ @@@@@@@@@@  A@BLLCA@HFDKO@@FJJO@LCC@HFFMO@@FMLO@LCE@HFBNO@@FLMO@LCG@HFNNO@@FHNO@F@A@J@G@FBL@NAAAF@O@AJCHHMG@FAABFBL@NAAALOFDI@B@KOFDI@B@F@A@CHHMJK@FJKO@DDCFO@FAAANAA@FBL@DDJKO@FBL@NAAB@KG@NABBFBL@@KG@FBL@NACB@KG@NADBFBL@@KG@NAA@FBL@DDNJO@@@@@@@@@@@@@@@@@@@@@@@   прЬJ<"AA" @EH0>A]UAAA"AA"IIIAHHH@>AAI.AAA~@"A  0>AAA>HHH0>AEB=HLJ11IIIF@@@@~~p  p ccppCEIQaAA`AA@ ьр$  ?H _џD@BLLCIAHFDKO@LCJAHFIKO@HCFCKINBO@FDK@B@GL@CG@CDBCDCMDC@MDB@@L@DC@B@C@D@D@HA@@@@@@@B@B@@@@@@@@@@FBA@NA@@G@FBDINA@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  џGџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@@LDJ@NFDJBB@DDCFO@HCFCBGNBC@GLD@OO@CC@N@@@FDAEB@LCOOC@@MFDAEB@HLDBOAD@A@@N@HDH@NF@@LAJB@B@B@HLF@@H@HHMBLG@@@@@@@@@OHHJLKLL   OOFB@ANAGBIFKFDLDAA@@N@DJHO@CLDAA@HM@DJHO@F@OOJ@DDCFO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  M@FBDFNAC@FA@AFDCFB@N@@@IMANFCKNNBO@LOFCMNKOFDHDB@FDKDB@FDAEB@LCOOCBFDAEB@LC@HHDJOO@FDAEB@FDAEB@FCKNNBO@HOFDAEB@FCMNHOF@G@FCOOHO@MFDIFO@KNDO@KNAI@JFI@B@FDDEB@@NF@OOCHHMHFAOO@DLOKHFMLO@FCOONBO@GLD@J@@DCLO@FB@@NA@@DDJIO@FDDEB@HMFAB@DDDEB@F@OOB@HMG@G@   H@FCILNBO@JOFCJLKOFCKLLOFBOJNAO@AMFDABB@FDHGB@FCILNBO@GLFCJLGJFCKLGJLCOOHDHIO@HJDDCFO@FCKLNBO@GLDAA@HOC@FCJLGLLA@@HOC@FCILGLLA@@HOC@DDNAB@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  @AF@AH@HG@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@   K@BLLCA@HFDJO@@FIIO@LCB@HFCMO@F@A@J@DDCFO@FDDJO@K@GLLC@HHDIIO@G@F@AN@BAEADDB@ALB@AK@GL@K@EGKO@HLFDI@B@FBE@ALDBOGOEGLDBOGGEFDI@B@DLDAA@@NHDMKO@HBIEALD@A@HLHJG@FCOONBB@GLDBMOHOHJG@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  џџN@FBDFNAC@FA@AFDCFB@FDCFO@N@@@CLLCOOHFLMO@FDHDB@FDKDB@FDAEB@@KHFNJO@LCOOHFLIO@F@A@G@FDAEB@@OFDAEB@HNFDAEB@NJ@NFDAEB@MJDJLCOO@FKJO@FDAEB@@KKB@MFDAEB@HOFDI@B@F@OOBH@MHDKLO@DDOIO@FCFNNBO@FDBGB@DD@FB@I@@@K@K@CADDODCEFD@CACDC@BADBDODBEDEM@@@@@@@@@@@@@@@   I@BLD@NOCBHE@IO@F@@H@HG@HJ@HG@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  OOFB@ANAGBIFKFDLDAA@@N@DJHO@CLDAA@HM@DJHO@F@OOJ@DDCFO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  L@F@AH@HG@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@   G@FCOONBB@FLM@NKHFDIO@MAGLDCH@HOHBF@AN@BAEADJ@BDHGB@@DDIO@F@@AHBIENB@@EOMMFBA@FDDOO@HFCFO@FMELJ@J@HLDLKJFDJEB@FDGNO@HDKJO@FDDOO@HFCFO@FMELJ@J@HLFDDEB@KJLJHDCFO@FDGNO@HDALO@CLLBOOHMHDKJO@DLJ@@NDDKJO@F@@DEHHNK@DLJ@@NF@A@FH@OG@F@AN@BAEHBADLBB@DBB@G@   O@FDCFO@BLDBOG@KHFHIO@LCA@HFEKO@F@AH@HG@FDHDB@FDKDB@FDAEB@LCAHHDDIO@FACBFDDEB@@NFDDEB@HMFAIODDDEB@HCFC@@NBH@GLLCHC@CHFA@H@FBIFNAB@FCLFNBB@LOFCMFKOFBDONAO@FCKBNB@@GMFDICB@@FBNO@FDCFO@DDA@H@FCLNNBO@FDBGB@DDDIO@I@@@K@K@CANDOD@BEEDEIDLDIDDEIE@BLDNDKDM@   J@BLD@NOCBKCNB@AFC@@@BOLHCNNGM@CF@A@AHHOHCNNJO@COKHBIOELHDKJO@D@A@HNLC@N@FNHO@J@J@DBOCFC@NNBO@HON@@DFAMOFDDEB@HMN@@@FDDEB@D@A@FDJEB@N@@DFDDEB@KKF@@AHFCMO@F@D@FCANHO@KFDCFO@FCOMNBO@G@@B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    LF1 CALL LOCATE JFZ REPON2 . DELETE MEMBER HL NAME2+2 LB LF1 CALL DELMEM . LOAD MEMBER ADDRESS & ADD MEMBE @bMLC *LFT+LF2+PFN CPC JFZ REPOK MLA *LFT+LF1+PDN ND 017 LCA MLA *LFT+LF2+PDN ND 017 CPC HL SAMLIB JTZ ERROR . POSITION TO RECORD ZERO REPOK DE 0 CALL POSIT$ . CHECK FOR LIBRARY FILE CALL READ$ CALL GET$ CP 0 OOFB@ANAGBIFKFDLDAA@@N@DJHO@CLDAA@HM@DJHO@F@OOJ@DDCFO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  @eE2+2 CALL ADDMEM JMP REPEND * . . REPLACE A LIBRARY FILE . REPLIB MLA *GMEMB1 CP ' ' JTZ REPAL . SEE IF GENERIC NAME WAS SPECIFIED HL GMEMB1 LC 8 REPLB1 LAM CP '*' JTZ REPAL CALL INCHL LAC SU 1 LCA JFZ REP @`COMMAND . HL CHNCMD DE MCR$ LC 6 CALL BLKTFR . MOVE IN CHAIN FILENAME MLC *CHNLEN HL CHNNAM CALL BLKTFR . GO PUT 015 & 003 AT END OF LINE CALL INCSWP CALL ENDLIN . DISPLAY LINE ON SCREEN CALL ZERO CALL ROLL HL @hR REPON2 MLD *MEMADR MLE *MEMADR+1 LB LF2 CALL POSIT$ JMP REPRG2 * . . REPLACE ALL MEMBERS OF A LIBRARY . REPAL HL GMEMB1 DE GNAME1 LC 8 CALL BLKTFR . GO BUILD TABLE OF NAMES LB LF2 CALL BLDTAB DE TABLE-10 MSD @c377 JTZ REPLIB . REPOSITION FILE DE 0 CALL POSIT$ * . . REPLACE REGULAR MEMBER . . SEE IF MEMBER NAME SPECIFIED & MOVE FILENAME IF NOT REPREG MLA *NAME2+2 CP ' ' JFZ REPRG1 HL NAME1+2 DE NAME2+2 LC 8 CALL BLKTFR . SE OOFB@ANAGBIFKFDLDAA@@N@DJHO@CLDAA@HM@DJHO@F@OOJ@DDCFO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  @fLB1 * . . JUST REPLACE 1 MEMBER . . SEE IF MEMBER EXISTS REPONE HL NAME1+18 LB LF2 CALL LOCATE HL BADMEM JFZ ERROR . SAVE MEMBER ADDRESS MSD *MEMADR MSE *MEMADR+1 . SEE IF NAME WAS SPECIFIED MLA *NAME2+2 CP ' ' JFZ R @aMCR$ CALL DSPLY$ JMP CMDINT + ........................................ . . ROUTINE TO REPLACE A MEMBER . REPLC EQU $ . SEE IF INPUT FILE EXISTS HL NAME1 LB LF2 CALL OPNLFN . SEE IF FILE IS THE SAME AS LIBRARY MLA *LFT+LF1+PFN џџ@dE IF MEMBER ALREADY EXISTS REPRG1 HL NAME2+2 LB LF1 CALL LOCATE JFZ REPRG2 . MEMBER EXISTS, PREPARE TO DELETE IT  HL NAME2+2 LB LF1 CALL DELMEM . PREPARE TO ADD MEMBER REPRG2 LA LF1 MSA *LFN1 LA LF2 MSA *LFN2 HL NAM AGBIFKFDLDAA@@N@DJHO@CLDAA@HM@DJHO@F@OOJ@DDCFO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  @gEPON1 . MOVE NAME HL NAME1+18 DE NAME2+2 LC 8 CALL BLKTFR . SEE IF MEMBER ALREADY EXISTS REPON1 HL NAME2+2 LB Z REPAL2 MLA *TABLST+1 CPE JTZ REPEND . SEE IF MEMBER EXISTS REPAL2 HL REPMG1 PUSH CALL LDPTR1 LB LF1  @qALL READ$ . FORMAT MEMBER NAME HL SRHHDR DE MCR$ LC SRHHDL CALL BLKTFR HL NAME1+2 LC 8 CALL BLKTFR CALL INCSWP LA 3 LMA . DISPLAY MEMBER NAME CALL ZERO CALL ROLL HL MCR$ CALL DSPLY$ . ZERO OUT LINE COUNTER @l CHECK FOR DELETE REPEND RET . DISABLE CODE BELOW FOREVER . * **********DISABLED . REPEND HL PRMDEL . CALL PRMTST . RFZ . DELETE MEMBER . LB LF2 . HL NAME1 . LCM . DE NAME1+2 . CALL PREP$ . LD 0377 . CALL CHOP$ . CALL CLOSE$ . @tJTZ SRHLN2 CALL INCHL JMP SRHLN1 . FIRST CHARACTER MATCHES SRHLN2 CALL INCHL PUSH DE SRHSTR+1 SRHLN3 LBM CALL INCSWP LAM CP 015 JTZ SRHDSP LCA CALL INCSWP LAB CP 003 JTZ SRHPOP CPC JTZ SRHLN3 JMP SRHLN@o INCSWP LA 003 LMA * . . GO BUILD TABLE OF NAMES . LB LF1 CALL BLDTAB . PREPARE TO EXTRACT NAMES FROM TABLE LB LF2 DE TABLE-10 MSD *PTR1 MSE *PTR1+1 SRHNXT CALL INCPT1 . CHECK FOR END OF TABLE MLA *TABLST CPD JFZ @jCALL LOCATE JFZ REPAL3 . DELETE MEMBER POP HL REPMG2 PUSH CALL LDPTR1 LB LF1 CALL DELMEM . CONTINUE ADDING REPAL3 EX CLICK CALL LDPTR1 DE MEMBER LC 8 CALL BLKTFR . GET DISK ADDRESS LEM CALL INCHL LDM LB L @rLA 0 MSA *LINE MSA *LINE+1 . PAUSE 1/4 SECOND LA 8 LC 0 DE 250 CALL DOSFNC . START OF NEW LINE SRHNWL HL SRHFRM DE MCR$ LC 8 CALL BLKTFR HL SRHLIN LC 250 CALL GETLIN JTC SRHNXT . PUT 003 AT END OF LINE LA @m RET * **********END DISABLED CODE + ................................... . . SEARCH A MEMBER FOR A STRING . SEARCH EQU $ * . . GET SEARCH STRING FROM COMMAND LINE . HL MCR$ DE SRHSTR LC 80 SRHSCN LAM CP ',' JTZ SRHSC1 CALL џџ@p SRHFND MLA *TABLST+1 CPE JTZ NXTFNC . MOVE NAME TO NAME2 SRHFND LHD LLE DE NAME1+2 LC 8 CALL BLKTFR . LOCATE MEMBER HL NAME1+2 LB LF1 CALL LOCATE HL BADMEM JFZ SRHNXT . POSITION FILE LB LF1 CALL POSIT$ C @kF2 CALL POSIT$ . DISPLAY MEMBER NAME CALL ZERO CALL ROLL HL MEMBER CALL DSPLY$ POP CALL DSPLY$ . SETUP CORRECT LFN'S LA LF1 MSA *LFN1 LA LF2 MSA *LFN2 HL MEMBER CALL ADDMEM JMP REPAL1 * . . END OF REPLACE, @s 003 LMA . INCREMENT LINE NO MLA *LINE MLL *LINE+1 LHA CALL INCHL LDH LEL MSD *LINE MSE *LINE+1 . SEARCH FOR MATCH ON FIRST CHARACTER HL SRHLIN PUSH SRHLN0 MLB *SRHSTR POP SRHLN1 LAM CP 003 JTZ SRHTST CPB @n INCHL LAC SU 1 LCA JFZ SRHSCN JMP NXTFNC . MOVE SEARCH STRING SRHSC1 CALL INCHL SRHSC2 LBM CALL INCSWP  LMB CALL INCSWP LAB CP 015 JTZ SRHSC3 LAC SU 1 LCA JFZ SRHSC2 . PUT 003 AT END OF STRING SRHSC3 CALL @i *PTR1 MSE *PTR1+1 . GET NEXT MEMBER TO COPY REPAL1 CALL INCPT1 . SEE IF THIS IS END OF TABLE MLA *TABLST CPD JF џџ@|HL MCR$ LC 75 CALL KEYIN$ . TEST PARAMETER HL MCR$ LAM CP 015 RTZ . CP '*' CP 'E' RTZ CP 'A' JTZ KYFNC2 CP 'D' JTZ KYFNC2 CP 'X' JTZ KYFNC2 CP 'L' JTZ KYFNC2 CP 'N' JTZ KYFNC2 CP 'O' JTZ K@w KYFUNC LA 015 MSA *PARM . INITIALIZE NAME 1 HL NULFIL DE NAME1 LC 32 CALL BLKTFR . INITIALIZE NAME 2 HL NULFIL DE NAME2 LC 32 CALL BLKTFR . INITIALIZE NAME 3 HL NULFIL DE NAME3 LC 32 CALL BLKTFR . INITIALIZ@N DE NAME2 CALL SCANFS DE GMEMB2 CALL SCNGEN DE NAME2+16 CALL SCNMEM . GET 3RD NAME FROM COMMAND LINE CALL SCANBL DE GNAME3 CALL SCNGEN DE NAME3 CALL SCANFS DE GMEMB3 CALL SCNGEN DE NAME3+16 CALL SCNMEM .@z CALL BLKTFR . INITIALIZE GENERIC MEMBER 1 HL BLANKS DE GMEMB1 LC 8 CALL BLKTFR . INITIALIZE GENERIC MEMBER 2  HL BLANKS DE GMEMB2 LC 8 CALL BLKTFR . INITIALIZE GENERIC MEMBER 3 HL BLANKS DE GMEMB3 LC 8 CALL BL@u0 . FORMAT LINE NO SRHDSP MLD *LINE MLE *LINE+1 HL MCR$ CALL CVD5 HL MCR$ LC 5 CALL BLKFIL . MOVE LINE HL SRHLIN DE MCR$+8 LC 70 CALL BLKTFR CALL INCSWP LA 003 LMA . DISPLAY LINE CALL ZERO CALL ROLL H@}YFNC2 CP 'R' JTZ KYFNC2 . INVALID FUNCTION EX BEEP JMP KYFNC1 . SAVE ORIGINAL PARAMETER KYFNC2 MSA *PARM . FIND FIRST BLANK AFTER COMMAND CODE HL MCR$ KYFNC3 LAM CP 015 JTZ KYFNC4 CP ' ' JTZ KYFNC4 CALL INCHL JMP @xE NAME 4 HL NULFIL DE NAME4 LC 32 CALL BLKTFR . INITIALIZE NAME 5 HL NULFIL DE NAME5 LC 32 CALL BLKTFR . INITIALIZE GENERIC NAME 1 HL BLANKS DE GNAME1 LC 8 CALL BLKTFR . INITIALIZE GENERIC NAME 2 HL BLANKS D@€ GET 4TH NAME FROM COMMAND LINE CALL SCANBL DE GNAME4 CALL SCNGEN DE NAME4 CALL SCANFS DE GMEMB4 CALL SCNGEN DE NAME4+16 CALL SCNMEM . GET 5TH NAME FROM COMMAND LINE CALL SCANBL DE GNAME5 CALL SCNGEN DE NAME5 @{KTFR . INITIALIZE GENERIC MEMBER 4 HL BLANKS DE GMEMB4 LC 8 CALL BLKTFR . INITIALIZE GENERIC MEMBER 5 HL BLANKS DE GMEMB5 LC 8 CALL BLKTFR . PREPARE FOR KEYIN KYFNC1 HL PROMPT LD 0 LE 11 CALL DSPLY$ . KEYIN LINE @vL MCR$ LD 0 LE 11 CALL DSPLY$ . SEE IF KEYBOARD OR DISPLAY WAS PRESSED SRHPOP POP SRHTST LA 6 LC 0 CALL DOSFNC JTS NXTFNC JTP SRHTST JMP SRHNWL + ........................................ . . ROUTINE TO KEYIN PARAMETER . @~KYFNC3 . GET 1ST NAME FROM COMMAND LINE KYFNC4 CALL SCANBL DE GNAME1 CALL SCNGEN DE NAME1 CALL SCANFS DE GMEMB1 CALL SCNGEN DE NAME1+16 CALL SCNMEM . GET 2ND NAME FROM COMMAND LINE CALL SCANBL DE GNAME2 CALL SCNGE@yE GNAME2 LC 8 CALL BLKTFR . INITIALIZE GENERIC NAME 3 HL BLANKS DE GNAME3 LC 8 CALL BLKTFR . INITIALIZE GENERIC NAME 4 HL BLANKS DE GNAME4 LC 8 CALL BLKTFR . INITIALIZE GENERIC NAME 5 HL BLANKS DE GNAME5 LC 8 @ŒNXTDIR+1 CALL GET$ MSA *NXTDIR . INITIALIZE BUFFER POSITION XRA MSA *DIRADR+2 . POSITION TO NEXT ENTRY LOCENT MLA *DIRADR+2 AD 10 CP 250 JFC LOCDIR LMA CALL SETBUF . TEST FOR END OF DIRECTORY SECTOR LA 8 MSA *COUNT @‡ADDHL LC 3 CALL MOVNAM POP . MOVE DRIVE IF SPECIFIED LAM CP 0377 JTZ BLDNMX PUSH HL DRIVE LC 3 CALL MOVNAM POP LCM . GO CONVERT DRIVE NO TO DECIMAL LHD LLE DE 0 LEC CALL CVD2 MLA *CHARS AD 2 LMA .  @‚CP ' ' HL NAMREQ JTZ ERROR . CHECK FOR EXTENSION POP  PUSH LA 10 CALL ADDHL LAM CP ' ' HL EXTREQ JTZ ERROR . CHECK FOR VALID DRIVE POP PUSH LAM CP 0376 HL BADDRV JTZ ERROR . OPEN FILE LCA POP CALL  @ŠL => @ OF MEMBER NAME . LOCATE PUSH XRA MSA *NXTDIR MSA *NXTDIR+1 . READ NEXT DIRECTORY SECTOR LOCDIR MLA *NXTDIR CP 0377 JTZ LOCXIT LDA MLE *NXTDIR+1 . SAVE CURRENT DIRECTORY ADDRESS MSD *DIRADR MSE *DIRADR+1 . READ D @… ROUTINE TO SCAN FOR A MEMBER NAME . SCNMEM PUSH CALL DECHL LAM POP CP '.' RFZ CALL SCANFS RET * ........................................ . . ROUTINE TO EDIT A FILENAME . . ON ENTRY: HL => @ OF LFT ENTRY . DE => @ OF OUTPUT  џџ@ˆEXIT BLDNMX MLA *CHARS RET * . . MOVE CHARACTERS UNTIL BLANK . . ON ENTRY: HL => @ OF INPUT STRING . DE => @ OF OUTPUT STRING . MOVNAM LAM CP ' ' RTZ LBA CALL INCSWP LMB CALL INCSWP . INCREMENT CHARACTER COUNT PUSH ML @ƒOPEN$ RFC . FILE DOES NOT EXIST - CAN ONLY BE 'E', 'O', OR 'F' MLA *PARM HL BADFIL CP 'X' JTZ OPNPRP CP 'O'  JTZ OPNPRP CP 'F' JTZ OPNPRP JMP ERROR . PREP FILE OPNPRP CALL PREP$ XRA SU 1 RET * .................. @‹IRECTORY SECTOR CALL POSIT$ CALL READ$ . CHECK FOR VALID DIRECTORY CALL GET$ CP 0377 HL BADLIB JFZ ERROR . SKIP NEXT 2 BYTES CALL GET$ CALL GET$ . NEXT 2 BYTES ARE DISK ADDRESS OF NEXT DIRECTORY SECTOR CALL GET$ MSA * @†AREA 'FILENAME/EXT:DRnn' . BLDNAM PUSH XRA MSA *CHARS POP PUSH . MOVE PRIMARY NAME LA 2 CALL ADDHL LC 8  CALL MOVNAM POP PUSH . MOVE A '/' HL SLASH LC 1 CALL MOVNAM POP PUSH . MOVE EXTENSION LA 10 CALL  @CALL SCANFS DE GMEMB5 CALL SCNGEN DE NAME5+16 CALL SCNMEM RET * ........................................ . . ROUTINE TO OPEN & VALIDATE OUTPUT FILE . OPNLFN EQU $ PUSH . CHECK FOR NAME LA 2 CALL ADDHL LDH LEL LAM  @‰A *CHARS AD 1 LMA POP . DECREMENT MAXIMUM CHARACTERS TO MOVE LAC SU 1 LCA JFZ MOVNAM RET . CHARS DC 0 * ........................................ . . ROUTINE TO LOCATE TO MEMBER . . ON ENTRY: B => LFN OF LIBRARY FILE . H @„...................... . . ROUTINE TO SCAN FOR A GENERIC NAME . SCNGEN PUSH LC 8 SGNNXT LAM CP ',' JTZ SGNXIT CP 015 JTZ SGNXIT LBA CALL INCSWP LMB CALL INCSWP LAC SU 1 LCA JFZ SGNNXT SGNXIT POP RET * . .  @—WRITE$ CALL INCADR . WRITE END OF FILE IN OUTPUT FILE ADDXIT MLB *LFN1 CALL PUT000 LA 010 CALL PUT$ DE -1 CALL POSIT$ CALL WRITE$ CALL INCADR . WRITE END OF FILE SECTOR CALL PUT000 LA 003 CALL PUT$ DE -1 CALL@’LL READ$ LA 8 CALL SETBUF CALL GET$ MSA *NXTADR+1 MSA *MEMADR+1 CALL GET$ MSA *NXTADR MSA *MEMADR . COPY INPUT FILE TO OUTPUT FILE MLD *NXTADR MLE *NXTADR+1 CALL POSIT$ . SET UP TRAP'S DE ADDXIT LC 2 CALL  @POP PUSH LDH LEL CALL GET$ . LOAD & COMPARE NAMES LOCTST LCA CALL INCSWP LAM CPC JFZ LOCENT CALL INCSWP PUSH MLA *COUNT SU 1 LMA POP JTZ LOCFND CALL GET$ JMP LOCTST . NAMES ARE EQUAL - GET DISK ADDRESS LO @•L PRMTXT . CALL PRMTST . JTZ ADDXIT * ***********END DISABLED CODE . . PREPARE TO MOVE SECTOR ADDRST MLB *LFN2 LA 3 CALL SETBUF . MOVE SECTOR FROM INPUT TO OUTPUT ADDMOV MLB *LFN2 CALL GET$ JTC ADDWRT MLB *LFN1 CALL PUT$@ POSIT$ CALL READ$ LA 8 CALL SETBUF . GET END OF FILE SECTOR CALL GET$ LEA CALL GET$ LDA . ALLOCATE NEW DIRECTORY SECTOR MLB *LFN1 CALL DIRADD . LINK TO PREVIOUS DIRECTORY SECTOR PUSH MLD *DIRADR MLE *DIRADR+1 CA @˜ POSIT$ CALL WRITE$ . UPDATE END OF FILE SECTOR DE 0 CALL POSIT$ CALL READ$ LA 8 CALL SETBUF MLA *NXTADR+1 CALL PUT$ MLA *NXTADR CALL PUT$ DE 0 CALL POSIT$ CALL WRITE$ . UPDATE DIRECTORY WITH MEMBER ADDRESS @“TRAP$ DE ADDXIT LC 3 CALL TRAP$ . READ NEXT SECTOR FROM INPUT ADDCPY MLB *LFN2 DE -1 CALL POSIT$ CALL REA@ŽCFND CALL GET$ LEA CALL GET$ LDA XRA LOCXIT POP ORA RET * ................................... . . ROUTINE TO ADD MEMBER . . ON ENTRY: LFN1 => OUTPUT LFN . LFN2 => INPUT LFN . HL => @ OF MEMBER NAME . ADDMEM EQU $ PUSH . S @– JMP ADDMOV . WRITE OUTPUT SECTOR ADDWRT MLB *LFN1 DE -1 CALL POSIT$ CALL WRITE$ CALL INCADR JMP ADDCPY . WRITE END OF FILE IN OUTPUT FILE ADDEOF MLB *LFN1 CALL PUT000 LA 003 CALL PUT$ DE -1 CALL POSIT$ CALL @‘LL POSIT$ CALL READ$ LA 6 CALL SETBUF POP LAL CALL PUT$ LAH CALL PUT$ MLD *DIRADR MLE *DIRADR+1  CALL POSIT$ CALL WRITE$ . GO TRY AGAIN JMP ADDAGN . FOUND EMPTY DIRECTORY ELEMENT ADDFND DE 0 CALL POSIT$ CA џџ@”3 CALL SETBUF LA 003 CALL TST000 JFZ ADDRST . TEXT EOF, CHECK FOR TEXT OR DBC LIBRARY MLA *LIBTYP MLB *LIBTXT CPB JTZ ADDXIT MLB *LIBDBC CPB JTZ ADDXIT . TEXT EOF, CHECK FOR 'TEXT' PARAMETER * ***********DISABLED . H@EE IF MEMBER ALREADY EXISTS MLB *LFN1 POP PUSH CALL LOCATE HL DUPMEM JTZ ERROR . LOCATE EMPTY DIRECTORY ELEMENT ADDAGN MLB *LFN1 HL X377 CALL LOCATE JTZ ADDFND . NEW DIRECTORY MUST BE ALLOCATED MLB *LFN1 DE 0 CALL   @™MLD *DIRADR MLE *DIRADR+1 CALL POSIT$ CALL READ$ MLA *DIRADR+2 CALL SETBUF . MOVE IN NAME OF MEMBER POP LC 8 ADDDIR LAM CALL PUT$ CALL INCHL LAC SU 1 LCA JFZ ADDDIR . MOVE IN MEMBER ADDRESS MLD *MEMADR MLE@ЁIR CP 0377 RTZ LDA MLE *NXTDIR+1 . SAVE CURRENT DIRECTORY ADDRESS MSD *DIRADR MSE *DIRADR+1 . READ DIRECTORY SECTOR CALL POSIT$ CALL READ$ . CHECK FOR VALIDATE DIRECTORY CALL GET$ CP 0377 HL BADLIB JFZ ERROR . SKIP@œF . CLEAR OUT DIRECTORY ENTRY LC 10 DEL377 LA 0377 CALL PUT$ LAC SU 1 LCA JFZ DEL377 . REWRITE ENTRY MLD *DIRADR MLE *DIRADR+1 CALL POSIT$ CALL WRITE$ RET * ........................................ . . ROUTINE TO AD@ЄMSE *PTR1+1 . READ NEXT DIRECTORY SECTOR BLDDIR MLA *NXTDIR CP 0377 JTZ BLDOUT LDA MLE *NXTDIR+1 . READ DIRECTORY SECTOR MLB *LFN1 CALL POSIT$ CALL READ$ . CHECK FOR VALID DIRECTORY CALL GET$ CP 0377 HL BADLIB JFZ @ŸA 03 CALL PUT$ DE -1 CALL POSIT$ CALL WRITE$ . UPDATE EOF SECTOR IN RECORD 0 DE 0 CALL POSIT$ CALL READ$ HL LFT+BUFADR LAB CALL ADDHL LA 8 LMA POP PUSH LAL CALL PUT$ LAH CALL PUT$ DE 0 CALL POS@š *MEMADR+1 LAE CALL PUT$ LAD CALL PUT$ . REWRITE DIRECTORY SECTOR MLD *DIRADR MLE *DIRADR+1 CALL POSIT$  CALL WRITE$ . END OF MEMBER ADD RET + ................................... . . DELETE A MEMBER FROM LIBRARY . . ON EN@Ђ NEXT 2 BYTES CALL GET$ CALL GET$ . GET ADDRESS OF NEXT DIRECTORY SECTOR CALL GET$ MSA *NXTDIR+1 CALL GET$ M@D A NEW DIRECTORY SECTOR . . ON ENTRY: B => LFT . DE => LRN OF SECTOR . DIRADD LHD LLE CALL INCHL PUSH HL LFT+BUFADR LAB CALL ADDHL LA 3 LMA . LA 0377 CALL PUT$ LA 0200 CALL PUT$ MLA *LIBTYP CALL PUT$ џџ@ IT$ CALL WRITE$ POP CALL DECHL RET * ........................................ . . ROUTINE TO CONVERT ALL DIRECTORY SECTORS TO NEW LIBRARY TYPE . CNVLIB XRA MSA *NXTDIR MSA *NXTDIR+1 . READ NEXT DIRECTORY SECTOR CNVNXT MLA *NXTD@›TRY: HL => @ OF MEMBER . B => LFN . DELMEM EQU $ . SEE IF MEMBER EXISTS CALL LOCATE HL BADMEM JFZ ERROR . JUST MOVE '377' TO DIRECTORY ELEMENT MLD *DIRADR MLE *DIRADR+1 CALL POSIT$ CALL READ$ MLA *DIRADR+2 CALL SETBU@ЃDIRADR MLE *DIRADR+1 CALL POSIT$ . REWRITE SECTOR CALL WRITE$ JMP CNVNXT * ........................................ . . BUILD TABLE OF FILE NAMES . BLDTAB MSB *LFN1 XRA MSA *NXTDIR MSA *NXTDIR+1 DE TABLE-10 MSD *PTR1 @žLA 0377 CALL PUT$ LA 0377 CALL PUT$ XRA CALL PUT$ XRA CALL PUT$ . FILL REST OF SECTOR WITH 377'S DIR377 LA 0377 CALL PUT$ JFC DIR377 . WRITE SECTOR CALL POSIT$ CALL WRITE$ . WRITE NEW END OF FILE CALL PUT000 L! џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@ЌLOOP THRU AND COMPARE CHARACTERS SRTMAT LBM CALL INCSWP LAM CPB JTC SRTSWP JFZ SRTINC CALL INCSWP LAC SU 1 LCA JFZ SRTMAT JMP SRTINC . FORWARD NAME IS LESS THAN BACKWARD NAME SRTSWP LA 001 MSA *SRTFLG . FIRST SAVE@ЇGET . GET MEMBER ADDRESS CALL GET$ LMA  CALL INCHL CALL GET$ LMA . SEE IF THIS IS FILE REORGANIZATION MLA *PARM CP 'O' JTZ BLDOK . SEE IF MEMBER NAME MATCHES MLA *GNAME1 CP ' ' JTZ BLDOK DE TABMEM LC 8 BLDCMP @ЏAD FORWARD POINTER INTO HL . LDPTR2 MLA *PTR2 MLL *PTR2+1 LHA RET * . . ROUTINE TO LOAD BACKWARD POINTER INTO HL . LDPTR1 MLA *PTR1 MLL *PTR1+1 LHA RET * . . ROUTINE TO INCREMENT FORWARD POINTER . INCPT2 CALL LDPTR2 LA 10 @ЊTZ * . . SORT TABLE . SRTTAB EQU $ . INITIALIZE BACKWARD POINTER DE TABLE-10 MSD *PTR1 MSE *PTR1+1 . INITIALIZE FORWARD POINTER DE TABLE MSD *PTR2 MSE *PTR2+1 . CLEAR SORT FLAG XRA MSA *SRTFLG . INCREMENT POINTERS SRTINC@ЅERROR . SKIP 2 BYTES CALL GET$ CALL GET$ . GET ADDRESS OF NEXT DIRECTORY SECTOR CALL GET$ MSA *NXTDIR+1 CALL GET$ MSA *NXTDIR . INITIALIZE BUFFER POSITION XRA MSA *NXTDIR+2 . POSITION TO NEXT MEMBER BLDNXT MLA *NXTDIR+2 A@­ BACKWARD MEMBER CALL LDPTR1 DE TABMEM LC 10 CALL BLKTFR . THEN MOVE BACKWARD MEMBER TO FORWARD MEMBER CALL LDPTR1 LDH LEL CALL LDPTR2 LC 10 CALL BLKTFR . THEN MOVE FORWARD MEMBER TO BACKWARD MEMBER CALL LDPTR2 LDH @ЈLAM CP ' ' JTZ BLDOK LBA CALL INCSWP LAB CP '*' JTZ BLDINC LAM CPB JFZ BLDNXT BLDINC CALL INCSWP  LAC SU 1 LCA JFZ BLDCMP . THIS MEMBER IS OK BLDOK EQU $ . MOVE MEMBER NAME INTO TABLE CALL INCPT1 HL TABM@А CALL ADDHL LDH LEL MSD *PTR2 MSE *PTR2+1 RET * . . ROUTINE TO INCREMENT BACKWARD POINTER . INCPT1 CALL LDPTR1 LA 10 CALL ADDHL LDH LEL MSD *PTR1 MSE *PTR1+1 RET * ........................................ . .  @Ћ CALL INCPT1 CALL INCPT2 . SEE IF FORWARD POINTER IS AT END OF LIST MLA *TABLST CPD JFZ SRTPRP MLA *TABLST+1  CPE JTZ SRTEND . PREPARE TO COMPARE THE 2 NAMES IN THE LIST SRTPRP CALL LDPTR2 LDH LEL CALL LDPTR1 LC 8 . @ІD 10 CP 250 JFC BLDDIR MSA *NXTDIR+2 LCA MLB *LFN1 LAC CALL SETBUF . PREPARE TO GET NAME MLB *LFN1 HL TABMEM LC 8 . GET NAME BLDGET CALL GET$ CP 0377 JTZ BLDNXT LMA CALL INCHL LAC SU 1 LCA JFZ BLD@ЎLEL HL TABMEM LC 10 CALL BLKTFR . END OF MEMBER SWAP JMP SRTINC . END OF CURRENT PASS THRU TABLE, SEE IF ANY MEMBERS WERE SWAPPED SRTEND MLA *SRTFLG ORA JFZ SRTTAB . TABLE HAS BEEN SORTED, OK TO RETURN RET * . . ROUTINE TO LO @ЉEM LC 10 CALL BLKTFR JMP BLDNXT . INCREMENT TABLE TO NEXT MEMBER & SAVE LAST ADDRESS BLDOUT CALL INCPT1 MSD *TABLST MSE *TABLST+1 * . . CHECK TO SEE IF WE FOUND ANY MEMBERS . HL TABLE LAH CPD JFZ SRTTAB LAL CPE R" @МXRA CALL PUT$ RET * ........................................ . . ROUTINE TO TEST THE PARM TO A SPECIFIC VALUE . . ON ENTRY: HL => @ OF NAME TO BE TESTED . * *******DISABLED . PRMTST PUSH . PREPARE TO TEST 1ST PARAMETER . DE NAME3+2 . C @З JTC POPLOD . TEST SERVO POPSRV DE SRVNAM LA 0132 EX ADR IN  LBA ND 0100 JTZ POPCHK LC 1 LAB SRC JFC POPCHK . RESET PRINTER LA 0132 EX ADR EX STATUS JMP POPLOD . SEE IF PRINTER WAS FOUND POPCHK LAC ORA@ВCALL POSIT$ CALL READ$ . CHECK FOR END OF MEMBER LA 3 CALL SETBUF LA 010 CALL TST000 JTZ GTLEOF . CHECK FOR END OF FILE LA 3 CALL SETBUF LA 003 CALL TST000 JTZ GTLEOF . PREPARE FOR NEXT LINE LA 3 CALL SETBUF @К...................... . . ROUTINE TO TEST FOR 6 '000'S & THE CHAR IN THE A REG . TST000 LCA . 1ST CALL GET$ ORA RFZ . 2ND CALL GET$ ORA RFZ . 3RD CALL GET$ ORA RFZ . 4TH CALL GET$ ORA RFZ . 5TH CALL GET$ ORA R@ЕS NO ROOM LEFT IN LINE POP RET . THERE IS ROOM, MOVE CHARACTER INTO LINE GTLPT1 LAL POP LMA CALL INCHL LAC SU 1 LCA RET . GTLSAV DC 0 * ........................................... . . ROUTINE TO OPEN PRINTER . PRTOPN EQU џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@И HL BADPRT JTZ ERROR JMP POPTST . PREPARE TO LOAD PRINTER MODULE POPLOD LA 13 HL LFT+LF3 CALL DOSFNC HL BADUTL JTC ERROR MSD *POPPRM+7 MSE *POPPRM+6 . LOAD DRIVER LA 15 LB LF3 LC 1 HL POPPRM CALL DOSFNC @ГMLC *GTLSAV POP JMP GETLIN . CHECK FOR SPACE COMPRESSION GTLCHK CP 011 JFZ GTLSTR . HANDLE SPACE COMPRESSION LB LF1 CALL GET$ LDA . WRITE OUT SPACES GTLLUP LA ' ' CALL GTLPUT LAD SU 1 LDA JFZ GTLLUP JMP GETLIN . @ЛFZ . 6TH CALL GET$ ORA RFZ . 7TH CALL GET$ CPC RET * ........................................ . . ROUTINE TO OUTPUT 6 '000'S . PUT000 XRA CALL PUT$ XRA  CALL PUT$ XRA  CALL PUT$ XRA CALL PUT$ XRA CALL PUT$ @Ж$ . OPEN UTILITY/REL LB LF3 LC 0377 DE UTLNAM CALL OPEN$ HL BADUTL JTC ERROR . SEE IF PRINTER IS THERE POPTST XRA LCA . TEST LOCAL POPLCL DE LCLNAM LA 0303 EX ADR IN  LBA ND 004 JTZ POPSRV LC 1 LAB SRC@БRETURN NEXT LINE . . ON ENTRY: HL => @ OF OUTPUT AREA . B => LFN . C => MAXIMUM LENGTH . . GET NEXT CHARACTER GETLIN LB LF1 CALL GET$ JTC GTLRED CP 003 JFZ GTLCHK . READ NEXT SECTOR GTLRED PUSH LB LF1 MSC *GTLSAV DE -1 @ЙHL BADUTL JTC ERROR RET . UTLNAM DC 'UTILITY REL' LCLNAM DC 'LOCAL ' SRVNAM DC 'SERVO ' POPPRM DA 050000 DC 0377,0377 DC 0377,0377 DC 0,0 . POPEN$ EQU 050000 PRINT$ EQU 050003 PCLOSE$ EQU 050006 * ..................@Д STORE CHARACTER GTLSTR CP 015 JTZ GTLXIT CALL GTLPUT JMP GETLIN . END OF LINE GTLXIT XRA RET . END OF FILE GTLEOF POP XRA SU 1 RET . SEE IF THERE IS ANY ROOM LEFT IN LINE GTLPUT PUSH LLA LAC ORA JFZ GTLPT1 . THERE I # @ЧHL 10 CALL CONVRT POP LAC OR 060 LMA CALL INCHL . GET 1'S DIGIT CVD1 PUSH HL 1 CALL CONVRT POP LAC OR 060 LMA RET * ........................................ . . ROUTINE TO DIVIDE . CONVRT LC 0 . COMPARE HL TO D @ТCAN FOR BLANK . SCANBL LAM CP 015 RTZ CP ' ' RFZ CALL INCHL JMP SCANBL * ........................................ . . ROUTINE TO ZERO OUT REGISTERS . ZERO XRA LCA LDA LEA RET * ................................... . . R @НALL PRMCMP . POP . RTZ . PREPARE TO TEST 2ND PARAMETER . PUSH . DE NAME4+2 . CALL PRMCMP . POP . RTZ . PREPARE TO TEST 3RD PARAMETER . DE NAME5+2 . CALL PRMCMP . RET . COMPARE NAME TO LIST OF PARAMETERS GIVEN . PRMCMP LC 8 . GET NE @Х 0 LHD LDA RET * ........................................ . . ROUTINE TO CONVERT BINARY NO TO DECIMAL . . ON ENTRY: HL => @ OF OUTPUT AREA . DE => BINARY NO . CVD5 PUSH . GET 10000'S DIGIT HL 10000 CALL CONVRT POP LAC OR  @Р..... . . ROUTINE TO INCREMENT ADDRESS . INCADR MLD *NXTADR MLE *NXTADR+1 LAE AD 1 LEA LAD AC 0 LDA MSD *NXTADR MSE *NXTADR+1 RET * ................................... . . ROUTINE TO SET UP 'BUFADR' FIELD . . ON ENT @ШE CONNXT LAD CPH RTC JFZ CONVOK LAE CPL RTC . SUBTRACT HL FROM DE CONVOK LAE SUL LEA LAD SBH LDA . INCREMENT DECIMAL COUNTER LAC AD 1 LCA JMP CONNXT * ........................................ . . ROUTINE TO REPLA @УOUTINE TO ROLL SCREEN . ROLL HL ROLMSG LD 0 LE 11 CALL DSPLY$ RET * ........................................ . @ОXT CHARACTER TO MATCH . PRMNXT LBM . CALL INCSWP . LAM . CPB . RFZ . CALL INCSWP . LAC . SU 1 . LCA . JFZ PRMNXT . RET * ........................................ . . ROUTINE TO TEST LIBRARY TYPE . TYPTST LBA HL LIBLST . INCREME @Ц060 LMA CALL INCHL . GET 1000'S DIGIT CVD4 PUSH HL 1000 CALL CONVRT POP LAC OR 060 LMA CALL INCHL . GET 100'S DIGIT CVD3 PUSH HL 100 CALL CONVRT POP LAC OR 060 LMA CALL INCHL . GET 10'S DIGIT CVD2 PUSH  @СRY: A = VALUE TO BE STORED . B = LFN . ON EXIT: HL => PRESERVED . SETBUF PUSH MSA *SETSAV HL LFT+BUFADR LAB CALL ADDHL PUSH MLA *SETSAV POP LMA POP RET . SETSAV DC 0 * ........................................ . . S џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@ФFNC * ........................................ . . ROUTINE TO ADD 'A' REG TO HL . ADDHL ADL LLA LAH AC 0 LHA RET * ........................................ . . INCREMENT HL & SWAP WITH DE . INCSWP LA 1 ADL LLE LEA LAH AC @ПNT TO NEXT TYPE TYPNXT LAM CP 0377 JTZ TYPBAD CPB JTZ TYPFND LA 2 CALL ADDHL JMP TYPNXT . FOUND TYPE THAT MATCHES TYPFND CALL INCHL LAM RET . NO TYPES MATCH TYPBAD MLA *LIBTYP RET * ................................... $ @ЩCE LEADING ZEROS WITH LEADING BLANKS . BLKFIL LAM CP '0' RFZ LA ' ' LMA CALL INCHL LAC SU 1 LCA JFZ BLKFIL RET * ........................................ . . DEFINE CONSTANTS . FLAG DC 0 LFN1 DC 0 LFN2 DC 0 SRTFLG @б'OVERRIDE' . PRMOVW DC 'OVERWRIT' . PRMTXT DC 'TEXT ' . PRMADD DC 'ADD ' . HELP MESSAGE HLPMSG DC 023,011,0,013,11  DC 'COMMANDS FOR VERSION 1.1 ARE: ' . DC 'THE COMMANDS FOR THIS VERSION ARE:' . DC 023,011,0,013,11 . DC 'ADD A @ЬB4 SK 8 GMEMB5 SK 8 GNAMEX SK 8 . X377 DC 0377,0377,0377,0377,0377,0377,0377,0377 NULFIL DC 0376,000,' ' DC 0376,000,' ' BLANKS DC ' !' . DEFINE LIBRARY TYPE FIELDS LIBTYP DC 0004 LIBLST DC 'L',0004 DC 0377 . LIBTYP DC 01 @д013,11 . DC 'REORGANIZE reOrganize [filename/ext]' . DC 023,011,0,013,11 . DC 'REPLACE Replace filename/ext[,membername]' . DC '[,DELETE]' . DC 023,011,0,013,11 . DC 'SEARCH Search [generic membername],' . DC '' . @Я50 SRHHDR DC 023,011,0,013,11,'----------> ' SRHHDL EQU $-SRHHDR SRHFRM DC '00000. ' SRHLIN SK 250 . VARIOUS SIGNON MESSAGES LIBMSG DC 'LIB' TXTMSG DC 'TXT' ROLMSG DC 023,3 PROMPT DC 022,'>',3 SIGNON DC 023,011,0,013,11 DC 'LI @Ъ DC 0 COUNT DC 0 . PARM DC ' (' DC ' (' POS DC 0 LINE DA 0 PROT DC 0 . VARIOUS DISK ADDRESS FIELDS DIRADR DC 0,0,0 NXTDIR DC 0,0,0 NXTADR DC 0,0,0 MEMADR DC 0,0,0 ORGDIR DC 0,0,0 ORGADR DC 0,0,0 . DEFINE MISC WORK FIELDS @вdd filename/ext[,membername]' . DC '[,DELETE]' . DC 023,011,0,013,11 . DC 'CATALOGUE Catalogue [generic membername]'@Э00 . LIBLST DC 'A',0100 . DC 'R',0040 . DC 'D',0010 . DC 'T',0204 . DC 'X',0004 . DC 0377 LIBTXT DC 0204 DC 0004 LIBDBC DC 0010 . DEFINE REORGANIZATION FIELDS FILE1 SK 16 FILE2 SK 16 FILE1L DC 0 FILE2L DC 0 CHNFIL DC 'T џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ@аBRARY 1.1 TEXT FILE LIBRARY UTILITY ' DC 'WITH ASSOCIATIVE INDEXING ',3 . DC 'LIBRARY COMMAND - COPYRIGHT SUBJECT, WILLS' . DC ' & COMPANY - JULY 21, 1980',3 . DEFINE LIST OF VALIDATE THIRD PARAMETERS . PRMDEL DC 'DELETE ' . PRMOVR DC  @Ы MEMBER DC ' ',3 MEMFLD DC ' ( )',3 NAME1 SK 32 NAME2 SK 32 NAME3 SK 32 NAME4 SK 32 NAME5 SK 32 NAMEX SK 32 . GNAME1 SK 8 GNAME2 SK 8 GNAME3 SK 8 GNAME4 SK 8 GNAME5 SK 8 . GMEMB1 SK 8 GMEMB2 SK 8 GMEMB3 SK 8 GMEM @гfilename]/ext' . DC 023,011,0,013,11 . DC 'FILES Files [generic membername]' . DC '[,filename/ext]' . DC 023,011,0,013,11 . DC 'LIST List membername' . DC 023,011,0,013,11 . DC 'NAME Name membername,membername' . DC 023,011,0, @ЮMP CHN' CHNNAM DC 'TMP/CHN' CHNLEN DC $-CHNNAM CPYCMD DC 'COPY ' CHGCMD DC 'CHANGE ' CHGPRM DC ';X' KILCMD DC 'KILL ' CHNCMD DC 'CHAIN ' SLASH DC '/' COMMA DC ',' DRIVE DC ':DR' CHAR DC ' ' . DEFINE SEARCH FIELDS SRHSTR SK  %  @мDISTURB !',023,3 . ORGDUN DC 023,011,0,013,11,'LIBRARY COPY COMPLETE, PROGRAM ' . DC 'CHAINING TO FOLLOW, DO NOT DISTURB !!',023,3 . ORGCPY DC ' ',3 ORGCPY DC 'COPYING',3 . DEFINE TABLE FIELDS PTR1 DA 0 PTR2 DA 0 TABLST DA 0 TABMEM  @з023,011,0,013,11,'INVALID PARAMETER',015,3 BADNAM DC 023,011,0,013,11,'INVALID FILE',015,3 BADFIL DC 023,011,0,013,11,'FILE DOES NOT EXIST ',015,3 DUPMEM DC 023,011,0,013,11,'MEMBER ALREADY IN LIBRARY',015,3 NOPARM DC 023,011,0,013,11,'NO    @кEPMG1 DC ' ADDING',3 REPMG2 DC ' REPLACING',3 . OVERRIDE MESSAGE OVRMSG DC 023,011,0,013,11,'FILE PRESENT..OVERWRITE? ',3 . PRINT MESSAGES PRTMSG DC 023,011,0,013,11,'PRINT ALL MEMBERS? ',3 BADUTL DC 023,011,0,013,11,'UTILITY/REL IS MISSI @е DC 023,011,0,013,11 . DC 'PRINT Print [membername or generic membername]' DC 003 . ERROR MESSAGES BADPRC DC 023,011,0,013,11,'INVALID PROCESSOR',015,3 NAMREQ DC 023,011,0,013,11,' ',015,3 EXTREQ DC 023,011,0,013,11,'EXTENSION REQUI @нDC ' ' TABENT DC 'XXXXXXXX 00000',3 SET 060000 TABLE EQU $ END START  DC 'CHAINING TO FOLLOW, DO NOT DISTURB @иPARAMETER SPECIFIED',015,3 . NOFILE DC 023,011,0,013,11,'LIBRARY FILE DOES NOT EXIST',015,3 . NOFILE DC 023,011,0,013,11,'THAT LIBRARY DOES NOT EXIST',015,3 NOFILE DC 023,011,0,013,11,'LIBRARY NOT FOUND ! ',015,3 SAMLIB DC 023,011,0,013,11   @лNG OR INVALID',015,3 BADPRT DC 023,011,0,013,11,'PRINTER NOT FOUND',015,3 . REORGANIZATION MESSAGES ORGNAM DC 023,011,0,013,11,'WORK FILE NAME: ',3 . ORGNAM DC 023,011,0,013,11,'ENTER OUTPUT FILENAME: ',3 ORGDUN DC 023,011,0,013,11,'DO NOT  @жRED',015,3 BADDRV DC 023,011,0,013,11,'INVALID DRIVE',015,3 . BADLIB DC 023,011,0,013,11,'ERROR IN LIBRARY FILE',015,3 BADLIB DC 023,011,0,013,11,'INTERNAL LIBRARY ERR!',015,3 BADMEM DC 023,011,0,013,11,'MEMBER NOT FOUND',015,3 BADPRM DC  @о' TABENT DC 'XXXXXXXX 00000',3 SET 060000 TABLE EQU $ END START  DC 'CHAINING TO FOLLOW, DO NOT DISTURB !!',023,3 . ORGCPY DC ' ',3 ORGCPY DC 'COPYING',3 . DEFINE TABLE FIELDS PTR1 DA 0 PTR2 DA 0 TABLST DA 0 TABMEM  @й,'SAME AS LIBRARY ',015,3 . ABTMSG DC 023,011,0,013,11,'LIBRARY COMMAND ABORTED',015,3 ABTMSG DC 023,011,0,013,11,'THIS RUN ABORTED ! ',015,3 . ADD MESSAGE ADDMG1 DC ' ADDING',3 ADDMG2 DC ' NOT ADDED..ALREADY EXISTS',3 . REPLACE MESSAGE R  &                          '                           (                           )                           *                          +                          ,                           -                           .                           /                           0                          1                           2                           3                          4                           5                          6                           7                           8                          9                          :                           ;                          <                          =                          >                           ?                           @                           A                          B                          C                          D                           E                           F                          G                          H                          I                          J                          K                          L