TREAD CSECT , 00000100 *********************************************************************** 00000200 * * 00000300 * TREAD (PROMPT_MESSAGE,PROMPT_LENGTH,MESSAGE_AREA,LENGTH,RTN_CODE) * 00000400 * * 00000500 *********************************************************************** 00000600 R0 EQU 0 00000700 R1 EQU 1 00000800 R2 EQU 2 00000900 R3 EQU 3 00001000 R4 EQU 4 00001100 R5 EQU 5 00001200 R6 EQU 6 00001300 R7 EQU 7 00001400 R8 EQU 8 00001500 R9 EQU 9 00001600 R10 EQU 10 00001700 R11 EQU 11 00001800 R12 EQU 12 00001900 R13 EQU 13 00002000 R14 EQU 14 00002100 R15 EQU 15 00002200 SAVE (14,12),,* 00002300 LR R12,R15 00002400 USING TREAD,R12 00002500 *********************************************************************** 00002600 * FIRST WE WILL DO A TPUT FOR THE PROMPT MESSAGE (IF IT EXISTS) * 00002700 * THEN.. ASK FOR THE INPUT. * 00002800 * * 00002900 *********************************************************************** 00003000 LR R5,R1 SAVE INPUT PARM PTR 00003100 L R1,0(R5) GET THE PTR TO THE MSG TEXT 00003200 L R2,4(R5) GET THE LENGTH 00003300 L R0,0(R2) ... 00003400 LTR R0,R0 IS IT THERE ? 00003500 BZ TRE0 NO.. JUST DO TGET 00003600 ICM 1,8,=B'00000001' 00003700 TPUT (1),(0),R 00003800 TRE0 EQU * 00003900 L R1,8(R5) PICK UP THE ADDRESS INPUT TEXT 00004000 LR R3,R1 SAVE THE BUFFER ADDRESS 00004100 LA R0,1024 HOW MUCH WE CAN STAND = 1K 00004200 ICM R1,8,=B'10000000' TURN ON 'TGET' FLAG 00004300 TGET (1),(0),R 00004400 L R2,16(R5) GET THE RETURN CODE PTR 00004500 LA R15,1 SET SUPER RETURN CODE 00004600 ST R15,0(R2) STORE IT.. 00004700 L R2,12(R5) GET HOW MUCH TCAM BOUGHT 00004800 ST R1,0(R2) AND GIVE IT BACK TO THE CALLER 00004900 RETURN (14,12),RC=0 00005000 SPACE 4 00005100 BLANKS DC 4CL256' ' 00005200 LTORG , 00005300 END , 00005400 * 00640100 * 00640200 * 00640300 * 00640400 * 00640500 * 00640600 TWRITE CSECT , 00640700 *********************************************************************** 00640800 * * 00640900 * TWRITE (MESSAGE,MESSAGE LENGTH,RETURN CODE) * 00641000 * * 00641100 *********************************************************************** 00641200 R0 EQU 0 00641300 R1 EQU 1 00641400 R2 EQU 2 00641500 R3 EQU 3 00641600 R4 EQU 4 00641700 R5 EQU 5 00641800 R6 EQU 6 00641900 R7 EQU 7 00642000 R8 EQU 8 00642100 R9 EQU 9 00642200 R10 EQU 10 00642300 R11 EQU 11 00642400 R12 EQU 12 00642500 R13 EQU 13 00642600 R14 EQU 14 00642700 R15 EQU 15 00642800 *********************************************************************** 00642900 * TWRITE - * 00643000 * * 00643100 * ISSUE A TPUT FOR THE CALLING PROGRAM.. * 00643200 * * 00643300 * * 00643400 *********************************************************************** 00643500 SAVE (14,12) 00643600 LR R12,R15 00643700 USING TWRITE,R12 00643800 LR R5,R1 SAVE PTR TO INPUT PARMS 00643900 L R1,0(R5) PT TO OUTPUT TEXT 00644000 L R2,4(R5) GET OUTPUT LENGTH 00644100 L R0,0(R2) ... 00644200 ICM 1,8,=B'00000010' 'CONTROL'-PROCESSING 00644300 TPUT (1),(0),R DO IT 00644400 LA R15,1 SET CRAZY RETURN CODE 00644500 L R1,8(R5) GET THE CCODE PTR 00644600 ST R15,0(R1) SAVE IT. 00644700 RETURN (14,12),RC=0 00644800 SPACE 4 00644900 LTORG , 00645000 END , 00645100 * 00645200 * 00645300 * 00645400 * 00645500 * 00645600 PRINT GEN 00645700 WAIT CSECT 00645800 USING *,15 00645900 STM 14,12,12(13) 00646000 ST 13,SAVEAREA+4 00646100 BALR 5,0 00646200 USING *,5 00646300 L 2,0(1) 00646400 * 00646500 L 3,0(2) 00646600 ST 3,DELAY 00646700 STIMER WAIT,BINTVL=DELAY 00646800 * 00646900 L 13,SAVEAREA+4 00647000 LM 14,12,12(13) 00647100 BR 14 00647200 DELAY DS F 00647300 SAVEAREA DS 18F 00647400 END 00647500 * 00647600 * 00647700 * 00647800 * 00647900 * 00648000 PRINT GEN 00648100 TERMSIZE CSECT 00648200 USING *,15 00648300 STM 14,12,12(13) 00648400 ST 13,SAVEAREA+4 00648500 BALR 5,0 00648600 USING *,5 00648700 L 2,0(1) 00648800 * 00648900 GTSIZE , GET TERMINAL INFO 00649000 * R1: CHARS/LINE R0: LINES ON SCREEN 00649100 ST 0,0(2) 00649200 * 00649300 L 13,SAVEAREA+4 00649400 LM 14,12,12(13) 00649500 BR 14 00649600 SAVEAREA DS 18F 00649700 END 00649800