28-Jun-89 16:16:49,10997;000000000001 Return-Path: Received: from aerospace.aero.org by KICKI.STACKEN.KTH.SE; Wed, 28 Jun 89 16:15:00 +0200 Received: from localhost by aerospace.aero.org with SMTP (5.61++/6.0.GT) id AA08192; Wed, 28 Jun 89 07:10:33 -0700 Posted-Date: Wed, 28 Jun 89 07:10:30 -0700 Date: Wed, 28 Jun 89 07:10:30 -0700 From: wally@aerospace.aero.org To: Johnny Billquist Subject: FILE: MULTOS Message-Id: <8906281410.AA08192@aerospace.aero.org> This is a list of the non-system file structured handlers in MULTOS/8 Version 2: Non-resident handlers: NAME DEVICES PURPOSE ---- ------- ------- ._________________________________________________________________. |RK03 RKA0-3 RK8E handler for RK05 disk drives 0 - 3. | | RKB0-3 | |_________________________________________________________________| ._________________________________________________________________. |RKA1 RKA1-3 RK8E handler for RK05 disk drives 1 - 3. | | RKB0-3 | |_________________________________________________________________| ._________________________________________________________________. |RL03 RLA0-3 RL01 handler for RL01 disk drives 0 - 3. | | RLB0-3 | | RLC0-3 | |_________________________________________________________________| ._________________________________________________________________. |RL13 RLA1-3 RL01 handler for RL01 disk drives 1 - 3. | | RLB1-3 | | RLC1-3 | |_________________________________________________________________| ._________________________________________________________________. |SINS ???0-15?? System Industries handler for all | | System Industries drives in system. | |_________________________________________________________________| RK08 RKA0-3 RK08 handler for RK08 disk drives 0 - 3. LTAC LTA0-7 LincTape handler for TC08 DECtape controller. LTAD LTA0-7 LincTape handler for TD8E DECtape controller. TC08 DTA0-7 TC08 DECtape handler. TD8E DTA0-7 TD8E DECtape handler. RFN RF RF08 handler for RF08 disk drives 0 - 3. RFS RF RF08 handler for RF08 disk drives 1 - 3. DF DF DF32 handler for DF32 disk drives 0 - 3. RXA RXA0-7 Floppy 12-bit handler for floppy drives 0 - 7. RX8 R0-7 Floppy 8-bit handler for floppy dirves 0 - 7. DKB DKB0 Pertec fixed disk handler for SCIDATA systems. This is a list of the non-file structured handlers in MULTOS/8 Version 2: CDR CDR Card Reader handler. CSA CSA0-7 DECassette handler for cassette drives 0 - 7. MTA MTA0-7 Magtape handler for magtape drives 0 - 7. PT8 PTR,PTP Paper Tape Reader/Punch Handler. DUMP DUMP Dump OS/8 blocks in octal, 6-bix, OS/8 ASCII. SPOL SPOL Line printer spooler. PLOT PLOT Plotter spooler. BTCH BTCH Detached BATCH processor. JOBS Jxy Handler for other job's SYS devices. This is a list of the system handlers: NAME DEVICE PURPOSE ---- ------ ------- RKSY SYS System handler for RK05 disk drive 0. RLSY SYS System handler for RL01 disk drive 0. RFSY SYS System handler for RF08 disk drive 0. RK8S SYS System handler for RK08 disk drive 0. SISY SYS System handler for System Industries disk drive 0. PERT SYS System handler for PERTIC disk drive 0. This is a list of the line printer handlers: NAME DEVICE PURPOSE ---- ------ ------- LPS LPT Standard DEC line printer handler. LPD LPT Data Printer line printer handler. LPT LPT Texas Instruments model 810 line printer handler. LPX LPT Line printer handler for XON/XOF printers. This is a list of the CRT terminal handlers: Terminal # 1 is always accessed by device codes 03/04. Terminals 2 - 16 on the system are accessed by various other interfaces as described below: KL8A Handler for DEC KL8A CRT interface for terminals 2-16. KL8E Handler for DEC KL8E or KL8JA CRT interface for terminals 2-16. DLMX Handler for Data Logics 8-channel MUX interface. CIMX Handler for Computer Interface System's 8-channel MUX interface. IOT's which must be supported: SGT 06006 CAF 06007 KSF 06031 KCC 06032 KRS 06034 KRB 06036 TSF 06041 TPC 06044 TLS 06046 BIOT 06200 CDF 06201 06211 06221 06231 06241 06251 06261 06271 CIF 06202 06212 06222 06232 06242 06252 06262 06272 CID 06203 06213 06223 06233 06243 06253 06263 06273 RDF 06214 RIF 06224 LKSF 06651 LKCC 06652 LKRS 06654 LKRB 06656 LSF 06661 LPE 06663 LSC 06664 LLS 06666 Group II Operates with HLT and/or OSR bit(s) set. Have CONFIG specify the following: Size of standalone SYS area. Number of jobs in the system. Size of SYS for each job. Which job is LPT task. Which job is SPOOL task. Which job is detatched BATCH task. Which job is main disk drive 0 task (SYS handler)(for queue buffer). Which job is NON-RESident device task. List of legal devices in the system. Size of each job's output buffer. Size of ech job's input buffer. During initialization, a table would be set to correspond with the number of jobs in the system: DEVTAB AS 63 Allow a max of 63 devices on the system. / / Establish a table whose entries would be used as pointers / to the actual tables. / PTABLE QUT %*,* / PJSIZE DC JSIZE Pointer to each jobs SYS size table. PJBLOCK DC JBLOCK Pointer to each job's SYS block zero (physical block). PJWAIT DC JWAIT Pointer to job wait bits table. PJFLAGS DC JFLAGS Pointer to job flags table. PJPC DC JPC Pointer to job PC table. PJAC DC JPC Pointer to job AC table. PJMQ DC JMQ Pointer to job MQ table. PJSC DC JSC Pointer to job SC table. PJRST DC JRST Pointer to job high order restart time table. PJNBUF DC JNBUF Pointer to job input buffer address table. PJOBUF DC JOBUF Pointer to job output buffer address table. PJIBF DC JIBF Pointer to job input buffer fill pointer table. PJIBE DC JIBE Pointer to job input buffer empty pointer table. PJOBF DC JOBF Pointer to job output buffer fill pointer table. PJOBE DC JOBE Pointer to job output buffer empty pointer table. PJMF DC JMF Pointer to job motion flag. PJSTAT DC JSTAT Pointer to device status words. / / Parameter definitions (items ORed with 04000 are double precision): / SIZE EQU 0 Point to specified job's SYS size word. BLOCK EQU 1 Point to specified job's physical SYS block zero. WAIT EQU 2.OR.04000 Point to specified job's wait words. FLAGS EQU 3 Point to specified job's hardware flags word. PC EQU 4 Point to specified job's PC. AC EQU 5 Point to specified job's Accumulator (AC). MQ EQU 6 Point to specified job's Multiplier-Quotient (MQ). SC EQU 7 Point to specified job's Step Counter (SC). RST EQU 8.OR.04000 Point to specified job's wait restart time. NBUF EQU 9 Point to specified job's input buffer initial word. OBUF EQU 10 Point to specified job's output buffer initial word. IBF EQU 11 Point to specified job's input buffer fill pointer. IBE EQU 12 Point to specified job's input buffer empty pointer. OBF EQU 13 Point to specified job's output buffer fill pointer. OBE EQU 14 Point to specified job's output buffer empty pointer. MF EQU 15 Point to specified job's motion flag. STAT EQU 16.OR.04000 Point so specified job's device status words. Ideas on implementation of non-resident device handlers: The handler will be loaded into one of two possible areas--one area in field 0 and the other in field 1. The relative addresses within the fields would be the same. Upon being loaded, the handler must initialize itself and hook into the interrupt skip chain: START CAL Clear AC and LINK. RIF Get the current field number. TAD =CDF Build a CDF instruction to it. DCA XCCIF+1 Store in a one instruction subroutine. TAD =05400+XCCIF Get the subroutine return instruction. DCA XCCIF+2 Store it. / / Now build a subroutine to set the DF to that of the buffer field. / TAD xxx Get the info word. AND =070 Extract the buffer field. TAD =CDF Build the CDF instruction. DCA XCBDF+1 Store it in the XCBDF subroutine. TAD =05400+XCBDF Get the subroutine return instruction. DCA XCBDF+2 Store it. / / Now set the interrupt skip chain hook area. / RIF Get the current field again. SZA CLA Is the handler resident in field 0 or field 1 ? TAD =HOOK1-HOOK0 Field 1. TAD =HOOK0-1 Get the interrupt skip chain hook address. DCA XR7 Use auto-index to store the skip sequence. CDF 0 All interrupt skip code is in field 0. TAD =06000+(PR8.LS.3)+RSF Get the skip instruction. IOF Turn off interrupts. DCAI XR Store the reader skip instruction. TAD =SKP Get a SKP instruction. DCAI XR Store it. TAD =04400+INT1 Get the 'JMSI INT1' instruction. DCAI XR Store it. TAD =PR8E Get the interrupt address for the reader. DCAI =INT1 Store it. TAD =06000+(PP8.LS.3)+PSF Get the punch skip instruction. DCAI XR Store it in the interrupt skip chain. TAD =SKP Get a SKP instruction. DCAI XR Store it. TAD =04400+INT2 Get the 'JMSI INT2' instruction. DCAI XR Store it. TAD =PP8E Get the interrupt address for the punch. DCAI =INT2 Store it. ... Upon exit from the handler, the following would be executed: TAD =HOOK0-HOOK1 Set the counter. DCA HCNTR1 ... RIF Get the instruction field. SZA CLA Which field ? TAD =HOOK1-HOOK0 Field 1. TAD =HOOK0-1 Form pointer to hook area. DCA XR7 Store it. IOF Turn off interrupts. 1H TAD =NOP Set the hook area to NOP's. DCAI XR7 ... ISZ HCNTR1 Finished ? JMP 1B No, continue. ION Allow interrupts. ... Now for the interrupt skip chain hook area: ROOM 17 Insure all location are on the same page. HOOK0 AS 8,NOP Fill with NOP's initially. HOOK1 AS 8,NOP Ditto. ERM JMP RETURN Check for a pending interrupt. The following macro would generate a JMS to set the data field to the field where the handler is resident: XCCIF EQU 0140 Address of subroutine to change DF to IF. MACRO Set the DF to the current IF. .CCIF <> JMS XCCIF MSKIP MEND The following macro would generate a JMS to set the data field to the field where the handler buffer is resident: XCBDF EQU XCCIF+3 Address of subroutine to change DF to BF. MACRO Set the DF to the buffer DF. .CBDF <> JMS XCBDF MSKIP MEND Programs to be added to the system for convenience of users: TBUILD.SV A program similar to OS/8 BUILD.SV which tailors each users system head to match his choice of device handlers. The choice of handlers is made from a universe of a possible 63. Among the devices from which to choose are: SPOL: the line printer spooler PLOT: the plotter spooler Jx: where 'x' is another job number LOGOFF.SV A program to log the user off the system. Some information may be printed on the user CRT such as logoff time, time logged on, etc. DATE.SV A program to print the time-of-day. This program is also automatically called each time the CCL 'DATE' command is issued to the OS/8 Monitor.