|
|
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: 23912 (0x5d68)
Notes: pts_type(SC)
Names: »TIOSDM.SC«
└─⟦f350e1b7a⟧ Bits:30009678 Philips computer tape "600219"
└─⟦this⟧ »MONGEN/TIOSDM.SC«
IDENT TIOSDM REL 11.0 81-02-26 870105041100 =4,MOVE KEY WHEN DELETE,REWRITE DIRECT INDEXED =4,REL 11.0 81-02-24 =3,SKIP BITS 1-4 IN ORDER WHEN WRITE,DELETE,REWRITE =3,REL 11.0 81-02-12 =2,CLOSE D. WILL BE CLOSE IF WR. OP MODE =2,REL 11.0 81-02-05 =1, OPEN MODES ALLOWED WRONG ORDERS =1, REL 11.0 81-01-26 **************************************************** * * PHILIPS TERMINAL SYSTEM PTS * * TIOSDM = STANDARD 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 TIOSDM AND TIOSDM HOLDS THE START ADDRESS * * * INPUT A11= FWT ADDRESS * A7 = ORDER WORD WITH W BIT = 0 * A8 = ECB ADDRESS * * EJECT TIOSDM * * 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 TIOSDM REFERENCED IN DWTADR * ENTRY SDMOIE,SDMIOP,SDMOEE ENTRY SDMOOS,SDMOOR,SDMLIM ENTRY SDMOEX,SDMOIP EJECT TIOSDM * ****************** * EXTERNALS * ****************** * EXTRN FDBRRO EXTRN FDBRLE EXTRN FDBTNR EXTRN FDBLRN EXTRN FDBNIF,FDBKA,FDBADF EXTRN FDBAI1,CRNCDF,CRNSTA EXTRN FDBKEY SAVE AREA FOR KEY IN INDEXED ACCESS EXTRN FDBSTA EXTRN FDBOMD EXTRN PROERR,LGTERR,EDMERR EXTRN SCTTCT EXTRN RELPRO EXTRN ACTOT EXTRN DISEND EXTRN DWTECB ECB ADDRESS EXTRN DWTOR DWT INDEX AND ORDER EXTRN DWTTAB DM TASK TTAB ADDRESS EXTRN SDMTSK EXTRN CALSNO EXTRN ECBBA,ECBRL,ECBCW,ECBRC EXTRN CRNGET,EATEST EXTRN FWTFNR FILE NR EXTRN FNDFDB SDMTSK ROUTINE EXTRN FPB:FR EXTRN FDBEXC,MOVUS EXTRN CRNCIF INDEX CURRENCY OFFSET EXTRN DMACTI,DMACTD EXTRN DISIOE EXTRN TTABD,TTABLN,TABEND * 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 00001 * * * A PROGRAM VERSION USING TOSS MMU PAGING * IS OBTAINED BY SETTING MMUPAG EQU 1. * MMUPAG EQU 1 * EJECT * * ERROR CODES * * MESSAGES * * FCUSED EQU 7 INVALID FILE CODE RQERR EQU /8000 EJECT * ************************ * DATA DEFINITIONS * ************************ * * BRANCH TABLE * TIODMF EQU * IFT INDXAC=1 DATA OPEN DATA OPEN DATA OPEN DATA OPEN DATA OPEN DATA OPEN DATA OPEN DATA OPEN QCLDIS EQU *-TIODMF DATA CLOSED DATA CLOSE DATA RDFIPA SDMOEX EQU *-TIODMF DATA DISIOE NOT USED * EJECT TIOSDM * * QWRSQ0 EQU *-TIODMF DATA WRSQ00 DATA DISIOE NOT ALLOWED DATA WRRN00 DATA WRRNIX DATA RWCU00 DATA RWCUIX DATA RWDI00 DATA RWDIIX DATA DECU00 DATA DECUIX DATA DEDI00 DATA DEDIIX QRDSQ0 EQU *-TIODMF DATA RDSQ00 DATA RDSQIX DATA RDRN00 DATA RDRNIX DATA STEQ00 DATA STEQIX QSTG00 EQU *-TIODMF DATA STGR00 QSTGIX EQU *-TIODMF DATA STGRIX DATA STNL00 DATA STNLIX * XIF IFT INDXAC=0 DATA OPEN DATA OPEN DATA OPEN DATA OPEN DATA OPEN DATA OPEN DATA OPEN DATA OPEN QCLDIS EQU *-TIODMF DATA CLOSE DATA CLOSE DATA RDFIPA SDMOEX EQU *-TIODMF DATA DISIOE NOT USED * EJECT TIOSDM * * QWRSQ0 EQU *-TIODMF DATA WRSQ00 DATA DISIOE NOT ALLOWED DATA WRRN00 DATA DISIOE NOT ALLOWED DATA RWCU00 DATA DISIOE NOT ALLOWED DATA RWDI00 DATA DISIOE NOT ALLOWED DATA DECU00 DATA DISIOE NOT ALLOWED DATA DEDI00 DATA DISIOE NOT ALLOWED QRDSQ0 EQU *-TIODMF DATA RDSQ00 DATA DISIOE NOT ALLOWED DATA RDRN00 DATA DISIOE NOT ALLOWED DATA STEQ00 DATA DISIOE NOT ALLOWED QSTG00 EQU *-TIODMF DATA STGR00 DATA DISIOE NOT ALLOWED DATA STNL00 DATA DISIOE NOT ALLOWED XIF * EJECT TIOSDM * ********** * OPEMOD * ********** * * TABLE OVER ALLOWED IO ORDERS VS OPENMODES * * BIT ORDER * 0 NOT USED =1 * 1 NOT USED =1 * 2 START NOT LESS =1 * 3 START GREATER =1 * 4 START EQUAL =1 * 5 READ RANDOM =1 * 6 READ SEQUENTIAL =1 * 7 DELETE DIRECT =1 * 8 DELETE CURRENT =1 * 9 REWRITE DIRECT =1 * 10 REWRITE CURRENT =1 * 11 WRITE RANDOM =1 * 12 WRITE SEQUENTIAL =1 * 13 NOT USED =2 * 14 NOT USED =2 * 15 NOT USED =2 * OPEMOD EQU * DATA /3E00 INPUT UNPROT. =2 DATA /3E00 INPUT PROTECTED =2 DATA /3E00 INPUT EXCLUSIVE =2 DATA /3FF8 INPUT/OUTPUT PROT. =2 DATA /3FF8 INPUT/OUTPUT EXCL. =2 DATA /0008 EXTEND EXCLUSIVE =2 DATA /0008 OUTPUT SEQUENTIAL =2 DATA /0018 OUTPUT RANDOM =2 EJECT TIOSDM * * ********** * ORDTA1 * * ORDTA2 * * ORDTA3 * ********** * * * * ORDTA1: ADMINISTATION FUNCTION ORDERS (NO INDEX) * ORDTA2: ORDER WITH SPECIAL INDEX HANDLING (FDBNIF CONTAIN INDEX) * ORDTA3: ORDERS WITH INTERNAL INDEX IN ORDER WORD * * EJECT TIOSDM * * * ORDTA1 EQU * DATA /821 OPEN INPUT UNPROTECTED SDMOIP EQU *-ORDTA1 DATA /921 OPEN INPUT PROTECTED SDMOIE EQU *-ORDTA1 DATA /A21 OPEN INPUT EXCLUSIVE SDMIOP EQU *-ORDTA1 DATA /3921 OPEN INPUT/OUTPUT PROTECTED DATA /3A21 OPEN INPUT/OUTPUT EXCLUSIVE SDMOEE EQU *-ORDTA1 DATA /5221 OPEN EXTEND EXCLUSIVE SDMOOS EQU *-ORDTA1 DATA /1221 OPEN OUTPUT SEQUENTIAL EXCLUSIVE SDMOOR EQU *-ORDTA1 DATA /3221 OPEN OUTPUT RANDOM EXCLUSIVE SDMLIM EQU *-ORDTA1 DATA /222 CLOSE DISCARD DATA /022 CLOSE LOCK DATA /3 READ FILE PARAMETERS ORDTL1 EQU *-ORDTA1 ORDTA2 EQU * DATA /006 WRITE SEQUENTIAL DATA /106 WRITE RANDOM DATA /407 REWRITE CURRENT DATA /107 REWRITE DIRECT DATA /408 DELETE CURRENT DATA /108 DELETE DIRECT ORDTL2 EQU *-ORDTA2 EJECT ORDTA3 EQU * DATA /002 READ SEQUENTIAL DATA /102 READ RANDOM DATA /00B START EQUAL DATA /10B START GREATER DATA /20B START NOT LESS ORDTL3 EQU *-ORDTA3 ORDTEN EQU * * * EJECT TIOSDM * ************ * ENTRY ************ * * INPUT : A14 = STACK POINTER * A8 = ECB ADDRESS * A6 = FDB ADDRESS * TIOSDM EQU * LDR A11,A6 FDB ADDRESS LDKL A2,/4000 ORDER CHECK BIT LDKL A10,ORDTEN-2 CHECK ORDER AND OPTION LDK A3,ORDTL3-2 LD A7,DWTOR,A11 ORDER AND OPTION LDR A1,A7 ANKL A7,/7FF NOT INDEX CF A14,CHKORD RF(N) TIOS10 NOT IN TABLE SLL A3,1 ADK A3,QRDSQ0 ADJUST DISPLACEMENT SRL A1,11 RF(Z) TIOS20 NO INDEX SUK A1,4 MAX INDEX RF(NP) TIOS15 ALLOWED INDEX REQERR EQU * LDR A6,A11 FDB ADDRESS ABL DISIOE REQUEST IO * EJECT TIOSDM * * * TIOS10 EQU * LDK A3,ORDTL2-2 TABLE LENGTH * LDR A7,A1 =3 CF A14,CHKORD RF(N) TIOS25 ORDER NOT IN TABLE SLL A3,1 ADK A3,QWRSQ0 ADJUST DISPLACEMENT LC A1,FDBNIF,A11 ANK A1,/FF RF(Z) TIOS20 NO INDEX TIOS15 EQU * ADK A3,2 INDICATE INDEXED TIOS20 EQU * CHECK ORDER VS OPEN MODE LC A1,FDBOMD,A11 GET OPEN MODE ANK A1,/7F AN A2,OPEMOD,A1 RB(Z) REQERR ILLEGAL ORDER RF TIOS30 * TIOS25 EQU * LDR A7,A1 ORDER WITH ALL BITS =3 LDK A3,ORDTL1-2 CF A14,CHKORD RB(N) REQERR ORDER NOT FOUND * EJECT TIOSDM * * TIOS30 EQU * LDR A10,A3 SC A3,DWTOR+1,A11 LD A5,DWTTAB,A11 GET CALLING TASK TTAB ADDRESS SUK A3,QCLDIS CLOSE DISCARD RF(N) TIOS35 OPEN ORDER CWK A11,FDBSTA RB(E) REQERR NOT OPENED LD A1,FDBEXC,A11 EXCLUSIVE ACCESS INDICATOR RF(Z) TIOS35 NOT OPENED EXCLUSIVE CWR A1,A5 RB(NE) REQERR OTHER TASK EXCLUSIVE ACCESS TIOS35 EQU * LD A1,SCTTCT LDR* A2,A1 TAB LENGTH ADR A1,A2 SRL A2,1 TIOS40 EQU * SUK A1,2 SUK A2,1 RF(Z) TIOS50 END OF SCTTCT CWR* A5,A1 RB(NE) TIOS40 NOT THIS TASK TIOS45 EQU * SC A2,FDBTNR,A11 USER TASK NUMBER RF TIOS90 EJECT * * SEARCH DM TASK * TIOS50 EQU * LDK A2,/FF DATA MANAGEMENT TASK LDKL A1,TTABD TTAB ADDRESS #D TIOS55 EQU * CWR A5,A1 RB(E) TIOS45 CORRECT TASK ADKL A1,TTABLN NEXT TTAB CWK A1,TABEND RB(E) REQERR TASK NOT FOUND SUK A2,1 RB TIOS55 EJECT TIOSDM * * TIOS90 EQU * CF A14,CRNGET CURRENCY INH LDR A4,A2 CURRENCY BUFFER ADDRESS LDK A2,0 SC A2,CRNSTA,A4 RESET STATUS LC A2,CRNCDF+1,A4 GET CURRENCY LD A3,CRNCDF+2,A4 LDKL A9,/40 MAX KEY LENGTH ABI TIODMF,A10 BRANCH TO DM FUNCTION * * A2,A3 = CURRENCY (CRNCDF) * A4 = CURRENCY BUFFER ADDRESS * A5 = TTAB ADDRESS CALLING TASK * A11= FDB ADDRESS DATA FILE * A7 = USER ORDER WORD * A8 = USER ECB ADDRESS * A9 = MAX KEY LENGTH = /40 * A10= DISPLACEMENT IN TIODMF TABLE * * IFT INDXAC=1 * EJECT * ********** * RWDIIX * * DEDIIX * ********** * * REWRITE DIRECT INDEXED,DELETE DIRECT INDEXED * RWDIIX EQU * REWRITE DIRECT INDEXED DEDIIX EQU * DELETE DIRECT INDEXED LD A7,FDBAI1,A11 PRIMARY INDEX FDB =4 CF A14,SWHECO SWITCH ECB AND ORDER CODE =4 RF IXR030 MOVE KEY =4 EJECT * ********** * STEQIX * * STGRIX * * STNLIX * * RDRNIX * ********** * * START INDEXED AND READ RANDOM INDEXED * STEQIX EQU * STGRIX EQU * STNLIX EQU * LD A9,ECBRL,A8 KEY LENGTH RDRNIX EQU * CF A14,SWHFDB SWITCH FDB IXR030 EQU * =4 RB(Z) REQERR NO FDB LDR A2,A7 INDEXED FDB ADDRESS ADKL A2,FDBKEY KEY AREA ADDRESS LDR A4,A2 LD A1,FDBRLE,A7 SUK A1,6 KEY LENGTH LDR A3,A1 KEY LENGTH IXR050 EQU * CMR A4 CLEAR KEY AREA ADK A4,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 CWR A3,A9 KEY LENGTH = MIN(A9,RECLEN-6) RF(NG) IXR070 LDR A3,A9 IXR070 EQU * LDR A6,A3 SAVE MIN LENGTH CF A15,MOVUS MOVE KEY * EJECT TIOSDM * * INCREASE KEY IF 'START GREATER ' IS REQ * CWK A10,QSTGIX RF(NE) STA020 NOT START GREATER STA010 EQU * SUK A2,1 ADDR LAST BYTE LCR A1,A2 ADK A1,1 NEXT HIGHER KEY SCR A1,A2 ANK A1,/FF OVERFLOW ? RF(NZ) STA020 NO SUK A6,1 RB(P) STA010 MORE BYTES STA020 EQU * * * SWITCH TO INDEX FDB * LDR A11,A7 INDEX FDB RF TIORRO EJECT * * ********** * WRRNIX * ********** * * WRITE RANDOM INDEXED * WRRNIX EQU * IDEXED INSERT IFT MMUPAG=1 * * MOVE KEYS TO FDB KEY AREAS * LDK A4,8 IXINS3 EQU * LDR A2,A11 FDB DATA ADR A2,A4 LD A2,FDBADF,A2 FDB INDEX RF(Z) IXINS4 NO INDEX LD A1,FDBKA,A2 KEY ADDR LD A3,FDBRLE,A2 RECORD LENGTH AD A1,ECBBA,A8 ADD USER BUF ADDR ADKL A2,FDBKEY KEY ADDRESS SUK A3,6 KEY LGTH CF A15,MOVUS MOVE KEY IXINS4 EQU * SUK A4,2 RB(NZ) IXINS3 MORE INDEXS XIF * EJECT TIOSDM * * ********** * WRSQ00 * ********** * * WRITE SEQUENTIAL * WRSQ00 EQU * LC A2,FDBLRN,A11 ANK A2,/FF LD A3,FDBLRN+1,A11 LRN IFT INDXAC=1 RF IXR020 STORE LOG REC NO EJECT * ********** * RDSQIX * ********** * * READ SEQUENTIAL INDEXED * * RDSQIX EQU * CF A14,SWHFDB SWITCH FDB ABL(Z) REQERR FDB NOT FOUND LDR A11,A7 INDEXED FDB ADDRESS * * GET CRN * LDK A2,0 LDK A3,0 * * CHECK THAT FILE ID IS OK * LC A7,FWTFNR,A11 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 IXR020 EQU * CF A14,ADDONE A2,A3 = A2,A3 + 1 RF TIODMA DO NOT CHECK EOF CONDITION EJECT * ********** * RDSQ00 * ********** * * READ SEQUENTIAL * RDSQ00 EQU * CF A14,ADDONE A2,A3=A2,A3 + 1 RF RAN050 EJECT * ********** * RDRN00 * ********** * * READ RANDOM * RDRN00 EQU * LD A2,ECBCW,A8 REC NR LD A3,ECBCW+2,A8 RAN050 EQU * LDKL A1,LGTERR INCORRECT LENGTH LD A4,ECBRL,A8 RF(NP) TIODME ERROR RETURN IF RL <= 0 RF TIODMA EJECT * * ********** * OPEN * ********** * * OPEN * OPEN EQU * CWK A11,FDBSTA RF(E) OPE050 FILE CODE FREE LDKL A1,EDMERR LDK A2,FCUSED FC USED SC A2,CRNSTA,A4 STATUS RF ENDIO OPE050 EQU * LDKL A1,LGTERR LDKL A4,FPB:FR+8 MIN LGTH CW A4,ECBRL,A8 REQ RF(G) ENDIO ERROR RF TIORRO * EJECT TIOSDM * * ********** * RDFIPA * ********** * * READ FILE PARAMETR * RDFIPA EQU * ST A2,ECBCW,A8 ST A3,ECBCW+2,A8 TIORRO EQU * LDKL A4,-1 ST A4,FDBRRO,A11 MARK ORDER TYPE RF ACTDM0 ACTIVATE DN TASK #D * EJECT * ********** * CLOSED * ********** * * CLOSED EQU * * * TEST IF INDEX * * LC A1,FDBNIF,A11 * ANK A1,/F NUMBER OF INDEX FILES * ABL(NZ) REQERR INDEX NOT ALLOWED WHEN CLOSE DISCARD LD A1,FDBEXC,A11 TTAB EXCLUSIVE =2 RF(NZ) CLOSE CLOSE DISCARD ALLOWED =2 LDKL A1,RQERR INDICATE REQUEST ERROR =2 ORS A1,ECBRC,A8 SET RETURN CODE =2 SC A1,DWTOR,A11 CHANGE CLOSE D. TO CLOSE =2 EJECT * ********** * CLOSE * ********** * * CLOSE EQU * * * CONNECT FILE CODE TO SYSTEM FWT * LDR A1,A5 USER TTAB 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 A1,0 LC A1,FDBLRN,A11 LD A2,FDBLRN+1,A11 LAST RECORD NR RF(NZ) CLO100 LDR A1,A1 RF(NZ) CLO100 LDK A2,1 LRN CLO100 EQU * RF TIODMD EJECT * ********** * STEQ00 * * STGR00 * * STNL00 * ********** * * START EQUAL,GREATER AND NOT LESS * STEQ00 EQU * STGR00 EQU * STNL00 EQU * LD A2,ECBCW,A8 REC NR LD A3,ECBCW+2,A8 CWK A10,QSTG00 START GREATER RB(E) IXR020 GET NEXT RECORD NUMBER EJECT * ********** * RWCU00 * * RWCUIX * * DECU00 * * DECUIX * * WRRN00 * * RWDI00 * * DEDI00 * * TIODMA * ********** * * REWRITE CURRENT,REWRITE CURRENT INDEXED * DELETE CURRENT,DELETE CURRENT INDEXED * WRITE RANDOM,REWRITE DIRECT * DELETE DIRECT * RWCU00 EQU * RWCUIX EQU * DECU00 EQU * DECUIX EQU * TIODMA EQU * ST A2,ECBCW,A8 REC NR ST A3,ECBCW+2,A8 WRRN00 EQU * WRITE RANDOM RWDI00 EQU * REWRITE DIRECT DEDI00 EQU * DELETE DIRECT LD A1,ECBCW,A8 RECORD NUMBER LD A2,ECBCW+2,A8 * EJECT TIOSDM * * NO EA FOR OTHER TASK * LDR A9,A11 SAVE FDB ADDRESS LD A11,FDBADF,A11 CF A14,EATEST LDR A11,A9 SAVED FDB ADDRESS ADK A3,0 RF(N) TIODPE EA OTHER TASK TIODMD EQU * CF A14,CALSNO GET SECTOR NO AND OFFSET IN SECTOR RF(NZ) TIODME * EJECT * ************************* * SDMTSK ACTIVATION * ************************* * * ACTDM0 EQU * LDR A6,A11 FDB ADDRESS LDKL A2,SDMTSK ACTIVATION ADDRESS CWK A10,QWRSQ0 ABL(L) DMACTD ADMINISTRATION FUNCTION ABL DMACTI ACTIVATE DM TASK * EJECT * ********** * TIODPE * * TIODME * * ENDIO * ********** * * ERROR :RETURN VIA DISEND * TIODPE EQU * PROTECT ERR EXIT LC A3,FDBTNR,A11 USER TASK ID ANK A3,/FF CF A14,RELPRO RELEASE PROTECT LDKL A1,PROERR TIODME EQU * LD A6,FDBADF,A11 DATA FILE FDB ADDR ENDIOL EQU * ABL DISEND CALL TENDIO GOTO DISPATCHER ENDIO EQU * LDR A6,A11 FDB ADDRESS RB ENDIOL * EJECT TIOSDM * * ********** * CHKORD * ********** * * CHECK IF ORDER IN TABLE * * INPUT : A10=ADDRESS TO ORDER TABLE END * A3=LENGTH * A7=ORDER/OPTION * * OUTPUT: A2=ORDER BIT * A3=ENTRY NUMBER IN TABLE * A10=ADDRESS TO FIT OR IF NOT FIT * TABLE BEGINNING - 2 * CR=0 IF ORDER FOUND IN TABLE * CR=2 ELSE * CHKORD EQU * ADKL A14,4 CHKO10 EQU * SRL A2,1 CWR* A7,A10 RF(E) CHKO20 ORDER IN TABLE SUKL A10,2 NEXT ENTRY SUK A3,2 RB(NN) CHKO10 NEXT ENTRY IN TABLE CHKO20 EQU * ABR* A14 * * EJECT TIOSDM * ********** * ADDONE * ********** * * DOUBLE ADD ONE ON REGISTERS A2,A3 * ADDONE EQU * ADK A3,1 RF(P) ADDO10 NOT OVERFLOW OR NEGATIVE LDK A3,0 ADK A2,1 ADD CARRY ADDO10 EQU * RTN A14 * EJECT TIOSDM * ********** * SWHFDB * ********** * * SWITCH FDB ADDRESS AND MOVE PARAMETERS * * INPUT : A11=FDB ADDRESS * OUTPUT : A7=INDEX FDB ADDRESS * A7=0 , IF NO INDEX FDB ADDRESS FOUND * CR SET ACCORDING TO A7 * A3 IS USED * SWHFDB EQU * LD A7,DWTOR,A11 GET INDEX SRL A7,10 SUK A7,2 ADR A7,A11 BASE IN DATA FDB LD A7,FDBAI1,A7 INDEX FDB ADDR RF(Z) SWHF90 NOT FOUND SWHECO EQU * SWITCH ECB AND ORDER =4 LD A3,DWTECB,A11 MOVE PARAMETERS ST A3,DWTECB,A7 LD A3,DWTOR,A11 ST A3,DWTOR,A7 SWHF90 EQU * ADKL A14,4 ADK A7,0 ABR* A14 * END