File: CHARS.RA of Tape: Sources/Fortran/os8-f4-3
(Source file text)
/CHARS: CPUT, CGET, CPUT3, CGET3(A,I,R) / / / VERSION 40A 24-MAY-80 WVDM / / /CALL CGET (STRING,N,CHAR) /CALL CPUT (STRING,N,CHAR) STRING= ADDRESS OF A6 STRING /CALL CGET3(STRING,N,CHAR) /CALL CPUT3(STRING,N,CHAR) STRING= ADDRESS OF A3 STRING / N= POSITION IN STRING / CHAR= I/O CHARACTER / BSW= 7002 SECT CHARS ENTRY CGET ENTRY CPUT ENTRY CGET3 ENTRY CPUT3 EXTERN #ARGER CHERR, TRAP4 #ARGER TEXT +CHARS + CHARXR, SETX XRCHAR SETB BPCHAR BPCHAR, F 0. XRCHAR, F 0. FROM, F 0. NCHAR, F 0. ORG 10*3+BPCHAR FNOP JA CHARXR 0 CHARTN, JA . BASE 0 SETUP, JA . STARTD FLDA 10*3 FSTA CHARTN FLDA 0 SETX XRCHAR SETB BPCHAR BASE BPCHAR LDX 1,1 FSTA BPCHAR /ARGS SAVED IN BPCHAR FLDA% BPCHAR,1 FSTA# STR /STR IN SECT8 PIECE FLDA% BPCHAR,1+ FSTA NCHAR FLDA% BPCHAR,1+ FSTA FROM /ADDR OF CHAR SETX XRN /XR'S IN SECT8 STARTF FLDA% NCHAR JEQ CHERR /POSITION 0 BAD ATX 0 /POSITION IN XR 0 FLDA% FROM ATX 1 /CHAR IN XR 1 FCLA JA SETUP CGET, JSA SETUP TRAP4 CGET86 JA GETO CGET3, JSA SETUP TRAP4 CGET83 GETO, XTA 1 /CHAR IN XR 1 FSTA% FROM /TO 3 WORDS JA CHARTN CPUT, JSA SETUP TRAP4 CPUT86 JA CHARTN CPUT3, JSA SETUP TRAP4 CPUT83 JA CHARTN SECT8 CHAR /ALL IN 1 PAGE CGET86, 0 CLL CML /TELL A6 JMS FLDRTN TAD% STR+1 ISZ RIGHT /RIGHT OR LEFT? BSW /LEFT AND P77 DCA XRFR /PASS TO FPP CDF CIF 0 JMP% CGET86 CPUT86, 0 CLL CML JMS FLDRTN TAD RIGHT /RIGHT=7777, LEFT=0 AND P7700 SNA TAD P77 /MAKE CORRECT MASK FOR KEEP AND% STR+1 /PICK-OUT KEEP DCA PFLD /SAVE TAD XRFR /GET CHAR AND P77 /6 BITS ISZ RIGHT /POSITION BSW TAD PFLD /ADD KEEP DCA% STR+1 CIF CDF 0 JMP% CPUT86 CGET83, 0 CLL /SIGNAL A3 JMS FLDRTN TAD% STR+1 AND P377 DCA XRFR /PASS TO FPP TAD XRFR /TEST FOR 200 NULL TAD M200 SNA CLA DCA XRFR /GIVE BACK 0 IF NULL CDF CIF 0 JMP% CGET83 CPUT83, 0 CLL JMS FLDRTN TAD XRFR /GET CHAR AND P377 /8 BITS SNA /TEST FOR ZERO TAD P200 /SET NULL IF ZERO DCA% STR+1 CIF CDF 0 JMP% CPUT83 FLDRTN, 0 CLA CMA DCA RIGHT /INIT R/L SWITCH CLA CMA /FORTRAN STARTS AT 1 TAD XRN /POSITION 0-4095 SNL /L=1 NOW IS A3 CLL RAR /FORT EVEN IN LINK= RIGHT SNL ISZ RIGHT /CLEAR RIGHT IF LEFT CLL /SKIP OK TAD STR+1 /ADD START OF STR DCA STR+1 /SAVE WORD POSITION RAL /OVERFLOW= NEXT FIELD TAD STR AND P7 CLL RAL RTL TAD CDFINS DCA PFLD /STR FLD PFLD, HLT JMP% FLDRTN P7700, 7700 P377, 377 P200, 200 P77, 77 P7, 7 M200, -200 RIGHT, 7777 CDFINS, CDF 0 STR, 0 0 XRN, 0 XRFR, 0 END