|
|
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: 20564 (0x5054)
Notes: pts_type(SC)
Names: »DE20FS.SC«
└─⟦48601905a⟧ Bits:30009668 Philips computer tape "600121"
└─⟦this⟧ »S:DE/DE20FS.SC«
└─⟦5c22ed822⟧ Bits:30009675 Philips computer tape "600209"
└─⟦this⟧ »DEN10/DE20FS.SC«
└─⟦79fbed147⟧ Bits:30009697 Philips computer tape "600414"
└─⟦this⟧ »S:DE/DE20FS.SC«
└─⟦bf903a231⟧ Bits:30009665 Philips computer tape "600109"
└─⟦this⟧ »DEN10/DE20FS.SC«
└─⟦d2a299635⟧ Bits:30009698 Philips computer tape "600415"
└─⟦this⟧ »S:DE/DE20FS.SC«
IDENT DE20FS REL 10.0 80-04-11 80-03-20/JAER * * FORMAT DEFINITION SUBROUTINES * -2-BYTE ADRESSING COMPATIBLE * DDUM DEDDIV PDIV ENTRY FCOPY FORMAT COPYING ENTRY FMELI FORMAT EDITING ENTRY FTEXT FORMAT TEXT ENTRY FTAB FORMAT TABULATION ENTRY FLINK FORMAT LINKING ENTRY FSL FORMAT START LINE ENTRY FNL FORMAT NEW LINE ENTRY FKI FORMAT KEYED INPUT ENTRY FVAL FORMAT VALIDATION ENTRY FGEN FORMAT GENERATION (FIELD) ENTRY FACC FORMAT ACCUMULATION ENTRY FDUPL FORMAT DUPLICATION REFERENCE ENTRY FCODE FORMAT CODE GENERATION ENTRY FITEM FORMAT FIX-ITEM-ADRESS ENTRY NOPOOL NUMBER OF USED POOLS EXT DERROR ERROR-MESSAGES EXT DEPOOL BUFFERRESERVATIN-MODUL EXT EMPTYT ASSEMBLY SUBROUTINE EMPTYT - EXT WCNTRL FORMAT FIELD CONTROL WORDS EXT FMOVE FORMAT MOVE EXT CONNUM CONVERT STRG=>BIN EXT LINIT LINE INITIALIZATION EXT PICMA PICTURELAYOUT CONVERTION EJECT * * KEYTABLE * CLR EQU X'8F' CLEAR CAN EQU X'91' CANCEL RET EQU X'92' RETURN NOK EQU X'FF' NO KEY TOT EQU X'93' TOTAL * DEKTAB6 KTAB CLR,CAN,RET,NOK,TOT * DEKTAB7 KTAB CLR,CAN,RET * EJECT * * FORMAT COPYING * * FCOPY = CO 0A <FIELD NR> * FCOPY PROC PERF FCODE,W1 GENERATE FCOPY=C0 PERF FFIELD RET PEND EJECT * * FORMAT EDITING * * FMELI = C2 <NUMB PIC.CHARS> <CH> <CH> ....<CH> 0A <FIELDNR> * FMELI PROC PERF FCODE,W2 GENERATE FMELI=C2 XCOPY BPOOL(BIN3),BIN1,W1,BIN12,W1 STORE NUMB PICCHARS ADD BIN1,W1 NEXT POS XCOPY BPOOL(BIN3),BIN1,BIN12,STATSH,W0 STORE PIC CHARS ADD BIN1,BIN12 NEXT POS TBF BOOL6,FMELI5 JUMP IF GENERAL FORMAT CALL FMOVE,STRG10A,FACK FETCH ACK-ITEM-ADRESS PERF FITEM LOAD ITEM-ADRESS SUB BIN1,W1 ADJUST FOR INDEX-ADR.STORE CBE BIN15,W2,FMELI3 JUMP IF 1-BYTE ADRESSING SUB BIN1,W1 ADJUST FOR INDEX-ADR.STORE FMELI3 MOVE BIN16,FDVBCD(W8) LOAD ACK-NR BINARY CALL FMOVE,STRG10A,FIND(BIN16) FETCH INDEX-ITEM-ADRESS PERF FITEM LOAD ITEM-ADRESS B FMELIR FMELI5 PERF FFIELD STORE FIELD NR FMELIR RET PEND EJECT * * FORMAT TEXT * * FTEXT = C3 <NUMB. OF CHARS> <CH> <CH> ........ * FTEXT PROC MOVE BIN16,W188 SUB BIN16,W6 LOAD LIMIT FOR FLINK PERF FLINK,BIN16,BIN9 GENERATE FLINK IF NEEDED CBNE DEBINW2,W0,FTEXT9 ERROR-SIGNAL PERF FCODE,W3 GENERATE FTEXT=C3 XCOPY BPOOL(BIN3),BIN1,W1,BIN9,W1 STORE NUMB ADD BIN1,W1 NEXT BUFFER POS XCOPY BPOOL(BIN3),BIN1,BIN9,LDES,BIN11 STORE CH-STRG ADD BIN1,BIN9 ADJUST BUFFERPOS FTEXT9 RET PEND EJECT * * FORMAT TABULATION * * FTAB = C4 <TABPOS> * FTAB PROC MOVE BIN16,W188 SUB BIN16,W6 LOAD LIMIT FOR FLINK PERF FLINK,BIN16,W0 GENERATE FLINK IF NEEDED CBNE DEBINW2,W0,FTAB99 ERROR-SIGNAL PERF FCODE,W4 GENERATE FTAB=C4 XCOPY BPOOL(BIN3),BIN1,W1,BIN8,W1 STORE TABPOS ADD BIN1,W1 NEXT BUFFERPOS FTAB99 RET PEND EJECT * * FORMAT VALIDATION * * FVAL = C5 <NUMB VAL.-CHARS> <CH> <CH> .......... * FVAL PROC MOVE BIN16,W188 SUB BIN16,W6 LOAD LIMIT FOR FLINK MOVE BIN15,FMTWK(W1) SUB BIN15,DEBIN4 SUBTRACT ENDPOS SUB BIN15,W3 ADJUST FOR FUNCTEXT PERF FLINK,BIN16,BIN15 GENERATE FLINK IF NEEDED CBNE DEBINW2,W0,FVAL9 ERROR-SIGNAL PERF FCODE,W5 GENERATE FVAL = C5 PERF CONNUM,JOBSPC,FMTWK,W1 CONVERT VARSTR=>BIN XCOPY BPOOL(BIN3),BIN1,W1,FMTWK(W1),W1 STORE NUMB OF CHARS ADD BIN1,W1 NEXT BUFFER POSITION XCOPY BPOOL(BIN3),BIN1,FMTWK(W1),JOBSPC,DEBIN1 STORE CHARSSTRG ADD BIN1,FMTWK(W1) ADJUST BUFFERPOS FVAL9 RET PEND EJECT * * FORMAT GENERATION (OF FIELDS) * * FGEN = C6 <NUMB OF GEN.-CHARS> <CH> <CH> ......... * FGEN PROC MOVE BIN16,W188 SUB BIN16,W6 LOAD LIMIT FOR FLINK MOVE BIN15,FMTWK(W2) SUB BIN15,DEBIN4 SUBTRACT ENDPOSITION SUB BIN15,W3 ADJUST FOR FUNCTEXT PERF FLINK,BIN16,BIN15 GENERATE FLINK IF NEEDED CBNE DEBINW2,W0,FGEN9 ERROR-SIGNAL PERF FCODE,W6 GENERATE FGEN = C6 PERF CONNUM,JOBSPC,FMTWK,W2 CONVERT VARSTR=>BIN XCOPY BPOOL(BIN3),BIN1,W1,FMTWK(W2),W1 STORE NUMB OF CHARS ADD BIN1,W1 NEXT BUFFERPOSITION XCOPY BPOOL(BIN3),BIN1,FMTWK(W2),JOBSPC,DEBIN1 STORE CHARSSTRG ADD BIN1,FMTWK(W2) FGEN9 RET PEND EJECT * * FORMAT ACCUMULATION * * FACC = C7 <NUMB OF ACC.-CHARS> <CH> <CH> .......... * FACC PROC MOVE BIN16,W188 SUB BIN16,W6 LOAD LIMIT FOR FLINK MOVE BIN15,FMTWK(W3) SUB BIN15,DEBIN4 SUBTRACT STARTPOSITION SUB BIN15,W3 ADJUST FOR FUNCTEXT PERF FLINK,BIN16,BIN15 GENERATE FLINK IF NEEDED CBNE DEBINW2,W0,FACC9 ERROR-SIGNAL PERF FCODE,W7 GENERATE FACC = C7 PERF CONNUM,JOBSPC,FMTWK,W3 CONVERT VARSTR=>BIN XCOPY BPOOL(BIN3),BIN1,W1,FMTWK(W3),W1 STORE NUMB OF CHARS ADD BIN1,W1 NEXT BUFFERPOSITION XCOPY BPOOL(BIN3),BIN1,FMTWK(W3),JOBSPC,DEBIN1 STORE CHARSSTRG ADD BIN1,FMTWK(W3) ADJUST BUFFERPOSITION FACC9 RET PEND EJECT * * FORMAT DUPLICATION REFERENCES * * FDUPL = CC <NUMB. OF CHARS> <CH> <CH> <CH>...... * FDUPL PROC MOVE BIN16,W188 SUB BIN16,W6 LOAD LIMIT FOR FLINK MOVE BIN15,FMTWK(W4) PERF FLINK,BIN16,BIN15 GENERATE FLINK CBNE DEBINW2,W0,FDUPL9 ERROR-SIGNAL PERF FCODE,W8 GENERATE FDUPL = CC PERF CONNUM,DUPL,FMTWK,W4 CONVERT VARSTR. BIN XCOPY BPOOL(BIN3),BIN1,W1,FMTWK(W4),W1 STORE NUM OF CHARS ADD BIN1,W1 NEXT BUFFERPOS XCOPY BPOOL(BIN3),BIN1,FMTWK(W4),DUPL,W0 STORE CHARS-STRG ADD BIN1,FMTWK(W4) ADJUST BUFFERPOS FDUPL9 RET PEND EJECT * * FORMAT LINKING * * FLINK = DF <BUFFERPOOLADRESS> <FORMATLINKINDEX> <CONSTANTADRESS> * * INPUT PARAMETERS : LIMIT = POSITION LIMIT IN CURRENT BUFFER * WHERE IT IS ENOUGH SPACE TO * GENERATE ACTUAL FORMAT DIREKTIVE * * CHARS = NUMBER OF CHARACTER-POSITIONS TO * COUNT BEFORE COMPARISON IS MADE * * * OUTPUT PARAMETER : * DEBINW2 = 0 OK * = 1 NO BUFFERS AVAILABLE KEY:CANCEL * = 2 NO BUFFERS AVAILABLE KEY:RETUR * = 4 MAXIMUM BUFFERS USED;KTOT SIMULATED * *********************************************************************** * FLINK PROC LIMIT,CHARS MOVE DEBINW2,W0 OK SUB LIMIT,CHARS ADJUST LIMIT WITH NUMBER OF CHARS TO COUNT (FTEXT,FMELI) CALL FMOVE,STRG10A,IND1 FETCH IND-ITEM-ADRESS MOVE BIN15,W1 WORK:=1 MATCH STRG10A,BIN15,W9,FDIR,W0,W1 CBE BIN15,W1,FLINKA JUMP IF 1-BYTE ADRESSING SUB LIMIT,W3 ADJUST FOR 2-BYTEADR FLINKA CBNG RNRFMCH,W29,FLINKF JUMP IF NOT LAST BUFFER SUB LIMIT,W3 ADJUST 3BYTE FDUM+FEXIT CBNE BIN15,W1,FLINKF JUMP IF NOT 1BYTE ADDR SUB LIMIT,W2 ADJUST 1BYTE FDUM+FEXIT FLINKF CBNG BIN1,LIMIT,FLINK9 JUMP IF NO FLINKGEN CBG RNRFMCH,W29,FLINK7 NO MORE BUFFERS ALLOWED MAX 24 PERF FCODE,W9 GENRATE FLINK = DF CALL FMOVE,STRG10A,FBPOOL FETCH BPOOL-ITEM-ADRESS PERF FITEM LOAD ITEM-ADRESS SUB BIN1,W1 ADJUST FOR INDEX-ADR.STORE CBE BIN15,W2,FLINK1 JUMP IF 1-BYTE ADRESSING SUB BIN1,W1 ADJUST FOR INDEX-ADR.STORE FLINK1 CALL FMOVE,STRG10A,FFLIND FETCH FLIND-ITEM-ADRESS PERF FITEM LOAD ITEM-ADRESS SUB BIN1,W1 ADJUST FOR INDEX-ADR.STORE CBE BIN15,W2,FLINK3 JUMP IF 1-BYTE ADRESS SUB BIN1,W1 ADJUST FOR INDEX-ADR.STORE FLINK3 CALL FMOVE,STRG10A,FIND(RNRFMCH) PERF FITEM LOAD ITEM ADRESS ADD RNRFMCH,W1 ADJUST FORMATLINKINDADR TBF DOOL2,FLINK5 MOVE BIN3,FMTWK(W8) RESTORE BUFFERIND ALREADY RES B FLINK6 FLINK5 MOVE BIN16,W1 WANTED BUFFERS MOVE STRG10A,FORMAT PERF DEPOOL,W3,BIN16,BIN3,STRG10A CHAIN ANOTHER BUFFER BNOK FLINK8 JUMP IF ERROR MOVE BIN3,BIN16 ADD PRECPR,W1 NUMBER FORMATBUFFERS+1 PERF NOPOOL NUMBER OF USED POOLS DISPLAY 2,W2,W2 DISPLAY DITO WHILE CHANGED XCOPY STR1A,W0,W1,FDIR,W0 LOAD 'E9' MOVE BPOOL(BIN3),STR1A FILL BUFFER WITH FEXIT E9 FLINK6 MOVE BIN1,W0 BPOOLBUFFERPOINTER:=0 B FLINK9 FLINK7 MOVE DEBINW4,W29 PERF DERROR,DEKTAB6 CBE DEBINW2,W1,FLINK7 JUMP IF CLEAR-KEY PERF FCODE,W11 GENERATE FNL B FLINKB FLINK8 PERF DERROR,DEKTAB7 CBE DEBINW2,W1,FLINK5 TRY AGAIN FLINKB SUB DEBINW2,W1 ADJUST FOR CANC RETURN FLINK9 CLEAR DOOL2 F=LINE NOT DEL LAST BUFF USED RET PEND EJECT * * FORMAT START LINE * * FSL= E0 * FSL PROC MOVE BIN1,W0 BPOOLBUFFER POINTER:=1 XCOPY STR1A,W0,W1,FDIR,W0 LOAD 'E9' MOVE BPOOL(BIN3),STR1A FILL BUFFER WITH FEXIT E9 PERF FCODE,W10 GENERATE FSL=E0 MOVE FMTWK(W6),BIN1 SAVE STARTPOINTER OF LASTLINE MOVE FMTWK(W7),BIN3 SAVE BUFFERINDEX OF LASTLINE MOVE BIN10,W0 FIELDNR:=0 CLEAR BOOL1 F=NO FIELD CONFIRMED CLEAR DOOL2 F=NO LINE DELETE DONE PERF LINIT LINE INIT OF WORKITEMS RET PEND EJECT * * FORMAT END-OF-LINE PROCESSING * * - PROCESSES FORMAT DIRECTIVE CODE : FNL * AND ADJUSTS WORKITEMS FOR NEW LINE PROCESSING * * OUTPUT VARIABLES: * DEBINW2 = 0 OK GO ON * = 1 NO AVAILABLE BUFFERS;CANCEL * = 2 NO AVAILABLE BUFFERS;RETUR * = 4 MAX LIMIT EXCEEDED;KTOT * *********************************************************************** * FNL PROC MOVE BIN16,W188 SUB BIN16,W5 LOAD LIMIT FOR FLINK PERF FLINK,BIN16,W0 GENERATE FLINK IF NEEDED CBNE DEBINW2,W0,FNL99 ERROR SIGNAL PERF FCODE,W11 GENERATE FNL ADD FDVBCD(W2),=D'1' NEXT LINE DISPLAY 2,W1,W1 DISPLAY LINE NR/PAGE NR CBG FDVBCD(W2),FDVBCD(W1),FNL96 JUMP IF LINEMAX REACHED TBT DOOL8,FNL10 JUMP IF NO ERASE ERASE 10,W3,W0 B FNL15 FNL10 ERASE 11,W3,W0 CLEAR IN CORE FNL15 MOVE FMTWK(W6),BIN1 SAVE LASTLINE'S STPOINT MOVE FMTWK(W7),BIN3 SAVE LASTLINE'S BUFFIND CBE FMTWK(W5),W0,FNL90 MOVE RECLNTH,FMTWK(W5) SAVE LAST LINES NUMB CHARS FNL90 SET BOOL1 T=FIRST LINE CONFIRMED PERF LINIT LINE INIT WORKITEMS MOVE DEBINW2,W0 OK B FNL99 FNL96 MOVE DEBINW4,W28 MAXIMUM REACHED PERF DERROR,DEKTAB6 CBE DEBINW2,W1,FNL96 JUMP IF CLEAR-KEY SUB DEBINW2,W1 ADJUST FOR CANC RET FNL99 RET PEND EJECT * FORMAT KEYED INPUT * * FKI = FO <TABPOS> <CTL1> <CTL2> <CTL3> * = F2 <TABPOS> <APPLE1> <CTL1> <CTL2> <CTL3> * = F3 <TABPOS> <APPLE1> <APPLE2> <CTL1> <CTL2> <CTL3> * = F8 <TABPOS> <DUPL> <CTL1> <CTL2> <CTL3> * = FA <TABPOS> <APPLE1> <DUPL> <CTL1> <CTL2> <CTL3> * = FB <TABPOS> <APPLE1> <APPLE2> <DUPL> <CTL1> <CTL2> <CTL3> * FKI PROC MOVE BIN16,W188 TBT ALPHA,FKI01 JUMP IF ALPHANUM MOVE BIN15,BIN12 LOAD CHRS TO COUNT SUB BIN16,W15 LOAD LIMIT FOR FLINK B FKI03 FKI01 MOVE BIN15,W0 LOAD CHRS TO COUNT SUB BIN16,W14 LOAD LIMIT FOR FLINK FKI03 PERF FLINK,BIN16,BIN15 GENERATE FLINK IF NEEDED CBNE DEBINW2,W0,FKI99 ERROR-SIGNAL MOVE BIN15,W13 GENERATE FKI=F0 MOVE BIN16,SPEC LOAD APPLE BINARY CBE BIN16,W0,FKI10 APPL=0 ADD BIN15,W1 FKI=F2 CBNG BIN16,=X'FF',FKI10 APPL < = 255 ADD BIN15,W1 FKI=F3 FKI10 CBNE FDVSTR(W1),='N',FKI20 ADD BIN15,W3 FKI=F8 OR FA OR FB FKI20 PERF FCODE,BIN15 GENERATE FKI-CODE EJECT * * TABULATION POSITION SETTING * XCOPY BPOOL(BIN3),BIN1,W1,BIN6,W1 STORE TABPOS ADD BIN1,W1 NEXT POS CBE BIN16,W0,FKI50 NO APPLE VALUEE * * APPLE VALUE SETTING * CBG BIN16,=X'FF',FKI40 APPLE > 255 XCOPY BPOOL(BIN3),BIN1,W1,BIN16,W1 STORE APPLE1 ADD BIN1,W1 NEXT POS B FKI50 FKI40 XCOPY BPOOL(BIN3),BIN1,W2,BIN16,W0 STORE APPLE1-2 ADD BIN1,W2 NEXT POS * * DUPL OF 'W1' INDICATING NO KEYED INPUT * FKI50 CBNE FDVSTR(W1),='N',FKI70 CALL FMOVE,STRG10A,IND1 PERF FITEM LOAD ITEM W1 FKI70 * * CONTROL WORDS SETTING CTL1 CTL2 CTL3 * MOVE BIN16,FDVBCD(W7) LOAD FDVBCD(W7)LENGTH BINARY CALL WCNTRL,BPOOL(BIN3),BIN1,DEBINW1,BIN16,BIN7 LOAD CTLS ADD BIN1,W3 FKI99 RET PEND EJECT * * FORMAT CODE GENERATION * * INPUT PARAMETER : FDIND = FORMAT DIRECTIVE INDEX * ***************************************************** FCODE PROC FDIND XCOPY BPOOL(BIN3),BIN1,W1,FDIR,FDIND ADD BIN1,W1 NEXT POSITION IN BUFFER RET PEND EJECT * * FORMAT FIELD NUMBER * * = 0A <FIELDNR> * FFIELD PROC XCOPY BPOOL(BIN3),BIN1,W1,W10,W1 STORE '0A'-FIELD ADD BIN1,W1 NEXT POS XCOPY BPOOL(BIN3),BIN1,W1,BIN10,W1 STORE FIELDNR ADD BIN1,W1 NEXT POS RET PEND EJECT * * THIS ROUTINE CHECKS WHICH ADRESSING TYPE IS USED. * 1- OR 2-BYTE ADRESSING * FETCHES THE FIX ITEM ADRESS , WHICH IS LOADED IN 'STRG10A' * AND STORES IT IN ACTUAL BUFFER AND THE CORRECT POSITION. * IT ALSO ADJUSTES THE BUFFERPOINTER (BIN1). * FITEM PROC MOVE BIN15,W1 START ADRESS FOR MATCH MATCH STRG10A,BIN15,W9,FDIR,W0,W1 CHECK 1-/2-BYTEADR XCOPY BPOOL(BIN3),BIN1,BIN15,STRG10A,W0 LOAD ITEM-ADRESS ADD BIN1,BIN15 ADJUST BUFFERPOS 1/2 RET PEND EJECT * * SET NUMBER OF POOLS * -LAYOUT: X+YY <X=NUMBER OF DESC-POOLS , YY=NUMBER OF FORMATPOOLS> * * USED VARIABLES : BIN16 = WORK * * CHANGED VARIABLES: FDVBCD(W3) = NUMBER OF USED POOLS ADJUSTED * *************************************************************************** NOPOOL PROC TBF BOOL7,NOPL10 JUMP IF NEWREG-MODE MOVE BIN16,WORK(W3) FETCH NUMB OF OLD DPOOLS CBNG PINDND,BIN16,NOPL20 JUMP IF NEW NUMB<OLD NUMB NOPL10 MOVE BIN16,PINDND FETCH NUMB OF DESC POOLS NOPL20 MUL BIN16,=X'64' MULTIPLY WITH 100 ADD BIN16,PRECPR ADD NUMBER OF FPRMATPOOLS TBF BOOL7,NOPL30 JUMP IF NEWREG.MODE ADD BIN16,WORK(W4) ADD NUMB OF OLD FPOOLS NOPL30 MOVE FDVBCD(W3),BIN16 'X+YY' RET PEND EJECT * * FORMAT LIST * FIX-ITEM-ADRESSES * FBPOOL FRMT FCTL BPOOL(W1) FMEND FFLIND FRMT FCTL FLIND(W1) FMEND FACK FRMT FCTL ACK(W1) FMEND FIND FTABLE IND1,IND2,IND3,IND4,IND5, C IND6,IND7,IND8,IND9,IND10, C IND11,IND12,IND13,IND14,IND15, C IND16,IND17,IND18,IND19,IND20, C IND21,IND22,IND23,IND24,IND25 C IND26,IND27,IND28,IND29 EJECT IND1 FRMT FCTL W1 FMEND IND2 FRMT FCTL W2 FMEND IND3 FRMT FCTL W3 FMEND IND4 FRMT FCTL W4 FMEND IND5 FRMT FCTL W5 FMEND IND6 FRMT FCTL W6 FMEND IND7 FRMT FCTL W7 FMEND IND8 FRMT FCTL W8 FMEND EJECT IND9 FRMT FCTL W9 FMEND IND10 FRMT FCTL W10 FMEND IND11 FRMT FCTL W11 FMEND IND12 FRMT FCTL W12 FMEND IND13 FRMT FCTL W13 FMEND IND14 FRMT FCTL W14 FMEND IND15 FRMT FCTL W15 FMEND IND16 FRMT FCTL W16 FMEND EJECT IND17 FRMT FCTL W17 FMEND IND18 FRMT FCTL W18 FMEND IND19 FRMT FCTL W19 FMEND IND20 FRMT FCTL W20 FMEND IND21 FRMT FCTL W21 FMEND IND22 FRMT FCTL W22 FMEND IND23 FRMT FCTL W23 FMEND IND24 FRMT FCTL W24 FMEND IND25 FRMT FCTL W25 FMEND IND26 FRMT FCTL W26 FMEND IND27 FRMT FCTL W27 FMEND IND28 FRMT FCTL W28 FMEND IND29 FRMT FCTL W29 FMEND END END