File: HEXA3.BR of Tape: Sources/Focal/s7
(Source file text)
/ * H E X A 3 . B R * / VERSION 51 VOM 2. 8. 76 / COMMANDECODER / ============= / / CDEC, 0 /COMMANDDECODER JMS FLD2 DCA CDECF CDF 0 TAD I [WCLO0 /LO0 FREE? SPA CLA JMP CDECF TAD I [WCLI0 /LI0 FREE? SMA CLA JMP CDECF CDF 20 JMS PA0FET JMS ONLYCR /IS IT AN ERROR BUFFER JMS REW JMS CAN JMS STAT JMS BYE JMS INOUT CDRET, CLL CLA DCA WCCD /SET CD BUF TO FREE CDECRE, JMS PA0STO /SWAP PAGE02 BACK CIF 0 JMS I [USROUT CDECF, HLT JMP I CDEC / / REW, 0 /TEST FOR REWIND JMS CLCD2 TAD [-4 DCA REWCN TAD [REWPA DCA REWP REW1, JMS CDCA /FETCH CHAR JMP I REW /THERE ARE NO MORE CHARS TAD I REWP ISZ REWP DCA REW3 JMS CDTE REW3, HLT /CHARAKTER TO BE TESTED SKP JMP I REW /ITS NOT A REWIND ISZ REWCN JMP REW1 JMP REW2 REWCN, 0 REWP, 0 REWPA, "R;"E;"W;", REW2, JMS CDCA /GET CHAR FROM CD JMP CDERR JMS CDTE "O JMP ISO /REWIND OUTPUT=LO1 JMS CDTE "I JMP ISI /REWIND INPUT JMP REW2 / / ISO, JMS VALID DLO1 SKP JMP CDER2 /STREAM NOT DEFINED JMS REWIND 41 ISO1, JMS CLLO12 /SIMULATE ^Z P1 /REWIND IS ON LO1 ALSO A CANCLE CDF 0 /SET EOIFLG AND CLEAR UNPACK SWITCH DCA I (EOIFLG DCA I (SWISE+1 CDF 10 TAD (232 DCA I LO1 CDF 20 JMP CDRET / / ISI, JMS CDCA /WHICH STREAM? JMP CDERR JMS CDTE "2 JMP IS2F JMS CDTE "3 JMP IS3F JMS CDTE "1 JMP IS1F JMS CDTE "0 NOP JMP CDERR / / IS2F, JMS VALID /TEST IF STREAM IS VALID DLI2 SKP JMP CDER2 JMS REWIND 44 JMS CLLI22 CDF 10 TAD (232 DCA I LI2 CDF 20 P1 DCA WCLI2 /SET LI2 BUFFER FULL JMP CDRET / PAGE IS1F, JMS REWIND 42 JMP CDRET / RELA, 0 STA TAD CACN /CACN-1 SPA CLA CLL AND (7 DCA CACN TAD (CDBU+1 TAD CACN CIA TAD CD AND (77 JMP I RELA / / / IS3F, JMS VALID DLI3 SKP JMP CDER2 JMS REWIND 46 JMS CLLI32 CDF 10 TAD (232 DCA I LI3 CDF 20 P1 DCA WCLI3 JMP CDRET CDERR, CIF 0 JMS I [TELE CD1MS CDERET, CIF 0 JMS I (SEND0 JMS TTYOU1 JMP CDRET CD1MS, TEXT /TRY AGAIN/ CD2MS, TEXT /STREAM NOT DEFINED/ CDER2, CIF 0 JMS I [TELE CD2MS JMP CDERET / / / CDCA, 0 CDF 10 /CHARKETER FETCH ROUINTE TAD I CD CDF 20 DCA CDCAR ISZ CD ISZ WCCD SKP JMP I CDCA JMS CDTE /TEST FOR CR 215 JMP I CDCA ISZ CDCA JMP I CDCA CDCAR, 0 /CONTAINS FETCHED CHAR / / / CDTE, 0 /CHARAKTER TEST ROUINTE TAD I CDTE CIA ISZ CDTE TAD CDCAR AND [RUBOUT SZA CLA ISZ CDTE JMP I CDTE / / / VALID, 0 /ROUTINE TO TEST IF STREAM DEFINED TAD I VALID ISZ VALID AND DEFSTR SNA CLA ISZ VALID JMP I VALID / / / REWIND, 0 /SETUP REWINDBLOCK FOR LINE JMS LO0BL2 /FILL LO0 WITH BLANCS TAD (44 /REWIND CODE IS 44 DCA I LO0 CDF 20 TAD I REWIND ISZ REWIND ISZ LO0 CDF 10 DCA I LO0 CDF 20 JMS CLLO02 JMP I REWIND / / / LO0BL2, 0 /FILL LO0 WITH BLANCS, RETURNS WITH DF10 JMS CLLO02 CDF 10 TAD [40 DCA I LO0 ISZ LO0 ISZ WCLO0 JMP .-4 JMS CLLO02 /RETURNS WITH DF 10 JMP I LO0BL2 CANMS1, TEXT /CANCLE ERROR/ / / / / / PAGE CAN, 0 /TEST FOR CANCLE JMS CLCD2 M3 /-3 IN AC DCA CANCN TAD (CANTA DCA CANP CAN1, JMS CDCA /FETCH CHAR JMP I CAN TAD I CANP ISZ CANP DCA .+2 JMS CDTE HLT SKP JMP I CAN /NOT A CANCLE ISZ CANCN JMP CAN1 / / IS IT INPUT OR OUTPUT / CAN2, JMS CDCA JMP CANER1 JMS CDTE "O JMP CANO JMS CDTE "I JMP CANI JMP CAN2 / / CANI, JMS CDCA JMP CANER2 /WHICH INPUT? JMS CDTE "1 JMP CANLI1 JMS CDTE "2 JMP CANLI2 JMS CDTE "3 JMP CANLI3 JMP CANER1 CANCN, 0 CANP, 0 CANTA, "C;"A;"N / / CANO, JMS VALID DLO1 SKP JMP CDER2 CIF 0 JMS I (KANZ 41 JMS CLLO02 JMP ISO1 /SIMULATE ^Z ETC / / CANLI1, CIF 0 JMS I [TELE CLI1ER JMP CDERET / / CANLI2, JMS VALID DLI2 SKP JMP CDER2 CIF 0 JMS I (KANZ 44 JMS CLLO02 CIF 0 JMS I (CANC DLI2 JMP CDRET / / CANLI3, JMS VALID DLI3 SKP JMP CDER2 JMS CLLO02 CIF 0 JMS I (KANZ 46 CIF 0 JMS I (CANC DLI3 JMP CDRET / / CANER1, CIF 0 JMS I [TELE CANMS1 JMP CDERET CANER2, CIF 0 JMS I [TELE CANMS2 JMP CDERET CLI1ER, TEXT /DO NOT CANCLE LI1/ / / / / / / / / / / / FLD2, 0 RDF AND (70 TAD (CIF CDF 0 CIF CDF 20 JMP I FLD2 / ONLYCR, 0 JMS CLCD2 JMS CDCA JMP CDRET /IT IS AN ERROR BUFFER JMP I ONLYCR PAGE STAT, 0 /STATUS TAD (-4 DCA STATCN TAD (STATA DCA STATX JMS CLCD2 STAT1, JMS CDCA JMP I STAT /NOT A STATUS TAD I STATX DCA STAT2 ISZ STATX JMS CDTE STAT2, HLT /TEST THIS CHAR SKP JMP I STAT /NOT A STATUS ISZ STATCN JMP STAT1 JMP STAT3 STATCN, 0 STATX, 0 STATA, "S;"T;"A;"T STAT3, JMS CDCA SKP /MUST BE A CR JMP I STAT JMS LO0BL2 /OK FILL IN STATUS TAD (47 DCA I LO0 CDF 20 JMP CDRET / / / / / BYE, 0 /GOOD BYE FOR ETH JMS CLCD2 TAD (-3 DCA BYECN TAD (BYETA DCA BYETX BYE1, JMS CDCA JMP I BYE /NOT BYE TAD I BYETX DCA BYE2 ISZ BYETX JMS CDTE BYE2, HLT SKP JMP I BYE /NOT A BYE ISZ BYECN JMP BYE1 JMP BYE3 BYECN, 0 BYETX, 0 BYETA, "B;"Y;"E BYE3, JMS CDCA /FOLOWED BY CR SKP JMP I BYE JMS LO0BL2 TAD (53 CDF 10 DCA I (LO0BU CDF 20 JMP CDRET /RETURN MS1, TEXT /TABEL OVERFLOW/ MS2, TEXT /COMMANDLINE ERROR/ MS3, TEXT /STREAM ALREADY DEFINED/ / / / / / PAGE INOUT, 0 /MUST BE A INPUT-OUTPUT-STRING JMS CLCD2 JMS DECODE /PERFORM DECODING JMS CLCD2 INOU1, JMS CDCA /LOOK FOR A SLASH JMP OUT1 /EXIT IF NO SLASH JMS CDTE "/ JMP INP1 /SLASH IS INPUT JMP INOU1 OUT1, DCA WCCD /WC MAY CAUSE TROUBLES IS NOT USED IN FOLL. TAD (DEVTA DCA DEVTAX /SET POINTER FOR OUTPUT TAD FCN /SET NEGATIVE NUMBER OF FILES CIA DCA FCN TAD I LO1F2G /STORE STATUS OF HANDLER DCA OUT7 OUT2, TAD I LO1FP AND (4000 SZA CLA JMP OUTER1 /TABLE OVERFLOW TAD I DEVTAX DCA NAMPO ISZ DEVTAX /POINTER TO DEVICE TAD I DEVTAX TAD (CDBU DCA CD JMS CDCA /GET CHAR JMP OUTER2 TAD (7400 /LO1 HANDLER AT 7400 1 PAGE ALLOWED DCA DEV3 JMS HADLT /WHICH HANDLER IS IT? JMP OSYS JMP ODSK JMP OTTY JMP OPTR JMP OUTER2 NAMPO, 0 /ALL HANDLER ARE EITHER CORERESIDENT OR NEED NO LOOKUP / / INOUTR, JMP I INOUT OSYS, JMS DEVNOF /USRIN DEVICE SYS OUT3, JMS FNAM JMS LOOKUP OUT4, TAD (4000 /NO SAVE THIS INFO TAD DEV2 DCA I LO1FP /DEVICENUMBER JMS FPINC TAD LOOK1 DCA I LO1FP /SAVE FILECA JMS FPINC TAD LOOK2 /SAVE FILE WC DCA I LO1FP JMS FPINC ISZ DEVTAX /POINTER TO NEXT FILE IF THERE IS ANY ISZ FCN /MORE FILES TO TREAT? JMP OUT2 TAD I LO1F2G CIF 0 JMS I (FETCHH 7400 HLT /HANDLER ENTRY FOR FIRST FILE TAD .-1 CDF 0 DCA I (LO1HA CDF 20 JMP I INOUT OUT7, 0 / / ONLY 1 PAGE HANDLER ON LO1 ALLOWED , AT 7400 / ODSK, JMS DEVNOF DEVICE DSK JMP OUT3 / / OTTY, DCA DEV2 /TTY IS NUMBER 0 DCA LOOK1 / 0 FILENAME DCA LOOK2 JMP OUT4 / / OPTR, JMS DEVNOF DEVICE PTR DCA LOOK1 DCA LOOK2 JMP OUT4 / PAGE / INP1, DCA WCCD /WCCD IS NOT USED IN THE FOLLOWING JMS CDCA JMP OUTER2 JMS CDTE "2 JMP INP2 JMS CDTE "3 JMP INP3 JMP OUTER2 /IS ALL WRONG / / INP2, JMS VALID DLI2 JMP INPER1 /STREAM ALREADY DEFINED JMS SETDEV /GET DEVICENO AND FILENAME 7200 /LI2 1-PAGE HANDLER AT 7200 TAD DEV2 CDF 0 DCA I (LI2DEV CDF 20 TAD DEV3 CDF 0 DCA I (LI2HA CDF 20 JMS ENTI /ENTER TENTATIVE FILE LI2NAM TAD ENT2 CDF 0 DCA I (LI2BLO /SAVE BLOCKNUMBER AND FREE SPACE DCA I (LI2FL /RESET FILE LENGHT CDF 20 JMS DEFIT 44 JMS DEFIT2 DLI2 JMS GOSTR2 DLI2 JMP INOUTR / / INP3, JMS VALID DLI3 JMP INPER1 JMS SETDEV 7000 /LI3 1-PAGE HANDLER AT 7000 TAD DEV2 CDF 0 DCA I (LI3DEV CDF 20 TAD DEV3 CDF 0 DCA I (LI3HA CDF 20 JMS ENTI LI3NAM TAD ENT2 CDF 0 DCA I (LI3BLO DCA I (LI3FL CDF 20 JMS DEFIT 46 JMS DEFIT2 DLI3 JMS GOSTR2 DLI3 JMP INOUTR / / OUTER1, CDF 20 CIF 0 JMS I [TELE MS1 JMP CDERET OUTER2, CDF 20 CIF 0 JMS I [TELE MS2 JMP CDERET INPER1, CDF 20 CIF 0 JMS I [TELE MS3 JMP CDERET / / / / / ENTI, 0 /ENTER TENTATIVE FILE TAD I ENTI ISZ ENTI DCA ENT5 TAD (FNA1 DCA ENT2 /SET FILENAME TAD DEV2 SNA JMP I ENT1 CDF 20 CIF 10 JMS I (200 3 ENT2, 0 ENT3, 0 JMP OUTER2 JMP .+3 ENT1, DCA ENT2 DCA ENT3 CIF 0 JMS I (MOVE /SAVE FILENAME CDF 20 FNA1 CDF 0 ENT5, HLT /CONTAINS LI2 OR LI3NAM ADDR -4 JMP I ENTI PAGE / / SUBOUTINESAMMLUNG FUER COMANDDECODER / / DECODE, 0 /DECODES INPUT-OUTPUT-STRING DCA CACN /RESET CHARAKTER COUNTERS DCA FCN /SET FILECOUNTER TO 0 DCA EXTF /CLEAR EXTENSION FLAG DCA DEVBU /RESTORE OTHER THINGS DCA FILBU DCA EXTBU TAD (DEVTA DCA DEVTAX DCA STRING /CLEAR END OF STRING FLAG JMS CLCD2 DECOD1, ISZ CACN JMS CDCA /FETCH CHAR FROM BUFFER JMP DECOD6 /END OF STRING JMS CDTE ": JMP DECOD3 /SAVE DEVICE JMS CDTE ". JMP DECOD4 /NEXT IS EXTENSION JMS CDTE "/ JMP DECOD6 /END OF STRIN JMS CDTE "_ JMP DECOD6 /END OF STRING JMS CDTE ", JMP DECOD5 JMP DECOD1 / / DECOD3, JMS RELA /DEVICE / RELA RETURNS WITH RELATIVE ADRESS=RA / IN AC: RA=CD-CACN-CDBU (6 BIT) / THEN CACN=CACN-1 DCA DEVAD TAD CACN DCA DEVBU DCA CACN JMP DECOD1 DECOD4, P1 DCA EXTF DECOD7, JMS RELA /THIS IS FILENAME DCA FILAD TAD CACN DCA FILBU DCA CACN TAD EXTF SNA CLA JMP DECOD9 /SAVE FILE INFO JMP DECOD1 /FETCH EXTENSION FIRST / DECOD5, TAD EXTF SNA CLA JMP DECOD7 /ITS A FILE INFO DCA EXTF JMS RELA DCA EXTAD TAD CACN DCA EXTBU DCA CACN JMP DECOD9 /SAVE FULL INFO / DECOD6, M1 /SET END OF STRING FLAG DCA STRING JMP DECOD5 / STRING, 0 / / DECODR, JMP I DECODE /RETURN FROM OTHER PAGES DEVTA, ZBLOCK 3^15 /FILENAME TABLE FOR DECODE / PAGE / DECOD9, TAD FILAD DCA I DEVTAX ISZ DEVTAX TAD DEVAD DCA I DEVTAX ISZ DEVTAX CLA CLL TAD DEVBU CLL RTL;RAL TAD FILBU BSW DCA I DEVTAX CLL CLA TAD FILAD CIA TAD EXTAD SPA CLA AND (7 CLL RTL;RAL TAD EXTBU AND (77 TAD I DEVTAX DCA I DEVTAX ISZ DEVTAX DCA FILAD DCA FILBU DCA EXTAD DCA EXTBU ISZ FCN ISZ STRING /SKIP IF END OF STRING JMP DECOD1 /FETCH NEXT JMP DECODR EXTF, 0 FCN, 0 DEVAD, 0 DEVBU, 0 FILAD, 0 FILBU, 0 EXTAD, 0 EXTBU, 0 / / / / / / / / / / HADLT, 0 /TEST WHICH HANDLER ISZ DEVTAX TAD I DEVTAX AND (7000 SZA CLA JMP .+3 ISZ HADLT /DSK IS DEFAULT JMP I HADLT JMS CDTE "S JMP I HADLT ISZ HADLT JMS CDTE "D JMP I HADLT ISZ HADLT JMS CDTE "T JMP I HADLT ISZ HADLT JMS CDTE "P JMP I HADLT ISZ HADLT JMP I HADLT / / / / / DEVNOF, 0 /DEVICENUMBER-FETCH TAD I DEVNOF DCA DEV1 ISZ DEVNOF TAD I DEVNOF DCA DEV2 ISZ DEVNOF CIF 0 JMS I (USRIN CDF 20 CIF 10 JMS I (200 1 DEV1, 0 DEV2, 0 /DEVICENUMBER AFTER CALL DEV3, 0 /ENTRYPOINT AFTER CALL JMS HANER1 JMP I DEVNOF / / / / / HANER1, JMS CLLI02 CIF 0 JMS I [TELE HAMS1 JMP CDERET PAGE FNAM, 0 /BUILD FILENAME IN CORRECT FORMAT DCA FNA2 /CLEAR FILE EXTENSION TAD (CDBU TAD NAMPO /SET POINTER TO FILENAME DCA CD TAD I DEVTAX BSW AND (7 CIA DCA FNACN1 TAD (6 TAD FNACN1 CLL RAR AND (7 CIA DCA FNACN2 TAD (FNA1 DCA FNAX /SET POINTER JMS BUCHHO /FETCH LETTERS, TWO AT A LINE TAD FNACN2 SNA CLA JMP .+5 DCA I FNAX ISZ FNAX ISZ FNACN2 JMP .-3 TAD I DEVTAX AND (7 SNA JMP FNAM3 /NO ENTENTION CIA DCA FNACN1 ISZ CD /SKIP . ISZ WCCD NOP JMS BUCHHO FNAM3, JMP I FNAM FNAX, 0 FNACN1, 0 FNACN2, 0 FNA1, 0 /FILENAMETABLE 0 0 FNA2, 0 /FILEEXTENSION / / / / / BUCHHO, 0 BUCHH1, JMS CDCA HLT TAD CDCAR AND (77 BSW DCA I FNAX ISZ FNACN1 JMP .+3 ISZ FNAX JMP I BUCHHO JMS CDCA HLT TAD CDCAR AND (77 TAD I FNAX DCA I FNAX ISZ FNAX ISZ FNACN1 JMP BUCHH1 JMP I BUCHHO / / / / / LOOKUP, 0 TAD (FNA1 DCA LOOK1 TAD DEV2 CDF 20 CIF 10 JMS I (200 2 LOOK1, 0 /START OF FILE LOOK2, 0 JMP LOOK3 /LOO2 IS LENGTH OF FILE (NEG) JMP I LOOKUP LOOK3, CIF 0 JMS I [TELE LOOK4 JMP CDERET LOOK4, TEXT /LOOKUP ERROR/ / / / / / FPINC, 0 /FILENAMEPOINTER INCRE FOR PUT TAD LO1FP IAC DCA LO1FP TAD LO1FP CIA TAD (LO1F2A SMA CLA JMP I FPINC TAD (LO1F2I DCA LO1FP JMP I FPINC / / / / / PAGE DEFIT, 0 /SET UP STREAMDEFINING BLOCK JMS LO0BL2 CDF 20 /RETURNS WITH DF 10 !!! TAD I DEFIT DCA DEFIT1 TAD [-40 TAD DEFIT1 TAD [DEPCO DCA DEPCOX TAD I DEPCOX CDF 10 DCA I [LO0BU+2 TAD DEFIT1 DCA I [LO0BU+1 TAD [41 DCA I (LO0BU CDF 0 P1 DCA I (NEWFS+1 /SET NEW FILE FLAG CDF 20 JMS CLLO02 ISZ DEFIT JMP I DEFIT DEFIT1, 0 /SAVE LOC FOR STREAM NO DEPCOX, 0 /POINTER TO DEPOSITION CODE DEPCO, 0 /DEPOSITIONCODES 40 /LO1 40+40 /LI1 0 /LO2 NOT EXISTING 50+40 /LI2 0 /LO3 NOT EXISTING 66+40 /LI3 / / / / / SETDEV, 0 TAD I SETDEV /SETUP HANDLER ENTRY DCA DEV3 ISZ SETDEV TAD (DEVTA /DECODE IS ALREADY DONE DCA DEVTAX TAD I DEVTAX DCA NAMPO ISZ DEVTAX TAD I DEVTAX /GET POINTER TO DEVICE TAD (CDBU DCA CD JMS CDCA JMP OUTER2 JMS HADLT /DEVTAX IS INCREMENTED IN HADLT JMP ISYS JMP IDSK JMP ITTY JMP IPTP JMP OUTER2 / / ISYS, JMS DEVNOF DEVICE SYS SET1, JMS FNAM TAD (6060 DCA FNA2 /EXTENSION IS 00 JMP I SETDEV / / IDSK, JMS DEVNOF DEVICE DSK JMP SET1 / / IPTP, JMS DEVNOF DEVICE PTP SET2, TAD (FNA1 DCA SET3 TAD (-4 DCA SET4 DCA I SET3 /SET FILENAME 0 ISZ SET3 ISZ SET4 JMP .-3 JMP I SETDEV SET3, 0 SET4, 0 ITTY, DCA DEV2 JMP SET2 / / / / / / / / / / PA0FET, 0 /MOVE PART OF PAGE00 AND LO1FILETABLE IFNDEF ODTEST <IOF> CIF 0 JMS I (MOVE CDF 0 BFOB CDF 20 BFOB -30 CIF 0 JMS I (MOVE CDF 0 LO1FMI CDF 20 LO1F2I LO1F2I-LO1F2A-1 TAD LO1FG TAD (-LO1FMI /LO1 GET POINTER SWAP TAD (LO1F2I DCA LO1F2G TAD .-7 DCA FLDX IFNDEF ODTEST <ION> JMP I PA0FET PAGE / / PA0STO, 0 /RESTORE PAGE00 AND LO1 FILETABLE IFNDEF ODTEST <IOF> CIF 0 JMS I (MOVE CDF 20 BFOB CDF 0 BFOB -30 CIF 0 JMS I (MOVE CDF 20 LO1F2I CDF 0 LO1FMI LO1F2I-LO1F2A-1 TAD .-3 DCA FLDX IFNDEF ODTEST <ION> JMP I PA0STO / / CANMS2, TEXT/NO STREAMNUMBER DEFINED/ / / HAMS1, TEXT /ILLEGAL HANLDER REQUEST/ / / LO1F2I, ZBLOCK LO1FMA-LO1FMI LO1F2A, 0 / / / CLLO02, 0 TAD (LO0BU DCA LO0 TAD (LO0BUL DCA WCLO0 JMP I CLLO02 / / / CLLO12, 0 TAD (LO1BU DCA LO1 TAD (LO1BUL DCA WCLO1 JMP I CLLO12 / / / CLLI02, 0 TAD (LI0BU DCA LI0 TAD (LI0BUL DCA WCLI0 JMP I CLLI02 / / / CLLI22, 0 TAD (LI2BU DCA LI2 TAD (LI2BUL DCA WCLI2 JMP I CLLI22 / / / CLLI32, 0 TAD (LI3BU DCA LI3 TAD (LI3BUL DCA WCLI3 JMP I CLLI32 / / / DEFIT2, 0 TAD I DEFIT2 CMA AND DEFSTR TAD I DEFIT2 DCA DEFSTR ISZ DEFIT2 JMP I DEFIT2 / / / PAGE CLCD2, 0 TAD (CDBU DCA CD TAD (CDBUL DCA WCCD JMP I CLCD2 GOSTR2, 0 /PUT STREAM IN SSTATUS TAD I GOSTR2 ISZ GOSTR2 MQL CDF 0 TAD I (SSTAT MQA DCA I (SSTAT CDF 20 JMP I GOSTR2 PAGE ZBLOCK 7777-. FIELD 3 *200 LIPPMI, ZBLOCK 170^6-1 LIPPMA, 0