/ NICOLET DATA CONVERSION / PROGRAM TO CONVERT DATA LEFT IN MEMORY BY FOCAL WITH "NPATCH" INTO / P?S/8 OUTPUT FILE(S). / LAST EDIT: 25-MAR-1986 01:00:00 CJL / MUST BE ASSEMBLED WITH '/J' SWITCH SET. / ASSEMBLY INSTRUCTIONS: / SET "BUFFLD" TO PROPER FIELD FOR MEMORY DATA (DEFAULT IS 20). / SET "N" TO AMOUNT OF P?S/8 BLOCKS PER ORIGINAL READ/WRITE (DEFAULT IS 2). / MUST BE A POWER OF TWO FOR PROPER OPERATION. / DEFINITIONS. / P?S/8 DEFINITIONS. DOLBLK= 0040 /DEFAULT ASCII SCRATCH AREA ($) INCON= 0031 /EQUATED FROM CONSOLE! OUTCON= 0033 /EQUATED FROM CONSOLE! TTY= 0003 /CONSOLE DEVICE CODE SBOOT= 7600 /SYSTEM EXIT HERE SBTFUN= 7602 /SYSTEM BOOTSTRAP UNIT WORD SCRSIZE=7611 /SOFTWARE CORE SIZE WORD SFILES= 7757 /PASSED FILES HERE SOUTFLS=7607 /OUTPUT FILE COUNT SWMX= 7605 /M-/X SWITCHES SYSIO= 7640 /ENTER I/O ROUTINES HERE WRITE= 4000 /SYSIO WRITE BIT / OTHER DEFINITIONS. IFNDEF BUFFLD /BUFFER FIELD FOR FBLK AND FWRD FILBUFF=3000 /FILE CREATED IN 003000 JMSC= JMS . /CURRENT PAGE JMS INSTRUCTION JMSSYSI=SYSIO&177+JMSC /CALL TO SYSIO ON ITS PAGE KCCIOT= TTY^10+6002 /CLEAR KEYBOARD FLAG KRSIOT= TTY^10+6004 /READ KEYBOARD BUFFER KSFIOT= TTY^10+6001 /SKIP ON KEYBOARD FLAG IFNDEF LINE /TEN ON A LINE IFNDEF N /NUMBER OF P?S/8 BLOCKS IN READ/WRITE NL0002= CLA CLL CML RTL /LOAD AC WITH 0002 NL4000= CLA CLL CML RAR /LOAD AC WITH 4000 NL7775= CLA CLL CMA RTL /LOAD AC WITH 7775 NL7777= CLA CMA /LOAD AC WITH 7777 TLSIOT= TTY+1^10+6006 /OUTPUT TO TELEPRINTER TSFIOT= TTY+1^10+6001 /SKIP ON TELEPRINTER FLAG *0 /START AT THE BEGINNING 0 /DON'T USE THIS! FILPTR, SFILES /FILE POINTER *10 /DEFINE AUTO-INDEX AREA EOLPROT,250 / PROTECTION VALUE FOR FIXED FILES FILCNT, 0 /P?S/8 FILE CREATION COUNT PFFLATE,.-. /LATEST CHARACTER INSERTED INTO FIXED FILE PFFPREV,.-. /PREVIOUS CHARACTER INSERTED INTO FIXED FILE *20 /GET PAST AUTO-INDEX AREA INCHAR, .-. /LATEST KEYBOARD INPUT CHARACTER P7TEMP, .-. /TERMINAL OUTPUT TEMPORARY CHKUP, .-. /CHECK FOR <^C>, ETC. ROUTINE JMS CTLCTST /CHECK FOR <^C> SZA /SKIP IF NOTHING CAME IN TAD [-"Q!300] /ELSE COMPARE TO <^Q> SNA /SKIP IF NEITHER CASE JMP CHKCLR /ELSE FORGET IT TAD [-"S+"Q] /COMPARE TO <^S> PSYSIO, SZA CLA /SKIP IF IT MATCHES JMP I CHKUP /ELSE RETURN JMS CTLCTST /GET ANOTHER CHARACTER TAD [-"Q!300] /COMPARE TO <^Q> SZA CLA /SKIP IF IT MATCHES JMP .-3 /ELSE KEEP GOING CHKCLR, DCA INCHAR /OBLITERATE <^Q>, ETC. JMP I CHKUP /RETURN CTLCTST,.-. /CHECK FOR <^C> ROUTINE L7600, CLA!400 /CLEAN UP CHKKSF, KSFIOT /**** CONSOLE **** CIF MCS+10 CHKJMP, JMP I CTLCTST /**** CONSOLE **** JMS INCON CHKKRS, KRSIOT/OR KRBIOT /**** CONSOLE **** JMP I CTLCTST AND [177] /JUST SEVEN BITS DCA INCHAR /STASH THE CHARACTER NL7775 /-3 TAD INCHAR /COMPARE INPUT TO <^C> SNA /SKIP IF OTHER ISZ I [SCRSIZE] /ELSE SET SOFT INDICATOR SPA SNA CLA /SKIP IF <^D> OR GREATER JMP I L7600/[SBOOT] /ELSE GOODBYE CHKKCC, KCCIOT/OR 0000 /**** CONSOLE **** 0000 TAD INCHAR /GET THE CHARACTER JMP I CTLCTST /RETURN P7CH, .-. /SEVEN-BIT PRINT ROUTINE DCA P7TEMP /STASH PASSED VALUE P7AGN, JMS CHKUP /CHECK FOR <^C>, ETC. TAD P7TEMP /GET THE VALUE P7TSF, TSFIOT /**** CONSOLE **** CIF MCS+10 P7JMP, JMP P7AGN /**** CONSOLE **** JMS OUTCON P7TLS, TLSIOT /**** CONSOLE **** JMP P7AGN JMS CHKUP /CHECK FOR <^C>, ETC. JMP I P7CH /RETURN PAGE /PROGRAM STARTS HERE NCON, NOP /IN CASE WE'RE CHAINED TO SCRCASE,JMP I SCRIBE/(INITIAL)/CONTINUE THERE / MESSAGE PRINTING ROUTINE. SCRIBE, INITIALIZE /MESSAGE PRINT ROUTINE; PRELOADED FOR STARTUP CLA /JUST IN CASE TAD I SCRIBE /GET MESSAGE POINTER DCA NCON /STASH IT ISZ SCRIBE /BUMP PAST ARGUMENT TAD (140) /INITIALIZE TO CASZP1, DCA SCRCASE /**** /U **** CLA!400 SCRLUP, TAD I NCON /GET LEFT HALF-WORD RTR;RTR;RTR /MOVE OVER JMS SCRPRNT /PRINT IT TAD I NCON /GET RIGHT HALF-WORD JMS SCRPRNT /PRINT IT ISZ NCON /BUMP TO NEXT PAIR JMP SCRLUP /KEEP GOING SCRPRNT,.-. /CHARACTER PRINT ROUTINE AND [77] /JUST SIX-BIT SNA /END OF MESSAGE? JMP I SCRIBE /YES, RETURN TO ORIGINAL CALLER DCA SCRCHAR /NO, SAVE FOR NOW TAD SCRCHAR /GET IT BACK TAD (-"%!200) /IS IT "%"? SNA /SKIP IF NOT JMP SCRCRLF /JUMP IF IT MATCHES TAD [-"^+100+"%] /IS IT "^" SNA CLA /SKIP IF NOT JMP SCRFLIP /JUMP IF IT MATCHES TAD SCRCHAR /GET THE CHARACTER AND [40] /DOES CASE MATTER? SNA CLA /SKIP IF NOT TAD SCRCASE /ELSE GET PREVAILING CASE TAD SCRCHAR /GET THE CHARACTER LFENTRY,JMS P7CH /PRINT THE CHARACTER JMP I SCRPRNT /RETURN SCRCRLF,TAD (15) /GET A JMS P7CH /PRINT IT TAD (12) /GET A JMP LFENTRY /CONTINUE THERE SCRFLIP,TAD SCRCASE /GET CURRENT CASE CIA /INVERT IT TAD (140+100) /ADD SUM OF POSSIBLE VALUES CASZP2, DCA SCRCASE /**** /U **** CLA!400 JMP I SCRPRNT /RETURN SCRCHAR,.-. /LATEST OUTPUT CHARACTER / P?S/8 SIX-BIT OUTPUT ROUTINE. / CALL WITH: / TAD CHAR /AC CONTAINS LATEST CHARACTER TO OUTPUT / JMS I (P6CH) /CALL ROUTINE / ALWAYS RETURNS HERE WITH CLEAR AC / FILES ARE AUTOMATICALLY CREATED AS NECESSARY. / CALL APPROPRIATE ROUTINE TO CLOSE THE FILE (NL4000;JMS I POUT). / THE CONVERSION PROCESS STARTS AT "MEMIN" WHICH OPENS THE FIRST FILE. P6CH, NEWBUFFER /SIX-BIT OUTPUT ROUTINE; PRELOADED FOR STARTUP JMS I (PFFOUT) /CALL P?S/8 OUTPUT ROUTINE SKP /SKIP IF FILE JUST CLOSED JMP P6END /JUMP IF NOT ISZ FILPTR /BUMP TO NEXT FILE ARGUMENT MEMIN, TAD I FILPTR /GET THE NEXT FILE ARGUMENT SNA /END OF ALL FILES? JMP TRUNCATE /YES, WE LOSE DCA POFBLK /NO, STORE IN-LINE JMS I (PFFINITIALIZE) /CALL INITIALIZE ROUTINE POFBLK, .-. /WILL BE FILE ARGUMENT ([BLOCK&7770] + [UNIT&7]) 144 /INITIAL LINE NUMBER 12 /LINE INCREMENT P6END, JMS CHKUP /CHECK FOR <^C>, ETC. JMP I P6CH /RETURN TO CALLER TRUNCAT,JMS I [SCRIBE] /TELL THEM TRUMSG /WE DIDN'T MAKE IT CREPORT,TAD FILCNT /GET FILE COUNT SNA /SKIP IF ANY JMP FILNO /ELSE LEAVE IT SAYING "NO" TAD (-12) /IS IT LESS THAN TEN? SMA /SKIP IF SO TAD ("1^100-3612) /ELSE CORRECT FOR 10-17 TAD ("0-200+3612) /GET NUMERIC CORRECTION DCA FCTMSG+1 /STORE IN MESSAGE NL7777 /-1 TAD FILCNT /EXACTLY ONE FILE? SZA CLA /SKIP IF SO JMP FILNO /JUMP IF OTHERWISE TAD ("E^100+"^-300) /ELSE MAKE IT DROP THE "S" DCA I (FLSMSG+3) /STORE INTO THE MESSAGE FILNO, JMS I [SCRIBE] /TELL THEM FCTMSG /THE FILE COUNT JMS I [SCRIBE] /TELL THEM FLSMSG /FILES (OR FILE) JMS I [SCRIBE] /TELL THEM CREMSG /CREATION MESSAGE JMP I [SBOOT] /GOODBYE FCTMSG, TEXT "%^NO^" TRUMSG, TEXT "%^I^NSUFFICIENT ^O^UTPUT ^F^ILES, ^I^NPUT ^T^RUNCATED!%" PAGE NEWBUFF,DCA BUFPTR /CLEAR BUFFER POINTER TAD (N^200^7777) /SETUP THE DCA BUFCNT /BUFFER COUNT BUFLUP, CDF BUFFLD /GOTO BUFFER FIELD TAD I BUFPTR /GET A WORD CDF 00 /BACK TO OUR FIELD JMS DECOUT /OUTPUT IT ISZ BUFPTR /BUMP TO NEXT TAD BUFPTR /GET THE POINTER JMS DIVIDE /DIVIDE BY LINE /LINE COUNT CLA /THROW AWAY QUOTIENT TAD REM /GET REMAINDER SZA CLA /SKIP IF END OF LINE JMP NOTEOL /JUMP IF NOT JMS I (P6CH) /OUTPUT JMP COMMON /KEEP GOING NOTEOL,/TAD (" &77) /GET A / JMS I (P6CH) /OUTPUT IT COMMON, ISZ BUFCNT /DONE YET? JMP BUFLUP /NO, KEEP GOING TAD BUFPTR /GET THE POINTER JMS DIVIDE /DIVIDE BY LINE /LINE COUNT CLA /THROW AWAY QUOTIENT TAD REM /GET REMAINDER SZA CLA /SKIP IF ALREADY AT / LINE PADDING MAY BE INSERTED HERE IF NECESSARY. JMS I (P6CH) /OUTPUT NOW NL4000 /SET VALUE JMS I (PFFOUT) /CLOSE THE FILE JMP I [CREPORT] /FINISH IT THERE DECOUT, .-. /DECIMAL OUTPUT ROUTINE DCA DECTMP /SAVE PASSED VALUE DCA DECSW /INITIALIZE SWITCH TAD DECTMP /GET IT BACK SPA CLA /SKIP IF POSITIVE JMP DONEG /JUMP IF NOT TAD (" &77) /GET A JMS I (P6CH) /OUTPUT IT TAD DECTMP /GET THE NUMBER JMP DECCOMMON /CONTINUE THERE DONEG, TAD ("-&77) /GET A MINUS SIGN JMS I (P6CH) /OUTPUT IT TAD DECTMP /GET THE NUMBER CIA /INVERT IT DECCOMM,JMS DIVIDE /DIVIDE BY 1750 /1000 JMS DIGOUT /PRINT THE QUOTIENT TAD REM /GET THE REMAINDER JMS DIVIDE /DIVIDE BY 144 /100 JMS DIGOUT /PRINT THE QUOTIENT TAD REM /GET THE REMAINDER JMS DIVIDE /DIVIDE BY 12 /10 JMS DIGOUT /PRINT THE QUOTIENT TAD (".&77) /GET A "." JMS I (P6CH) /OUTPUT IT ISZ DECSW /FORCE THE SWITCH ON TAD REM /GET THE REMAINDER JMS DIGOUT /PRINT IT TAD (" &77) /GET A JMS I (P6CH) /OUTPUT IT JMP I DECOUT /RETURN DIGOUT, .-. /DIGIT OUTPUT ROUTINE DCA DECTMP /SAVE THE VALUE CLL /CLEAR THE LINK TAD DECSW /GET THE SWITCH SZA CLA /SKIP IF OFF STL /ELSE SET THE LINK TAD DECTMP /GET THE DIGIT SNL /SKIP THE TEST IF SWITCH SET SZA /SKIP IF ZERO TAD ("0-" ) /MAKE INTO DIGIT, NOT TAD (" &77) /GET AT LEAST JMS I (P6CH) /OUTPUT IT TAD DECTMP /GET THE VALUE SZA CLA /SKIP IF ZERO ISZ DECSW /ELSE SET SWITCH FOR NEXT TIME JMP I DIGOUT /RETURN / DIVIDE ROUTINE. DIVIDE, .-. /DIVIDE ROUTINE DCA REM /SAVE IN REMAINDER DCA QUO /CLEAR QUOTIENT TAD REM /GET IT BACK STL CIA /INVERT SKP /DON'T FIRST TIME DVLOOP, ISZ QUO /BUMP UP QUOTIENT TAD I DIVIDE /ADD ON ARGUMENT SNA SZL /UNDERFLOW? JMP DVLOOP /NO, KEEP GOING CIA /YES, INVERT IT BACK TAD I DIVIDE /RESTORE LOST VALUE DCA REM /SAVE AS REMAINDER TAD QUO /GET THE QUOTIENT ISZ DIVIDE /BUMP PAST ARGUMENT JMP I DIVIDE /RETURN BUFCNT, .-. /BUFFER COUNTER BUFPTR, .-. /BUFFER POINTER DECSW, .-. /LEADING ZERO SWITCH DECTMP, .-. /TEPMPORARY REM, .-. /REMAINDER QUO, .-. /QUOTIENT CREMSG, TEXT " ^C^REATED%" PAGE / P?S/8 FIXED FILE OUTPUT ROUTINE. / CALL WITH: / TAD CHAR /AC CONTAINS LATEST CHARACTER TO OUTPUT / JMS I (PFFOUT) /CALL ROUTINE / JMP FILEFULL /THE FILE BECAME FULL AND WAS CLOSED OUT / JMP FILEOK /FILE IS STILL ACTIVE / FILES WILL BE CLOSED OUT IF: / A) A NON- IS PASSED AND THERE IS ONLY ROOM ENOUGH FOR THE / NON- CHARACTER AND AN ADDITIONAL CHARACTER AND . / AN WILL BE AUTOMATICALLY INSERTED TO PRESERVE THE INTEGRITY / OF THE FILE ALONG WITH AN TO CLOSE IT. THE FILE WILL ALSO / BE WRITTEN OUT TO THE SYSTEM DEVICE ACCORDING TO THE PRIOR / INITIALIZATION (SEE "PFFINIT"). / B) AN CHARACTER (0000) IS PASSED AND THERE IS LESS ROOM THAN / "EOLPROT" LEFT IN THE FILE. AN WILL BE INSERTED INTO THE FILE / AND IT WILL BE CLOSED AND WRITTEN OUT TO THE SYSTEM DEVICE ACCORDING / TO THE PRIOR INITIALIZATION (SEE "PFFINIT"). / C) AN CHARACTER (4000) IS PASSED. IF THE PREVIOUS CHARACTER WAS / NOT AN CHARACTER, ONE WILL BE INSERTED BEFORE AN IS / INSERTED. THE FILE WILL BE CLOSED AND WRITTEN OUT TO THE SYSTEM / DEVICE ACCORDING TO THE PRIOR INITIALIZATION (SEE "PFFINIT"). PFFOUT, .-. /FIXED FILE OUTPUT ROUTINE DCA PFFLATEST /SAVE LATEST CHARACTER TAD PFFLATEST /GET IT BACK SNA /IS IT ? JMP PFFEOL /YES SPA CLA /IS IT ? JMP PFFCLOSE /YES TAD PFFLATEST /NO, GET THE CHARACTER AND [77] /JUST IN CASE JMS PFFSTORE /STORE IN FILE BUFFER TAD PFFPTR /GET THE INSERTION POINTER VALUE TAD (5) /ADD ON ULTIMATE PROTECTION VALUE CIA /INVERT FOR TESTING TAD I [FILBUFFER+3777] /COMPARE TO FILE POINTER LIMIT VALUE SMA SZA CLA /SKIP IF FILE IS ABSOLUTELY FULL JMP PFFOK /JUMP IF STILL SOME EXTRA ROOM JMS PFFOEOL /STORE CHARACTER TO PRESERVE FILE INTEGRITY JMP PFFWRITE /CONTINUE THERE PFFEOL, JMS PFFOEOL /OUTPUT CHARACTER TAD PFFNUMBER /GET LATEST LINE NUMBER TAD PFFINCREMENT /BUMP TO NEXT VALUE DCA PFFNUMBER /STORE BACK FOR NEXT TIME TAD (PFFLEFT) /RESET THE DCA PFFPUT /CO-ROUTINE TAD I [FILBUFFER+3776] /GET TEXT POINTER TAD EOLPROTECTION /ADD ON PROTECTION VALUE CIA /INVERT FOR TESTING TAD I [FILBUFFER+3777] /COMPARE TO POINTER LIMIT PF7700, SMA CLA /SKIP IF TOO FULL JMP PFFOK /JUMP IF STILL ENOUGH ROOM SKP /FALL INTO ROUTINE PFFCLOS,TAD PFFPREVIOUS /GET PREVIOUS CHARACTER SZA CLA /SKIP IF IT WAS JMS PFFOEOL /STORE CHARACTER TO PRESERVE FILE INTEGRITY PFFWRIT,TAD I [FILBUFFER+3776] /GET FREE TEXT POINTER TAD (-FILBUFFER) /COMPARE TO EMPTY VALUE SNA CLA /SKIP IF OTHERWISE JMP PFFEMPTY /JUMP IF FILE IS EMPTY JMS I PSYSIO/[SYSIO] /CALL I/O ROUTINES PFFBUFF,FILBUFFER /FILE ADDRESS PFFFUN, 20^100+WRITE+00+.-. /UNIT BITS WILL BE FILLED IN PFFBLK, .-. /BLOCK NUMBER WILL BE FILLED IN ISZ FILCNT /BUMP UP CREATION COUNT PFFEMPT,JMS PFFINITIALIZE /RE-INITIALIZE THE FILE POINTERS PFFDOLL,DOLBLK+.-. /UNIT BITS FROM "SBTFUN" WILL BE FILLED IN 144 /INITIAL LINE NUMBER 12 /LINE NUMBER INCREMENT SKP /DO NOT TAKE SKIP RETURN PFFOK, ISZ PFFOUT /BUMP TO OK RETURN TAD PFFLATEST /GET LATEST CHARACTER DCA PFFPREVIOUS /SAVE AS PREVIOUS CHARACTER FOR NEXT TIME JMP I PFFOUT /RETURN TO CALLER PFFOEOL,.-. / OUTPUT ROUTINE JMS PFFSTORE /OUTPUT CHARACTER ISZ PFFPTR /BUMP PAST LAST WORD DCA I PFFPTR /STORE TENTATIVE TAD PFFNUMBER /GET LATEST LINE NUMBER DCA I PFFLPTR /STORE OVER (FORMER) DUMMY LINE VALUE JMS PFFLINE /UPDATE FILE POINTERS AND CREATE NEW DUMMY PAIR JMP I PFFOEOL /RETURN / P?S/8 FIXED FILE INITIALIZE ROUTINE. / CALL WITH: / JMS I (PFFINITIALIZE) /CALL ROUTINE / BLOCK+UNIT /FILE ARGUMENT ([BLOCK&7770] + [UNIT&7]) / NUMBER /INITIAL LINE NUMBER / INCREMENT /LINE NUMBER INCREMENT / RETURN /ALWAYS RETURNS HERE PFFINIT,.-. /FIXED FILE INITIALIZE ROUTINE TAD I PFFINITIALIZE /GET FILE ARGUMENT AND [7770] /JUST BLOCK BITS DCA PFFBLK /STORE IN-LINE TAD I PFFINITIALIZE /GET IT AGAIN AND [7] /JUST UNIT BITS TAD (20^100+WRITE) /FORM WRITE FUNCTION DCA PFFFUN /STORE IN-LINE ISZ PFFINITIALIZE /BUMP TO NEXT ARGUMENT TAD I PFFINITIALIZE /GET INTIAL LINE NUMBER DCA PFFNUMBER /STASH IT ISZ PFFINITIALIZE /BUMP TO NEXT ARGUMENT TAD I PFFINITIALIZE /GET LINE NUMBER INCREMENT DCA PFFINCREMENT /STASH IT ISZ PFFINITIALIZE /BUMP PAST ARGUMENT TAD PFFBUFFER/(FILBUFFER) /SETUP THE DCA PFFPTR /TEXT POINTER TAD (PFFLEFT) /INITIALIZE DCA PFFPUT /CO-ROUTINE TAD [FILBUFFER+3777] /INITIALIZE DCA PFFLPTR /LINE POINTER JMS PFFLINE /CREATE INITIAL FILE POINTERS DCA PFFPREVIOUS /INITIALIZE PREVIOUS CHARACTER TO JMP I PFFINITIALIZE /RETURN PFFLINE,.-. /LINE POINTERS UPDATE ROUTINE NL7775 /BACKUP TO TAD PFFLPTR /PREVIOUS PAIR DCA PFFLPTR /STORE BACK TAD PFFLPTR /GET THE POINTER DCA I [FILBUFFER+3777] /STORE LATEST PAIR POINTER TAD PFFPTR /GET LATEST TEXT POINTER DCA I [FILBUFFER+3776] /STORE IN FREE TEXT POINTER TAD PFFPTR /GET TEXT POINTER DCA I PFFLPTR /STORE AS FREE TEXT POINTER IN DUMMY PAIR ISZ PFFLPTR /BUMP TO DUMMY LINE ADDRESS NL7777 /GET DUMMY LINE VALUE DCA I PFFLPTR /STORE IN DUMMY LINE HOLDER JMP I PFFLINE /RETURN PFFSTOR,.-. /CHARACTER INSERTION ROUTINE JMP I PFFPUT /GO WHERE YOU SHOULD PFFPUT, PFFLEFT /EXIT ROUTINE; INITIALIZED FOR FIRST CHARACTER DCA I PFFPTR /STORE LATEST WORD JMP I PFFSTORE /RETURN TO THEIR CALLER PFFLEFT,STL RTL;STL RTL;STL RTL /SHIFT LEFT WITH GARBAGE JMS PFFPUT /STORE IT AND GET ANOTHER CHARACTER DCA PFFINITIALIZE /SAVE LATEST CHARACTER TAD I PFFPTR /GET PREVIOUS AND GARBAGE AND PF7700/(7700) /REMOVE GARBAGE TAD PFFINITIALIZE /ADD ON LATEST JMS PFFPUT /STORE BOTH AND GET ANOTHER ISZ PFFPTR /BUMP TO NEXT PAIR JMP PFFLEFT /KEEP GOING PFFINCR,.-. /LINE NUMBER INCREMENT FOR FIXED FILES PFFLPTR,.-. /FIXED FILE INFORMATION PAIR POINTER PFFNUMB,.-. /LATEST LINE NUMBER FOR FIXED FILES PFFPTR, .-. /FIXED FILE INSERTION POINTER FLSMSG, TEXT " ^F^ILES^" PAGE / INITIALIZATION STARTS HERE. INITIAL,TAD I (SBTFUN) /GET BOOTSTRAP FUNCTION WORD AND [7] /JUST UNIT BITS TAD [DOLBLK] /ADD ON "$" BLOCK NUMBER DCA I (PFFDOLLAR) /STORE IN INITIALIZE CODE TAD I [SBOOT] /GET BOOTSTRAP INSTRUCTION TAD (-JMSSYSIO) /COMPARE TO POSSIBLE VALUE SNA CLA /SKIP IF DIFFERENT JMP CHKCOVERLAY /JUMP IF IT MATCHES ISZ CHKKRS /TURN "KRSIOT" ISZ CHKKRS /INTO "KRBIOT" DCA CHKKCC /DESTROY "KCCIOT" CHKCOVR,NL0002 /SETUP "C" BIT MASK AND I [SCRSIZE] /GET THE "C" BIT SNA CLA /SKIP IF CONSOLE OVERLAY PRESENT JMP ANNOUNCE /JUMP IF NOT TAD I [SCRSIZE] /GET THE CORE SIZE WORD RTR;RAR /MOVE OVER AND AND (70) /ISOLATE MCS BITS TAD (CIF 10) /TURN INTO CIF MCS+10 DCA P7TSF /STORE OVER "TSFIOT" TAD P7JMP /GET "JMP P7AGN" DCA P7TLS /STORE OVER "TLSIOT" TAD (JMS OUTCON) /GET OUTPUT CALL INSTRUCTION DCA P7JMP /STORE OVER "JMP P7AGN" TAD P7TSF /GET "CIF MCS+10" AGAIN DCA CHKKSF /STORE OVER "KSFIOT" TAD CHKJMP /GET "JMP I CTLCTST" DCA CHKKRS /STORE OVER "KRSIOT" (OR "KRBIOT") TAD (JMS INCON) /GET INPUT CALL INSTRUCTION DCA CHKJMP /STORE OVER "JMP I CTLCTST" DCA CHKKCC /DESTROY "KCCIOT" ANNOUNC,JMS I [SCRIBE] /TELL THEM ANNMSG /WE HAVE ARRIVED TAD I FILPTR /GET FIRST FILE ARGUMENT SNA CLA /SKIP IF SOMETHING THERE JMP NOFILES /ELSE COMPLAIN TAD I (SOUTFLS) /GET OUTPUT FILE COUNT SNA /SKIP IF SOME OUTPUT FILES PASSED JMP NOOUTFILES /JUMP IF NOT TAD FILPTR /POINT AT END OF OUTPUT LIST DCA P7TEMP /STASH THE POINTER TAD I P7TEMP /GET THE DELIMITER SZA CLA /SKIP IF ACTUAL END OF LIST JMP MIXFILES /ELSE COMPLAIN OF MIXED FILES TAD I (SWMX) /GET /M-/X SWITCHES AND (10) /JUST /U BIT SNA CLA /SKIP IF SET JMP I (MEMIN) /ELSE GO START IT UP TAD L7600/[CLA!400] /GET A "CLA" INSTRUCTION DCA I (CASZP1) /PREVENT CASE CHANGE TAD L7600/[CLA!400] /GET A "CLA" INSTRUCTION DCA I (CASZP2) /PREVENT CASE CHANGE JMP I (MEMIN) /GO START IT UP MIXFILE,JMS I [SCRIBE] /TELL THEM MFLMSG /OF MIXED FILES JMP I [CREPORT] /GOODBYE! NOFILES,JMS I [SCRIBE] /TELL THEM NFLMSG /THEY GOOFED JMP I [CREPORT] /GOODBYE! NOOUTFI,JMS I [SCRIBE] /TELL THEM NOFMSG /THEY GOOFED JMP I [CREPORT] /GOODBYE PAGE / ONCE-ONLY TEXT MESSAGES. ANNMSG, TEXT "^N^ICOLET ^A^VERAGER ^D^ATA ^C^ONVERSION" CRLF, TEXT "%" MFLMSG, TEXT "%^C^ANNOT ^P^ROCESS ^M^IXED ^I^NPUT AND ^O^UTPUT ^F^ILES!%^" NFLMSG, TEXT "%^N^O ^P?S/8 F^ILES ^G^IVEN!%" NOFMSG, TEXT "%^N^O ^P?S/8 O^UTPUT ^F^ILES ^G^IVEN!%^" $ /THAT'S ALL FOLK!