/BATV4 OS78 V4 BATCH HANDLER /ADAPTED FROM: /1 BATCH INPUT STREAM HANDLER / / / / / / / / / /COPYRIGHT (C) 1974,1975 BY DIGITAL EQUIPMENT CORPORATION / / / / / / / / / / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. / /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. / /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY /DIGITAL. / / / / / / / / / / *0 -1 /NUMBER OF DEVICES DEVICE BAT /DEVICE TYPE NAME DEVICE BAT /DEVICE NAME 2220 /READ ONLY, CODE=22 4000 /TWO PAGES RESERVED WHEN USING WITH OS78 ZBLOCK 2 BATIN= 5400 BATVERSION="B&77 *200 BAT, BATVERSION CLA /PROTECTION RDF /GET USER'S FIELD TAD BATCDF /MAKE CDF CIF DCA BATXIT /SAVE FOR EXIT TAD BATISZ /RESET SUCCESS ISZ DCA BATXIT-1 TAD I BAT AND BA7700 CIA DCA BATWC /SAVE WORD COUNT (DIVIDED BY 2) TAD I BAT AND BA0070 TAD BATCDF /CREATE CDF TO BUFFER FIELD TAD (-2 DCA BATBUF BATISZ, ISZ BAT TAD I BAT DCA BATCA /GET ADDRESS OF BUFFER ISZ BAT ISZ BAT /IGNORE BLOCK NUMBER TAD BATWC /WAS COMMAND WRITE OR BUFFER LENGTH ZERO? BA7700, SMA CLA JMP BATER1 /YES - ERROR BATCDF, CDF CIF 0 TAD I BA7777 /IS BATCH RUNNING? RAL SMA CLA JMP BATER2 /NO - ERROR TAD I BA7777 AND BA0070 TAD BATCDF /CREATE CDF TO BATCH FIELD DCA BATCAL /CREATE CDF CIF TO BATCH FIELD BATLP, JMS BATGET /GET CHAR DCA I BATCA /SAVE IN BUFFER JMS BATGET /GET NEXT CHAR DCA BATTMP /SAVE IT FOR PACKING JMS BATGET /GET NEXT CHAR RTL RTL DCA BATTM2 /SAVE IT TAD BATTM2 AND BA7400 /ADD FIRST HALF TAD I BATCA /TO FIRST CHAR DCA I BATCA /SAVE THEM IN BUFFER ISZ BATCA /UPDATE POINTER BA7400, 7400 /PROTECT THE ISZ TAD BATTM2 /GET SECOND HALF OF CHAR RTL RTL AND BA7400 TAD BATTMP /ADD TO SECOND CHAR DCA I BATCA /SAVE IN BUFFER ISZ BATCA /UPDATE POINTER BA0070, 0070 /PROTECT THE ISZ ISZ BATWC /DONE? JMP BATLP /NO - LOOP ISZ BAT /SUCCESS RETURN (ON EOF THIS BECOMES CLA IAC) BATXIT, HLT /CDF CIF TO USER FIELD JMP I BAT /RETURN BATWC, 0 /WORD COUNT (DIVIDED BY 2) BATCA, 0 /POINTER INTO BUFFER BATTM2, BATCHR, 0 /CHAR RETURNED BY BATGET BATTMP, 0 BA7777, 7777 BATER1, BATER2, CLA STL RAR JMP BATXIT /THIS ROUTINE GETS THE NEXT CHARACTER TO BE PUT INTO THE BUFFER BATGET, 0 0 /IF LAST CHAR WAS THIS IS "JMP BATLF" BATCAL, HLT /CIF CDF BATCH FIELD (ON EOF THIS IS "JMP BATBUF") TAD I BATVFY TAD (-2214 /VERIFY MAGIC LOCATION IN BATCH SZA /AGAINST EQUALLY MAGIC CONTENTS CDF CIF 0 SZA CLA JMP BATER2 /BATCH IS DESTROYED! CDF /WE ARE IN FIELD ZERO JMS I BATINN /CALL THE BATCH INPUT ROUTINE JMP BATEOF /NO SKIP = END OF FILE DCA BATCHR /SAVE CHARACTER RETURNED TAD BATCHR TAD BMCR /CARRIAGE RETURN? SNA JMP BATCR /YES TAD BCRMLF /LINE FEED? SNA JMP BATCAL /YES - IGNORE IT TAD BLFMDO /DOLLAR SIGN? SNA CLA JMP BATDO /YES BATGEX, DCA BCRFLG /NO SPECIAL CHAR TAD BATCHR /RETURN WITH CHAR IN AC BATBUF, HLT /CDF USER BUFFER JMP I BATGET /RETURN BLFJMP, JMP BATLF BATCR, TAD BLFJMP /SET NEXT CALL TO RETURN DCA BATGET+1 CLA CMA /SET TO INDICATE JMP BATGEX BATLF, DCA BATGET+1 /ZAP THE JMP TO HERE TAD BLF /RETURN BATGEJ, JMP BATBUF BATDO, TAD BCRFLG /IS THE "$" FIRST ON THIS LINE? SNA CLA JMP BATGEX /NO - NOTHING SPECIAL TAD I BA7777 /YES - SET FLAG SO THAT RTR /THE BATCH INPUT ROUTINE STL RTL /WILL PUT THE DOLLAR-SIGN BACK DCA I BA7777 /RETURN CURRENT CHARACTER AGAIN BATEOF, TAD BATCTZ /RETURN CTRL-Z THIS TIME DCA BATCHR DCA BATXIT-1 /SET HANDLER TO RETURN TO ERROR RETURN TAD BATGEJ /SET BATGET TO RETURN ZEROES DCA BATCAL JMP BATCR+2 /AND FLAG NEW LINE FOR NEXT CALL BATINN, BATIN /ENTRY ADDRESS OF BATCH INPUT ROUTINE BATVFY, BATIN+200 BLF, 212 BMCR, -215 BCRMLF, 215-212 BLFMDO, 212-"$ BCRFLG, -1 BATCTZ, 32 /CTRL-Z $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$