CLR70 TITLE 'C L E A R - TSO' 00050000 PRINT ON,DATA,GEN 00060000 CLEAR CSECT 00070000 * SETUP registers and save areas thanks @bigendiansmalls * 00080000 MAIN STM 14,12,12(13) # Save caller reg 00090000 LR 8,15 # Base register 00100000 USING MAIN,8 # R8 for addressability 00110000 GETMAIN RU,LV=72 # for our savearea 00120000 ST 13,4(,1) # Store Caller's SA address 00130000 ST 1,8(,13) # Put my SA addr in caller's SA 00140000 LR 13,1 # R13 has addr of our SA 00150000 DS 0H # halfword boundaries 00160000 * Let the fun Begin! * 00170000 * YREGS sets R0 through R15, it is in SYS1.MACLIB 00180000 YREGS 00190000 * GTSIZE checks your terminal and sets R0 to the screen width and R0 to 00200000 * the height, also in SYS1.MACLIB 00210000 GTSIZE 00220000 CH R0,=H'1' # Compare R0 (total number of lines) 00230000 * to 0x01 and set condition 00240000 BL EXITP # If R0 is less than 0x01 exit 00250000 * Now turn on Full Screen MODE. Initial means 00260000 * this is the first time we're using this macro 00270000 STFSMODE ON,INITIAL=YES 00280000 * Set Terminal Display Manager Options 00290000 * Basically we can turn on display manager and display interupt 00300000 * keys. KEYS=NO is how we would do that 00310000 STTMPMD ON 00320000 * the rest comes from http://www.tommysprinkle.com/mvs/P3270/hello2.htm 00330000 * TPUT Macro puts a data stream to TSO 00340000 * to escape the buffer you must pass 0x27 00350000 * FULLSCR here basically means we send 3270 stream 00360000 TPUT STREAM,STREAMLN,FULLSCR 00370000 * But it dissapears super fast unless we add a TGET 00380000 * Which GETs input from the user 00390000 TGET INBUF,INBUFLN,ASIS 00400000 * And now undo the Full Screen and Display Manager 00410000 STFSMODE OFF 00420000 STTMPMD OFF 00430000 *********************************************************************** 00440000 * And we Exit 00450000 *********************************************************************** 00460000 EXITP LR 1,13 # Move my SA into R1 00470000 L 13,4(,13) # RST Caller SA Addr 00480000 FREEMAIN RU,A=(1),LV=72 00490000 LM 14,12,12(13) # restore registers 00500000 XR 15,15 # zero return code 00510000 BCR 15,14 # Branch back to caller 00520000 STREAM DS 0C 00530000 DC X'27' ESCAPE TSO CHARACTER 00540000 DC X'F5' ERASE/WRITE 00550000 DC X'C3' WCC 00560000 DC X'114040' SBA 00570000 DC X'2902' SFE (Three Attribute Pairs To Follow) 00580000 DC X'C0F8' ATTR #1 (BASIC = PROTECTED) 00590000 DC X'42F1' ATTR #3 (COLOR = BLUE) 00600001 * --------------------- 00610001 * | _________________ | 00620001 * | | 5318008. | | 00630004 * | |_________________| | 00640001 * | ___ ___ ___ ___ | 00650001 * | | 7 | 8 | 9 | | + | | 00660001 * | |___|___|___| |___| | 00670001 * | | 4 | 5 | 6 | | - | | 00680001 * | |___|___|___| |___| | 00690001 * | | 1 | 2 | 3 | | x | | 00700001 * | |___|___|___| |___| | 00710001 * | | . | 0 | = | | / | | 00720001 * | |___|___|___| |___| | 00730001 * | | 00740001 * --------------------- 00750001 DC C' --------------------- ' 00751003 DC 56X'40' 00751103 DC C' | _________________ |' 00752003 DC 56X'40' 00752103 DC C' | | 5318008. | |' 00753004 DC 56X'40' 00753103 DC C' | |_________________| |' 00754003 DC 56X'40' 00754103 DC C' | ___ ___ ___ ___ |' 00755003 DC 56X'40' 00755103 DC C' | | 7 | 8 | 9 | | + | |' 00756003 DC 56X'40' 00756103 DC C' | |___|___|___| |___| |' 00757003 DC 56X'40' 00757103 DC C' | | 4 | 5 | 6 | | - | |' 00758003 DC 56X'40' 00758103 DC C' | |___|___|___| |___| |' 00759003 DC 56X'40' 00759103 DC C' | | 1 | 2 | 3 | | x | |' 00759203 DC 56X'40' 00759303 DC C' | |___|___|___| |___| |' 00759403 DC 56X'40' 00759503 DC C' | | . | 0 | = | | / | |' 00759603 DC 56X'40' 00759703 DC C' | |___|___|___| |___| |' 00759803 DC 56X'40' 00759903 DC C' | |' 00760003 DC 56X'40' 00760103 DC C' --------------------- ' 00760203 STREAMLN EQU *-STREAM 01070000 * 01080000 INBUF DS XL128 01090000 INBUFLN EQU *-INBUF 01100000 END , 01110000