|
|
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: 20550 (0x5046)
Notes: pts_type(SC)
Names: »RGSTRT.SC«
└─⟦75255755f⟧ Bits:30009693 Philips computer tape "600410"
└─⟦this⟧ »NJREMIT/RGSTRT.SC«
└─⟦b6546aa17⟧ Bits:30009689 Philips computer tape "600325"
└─⟦this⟧ »REMIT2/RGSTRT.SC«
IDENT RGSTRT 03.01.XXX.1 DDUM KMD08 PDIV ENTRY T1GO ENTRY TCONFW ENTRY TCONFR ENTRY CONFWR ENTRY CNFWRT ENTRY CONRDX ENTRY SETFLG EXT ASGVOL EXT CLEAR8 EXT SPCLRA EXT SPCLRN EXT SPLIN8 EXT RAWRIT EXT RGREAD EXT RAREAD EXT LAMPON EXT LAMPOF EXT SOPRD EXT SETMK EXT RSTORE EXT CLSVOL EXT UPDAKK EXT CLEJ EXT CLKF EXT CLEDB EXT CLBEH EXT ZERO EXT ADM EXT RGA120 EXT RGKLAR EXT WRITID EXT MASK EXT SKIFT EXT STRTWR EXT SETMK EXT SETIDX EXT KFREAD INCLUDE EQUATE T1GO MOVE SPKEY,CBIN2 INDICATE KEYSWITCH IN POS 2 ADD CMAXTASK,CBIN1 GETID GSWSTR2 MOVE TTASKNR,CBIN0 T1005 ADD TTASKNR,CBIN1 CBE GSWSTR2,CTID(TTASKNR),T1005A B T1005 T1005A USE TB2,TTASKNR PERF SETFLG,CBIN1 CBE TTASKNR,CBIN1,T1010 PERF SPLIN8,CBIN9,CBIN2 'OPSTART' PAUSE B T1400 BRANCH TO NON-MASTER CODE T1010 MOVE CTRANBUF,=X'00' PERF CLSVOL,CBIN1 PERF CLSVOL,CBIN2 PERF CLSVOL,CBIN3 PERF CLSVOL,CBIN4 CLEAR CSKIFTFL SET GTMASTFL INDICATE MASTER TERM DSC0 KEYB,SKIB SET SPPROMPT ATTFMT CSFRM01 PERF SPCLRA MOVE GSWBIN2,SPBINW2 IB SPBINW2,T1011,T1011,T1012,T1012,T1011, C T1012,T1011,T1011,T1012 T1011 B T1010 T1012 PERF ASGVOL,CBIN0 ASSIGN CONFDATA BNOK T1010 CLEAR CSWFLAG IB GSWBIN2,T1013,T1013,T1025,T1014,T1013, C T1013,T1013,T1013,T1018 T1013 B T1010 T1014 KRE KEY MOVE CCONBUF0,=X'00' MOVE GSWBIN2,CBIN0 T10140 ADD GSWBIN2,CBIN1 IF FINISH: TO VERY COLD START CBG GSWBIN2,=W'32',T1025 PERF RAWRIT,DK01,=D'1',CCONBUF0,GSWBIN2 BNOK T1010 B T10140 * T1018 ADM KEY * ONLY CHANGE VOLUME, DATASET SET CSWFLAG B T1025 * T1020 KVIT KEY * * RESTORE DATASETS * * CLEAR CSWFLAG RST000 PERF LAMPOF,=W'2047' LAMPS OFF RST005 PERF LAMPON,=W'1024' LAMP 1 PERF LAMPON,=W'128' LAMP 4 PERF LAMPON,=W'8' LAMP 8 RST010 PERF SOPRD IB GSWBIN2, C RSOP10,RSOP09,RSOP08,RSOP07,RSOP06, C RSOP05,RSOP04,RSOP03,RSOP02,RSOP01 RSOP02 RSOP03 RSOP05 RSOP06 RSOP07 RSOP09 RSOP10 B RST010 OTHER LAMPS * RSOP01 RESTORE FD999001 PERF LAMPOF,=W'2047' LAMPS OFF PERF LAMPON,=W'1024' LAMP 1 MOVE GSWBIN5,=W'32' NO OF RECORDS PERF RSTORE,DK01,=D'1',GSWBIN5,CCONBUF0,=W'199' BNOK RST005 NOT OK PERF CONFRD B RST000 OK * RSOP04 RESTORE FD999004 PERF LAMPOF,=W'2047' LAMPS OFF PERF LAMPON,=W'128' LAMP 4 PERF RSTORE,DK04,=D'4',CKTMAX,CKTBUF,=W'128' BNOK RST005 NOT OK PERF SETMK INIT MASTER INDEX B RST000 OK * RSOP08 FINISH RESTORING PERF LAMPOF,=W'2047' LAMPS OFF PERF ASGVOL,CBIN0 ASSIGN KONF DATASET BNOK T1010 B T1028 * * * * * T1025 SLUT KEY PERF CONFRD READ CONFDATA BNOK T1010 CBNE CVOLNO,=D'0',T1028 MOVE CVOLNO,=D'0' T1028 MOVE CVOL(CBIN1),ASVOL TBT CSWFLAG,T1030 CBNL CKMDNR,=D'1',T1050 VERY FIRST START * * * T1030 T1033 SET CCOLDFLG SET SPPROMPT DSC0 KEYB,SKIB ATTFMT CSFRM02 YES PERF SPCLRN IB SPBINW2,T1034,T1034,T1032 T1034 B T1033 T1032 TBT CSWFLAG,T1020 T1037 MOVE CBEH(CBIN1,CBIN1),CBIN0 MOVE CTR12(CBIN1,CBIN1),CBIN0 MOVE GSWBIN5,CBIN0 T1040 ADD GSWBIN5,CBIN1 CBG GSWBIN5,CMAXTASK,T1045 MOVE GSWBCD5,GSWBIN5 MOVE GSWBIN1,GSWBIN5 DSC0 KEYB,SKIB SET SPPROMPT USE TB2,GSWBIN5 ATTFMT CSFRM03 PERF SPCLRA SET TR 12 AND BEH COUNTERS CBNE SPBINW2,CBIN3,T1037 T1043 MUL TTSTLBNR,=D'-1' SIMULATE CLOSE PERF TCONFW,GSWBIN5 BNOK T1037 B T1040 T1045 USE TB2,TTASKNR PERF CONFWR REWRITE CONFDATA BNOK T1010 * * READ TERMINAL CONF T1050 MOVE CTWBIN2,CMAXTASK MOVE CTASKNR,CBIN0 MOVE GSWBIN5,CBIN0 T1052 ADD GSWBIN5,CBIN1 CBG GSWBIN5,CMAXTASK,T1060 CBNL CMASK(GSWBIN5),=D'0',T1055 MUL CMASK(GSWBIN5),=D'-1' SET POSITIVE (OPEN) T1055 GET TERMINAL BLOCK USE TB2,GSWBIN5 PERF TCONFR,GSWBIN5 READ TERMINAL CONF BOK T1052 USE TB2,TTASKNR NOT OK B T1010 * * CONF DATA HAS BEEN READ * T1060 USE TB2,TTASKNR GET OWN USER BLOCK MOVE GTMSK,CMASK(CBIN1) SET MACNINE NO, MASTER * * CHECK VOLUME NO * T1062 PERF CLSVOL,CBIN2 PERF CLSVOL,CBIN3 PERF CLSVOL,CBIN4 DSC0 KEYB,SKIB SET SPPROMPT ATTFMT INIT1FMT PERF SPCLRA IB SPBINW2,T1065,T1065,T1070 B T1062 OTHER KEYS T1065 MAK B T1010 T1070 SLUT KEY, OK * * * ASSIGN OTHER FILES * * MOVE GTWBCD1,=D'2' MOVE GTTEXT,CBLANKS MOVE GSWSTR9,CBLANKS PERF ASGVOL,CBIN1 BNOK T1010 PERF ASGVOL,CBIN2 BNOK T1010 PERF ASGVOL,CBIN3 BNOK T1010 PERF ASGVOL,CBIN4 BNOK T1010 * * * CHECK IF DISKETTE IS CORRECT * TBT CCONVERT,T1200 PERF SETIDX * PERF SETMK SET MASTER INDEX, KTPLAN T1200 MOVE CRECNR,CBIN1 MOVE CRECBCD,=D'1' MOVE GSWBIN1,=W'128' PERF RAREAD,DK02,=D'2',CPCKBUF,GSWBIN1,CRECNR BNOK T1062 MOVE GSWBCD3,CVOLNO CBE GTWBCD1,=D'4',T1210 NO DATA PERF WRITID,CBIN1,CBIN1 PRINT 1. RECORD MOVE GSWSTR20,=X'00' MOVE GSWBIN1,CBIN0 MOVE GSWBIN2,=W'47' COPY GSWSTR20,GSWBIN1,CBIN5,CPCKBUF,GSWBIN2 MOVE GSWBCD3,GSWSTR20 GET VOLUME NO FROM START TBT CCONVERT,T1219 CONVERT-VERSION CBE CVOLNO,GSWBCD3,T1230 T1210 NOT EQUAL NOS. OR NO DATA TBT CCONVERT,T1219 CONVERT-VERSION DSC0 KEYB,SKIB SET SPPROMPT ATTFMT INIT2FMT PERF SPCLRA IB SPBINW2,T1215,T1215,T1220,T1212, C T1212,T1212,T1212,T1212,T1225 T1212 OTHER KEYS B T1210 T1215 MAK B T1062 * T1219 CONVERT-VERSION NO OPSTART DIRECTLY TO ADM B T1560 * T1220 SLUT, OK CBE GTWBCD1,=D'4',T1210 NO DATA MOVE CVOLNO,GSWBCD3 NEW VOL NO B T1240 TO OPSTART * T1225 KVIT PERF STRTWR NEW START RECORD BNOK T1010 PERF WRITID,CBIN1,CBIN1 B T1240 TO OPSTART * * T1230 EQUAL VOL NOS. DSC0 KEYB,SKIB SET SPPROMPT ATTFMT INIT3FMT PERF SPCLRA IB SPBINW2,T1235,T1235,T1240 B T1230 OTHER KEYS T1235 MAK B T1062 * * * * OPSTART * * T1240 MOVE CRECBCD,=D'0' MOVE CRECNR,CBIN1 CLEAR CERRORFL T1242 MOVE GTWBCD2,CRECNR PERF SPLIN8,CBIN10,CBIN3 ADD CRECNR,CBIN1 MOVE GSWBIN1,=W'128' READ NEXT RECORD PERF RAREAD,DK02,=D'2',CPCKBUF,GSWBIN1,CRECNR BNOK T1300 NOT OK IF FLAG: TO REPRINT TBT CERRORFL,T1300 CMP GTWBCD1,=D'4' BE T1500 NO DATA, CONTINUE REG. MOVE GSWSTR20,=C'SLUTD' MOVE GSWBIN5,CBIN0 MATCH GSWSTR20,GSWBIN5,CBIN5,CPCKBUF,CBIN0,CBIN5 BE T1350 SLUTD MOVE GSWSTR20,=X'00' COPY GSWSTR20,CBIN0,CBIN3,CPCKBUF,CBIN0 MOVE GSWBCD5,GSWSTR20 GET MACHINE NO. MOVE GSWBIN6,CBIN0 T1245 ADD GSWBIN6,CBIN1 CBE GSWBCD5,CMASK(GSWBIN6),T1247 CBL GSWBIN6,CBIN12,T1245 B T1242 T1247 CBE GSWBCD5,=D'0',T1250 CHECK WRONG MACHINE NO. CBE GSWBIN6,CBIN1,T1250 IF MASTER RSTRT CTID(GSWBIN6) NO, START RELEVANT TASK PAUSE B T1242 T1250 PERF RGREAD,DK02,=D'2',CBIN1 READ TRANSACTION BERR T1290 MOVE CRECBCD,GSWBCD3 GET LOG. REC. NO. TBT GTSWFLAG,T1251 TEST FOR TR 11 CBNL GTREGNR,=D'12',T1290 IF TR 12 T1251 CBL CRECBCD,TTRECOPN,T1290 BEFORE REWRITE? TBT GTSWFLAG,T1270 IF TR 11 CBG TTSTLBNR,=D'0',T1260 OPEN? MUL TTSTLBNR,=D'-1' NO, SET POSITIVE (OPEN) MOVE TTCASH,TTSTCASH MOVE TTRECOPN,CRECBCD PERF TCONFW,TTASKNR PERF CONFWR T1260 CLEAR GTTESTFL CBNL CRECBCD,CCONFREC,T1262 SET GTTESTFL BEFORE BEH., REWRITE T1262 PERF UPDAKK CLEAR GTTESTFL B T1290 * * * T1270 TR 11 CBNG TTSTLBNR,=D'0',T1290 CLOSED? NO MOVE TTSTCASH,TTCASH MOVE TTSTLBNR,TTLBNR ADD TTSTLBNR,=D'1' MUL TTSTLBNR,=D'-1' MOVE TTRECOPN,CRECBCD PERF TCONFW,TTASKNR PERF CONFWR PERF ZERO T1290 TBT GTMASTFL,T1242 MASTER B T1450 NON-MASTER * * * * T1300 PERF WRITID,CBIN4,CBIN2 PRINT 1. PART OF LAST CORRECT RECORD SET SPPROMPT ATTFMT INIT4FMT PERF SPCLRA IB SPBINW2,T1310,T1310,T1315,T1320,T1310, C T1310,T1310,T1310,T1330 B T1300 T1310 MAK B T1300 * T1315 SLUT, CONTINUE SUB CRECNR,CBIN1 READ AGAIN CLEAR CERRORFL B T1242 * T1320 KRE, TRY NEXT SET CERRORFL B T1242 * T1330 TO NEW DISK CLEAR CERRORFL T1350 SLUTD * * * * DISKETTE SKIFT * * TBT C5MDISK,T1500 SET CSKIFTFL PERF SKIFT B T1200 EJECT T1400 ******************** * * RESTART OF * FOR NON-MASTER * ******************** MOVE GTMSK,CMASK(TTASKNR) T1440 TBT CWFLAG,T1550 IF COLDSTART FINISHED B T1250 T1450 RSTRT CTID(CBIN1) RESTART MASTER PAUSE B T1440 * * * T1500 PERF CLEAR8 * RESTORE CHECK LBNR PERF KFREAD,CBIN4,CBIN1,CBIN0,GTKFVAL MOVE CCHKLBNR,GTKFVAL * RESTORE EJ-EDB COUNTERS MOVE GSWBIN6,CBIN0 T1501 ADD GSWBIN6,CBIN1 CBG GSWBIN6,=W'60',T1502 PERF KFREAD,CBIN1,CBIN1,GSWBIN6,GTKFVAL KREDIT MOVE C12ACC(GSWBIN6,CBIN1),GTKFVAL ADD TTEJEDB,GTKFVAL PERF KFREAD,CBIN1,CBIN2,GSWBIN6,GTKFVAL DEBET MOVE C12ACC(GSWBIN6,CBIN2),GTKFVAL ADD TTEJEDB,GTKFVAL B T1501 T1502 * CONTINUE ADD CRECBCD,=D'1' SET CWFLAG MOVE GSWBIN6,CBIN1 T1510 ADD GSWBIN6,CBIN1 CBG GSWBIN6,CMAXTASK,T1550 RSTRT CTID(GSWBIN6) B T1510 T1550 MOVE GSSWITCH(CBINMAX),=W'-1' DSC0 KEYB,SKIB CBNG TTSTLBNR,=D'0',T1560 IF TASK WAS CLOSED ADD CTASKNR,CBIN1 SET GTSPGFLG MOVE GSWSTR9,=C'SUBTOTAL ' PERF CLEJ PERF CLEDB PERF CLKF PERF CLBEH MOVE GSWSTR9,=C' ' CLEAR GTSPGFLG SET GTKASSE MOVE GSWBIN1,CBIN14 PERF ADM,GSWBIN1 B RGA120 T1560 MUL CMASK(TTASKNR),=D'-1' SET < 0, CLOSE B RGKLAR EJECT ****************************************************** * * TCONFR - READING OF CONFIGURATION DEPENDENT DATA * * CALL: PERF TCONFR,<CONFIGURATION NBR> * * THE DATA IS READ RANDOM FROM DK01 * * ALTERED FIELDS: GSWBIN6 - <CONF> + 12 * GSWBIN1 - 199 * * CR: OK - 0, NOK - <> 0 * ****************************************************** TCONFR PROC TCONFRNO MOVE GSWBIN6,TCONFRNO ADD GSWBIN6,CBIN12 MOVE GSWBIN1,=W'199' PERF RAREAD,DK01,=D'1',TCONBUF,GSWBIN1,GSWBIN6 BNOK TCONRET1 CMP CBIN0,CBIN0 RET TCONRET1 CMP CBIN0,CBIN1 SET CR RET PEND * EJECT *************************************************** * * TCONFW - WRITE CONFIGURATION-DEPENDENT DATA * * CALL: PERF TCONFW,<CONFIGURATION NBR> * * IF NOT IN TESTMODE, DATA IS WRITTEN TO DK01 * ALTERED FIELDS: * GSWBIN6 - <CONF> + 12 * *************************************************** TCONFW PROC TCONFWNO MOVE GSWBIN6,TCONFWNO ADD GSWBIN6,CBIN12 CBE GTTESTMK,=C'T',TCFWRET IF IN TEST MODE PERF RAWRIT,DK01,=D'1',TCONBUF,GSWBIN6 TCFWRET RET PEND EJECT ******************************************************** * * CONFRD - READING OF COMMON CONFDATA * ********************************************************* CONFRD PROC PERF CONRDX,CCONBUF0,CBIN1 BNOK CONFRET PERF CONRDX,CCONBUF1,CBIN2 BNOK CONFRET PERF CONRDX,CCONBUF2,CBIN3 BNOK CONFRET PERF CONRDX,CCONBUF3,CBIN4 BNOK CONFRET PERF CONRDX,CCONBUF4,CBIN5 BNOK CONFRET PERF CONRDX,CCONBUF5,CBIN6 BNOK CONFRET PERF CONRDX,CCONBUF6,CBIN7 BNOK CONFRET PERF CONRDX,CCONBUF7,CBIN8 BNOK CONFRET PERF CONRDX,CCONBUF8,CBIN9 BNOK CONFRET PERF CONRDX,CCONBUF9,CBIN10 CONFRET RET PEND * CONRDX PROC CBUFRD,CBUFNO * MOVE GSWBIN1,=W'199' PERF RAREAD,DK01,=D'1',CBUFRD,GSWBIN1,CBUFNO RET PEND EJECT ********************************************************** * * CONFWR - WRITING OF CONFDATA * ********************************************************** CONFWR PROC MOVE CCONFREC,CRECBCD PERF RAWRIT,DK01,=D'1',CCONBUF0,CBIN1 BNOK WRET PERF RAWRIT,DK01,=D'1',CCONBUF1,CBIN2 BNOK WRET PERF RAWRIT,DK01,=D'1',CCONBUF2,CBIN3 BNOK WRET PERF RAWRIT,DK01,=D'1',CCONBUF3,CBIN4 BNOK WRET PERF RAWRIT,DK01,=D'1',CCONBUF4,CBIN5 BNOK WRET PERF RAWRIT,DK01,=D'1',CCONBUF5,CBIN6 BNOK WRET PERF RAWRIT,DK01,=D'1',CCONBUF6,CBIN7 BNOK WRET PERF RAWRIT,DK01,=D'1',CCONBUF7,CBIN8 BNOK WRET PERF RAWRIT,DK01,=D'1',CCONBUF8,CBIN9 BNOK WRET PERF RAWRIT,DK01,=D'1',CCONBUF9,CBIN10 WRET RET PEND EJECT ******************** * * CONFWRT - REWRITE CONFDATA * * ALTERED FIELDS: GSWBIN5 - SET TO CMAXTASK * TTRECOPN - 0 * ******************** CNFWRT PROC TBT CCONVERT,CNF200 MOVE GSWBIN5,CBIN0 CNF1 ADD GSWBIN5,CBIN1 CBG GSWBIN5,CMAXTASK,CNF100 USE TB2,GSWBIN5 MOVE TTRECOPN,=D'0' IF OPEN PERF TCONFW,GSWBIN5 B CNF1 CNF100 USE TB2,TTASKNR PERF CONFWR CNF200 RET PEND EJECT ************************************* * * SETFLG - SET TASKDEPENDENT BOOLEANS * ************************************** SETFLG PROC PAR * THE PROCEDURE UNPACKS THE TASKDEPENDENT FLAGS * FROM 'CFLAG' TO VARIOUS BOOLEANS * * * BITS COUNTED FROM RIGHT, 0,1,2,...,15 * * BIT 0 T=MASTER KASSE * F=NON-MASTER * BIT 1 T=REMOTE * F=LOKAL * BIT 2 T=LP * F=NO LP * BIT 3 T=GTP * F=NO GTP * BIT 4 T=TTP * F=NO TTP * BIT 5 T=VDU * F=PDU * BIT 6 T=KBN+KBA (KBAN) * F=KBN * BIT 7 T=NEW KB (6272) * F=OLD KB (6234) * * * MOVE GSWBIN1,CFLAG(TTASKNR,PAR) MOVE GSWBIN2,CBIN1 PERF SETF,GTMASTFLG PERF SETF,TREMFLG PERF SETF,GTLPFLG PERF SETF,GTGTPFLG PERF SETF,GTTTPFLG PERF SETF,GTVDUFLG PERF SETF,GTKBAFLG PERF SETF,TTKEYFLG RET PEND SETF PROC BOO CLEAR BOO CALL MASK,GSWBIN1,GSWBIN2 BZ SETF10 SET BOO CBE GSWBIN2,CBIN4,SETF20 X'2000'=LP CBE GSWBIN2,CBIN8,SETF30 X'1000'=GTP B SETF10 SETF20 MOVE GTHCDEV,CBIN2 LP B SETF10 SETF30 MOVE GTHCDEV,CBIN1 GTP SETF10 ADD GSWBIN2,GSWBIN2 PREPARE FOR NEXT TEST RET PEND EJECT ************************************************************ * * FORMATS USED * ************************************************************* * FMTFKI FRMT FNL FKI 2 FMEL 'B',TSWBCD2 FMEND * CSFRM01 FRMT FSL FTEXT 'START' FNL FTEXT 'VOLUME=' FKI 9,MINL=6,MAXL=6,ME FCOPY CVOL(CBIN1) FNL FTEXT 'DATASET=' FKI 9,MINL=6,MAXL=6,ME FCOPY CFNAME(CBIN1) FMEND * CSFRM02 FRMT FSL FCOPY ='KOMMUNE NR' FKI 12,MINL=3,MAXL=4,ME FMEL 'ZZZZ',CKMDNR FNL FCOPY ='VOL 2 VOL 3 VOL 4' FNL FKI 1,MINL=6,MAXL=6,ME FCOPY CVOL(CBIN2) FKI 8,MINL=6,MAXL=6 FCOPY CVOL(CBIN3) FKI 15,MINL=6,MAXL=6 FCOPY CVOL(CBIN4) FMEND * CSFRM03 FRMT FSL FMEL '99',GSWBCD5 FNL FCOPY ='MASKIN NR' FKI 22,MINL=3,MAXL=3,ME FMEL '999',CMASK(GSWBIN1) FNL FCOPY ='BEHOLDNINGST[LLERE' FKI 23,MAXL=2,ME,APPL=103 FMEL '99',GSWBCD3 FNL FCOPY ='EJ-EDB T[LLER ' FKI 23,MAXL=2,ME,APPL=104 FMEL '99',GSWBCD4 FNL FCOPY =' EKS.LBNR' FKI 20,MAXL=5,ME FMEL 'ZZZZ9',TTSTLBNR FMEND * INIT1FMT FRMT FSL FCOPY ='VOLUME NR ' FMEL '99999',CVOLNO FNL FCOPY =C'DAGS-DATO' FKI 11,MINL=6,MAXL=6,ME,SCHK=2,REWRT,NCLR FMEL '99E-99E-99',CMASKDAT FNL FCOPY =C'DAG NR' FKI 11,MINL=1,MAXL=3,ME,APPL=102 FMEL 'ZZZ',CRELDAY FMEND * INIT2FMT FRMT FSL FCOPY ='VOLUME NR ' FTEXT 'OK' FILLR '?',1 FILLR X'07',1 FLINK FMTFKI FMEND * INIT3FMT FRMT FSL FCOPY ='OPSTART ' FILLR '?',1 FILLR X'07',1 FLINK FMTFKI FMEND * INIT4FMT FRMT FSL FCOPY ='KORREKT' FILLR '?',1 FILLR X'07',1 FLINK FMTFKI FMEND * END