A S S I G N A B L E S E Q U E N T I A L I / O D E V I C E ABSTRACT: ASDEV IS A PSEUDO DEVICE FOR RSX11D WHICH LOOKS TO A USER LIKE A TERMINAL. IT CAN DO SEQUENTIAL I/O IN EITHER DIRECTION BUT DOES NOT APPEAR TO BE A DIRECTORY DEVICE. IN REALITY, HOWEVER, ASDEV ALLOWS INPUT OR OUTPUT (OR BOTH) TO BE ASSOCIATED WITH (NORMALLY ASCII) FILES ON ANY RSX DATASET, SO THAT I/O MAY BE FORCED INTO THE FILE SYSTEM EVEN WHERE IT WAS NOT ORIGINALLY SO PROGRAMMED. THE MCR TASK "ASN" CONTROLS THE ASSIGNMENTS BY PASSING A CHARACTER STRING OF THE FILE SPECS TO ASDEV VIA A SPECIAL QIO$. THE DEVICE HANDLER TAKES IT FROM THERE. THIS IS OBVIOUSLY USEFUL WHERE IT IS DESIRED TO FORCE A TASK'S PRINTER OUTPUT TO SPOOL WHERE THE TASK NORMALLY WOULD USE QIO AND MESS UP THE REST OF THE USERS. THE TASK MAY BE USED AS A VIRTUAL TERMINAL TOO. "RUN ...MCR/TI=AS0" WOULD PLAY THE ROLE OF CONTROL-C, AND INPUT AND OUTPUT FILES WOULD ACT AS THE CONSOLE, WHICH COULD THEN INPUT DATA (FOR USE WITH FORTRAN PROGRAMS THAT DON'T USE GET COMMAND LINE). WRITE-UP: ASDEV WILL PASS VARIABLE LENGTH DATA TO A USER PROGRAM OR FROM ONE WITH RECORD LENGTHS UP TO 84 CHARACTERS (IT TRUNCATES LONG RECORDS) AND WILL ALLOW FILE CLOSE/OPEN FROM THE CONSOLE (OR AT HANDLER UNLOAD). IF NO FILE IS ASSIGNED ON EITHER SIDE, ASDEV ACTS AS A GARBAGE DEVICE, I.E., IT DISCARDS OUTPUT AND GIVES IMMEDIATE ENDFILE ON INPUT. WHENEVER ASDEV SEES AN END FILE ON AN INPUT FILE, IT CLOSES THE INPUT FILE, RETURNS EOF, AND SUBSEQUENTLY WILL GIVE INSTANT EOF. OUTPUT ERROR IS NOT CHECKED SIMILARLY. IT IS ASSUMED YOUR DISK WON'T RUN OUT OF SPACE. NO ERROR IS RETURNED AND ASDEV WILL ACT AS IF THE QIO WENT THROUGH OK (IT ENTERS "GARBAGE MODE"). THIS IS NOT NORMALLY A PROBLEM. IF A NEW INPUT OR OUTPUT FILE IS ASSIGNED, THE OLD ONE IS CLOSED FIRST. SPECIAL CLOSE COMMANDS ARE NOT REQUIRED. IF SWITCH 14 IS UP (ON REAL OR RSX EMULATED SWITCH REGISTER SWITCHES), ASDEV WILL DO A QIO TO LUN 2 (USUALLY A TERMINAL) AS WELL AS ITS POSSIBLE FILE STRUCTURED OUTPUT. THIS MAKES IT POSSIBLE TO USE ASDEV TO CAPTURE OUTPUT TO CO: WITHOUT SACRIFICING THE TIMELY MESSAGES THE SYSTEM EMITS THERE. THE SWITCH FEATURE MAY BE EXCLUDED VIA CONDITIONAL ASSEMBLY. TO ASSEMBLE ASDEV, USE A STRING LIKE MAC ASDEV=ASDEV TKB TKB>ASDEV/PR/-FP/-FX/-CP/-AB=ASDEV,[1,1]EXEC.STB/SS / TASK=AS.... UIC=[1,1] STACK=300 PRI=200 POOL=60 LIBR=SYSRES:RO UNITS=4 ASG=TT0:1:2 ASG=SY:3:4 PAR=GEN // ASDEV IS CONTROLLED BY THE MCR TASK "ASSIGN". TO ASSEMBLE ASSIGN, USE A COMMAND STRING LIKE MAC ASSIGN=ASSIGN TKB>ASSIGN/MU/-FP/PR=ASSIGN / UIC=[1,1] TASK=...ASN PRI=70 UNITS=2 ASG=TI:1 ASG=AS:2 STACK=64 // MAKE A PUD FOR AS0: THAT LOOKS LIKE A TERMINAL PUD EXCEPT FOR DEVICE NAME AND UNIT AS0:. THEN INSTALL ASDEV AND ASSIGN AND YOU'RE READY TO GO. LOAD AS: AND IT WILL RUN. (TO MAKE A PUD, FIND A SPARE DEVICE OR DO A SYSGEN AND USE THE SYS/DEV COMMAND, THEN THE OPEN ADDR/KNL COMMAND TO ALTER THE PUD ENTRY FOR THE SPARE DEVICE.) TO ASSIGN A DATASET, THE COMMAND FORMAT IS MCR>ASN DV:[P,PN]FILENAME.TYP=IN ;FOR INPUT OR MCR>ASN DV:[P,PN]FILENAME.TYP=OUT ;FOR OUTPUT ASN WILL NOT TELL YOU OF ANY ERRORS. IF YOU MISTYPE, REDO THE COMMAND. THE LISTING OF ASDEV GIVES THE QIO'S FOR DEVICE ASSIGNMENTS. BASICALLY I/O CODE 5 IS OPEN DATASET FOR INPUT 6 IS CLOSE INPUT DATASET 7 IS OPEN DATASET FOR OUTPUT, AND 8 IS CLOSE OUTPUT DATASET. THE QIO USES THOSE CODES (2400,3000,3400, AND 4000) FOR THE I/O CODE IN THE QIO, AND THE PARAMETER BLOCK CONTAINS THEE ADDRESS AND BYTE COUNT OF A BUFFER CONTAINING THE ASCII FILE SPECS. THESE SPECS ARE PARSED WITHIN THE HANDLER AND ALL IT REQUIRES IS THE ASCII STRING ITSELF, WITH ITS BYTE COUNT. THESE CODES ARE USED FOR DEVICE CONTROL IN OTHER DEVICES AND WILL NORMALLY NEVER BE SEEN FOR ANYTHING ELSE. GLENN C. EVERHART NOV. 2, 1978