|
|
DataMuseum.dkPresents historical artifacts from the history of: Philips Data Systems |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Philips Data Systems Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 23756 (0x5ccc)
Notes: pts_type(SC)
Names: »TIODM.SC«
└─⟦173d42e04⟧ Bits:30009663 Philips computer tape "600105"
└─⟦this⟧ »TOSSWORK/TIODM.SC«
IDENT TIODM REL 10.0 80-03-14 870105041000 =1, COMMIT CHECK 79-11-02 **************************************************** * * PHILIPS TERMINAL SYSTEM PTS * * TIODM = DATA MANAGEMENT ACTIVATION PART * * * * * * **************************************************** * * THIS MODULE IS ENTERED IN THE SAME WAY AS A DRIVER VIA TIO * AND THE DWTADR IN FDB FOR CURRENT FILE * * THE DM REQUEST IS PROCESSED HERE UP TO THE POINT WHERE A SECTOR * FROM A DISC MUST BE ACCESSED * * ENTRY TIODM AND TIODM HOLDS THE START ADDRESS * * * INPUT A6 = FWT ADDRESS * A7 = ORDER WORD WITH W BIT = 0 * A8 = ECB ADDRESS * * * * IN ALL DM MODULES FDB WILL BE THE SAME AS FWT * * THE FOLLOWING WORDS WILL BE SET IN THE FDB: * FDBSNR SECTOR NUMBER IN FILE * FDBRRO RELATIVE RECORD OFFSET IN BLOCK * FDBTNR TASK NUMBER FOR CALLING TASK * FDBCEX CURRENT EXTENT BLOCK POINTER * * * IF AN ERROR CONDITION IS DETECTED THE ERROR RETURN WILL BE: * LDKL A1,/<RETURN CODE> * ABL DISEND * * EJECT * ************** * ENTRIES * ************** * ENTRY TIODM REFERENCED IN DWTADR ENTRY FDBECB ENTRY FDBSNR ENTRY FDBRRO ENTRY FDBRLE ENTRY FDBBLF ENTRY FDBTNR ENTRY FDBLRN ENTRY FDBNIF,FDBEAL,FDBCRL,FDBKA,FDBMIA,FDBADF ENTRY FDBAI1,CRNTID,CRNCDF,CRNSTA ENTRY FDBBLZ BLOCK SIZE ENTRY FDBDMI DMTASK IDENT ENTRY FDBDBR,FDBMRO ENTRY FDBMEC MMU ECB DISPLACEMENT ENTRY FDBKEY SAVE AREA FOR KEY IN INDEXED ACCESS ENTRY TASHLT,FDBSTA,DWDM01 ENTRY REQER2 ENTRY RETRIE,EOMERR,NOKEY,NXTKYS,EOFRC,NODERR ENTRY PROT,KEYERR,PROERR,REQERR,LGTERR ENTRY EOFERR,EDMERR EJECT EXTRN SCTTCT EXTRN RELPRO EXTRN TDISP EXTRN HALT EXTRN FNDTID EXTRN ACTOT EXTRN DISEND EXTRN DWTECB ECB ADDRESS EXTRN DWTOR DWT INDEX AND ORDER EXTRN DWTOPT OPTION BYTE EXTRN DWTTAB DM TASK TTAB ADDRESS EXTRN TTB:ID TASK ID EXTRN MOVZUS,MOVZSU EXTRN DMTASK EXTRN CALSNO EXTRN ECBFC EXTRN ECBBA EXTRN ECBRL EXTRN ECBEL EXTRN ECBRC EXTRN ECBCW EXTRN EARELB,CRNGET,EATEST EXTRN EWTVOL,EWTSEX,EWTEXL,EWTEXB,EWTLNK EXTRN FWTEW1 EXTRN FWTFNR FILE NR EXTRN FNDFDB DMTASK ROUTINE EXTRN FPB:FR EXTRN TTB:SA,QTJOB EXTRN DMTBM EXTRN DMTIDS EXTRN DFTAB,FWTVOL EXTRN CRNCIF INDEX CURRENCY OFFSET EJECT * ************************ * CONDITIONAL ASSEMBLY * ************************ * * * A VERSION CONTAINING INDEXED REQUEST ORDERS IS OBTAINED * BY SETTING INDXAC EQU 1 * INDXAC EQU 0 OTHRERWISE X:A EQU 0 INDXAC EQU X:A * * A PROGRAM VERSION USING TOSS MMU PAGING * IS OBTAINED BY SETTING MMUPAG EQU 1. * MMUPAG EQU 0 * EJECT * * ERROR CODES * EOMERR EQU /A000 OUTSIDE MEDIUM LIMITS PROT EQU /0040 THIS DATA PROTECTED NODERR EQU /8800 NO EXPECTED DATA KEYERR EQU /8400 EXPECTED KEY NOT FOUND PROERR EQU /0010 ROLLBACK FOR PROTECT REASONS REQERR EQU /8000 GENERAL REQUEST ERROR REQER2 EQU /FFFE REQUEST ERROR LGTERR EQU /0008 INCORRECT LENGTH EDMERR EQU /8080 DATA MANAGEMENT ERROR EOFERR EQU /9000 END OF FILE * * MESSAGES * RETRIE EQU /0100 DISC RETRIES NOKEY EQU /0400 NOT SEARCHED KEY NXTKYS EQU /0200 NEXT KEY SAME EOFRC EQU /1000 END OF FILE * FCUSED EQU 7 INVALID FILE CODE EJECT * ************************ * DATA DEFINITIONS * ************************ * * * * TIODMF EQU * TIODM FUNCTION TABLE DATA READ DIRECT RANDOM DATA READ SEQUENTIAL IFT INDXAC=1 DATA READ INDEXED DATA READ INDEXED NEXT XIF IFT INDXAC=0 DATA TIOD19,TIOD19 XIF DATA WRITE DIRECT RANDOM DATA WRITE SEQUENTIAL IFT INDXAC=1 DATA WRITE INDEXED INSERT XIF IFT INDXAC=0 DATA TIOD19 XIF DATA WRITE (RESERVED) DATA REWRIT REWRITE DIRECT IFT INDXAC=1 DATA REWRIT REWRITE INDEXED XIF IFT INDXAC=0 DATA TIOD19 XIF DATA DELETE DIRECT IFT INDXAC=1 QDEL EQU *-TIODMF DATA DELETE INDEXED XIF IFT INDXAC=0 DATA TIOD19 XIF QSTA EQU *-TIODMF DATA STARTO START DIRECT IFT INDXAC=1 DATA STARTO START INDEXED XIF IFT INDXAC=0 DATA TIOD19 XIF * * FOLLOWING FILE ADMINISTRATION FUNCTIONS MUST ALWAYS BE PLACED * AT THE END OF TIODMF DEP ON TEST PERFORMED AFTER LABEL TIOD68 * OPENOF EQU *-TIODMF DATA OPEN CLOSOF EQU *-TIODMF DATA CLOSE RDSTOF EQU *-TIODMF DATA RDSTAT READ STATUS RDFPOF EQU *-TIODMF DATA RDFILP READ FILE PARAMETERS EJECT * TIODMO EQU * DM ORDERS DATA /02FF READ DATA /FFFF DATA /06FF WRITE DATA /FFFF DATA /07FF REWRITE DATA /08FF DELETE DATA /0BFF START DATA /2122 OPEN,CLOSE DATA /0003 READ STATUS,READ FILE PARAMETERS * NOOFOR EQU 18 NO OF ORDER CODES * EJECT * DWTDRD EQU 42 START OF NON-STANDARD DWT PART * IFT MMUPAG=0 START EQU DWTDRD-2 DWTTDM EXTINGUISHED XIF * IFT MMUPAG=1 START EQU DWTDRD+2 DWTTDM EXTINGUISHED XIF EJECT * * FDB OFFSET DEFINITIONS * FDBSTA EQU * DWDM01 EQU * DATA 0,/8000,0,0,TIODM,0,0,0 DWT STANDARD IFT MMUPAG=1 DATA 0,FDBMMU SPECIAL DWT ITEMS XIF DATA 0,0,0,0 DATA 0,0,0,0,0,0,0,0,0 FWT PART DATA 0,0,0,0,0,0,0,0,0 DATA 0,0,0,0,0,0,0,0,0 DATA FDBSTA FDBADF DATA 0,0,0,0,0,0,0 54,BYTE FDB AREA SYSTEM FDB IFT MMUPAG=1 FDBMMU RES 7 MMU ECB AREA XIF EJECT FDBECB EQU START+2 ECB START FDBSNR EQU START+16 SECTOR NUMBER FDBRRO EQU START+20 RELATIVE RECORD OFFSET FDBRLE EQU START+22 RECORD LENGTH FDBBLF EQU START+24 BLOCKING FACTOR FDBTNR EQU START+25 TASK NUMBER CALLING TASK FDBLRN EQU START+27 LAST RECORD NUMBER FDBNIF EQU START+26 NO OF INDEX FILES FDBEAL EQU START+30 EA LINK ROOT FDBCRL EQU START+32 CRN LINK ROOT FDBKA EQU START+34 KEY ADDRESS IN DATA FILE FDBMIA EQU START+36 ADDRESS OF MASTER INDEX FDBADF EQU START+38 ADDRESS OF DATA FILE FDB FDBAI1 EQU START+40 ADDRESS OF INDEX FILE FDB FDBDBR EQU START+48 DELAY,BASIC AND REL BUFFER FLAGS FDBDMI EQU START+49 RELATIVE DMTASK ID FDBMRO EQU START+50 MAX FDBRRO FDBBLZ EQU START+52 NR OF SECT IN BLOCK FDBMEC EQU START+54 MMU ECB DISPLACEMENT IFT MMUPAG=1 FDBKEY EQU START+68 SAVE AREA FOR KEY IN INDEXED ACCESS XIF IFT MMUPAG=0 FDBKEY EQU START+54 KEY AREA FOR INDEXED ACC XIF * * CRN BUFFER OFFSET DEFINITIONS * CRNTID EQU 2 TASK ID CRNSTA EQU 3 CURRENT STATUS CRNCDF EQU 4 CURRENT DATA FILE EJECT DATA 0 DATA MANAGEMENT DEVICE INDEX TIODM DATA *+2 TIODM START ADDRESS * * SET UP A14 STACK * LDKL A14,FDBECB ADKL A14,ECBCW ADR A14,A6 USE ECB AS STACK ENB * * GET CALLING TASK NUMBER AND STORE IT IN FDBTNR * LDK A2,0 TIOD05 LD A1,SCTTCT ADR A1,A2 LD A3,2,A1 CW A3,DWTTAB,A6 RF(E) TIOD10 THIS TASK ADK A2,2 NO RB TIOD05 TRY NEXT TIOD10 EQU * SC A2,FDBTNR,A6 USER TASK NR * CHECK ORDER IN A7 * PUT ORDER INDEX IN DWTOR RIGHT BYTE * LD A7,DWTOR,A6 ORDER WORD LDR A5,A7 ANKL A5,/C0C0 SOME BITS FORBIDDEN RF(NZ) TIOD19 ERR LD A5,FDBBLZ,A6 =1 ANK A5,/FF =1 RF(NZ) TIOD19 COMMIT MISSING =1 LDK A5,NOOFOR-1 NO OF ORDERS - 1 TIOD15 CC A7,TIODMO,A5 START AT END OF TIODMO RF(E) TIOD20 MATCH SUK A5,1 RB(NN) TIOD15 >= 0 TIOD19 EQU * LDKL A1,REQERR ABL TIODMX ERR TIOD20 EQU * SLL A5,1 *2 SC A5,DWTOR+1,A6 SAVE ORDER INDEX CWK A6,FDBSTA RF(NE) TIOD25 NOT SYSTEM FWT CWK A5,RDSTOF RF(E) TIOD25 READ STATUS CWK A5,OPENOF RB(NE) TIOD19 NOT OPEN TIOD25 EQU * LDR A1,A6 FDB ADDR CF A14,CRNGET CURRENCY LDK A3,0 NEW STATUS LC A4,CRNSTA,A2 OLD STATUS SC A3,CRNSTA,A2 ABI TIODMF,A5 BRANCH TO DM FUNCTION * * A1 = FDB ADDRESS DATA FILE * A2 = CURRENCY BUFFER ADDRESS * A4 = OLD STATUS IN RIGHT BYTE * A5 = ORDER CODE AT ENTRY TO TIODM * A6 = FDB ADDRESS FILE DEVICE USER QUEUE * A7 = USER ORDER WORD * A8 = USER ECB ADDRESS EJECT RDSTAT EQU * READ STATUS SC A4,CRNSTA,A2 STATUS CHAR ANK A4,/FF ST A4,ECBCW,A8 RETURN STATUS CM ECBCW+2,A8 LDK A1,0 RET CODE OK ABL TIODMX EJECT READ EQU * READ ORDERS LDKL A3,/100 TM A3,A7 TEST BIT RF(NZ) READDI OPTION DIRECT LDKL A3,/700 TM A3,A7 RB(NZ) TIOD19 NOT OPTION SEQUENTIAL SRL A7,10 INDEX * 2 ABL(Z) SEQREA SEQ READ ABL IXRDNX INDEXED SEQ READ NEXT READDI EQU * DIRECT READ SRL A7,10 INDEX * 2 ABL(Z) RANREA DIRECT RANDOM READF RF IXRARE INDEXED DIRECT READ IFT INDXAC=0 EJECT IXRDNX EQU * IXRARE EQU * IXINS EQU * RB TIOD19 XIF EJECT WRITE EQU * WRITE ORDERS LC A3,FDBDBR,A6 ANK A3,/3 SHARABILITY RB(Z) TIOD19 ONLY INPUT ACCEPTED LDKL A4,/100 LC A3,FDBNIF,A6 NR OF INDEXES ANK A3,/FF RF(NZ) WRITE2 INDEXED TM A4,A7 ABL(NZ) TIODMB DIRECT ANKL A7,/700 ABL(Z) SEQWRI SEQUENTIAL WRITE RB TIOD19 ERR WRITE2 EQU * INDEXED TM A4,A7 ABL(NZ) IXINS INDEXED INSERT RB TIOD19 NOT ALLOWED EJECT REWRIT EQU * REWRITE ORDERS * DELETE EQU * DELETE ORDERS * LC A3,FDBDBR,A6 ANK A3,/3 SHARABILITY RB(Z) TIOD19 ONLY INPUT ALLOWED LC A3,FDBNIF,A6 NR OF INDEX ANK A3,/FF RF(Z) REW010 NO INDEX LDK A3,2 ADS A3,DWTOR,A6 ORDER INDEX REW010 EQU * LDKL A4,/400 TM A4,A7 RF(NZ) REW020 CURRENT SRL A7,8 SUK A7,1 RB(NZ) TIOD19 ERROR ABL TIODMB DIRECT REW020 EQU * ANKL A7,/300 RB(NZ) TIOD19 ERR LD A3,CRNCDF+2,A2 LD A2,CRNCDF,A2 REC NR (NO FILE ID FOR DATA FILE) ABL TIODMA IFT INDXAC=1 EJECT STAIND EQU * START INDEXED SRL A7,10 INDEX * 2 LD A9,ECBRL,A8 KEY LENGTH LDK A1,2 RF STA090 EJECT IXRARE EQU * INDEXED RANDOM READ LDK A1,4 LDKL A9,/40 MAX KEY LENGTH STA090 EQU * START ORDER ADS A1,DWTOR,A6 ORDER INDEX SUK A7,2 LDR A2,A7 ANKL A2,/FFF9 1-4 INDEXES RB(NZ) TIOD19 ERROR ADR A7,A6 BASE IN DATA FDB LD A2,FDBAI1,A7 INDEX FDB ADDR ABL(Z) TIOD19 ERR LDR A7,A2 * * COPY DWT ITEMS * LD A1,DWTECB,A6 ST A1,DWTECB,A2 LD A1,DWTOR,A6 ST A1,DWTOR,A2 * PUT ZEROES TO KEY AREA * LD A1,FDBRLE,A2 SUK A1,6 KEY LENGTH IXR050 EQU * CM FDBKEY,A2 ADK A2,2 SUK A1,2 RB(P) IXR050 MORE TO CLEAR EJECT * * FETCH KEY TO INDEX FDB * LD A1,ECBBA,A8 RECORD ADDR AD A1,FDBKA,A7 KEY ADDR LDK A3,FDBKEY ADR A3,A7 TO ADDR * * KEY LGTH IS MIN OF A9 AND RECLGTH - 6 * LD A2,FDBRLE,A7 SUK A2,6 MAX KEY LGTH CWR A2,A9 RF(NG) IXR070 LDR A2,A9 TAKE SMALLEST LGTH IXR070 EQU * LDR A9,A2 SAVE IFT MMUPAG=0 CF A14,DMTBM FETCH KEY XIF IFT MMUPAG=1 IFT INDXAC=1 LDR A4,A2 LDR A2,A3 TO ADDR LDR A3,A4 LGTH CF A14,MOVZUS XIF IFT INDXAC=1 * * INCREASE KEY IF 'START GREATER ' IS REQ * CWK A5,QSTA RF(NE) STA020 NOT START LC A2,DWTOPT,A7 ANK A2,/7 OPTION SUK A2,1 RF(NZ) STA020 NOT GREATER LDR A2,A7 ADKL A2,FDBKEY ADDR FIRST BYTE LDR A3,A9 LGTH ADR A3,A2 STA010 EQU * SUK A3,1 ADDR LAST BYTE LCR A1,A3 ADK A1,1 NEXT HIGHER KEY SCR A1,A3 ANK A1,/FF OVERFLOW ? RF(NZ) STA020 NO CWR A2,A3 RB(NE) STA010 MORE BYTES STA020 EQU * * * SWITCH TO INDEX FDB * LDR A6,A7 INDEX FDB RF TIORRO XIF EJECT OPEN EQU * CWK A6,FDBSTA RF(E) OPE050 FILE CODE FREE LDKL A1,EDMERR LDK A4,FCUSED FC USED SC A4,CRNSTA,A2 STATUSA ABL TIODMX OPE050 EQU * LDK A1,LGTERR LDKL A4,FPB:FR+8 MIN LGTH CW A4,ECBRL,A8 REQ ABL(G) TIODMX ERR TIORRO EQU * LDKL A4,-1 ST A4,FDBRRO,A6 MARK ORDER TYPE ABL TIOD68 ACTIVATE DMTASK * RDFILP EQU * READ FILE PARAMETERS LD A3,CRNCDF+2,A2 LD A2,CRNCDF,A2 CURRENT RECORD ST A2,ECBCW,A8 ST A3,ECBCW+2,A8 RB TIORRO EJECT CLOSE EQU * CLOSE FILE * * CONNECT FILE CODE TO SYSTEM FWT * LD A1,DWTTAB,A6 USER TTAB ADDR LDR* A2,A8 ANK A2,/FF FILE CODE LDK A5,0 SEARCH TTAB AND CDTAB CF A14,FNDFDB SEARCH LDKL A2,FDBSTA SYSTEM FWT ADDR ST A2,2,A4 FC ENTRY LDK A2,0 LC A2,FDBLRN,A6 LD A3,FDBLRN+1,A6 LAST RECORD NR RF(NZ) CLO100 LDR A2,A2 RF(NZ) CLO100 LDK A3,1 LRN CLO100 EQU * RF TIODMD EJECT SEQREAD EQU * SEQUENTIAL READ LDK A1,2 ADS A1,DWTOR,A6 ORDER INDEX LD A3,CRNCDF+2,A2 CURR LOG REC NO LD A2,CRNCDF,A2 NO FILE ID FOR DATA FILE ADK A3,1 CRN+1 RF(O) SEQR10 OVERFLOW RF SEQR20 SEQR10 EQU * ANKL A3,/7FFF REMOVE OVERFLOW ADK A2,1 ADD CARRY SEQR20 EQU * RF RAN050 EJECT RANREAD EQU * RANDOM READ * * * TEST IF ECBRL <= 0 * LD A2,ECBCW,A8 REC NR LD A3,ECBCW+2,A8 RAN050 EQU * LDK A1,LGTERR INCORRECT LENGTH LD A4,ECBRL,A8 ABL(NP) TIODME ERROR RETURN IF RL <= 0 RF TIODMA EJECT IFT INDXAC=1 IXINS EQU * INDEXED INSRERT LDK A2,2 ADS A2,DWTOR,A6 ORDER INDEX IFT MMUPAG=1 * * MOVE KEYS TO FDB KEY AREAS * LDK A5,8 IXINS3 EQU * LDR A2,A6 FDB DATA ADR A2,A5 LD A3,FDBADF,A2 FDB INDEX RF(Z) IXINS4 NO INDEX LD A1,FDBKA,A3 KEY ADDR AD A1,ECBBA,A8 ADD USER BUF ADDR LDK A2,FDBKEY KEY AREA DISPL ADR A2,A3 ADD FDB ADDR LD A3,FDBRLE,A3 REC LGTH SUK A3,6 KEY LGTH CF A14,MOVZUS KEY TO FDB AREA IXINS4 EQU * SUK A5,2 RB(NZ) IXINS3 MORE INDEXS XIF * SEQWRITE EQU * SEQUENTIAL WRITE * LDK A2,2 ADS A2,DWTOR,A6 ORDER INDEX LC A2,FDBLRN,A6 LD A3,FDBLRN+1,A6 LRN IFT INDXAC=1 RF IXR020 STORE LOG REC NO EJECT IXRDNX EQU * INDEXED EREAD NEXT LDR A4,A2 CRN BUFFER ADDR LDK A1,6 ADS A1,DWTOR,A6 ORDER INDEX SUK A7,2 LDR A2,A7 ANKL A2,/FFF9 1-4 INDEXES ABL(NZ) TIOD19 ERR LD A2,DWTOR,A6 LD A3,DWTECB,A6 ITEMS TO INDEX FDB * * SWITCH FDB * ADR A7,A6 LD A7,FDBAI1,A7 INDEX FDB ADDR ABL(Z) TIOD19 ERR LDR A6,A7 ST A2,DWTOR,A6 ST A3,DWTECB,A6 ITEMS FROM DATA FILE * * GET CRN * LDK A2,0 LDK A3,0 * * CHECK THAT FILE ID IS OK * LC A7,FWTFNR,A6 FILE NR CC A7,CRNCIF,A4 RF(NE) IXR020 OTHER INDEX FILE IS CURRENT LC A2,CRNCIF+1,A4 LD A3,CRNCIF+2,A4 LOG REC NO XIF EJECT IXR020 EQU * ADK A3,1 RF(O) IXR030 OVERFLOW RF IXR040 IXR030 ANKL A3,/7FFF REMOVE OVERFLOW BIT ADK A2,1 ADK CARRY IXR040 EQU * RF TIODMA DO NOT CHECK EOF CONDITION EJECT STARTO EQU * START ORDER IFT INDXAC=1 LDR A4,A7 SRL A4,10 INDEX * 2 ABL(NZ) STAIND START INDEXED XIF LD A2,ECBCW,A8 REC NR LD A3,ECBCW+2,A8 ECR A4,A7 ANK A4,/7 OPTION SUK A4,1 RF(NZ) TIODMA NOT GREATER RB IXR020 GET NEXT REC NR EJECT * ************************* * DMTASK ACTIVATION * ************************* * TIODMA EQU * ST A2,ECBCW,A8 REC NR ST A3,ECBCW+2,A8 RF TIODMC TIODMB LD A2,ECBCW,A8 REC NR LD A3,ECBCW+2,A8 TIODMC EQU * * * NO EA FOR OTHER TASK * LD A1,FDBADF,A6 FDB ADDR CF A14,EATEST LDR A4,A4 RTN INF RF(N) TIODPE EA OTHER TASK TIODMD EQU * LDR A1,A2 LDR A2,A3 REC NR CF A14,CALSNO GET SECTOR NO AND OFFSET IN SECTOR LDR A1,A1 RETURN INF RF(NZ) TIODME EJECT * * ACTIVATE DMTASK WITH FDB ADDRESS IN A1 * TIOD68 EQU * * * PREPARE DM INTERFACE * LDKL A8,'#D' INH LDK A7,0 LD A1,DWTOR,A6 ORDER ANK A1,/FF SUK A1,OPENOF RF(NN) TIOD72 OPEN CLOSE,RDFP LC A7,FDBDMI,A6 TID FOR DMTASK ADR A7,A8 CF A15,FNDTID A2 = TTAB ADDR LDR A5,A2 RF(Z) TASHLT LD A1,TTB:SA,A2 RF(Z) TIOD70 NOT ACTIVE LDK A7,0 EJECT * * GET SECONDARY DMTASK * LC A1,FWTVOL,A6 VOLUME FILE CODE TIOD69 EQU * CC A1,DFTAB,A7 RF(E) TIOD71 SAME CODE ADK A7,1 RB TIOD69 SEARCH NEXT TIOD71 EQU * LC A7,DMTIDS,A7 SECONDARY DMTASK REL ID TIOD72 EQU * ADR A7,A8 TASK ID CF A15,FNDTID A2:=TTAB ADDR LDR A5,A2 RF(NZ) TIOD70 TASHLT EQU * ABNORMAL SYSTEM ERRORS LDK A1,/11 DM ERR CF A15,HALT TIOD70 LDKL A2,DMTASK DISPATCH ADDRESS LDR A1,A6 FDB ADDRESS * USED REGS A1-A3,A5 CF A15,ACTOT ACTIVATE DMTASK ABL TDISP * EJECT * ************** * TIODME * ************** * * TIODM ERROR CALL TENDIO WITH RETURN CODE IN A1 AND GOTO DISPATCHER * TIODPE EQU * PROTECT ERR EXIT SUR A9,A9 LC A9,FDBTNR,A6 USER TASK ID CF A14,RELPRO RELEASE PROTECT LDKL A1,PROERR TIODME EQU * LD A6,FDBADF,A6 DATA FILE FDB ADDR TIODMX EQU * * A1 = ERROR CODE * A6 = FDB ADDRESS INH ABL DISEND CALL TENDIO GOTO DISPATCHER * END