+']'; S:=S2;VALIDADR:=FALSE; END; END; (*IF NOT X>127*) ADRMODESTRNG:=S; END (*BEGIN 9*) END; (*CASE *) IF NOT VALID THEN LEN:=0; END; PROCEDURE PAGE0; BEGIN CALCADRMODE(AM,HD); ADRMODE(AM,LEN,TEMPSTRING); MN2:=HD+TEMPSTRING; END; PROCEDURE PAGE1; BEGIN IF (OPC>191) THEN BEGIN IF (HALF2=14) THEN MN1:='LDS' ELSE IF (HALF2=15) AND (HALF1<>12) THEN MN1:='STS' ELSE VALID:=FALSE; END ELSE IF (OPC>127) THEN BEGIN IF HALF2=3 THEN MN1:='CMPD' ELSE IF HALF2=12 THEN MN1:='CMPY' ELSE IF HALF2=14 THEN MN1:='LDY' ELSE IF (HALF2=15) AND (HALF1<>8) THEN MN1:='STY' ELSE VALID:=FALSE; END ELSE IF OPC=63 THEN MN1:='SWI2' ELSE IF (OPC>32) AND (OPC<48) THEN BEGIN MN2:='L'+MN1; MN1:=MN2; END ELSE VALID:=FALSE; IF VALID THEN BEGIN CALCADRMODE(AM,HD); ADRMODE(AM,LEN,TEMPSTRING); MN2:=HD+TEMPSTRING; END; END; PROCEDURE PAGE2; BEGIN IF (OPC>127) AND (OPC<192) THEN BEGIN IF HALF2=3 THEN MN1:='CMPU' ELSE IF HALF2=12 THEN MN1:='CMPS' ELSE VALID:=FALSE; END ELSE IF OPC=63 THEN MN1:='SWI3' ELSE VALID:=FALSE; IF VALID THEN BEGIN CALCADRMODE(AM,HD); ADRMODE(AM,LEN,TEMPSTRING); MN2:=HD+TEMPSTRING; END; END; BEGIN (*MAIN, GETOPC*) VALID:=TRUE;PG:=0;LEN:=0;HD:=''; READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,OPC);OP1:=OPC; IF (OPC=16) THEN PG:=1; IF (OPC=17) THEN PG:=2; IF PG>0 THEN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,OPC); HALF1:=OPC LSR 4;HALF2:=OPC AND 15; QUART1:=HALF1 LSR 2;QUART2:=HALF1 AND 3; QUART3:=HALF2 LSR 2;QUART4:=HALF2 AND 3; OSN:=ORD(OPSTRNGNUM[HALF1+1])-48; STRINGCOPY(MEN[OSN],HALF2*4+1,4,MN1); IF MN1[4]=' ' THEN MN1[0]:=CHR(3); IF OPC=28 THEN MN1:='ANDCC'; IF OPC=141 THEN MN1:='BSR'; IF OPC=135 THEN MN1:='FCB'; IF OPC=143 THEN MN1:='FCB'; IF OPC=199 THEN MN1:='FCB'; IF OPC=205 THEN MN1:='FCB'; IF OPC=207 THEN MN1:='FCB'; IF (HALF1=4) AND (HALF2<>14) THEN MN1:=MN1+'A'; IF (HALF1=5) AND (HALF2<>14) THEN MN1:=MN1+'B'; IF (OPC=94) OR (OPC=78) THEN MN1:='FCB'; IF MN1[1]='F' THEN VALID:=FALSE; IF MN1[1]<>'F' THEN IF PG=0 THEN PAGE0 ELSE IF PG=1 THEN PAGE1 ELSE PAGE2; IF NOT VALID THEN BEGIN MN1:='FCB'; GETSYM(OP1,1,LBHD,MN2); OPC:=OP1; OPD:=0; LEN:=1; PG:=0; END ELSE BEGIN LEN:=LEN+1; IF PG>0 THEN LEN:=LEN+1; END; END; (*END MAIN, END GETOPC*) FUNCTION TESTSYMADR(X:INTEGER):BOOLEAN; VAR BT:INTEGER; BEGIN BT:=X AND 7; X:=X LSR 3; IF X<>ADRCACHEADR THEN READBYTE(SYMADRF,TMPGRANLIST,PREVADRF,X,ADRFOFF,ADRCACHEDAT); TESTSYMADR:=((ADRCACHEDAT AND MASK[BT])<>0); ADRCACHEADR:=X; END; FUNCTION TESTSYMDAT(X:INTEGER):BOOLEAN; VAR BT:INTEGER; BEGIN BT:=X AND 7; X:=X LSR 3; IF X<>DATCACHEDAT THEN READBYTE(SYMDATF,TMPGRANLIST,PREVDATF,X,DATFOFF,DATCACHEDAT); TESTSYMDAT:=((DATCACHEDAT AND MASK[BT])<>0); ADRCACHEADR:=X; END; PROCEDURE DISASSEMBLE; VAR X,Y,Z,T,BT,A,D:INTEGER; R,R2:REAL; MN1,MN2,TEMPS,TEMPS2:STRING(63); VALID,VALIDADR,VALIDDAT:BOOLEAN; PG,OPC,OPD,AM,LEN:INTEGER; LINE:INTEGER; HD:STRING(3); FUNCTION ISALPHANUM(X:INTEGER):BOOLEAN; BEGIN ISALPHANUM:= (((X>=32) AND (X<=90)) OR ((X>=97) AND (X<=122))); END; FUNCTION ISALPHANUM32(X:INTEGER):BOOLEAN; BEGIN ISALPHANUM32:= (((X>=33) AND (X<=90)) OR ((X>=97) AND (X<=122))) AND (X<>34) AND (X<>39); END; PROCEDURE PRINTLINE(VAR OUTASM:TEXT; ADR:INTEGER; HD:STRING(3); MN:STRING(31)); VAR TEMPS:STRING(15);X,Y:INTEGER; BEGIN TEMPS:=''; IF TESTSYMADR(ADR) OR TESTSYMDAT(ADR) THEN BEGIN X:=2; IF (ADR<256) AND (ADR>=0) THEN X:=1; GETSYM(ADR,X,HD,TEMPS); END; IF (TEMPS<>'') OR (MN<>'') THEN BEGIN WRITELN(OUTASM,TEMPS,' ',MN); LINE:=LINE+1; IF (LINE=LINELIMIT) AND (OUTFILE<>':-3') THEN BEGIN X:=STRINGPOS('/',OUTFILE); Y:=STRINGPOS('.',OUTFILE); IF X=0 THEN X:=ORD(OUTFILE[0])+1; IF Y=0 THEN Y:=ORD(OUTFILE[0])+1; IF Y32) THEN TEMPS2:=''''+CHR(Z) ELSE GETSYM(Z,1,'$',TEMPS2) 10: NOT USED 11: D,R 12: 8 BIT,PCR 13: 16 BIT,PCR 14: NOT USED 15: INDIRECT ONLY [ADDRES] *) BEGIN AM:=ORD(AMODE[HALF1+1])-48; CASE OPC OF 22,23:AM:=2; 26,28:AM:=3; 30,31:AM:=8; 48,49,50,51:AM:=9; 52,53,54,55:AM:=7; 131,140,142,195,204,206:AM:=4; 141:AM:=1 END; (*CASE*) HD:=''; IF (AM=3) OR (AM=4) THEN HD:='#'; IF AM=5 THEN HD:='<'; IF ((PG=1) AND (OPC>32) AND (OPC<48)) THEN AM:=2; END; PROCEDURE ADRMODE(MODE:INTEGER; VAR LEN:INTEGER; VAR ADRMODESTRNG:STRING(63)); (*THE ADDRESSING MODES ARE 0: INHERENT 1: BRANCH 2: LONG BRANCH 3: 1 BYTE DATA 4: 2 BYTES DATA 5: 1 BYTE ADDRESS (DIRECT PG) 6: 2 BYTES ADDRESS 7: PSHS/PULS/PSHU/PULU 8: EXG/TFR 9: INDEXED IF BIT 4 IS SET THEN IT WILL BE [----] 0: ,R+ 1: ,R++ 2: ,-R 3: ,--R 4: ,R 5: B,R 6: A,R 7: NOT USED 8: 8 BIT,R 9: 16 BIT,R 10: NOT USED 11: D,R 12: 8 BIT,PCR 13: 16 BIT,PCR 14: NOT USED 15: INDIRECT ONLY [ADDRES] *) VAR R,T,X,Y,Z:INTEGER; S,S2:STRING(20); INDIRECT:BOOLEAN; BEGIN VALIDADR:=FALSE;VALIDDAT:=FALSE; LEN:=0;OPD:=0;READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,X); CASE MODE OF 0:ADRMODESTRNG:=''; 1:BEGIN IF X>127 THEN X:=X-256; GETSYM(ADR+X,2,LBHD,ADRMODESTRNG); OPD:=ADR+X;LEN:=1;VALIDADR:=TRUE; END; 2:BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Y); Z:=X*256+Y; GETSYM(ADR+Z,2,LBHD,ADRMODESTRNG); OPD:=ADR+Z;LEN:=2;VALIDADR:=TRUE; END; 3:BEGIN GETSYM(X,1,DTHD,ADRMODESTRNG); OPD:=X;LEN:=1;VALIDDAT:=TRUE; END; 4:BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Y); Z:=X*256+Y; GETSYM(Z,2,DTHD,ADRMODESTRNG); OPD:=Z;LEN:=2;VALIDDAT:=TRUE; END; 5:BEGIN GETSYM(X,1,LBHD,ADRMODESTRNG); OPD:=X;LEN:=1;VALIDADR:=TRUE; END; 6:BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Y); Z:=X*256+Y; GETSYM(Z,2,LBHD,ADRMODESTRNG); OPD:=Z;LEN:=2;VALIDADR:=TRUE; END; 7:BEGIN OPD:=X;S:='';RG1[6]:=',U';LEN:=1; IF OPC>53 THEN RG1[6]:=',S'; FOR Y:=0 TO 7 DO IF (X AND MASK[Y])<>0 THEN S:=S+RG1[Y]; IF S='' THEN VALID:=FALSE ELSE STRINGDELETE(S,1,1); ADRMODESTRNG:=S; END; 8:BEGIN OPD:=X;LEN:=1; S:=RG2[X LSR 4]+','+RG2[X AND 15]; (* NOTE (SUB1 AND 8) SHOULD EQUAL (SUB2 AND 8) *) IF (S[1]='?') OR (S[3]='?') OR (S[4]='?') THEN VALID:=FALSE; ADRMODESTRNG:=S; END; 9:BEGIN LEN:=1; R:=(X AND 96) LSR 5; IF X<128 THEN BEGIN T:=X AND 31;(*VALIDDATA:=TRUE;*) IF T>15 THEN T:=T-32; (* GETSYM(T,1,LBHD,S);*) DECODE(T,3,S); S:=S+','+RG3[R];OPD:=T; END ELSE BEGIN INDIRECT:=FALSE; IF (X AND 16)=16 THEN INDIRECT:=TRUE; T:=X AND 15;OPD:=0; CASE T OF 0:S:=','+RG3[R]+'+'; 1:S:=','+RG3[R]+'++'; 2:S:=',-'+RG3[R]; 3:S:=',--'+RG3[R]; 4:S:=','+RG3[R]; 5:S:='B,'+RG3[R]; 6:S:='A,'+RG3[R]; 7:VALID:=FALSE; 8:BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Y); OPD:=Y;LEN:=2;VALIDDAT:=TRUE; GETSYM(Y,1,LBHD,S);S:=S+','+RG3[R]; END; 9:BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Y); READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Z); X:=Y*256+Z;LEN:=3;OPD:=X;VALIDDAT:=TRUE; GETSYM(X,2,DTHD,S);S:=S+','+RG3[R]; END; 10:VALID:=FALSE; 11:S:='D,'+RG3[R]; 12:BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Y); IF Y>127 THEN Y:=Y-256;LEN:=2; OPD:=Y+ADR;VALIDDAT:=TRUE; GETSYM(OPD,1,LBHD,S);S:=S+',PCR'; VALIDADR:=TRUE;END; 13:BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Y); READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Z); X:=Y*256+Z;LEN:=3; OPD:=X+ADR;VALIDDAT:=TRUE; GETSYM(OPD,2,LBHD,S);S:=S+',PCR'; VALIDADR:=TRUE;END; 14:VALID:=FALSE; 15:IF X=159 THEN BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Y); READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Z); X:=Y*256+Z;OPD:=X;LEN:=3; GETSYM(X,2,LBHD,S);VALIDDAT:=TRUE; END ELSE VALID:=FALSE END; (*CASE 9*) IF INDIRECT THEN BEGIN S2:='['+SIFFERENCE THERE IS BETWEEN THE WANTED RECORD AND THE PREVIOUS RECORD. IF IT IS WITHIN THIS SECTOR THEN IT JUST MOVES THE INDEX POINTER TO THE RIGHT PLACE THIS SAVES TIME. RECSIZE SHOULD BE TAKEN FROM THE FCB. IF IT IS 0 THEN RECSIZE IS 1, OTHERWISE IT IS WHATEVER IS READ. NOTE: NO ERROR CHECKING IS DONE. *) CONST SECSIZE=256; GRANSIZE=2304; RECSIZE=1; TYPE DEFTDISKBUF=RECORD FCBPOINTER:INTEGER; FCBNAME:ARRAY [0..7] OF CHAR; FCBEXT:ARRAY [0..2] OF CHAR; FCBDEVNO:-128..127; FCBSTATE:-128..127; FCBTYPE:-128..127; FCBGRAN:-128..127; FCBNEXTG:-128..127; FCBTRACK:-128..127; FCBSECTR:-128..127; FCBLSECT:-128..127; FCBOPEN:-128..127; FCBINDEX:INTEGER; FCBBUFSZ:INTEGER; FCBLAST:INTEGER; FCBTYPESIZE:INTEGER; FCBBUFR:ARRAY [0..255] OF CHAR; END; VAR B,C,GR,OFF,POS,SE,TK,X:INTEGER; E:PTR; L:CHAR; FB:^DEFTDISKBUF; BEGIN X:=@REC;X:=X+2;X:=WORD[X]; FB:=PTR(X);DIF:=DIF-2; B:=FB^.FCBINDEX; IF ((B+(DIF*RECSIZE)>=0) AND (B+(DIF*RECSIZE)<=255)) THEN OFF:=B+(DIF*RECSIZE) ELSE BEGIN POS:=(REC-1)*RECSIZE; B:=(POS-1) DIV GRANSIZE; C:=POS-B*GRANSIZE; SE:=((C-1) DIV SECSIZE)+1; OFF:=C-(SE-1)*SECSIZE-1; GR:=ORD(GRAN[B+1]); TK:=GR DIV 2; IF TK>16 THEN TK:=TK+1; IF ODD(GR) THEN SE:=SE+9; FB^.FCBGRAN:=GR; FB^.FCBNEXTG:=ORD(GRAN[B+2]); FB^.FCBTRACK:=TK; FB^.FCBSECTR:=SE-1; FB^.FCBLSECT:=9;IF ODD(GR) THEN FB^.FCBLSECT:=18; FB^.FCBINDEX:=256; READ(FILEPTR,L); END; FB^.FCBINDEX:=OFF; READ(FILEPTR,L); END; VAR C:CHAR; BEGIN IF ADR<>SUCC(PREV) THEN POSITIONFILE(FILEN,ADR+OFFSET,ADR-PREV,GRANLIST); READ(FILEN,C); PREV:=ADR; X:=ORD(C); ADR:=SUCC(ADR); END; FUNCTION TESTPRG(X:INTEGER):BOOLEAN; VAR BT,A:INTEGER; BEGIN X:=X-SEGBEG; BT:=X AND 7; X:=X LSR 3; READBYTE(PRGF,TMPGRANLIST,PREVPRGF,X,PRGFOFF,A); TESTPRG:=((A AND MASK[BT])<>0); END; PROCEDURE GETOPCINIT; (*THIS PROCEDURE SIMPLY INITIALIZES THE DATA FOR THE PROCEDURE GETOPC. *) BEGIN MEN[0]:='NEG FCB FCB COM LSR FCB ROR ASR LSL ROL DEC FCB INC TST JMP CLR '; MEN[1]:='FCB FCB NOP SYNCFCB FCB LBRALBSRFCB DAA ORCCFCB ANDCSEX EXG TFR '; MEN[2]:='BRA BRN BHI BLS BHS BLO BNE BEQ BVC BVS BPL BMI BGE BLT BGT BLE '; MEN[3]:='LEAXLEAYLEASLEAUPSHSPULSPSHUPULUFCB RTS ABX RTI CWAIMUL FCB SWI '; MEN[4]:='SUBACMPASBCASUBDANDABITALDA STA EORAADCAORA ADDACMPXJSR LDX STX '; MEN[5]:='SUBBCMPBSBCBADDDANDBBITBLDB STB EORBADCBORB ADDBLDD STD LDU STU '; AMODE:='5010009635963596'; OPSTRNGNUM:='0123000044445555'; RG1[0]:=',CC';RG1[1]:=',A'; RG1[2]:=',B';RG1[3]:=',DP'; RG1[4]:=',X';RG1[5]:=',Y'; RG1[6]:=',U';RG1[7]:=',PC'; RG2[0]:='D';RG2[1]:='X'; RG2[2]:='Y';RG2[3]:='U'; RG2[4]:='S';RG2[5]:='PC'; RG2[6]:='?';RG2[7]:='?'; RG2[8]:='A';RG2[9]:='B'; RG2[10]:='CC';RG2[11]:='DP'; RG2[12]:='?';RG2[13]:='?'; RG2[14]:='?';RG2[15]:='?'; RG3[0]:='X';RG3[1]:='Y'; RG3[2]:='U';RG3[3]:='S'; MASK[0]:=1;MASK[1]:=2; MASK[2]:=4;MASK[3]:=8; MASK[4]:=16;MASK[5]:=32; MASK[6]:=64;MASK[7]:=128; HX:='0123456789ABCDEF'; END; PROCEDURE GETOPC(ADR:INTEGER; VAR VALID,VALIDADR,VALIDDAT:BOOLEAN; VAR PG,OPC,OPD,AM,LEN:INTEGER; VAR MN1,MN2:STRING(30)); VAR HALF1,HALF2,QUART1,QUART2,QUART3,QUART4:INTEGER; OSN,OP1:INTEGER; HD:STRING(1); TEMPSTRING:STRING(63); PROCEDURE CALCADRMODE(VAR AM:INTEGER; VAR HD:STRING(1)); (*THIS THE ADDRESSING MODE OF THE OP CODE. THE 6809 IS VERY SYMETRIC IN IT'S OP CODE AND ADDRESSING MODES. THERE ARE ONLY A FEW EXCEPTIONS WHICH ARE HANDLED BY A CASE. IT ALSO CHECKS TO SEE IF IT IS A DIRECT PAGE ADDRESS OR IMMEDIATE AND WILL INDICATE THE CORECT HEADER SYMBOL <,# IT CHECKS TO SEE IF IT IS A LONG BRANCH AND IF SO IT WILL GIVE IT THE CORRECT ADDRESSING MODE. THE ADDRESSING MODES ARE 0: INHERENT 1: BRANCH 2: LONG BRANCH 3: 1 BYTE DATA 4: 2 BYTES DATA 5: 1 BYTE ADDRESS (DIRECT PG) 6: 2 BYTES ADDRESS 7: PSHS/PULS/PSHU/PULU 8: EXG/TFR 9: INDEXED IF BIT 4 IS SET THEN IT WILL BE [----] 0: ,R+ 1: ,R++ 2: ,-R 3: ,--R 4: ,R 5: B,R 6: A,R 7: NOT USED 8: 8 BIT,R 9: 16 BIT,R AC21.TMP'); IF FILEERROR(SYMADRF)<>0 THEN BEGIN ERROR:=TRUE;ERRORTYPE:=6;END; IF NOT ERROR THEN RESET(SYMDATF,'DSTRAC21.TMP'); IF FILEERROR(SYMDATF)<>0 THEN BEGIN ERROR:=TRUE;ERRORTYPE:=6;END; GETGRANLIST(INPRG,0,PRGGRANLIST,LASTSECSIZE); GETGRANLIST(PRGF,0,TMPGRANLIST,LASTSECSIZE); END; PROCEDURE CLOSEFILES; BEGIN CLOSE(INPRG); CLOSE(OUTASM); CLOSE(PRGF); CLOSE(SYMDATF); CLOSE(SYMADRF); END; BEGIN (*MAIN DISTRAC*) WRITE('INSERT DISK AND PRESS ENTER: '); READLN(TEMPS); LOADVARS; OPENFILES; IF NOT ERROR THEN INIT; TITLESCREEN; IF NOT ERROR THEN DISASSEMBLE; IF ERROR THEN PRINTERROR; CLOSEFILES; WRITELN; WRITELN('DONE'); END. SE(SYMADRF); END; BEGIN (*MAIN DISTRAC*) WRITE('INSERT DISK AND PRESS ENTER: '); READLN(TEMPS); LOADVARS; OPENFILES; IF NOT ERROR TH='' THEN EXIT; IF TEMPS[1]='$' THEN BEGIN Y:=5; IF ORD(TEMPS[0])<5 THEN Y:=ORD(TEMPS[0]); FOR Z:=2 TO Y DO BEGIN X:=ORD(TEMPS[Z])-48; IF X>9 THEN X:=X-7; ADR:=ADR*16+X; END; END ELSE ADR:=ENCODE(TEMPS); X:=STRINGPOS(' ',TEMPS); IF X=0 THEN X:=ORD(TEMPS[0]); STRINGDELETE(TEMPS,1,X); REMOVEBLANKS(TEMPS); IF ORD(TEMPS[0])>12 THEN TEMPS[0]:=CHR(12); SYM:=TEMPS; END; PROCEDURE LOADSYMBOLS; VAR X,Y:INTEGER;LINE:STRING(63);SYMB:STRING(15); CMD:STRING(1); SYM:SYMREC; BEGIN NULL.SYMBL:=' '; NULL.ADR:=0; FOR X:= 0 TO MAXSYM2 DO SYMBOLS[X]:=NULL; IF SYMFILENAME='' THEN EXIT; RESET(SYMFILE,SYMFILENAME,'SYM'); WHILE (NOT EOF(SYMFILE)) AND (NOT ERROR) DO BEGIN READLN(SYMFILE,LINE); SEPERATE(LINE,CMD,X,SYMB); IF (CMD='S') OR (CMD='J') OR (CMD='s') OR (CMD='j') THEN BEGIN SYM.SYMBL:=SYMB; SYM.ADR:=X; IF NOT INSERT(SYM) THEN BEGIN ERROR:=TRUE; ERRORTYPE:=3; END; END; END; CLOSE(SYMFILE); END; PROCEDURE GETSYM(X:INTEGER;LEN:INTEGER;HD:STRING(3);VAR S:STRING(15)); VAR T:INTEGER;SYM:SYMREC; BEGIN IF FIND(SYM,X) THEN BEGIN S:=SYM.SYMBL; EXIT; END; S:=HD; IF LEN=2 THEN BEGIN T:=X LSR 12;S:=S+HX[T+1]; T:=(X LSR 8) AND 15;S:=S+HX[T+1]; END; T:=(X LSR 4) AND 15;S:=S+HX[T+1]; T:=X AND 15;S:=S+HX[T+1]; END; PROCEDURE GETGRANLIST (VAR FILEPTR:TEXT; NULL:INTEGER; VAR GRAN:STRING; VAR LAST:INTEGER); (*THE NULL IS NEEDED SO I CAN GET THE ADDRESS OF IT. IF I GOT THE ADDRESS OF GRAN IT WOULD POINT TO THE ACTUAL PARAMETER, NOT TO THE FORMAL PARAMETER (GRAN). GRAN IS A STRING CONTAINING CHR$ CODES FOR THE GRAN NUMBER THE LAST BYTE CONTAINS A NUM >=190. THIS IS HOW MANY SECTORS ARE USED IN THE LAST GRAN. LAST IS HOW MANY BYTES ARE USED IN THE LAST SECTOR. NOTE: NO ERROR CHECKING IS DONE. *) TYPE DEFTDISKBUF=RECORD FCBPOINTER:INTEGER; FCBNAME:ARRAY [0..7] OF CHAR; FCBEXT:ARRAY [0..2] OF CHAR; FCBDEVNO:-128..127; FCBSTATE:-128..127; FCBTYPE:-128..127; FCBGRAN:-128..127; FCBNEXTG:-128..127; FCBTRACK:-128..127; FCBSECTR:-128..127; FCBLSECT:-128..127; FCBOPEN:-128..127; FCBINDEX:INTEGER; FCBBUFSZ:INTEGER; FCBLAST:INTEGER; FCBTYPESIZE:INTEGER; FCBBUFR:ARRAY [0..255] OF CHAR; END; VAR D:DEFTDISKBUF; A,X:INTEGER; C:CHAR; GR:STRING; FB,P:^DEFTDISKBUF; BEGIN X:=@NULL;X:=X+2;X:=WORD[X]; P:=PTR(X);D:=P^;FB:=P; FB^.FCBTRACK:=17; FB^.FCBSECTR:=1; FB^.FCBLSECT:=3; FB^.FCBINDEX:=256; READ(FILEPTR,C); A:=D.FCBGRAN; GR:=CHR(A); WHILE A<190 DO BEGIN A:=ORD(FB^.FCBBUFR[A]); GR:=GR+CHR(A); END; P^:=D; LAST:=FB^.FCBLAST; GRAN:=GR; END; PROCEDURE READBYTE(VAR FILEN:TEXT; VAR GRANLIST:STRING; VAR PREV:INTEGER; VAR ADR:INTEGER; OFFSET:INTEGER; VAR X:INTEGER); (*THIS PROCEDURE GETS THE NEXT BYTE FROM DISK. IF IT HAS JUST READ THE PREVIOUS BYTE THEN IT CAN SIMPLY DO A READ, OTHERWISE IT HAS TO POSITON THE FILE FIRST. NOTE: NO ERROR CHECKING IS DONE. *) PROCEDURE POSITIONFILE (VAR FILEPTR:TEXT; REC:INTEGER; DIF:INTEGER; VAR GRAN:STRING); (*THIS TAKES A RECORD NUMBER AND CALCULATES WHERE IN THE FILE IT IS AT. IT THEN POSITIONS THE FILE AT THAT PLACE SO THE CORRECT RECORD WILL BE READ NEXT. IT USES THE CONSTANT RECSIZE TO DETERMINE HOW BIG EACH RECORD IS. DIF IS THE D1 j&l -چ2a5-.+ 454J54G"-l'  C#54m&:l/ C"* OC#&'5 m&6{94'&#o -4oL51ojM*546Zm&1{m& 1'L'1 Z&l -݆5 0Z&b15+,-o.o/=54&o 11' l)'lllJ*2a5 \'\94&o1 ,"'̍ 'č' 4\'LC/52a54'*54m&lm&O_-<54&m&#lm&1 . bm&+_J&Z,.H5So *L' L+  d'4E2d2jn *L& #m'o ޮj11Z&fjd0 ' #Z&hj⦠'N:'/'.& a a ,laj& *J'%+'-'O J'0+ . -&Pl 2b9 df9gd!'9m&og9ogd'9m&,  &lg9do'9o *XL&m'9d&''o4 1-& &2b95 2q40&<&7 ' ','1dod'ld& ' ',&O5502onf&A46 2d52ob' 52dnd&&50n4&54 ' '5b&k& &{50ndb'0&2bd42d50nfdo&%& 'c$l 52dn4&_5 L+-m& *L' y_9+ 7 4@3bO_B*2BA4D 4AFO_46/2^5@Tf0db4652dnb0 O_4656n fdc'?$c_M' &1!J&]' 1 &Z 52dn 4v' > \+*m&533˦\'m *&  o\': 5m5db'0&2bd42d50ndm&'o1f&1!&9d 465dOf9fd946M' 0&J&542|ocvv&AҎROJbbI$blaa\'lcM'D$0'0/0k /$0E0,x+/@M& @g& X['\d^}:L&b3a& &s mc'v&0od2d4&55}+@9C@9vRZ&9^_ [ ] 0 \@0&9462~oƏoa1O_&voa& ja+g & 4X5 'A''! '/\'l9 m'1?j+ m'1?j  2b54' '& 'B %MM+ @-`-߈@ '5` `&% 큌% ``큌%CH'' &' 5d݈944"&P&_%_DY ja&5 &&5X 4594&U'& m& ' 1N&6m&54610Z&oZ&b'_540GÍO_m& m*5!!&94"!!1?&P54oI/"%%j' "%l`&ا5 !ց" 9o9m& % $9$%9 V9Fj&9ց94&2~1OF<&٧ԧo䫈am' aaj&􍵠a'2b54&U44j&2a<*_$M' 1j& Uo54&a1[4 134  d& b# b%X$2d5ʺzjRB2"  "2BRjdb'obd45O1'Z&2dnodlO1c 4fd#]' & Z 52dndomg'ijO0 " l\jg&9hOf-)d,dd'4g0e15J&d92~hg'#\O00 ?1# j' 䦀Z&2b92~ojokfO1f1!fh'lk" &Z&2b9ok Pzh|W#zGzT#zTza#zazh#~ޭP9ޭP9n0#Oڿ] & Z& 0 &߶L &1Lf?#' &, ܿ@O&9' LT%\O9ڿٍڦ& ~ڦ')&|#:D%Bn1;45&' |(; J&0&O"·ķƷɷʷ̷ηз9ކ` %9φ`% '% KDISK`ERRORINSERT`PROPER`DISKl`PRESS`ENTER4@fhd&1?&5@52fn56CS244@3d0&54@fhd1?& mf*lcO_ffmh*jcO_hh9ooofh=eh=fg=mb'O_c2inoomf*l䍨4O_hiihYIf%fli0&5d'O_cc'O_dd946oM*lO_aa f'14Z&b 4&a*@0 jd' b&me'-2e2a5gdhf9hdfXIXIfDVZ砦g946oM'TTTTJ'& 2a56909/9ofogdo'@ &j& 4-&ja 0+ "iXIiXIXIihj&ma'O_hh2b95b,52dn"9d9@d#* O_d9 b&me'-2e2a5gdhfEN BEGIN SYM:=NULL; FIND:=FALSE; EXIT; END; WHILE NOT DONE DO IF SYMBOLS[Y].ADR=X THEN DONE:=TRUE ELSE IF SYMBOLS[Y]=NULL THEN BEGIN DONE:=TRUE; FIND:=FALSE; END ELSE BEGIN Y:=Y+1;0"40Ȣ4: 4b0b432b04Z4044 0"4 4 4@2*VV2b4@(2bZ4ZZ4,04DONEO_42\54@3d24̟2bO_040U40T40S40R40Q42bTO44 J4SORO44 04QO444b2bCS9O_4 V0w4040940V4O_40Z44ʜ2n0L4040940V4O_40X44q2nZ444X44b2bCSA044  04 O_4  /0404 eS`  + 044 [4 S 4 H  w04 ]O_4 3 </0404 BeS` 7  C04 )04 ! ,CS7;CS544?CS344 4=/-O_'O_'1O_+2\54@3d4O_' "4044/2d04 DISTRAC V2.1O_4/0404 (C) COPYRIGHT JULY 1988 BYO_4ޮ04Ԯ04 LAM SoftWareO_40404442d04 SOURCE FILE: O_4}0m4O_4nX04 OUTPUT FILE: O_4M2b0X4:-3&04SCREENO_4 040X4O_404NUMBER OF LINES PER FILE:O_4֮44s04 SYMBOL FILE: O_42b0C4n&04NONEO_4|f040C4O_4`J04LOADING PROGRAM...LOADEDO_442\54@3d04 &#04STACK OVERFLOWO_4:&904#"ERROR IN DEFAULT FILE DSTRAC21.DEFO_4&,04SYMBOL TABLE OVERFLOWO_4i&"04 FILE TO BIGO_4U?& 04 DISK FULLO_4-s& 04 I/O ERRORO_4K&)04DISK REQUEST ERRORO_40444d2\54@3d204 DSTRAC21.TMPO_4 3P4.0404'2b 2b040m44v2040X44]04044040C44+04044t04044[04044B04044)04044j04044 Q044O042O_4/$0404eS`04044  04044 04044  044 2d2\54@3d040m4BINO_4 2040X4ASMO_4 Q04 DSTRAC21.TMPO_4 2~044 2dO_'CS]'0e4 DSTRAC21.TMPO_4 2~0D44 2dO_'CS]'0'4 DSTRAC21.TMPO_4 @2~044 52dO_'04O_4040442j04O_4040442j2\54@3d0644 2d0E44 2d044 2d0c44 2d0644 2d2\54@3d204INSERT DISK AND PRESS ENTER: O_4 2b04044  |4@2b4@2bCS]'4@M2b4@2bCS]'4@2b]'4@2b4@2b04 04DONEO_4  2\550o$4"44ni55552cnd (&A42y42d2o50n4@3bO_D*"2oA1FD4&B46d2jMAO_46 2^5@52knmc'bb9bb9bHM/0b` 954@ oJ&Cn0B1J&02I5@52gn4601'Z&54601'Z&54%(54hiiiiiJ&54%(54dfffffJ&540m&J&o5b& MHG4HG'- ,A0M @0M ,(0J&00M9bb0M1M+ #"4601!&J&5464愦砧j&2a51i0b* @m*H4H'"4& &5!' &!&5 5 '% 52nnZ0MMBMBB1B ' 0M^j J'600B 0M&@01M"$VMBMLBB1 0M$lH J'030B. 502y40b 0b2y42d0i5Z&92zocodoao e0lojb{ '+'-&ir&m'lc .&W`&m&jc E&%E+'-&ja90-9.0d4 =d dma'@ce'yJ&&o2f9jd+92b Ӂ0-9.mg'0bb' jgGO9jdig4v42wCM/RHGGHACEmJ+I 6I-4 / JIIH-jGE+mG*-`GG/L ,:2K5O*jI& IJmH/LHJ-'J&m *-0ĦH/". 0.mH'mJ'jJ'lH+J9M/TTTT0lJ&90 0" 9  @ W9} ' j ;}*}} 'z & 0 @;46؆ 46؆4 1%(- @& & ~ I'#KH&`&\J1F 0H s P&H@K H@K  a H|'/ ~ odja' ~ oH!>'dx 2b&51?'H&9зH}H9&1?&9AB4om&#1 '44 z72\54@3d204/2b2~&4Į42d5O42~&4Į42d5]'`&4_/\O4&4O__.\]'&440"442?04Į4U2l04_.'\O40B4_.'\]'Į]'4@s2b0(404O_4( 44(m0B4O_4((t44Į_&\O40X4:-3_.%'\]'h2~/Į0X4Į4.2f52~.Į0X4Į4.2f54O_&O_Į0XO44O_&O_Į0XO44/2~:Į0X4Į4.2f54O_&O_Į0XO44/44b2b0(4Į4%2d4Į0XO5Į0X0 0(4Į0X4ASMO_4#O_2~0(4Į4$v2dCS&Į2~0(4Į4$C2dCS&Į2\54@3d0ǂ4Į04Į09404ĮA404Į4ڗ2n44b2bĮO42~442d5O44 _'\]'04'4+O4+2b*44$4.04Į42l0"4FCB +04+2b0Ǯ44Į044.0"4 4.42*2\54@3d0P4Į04Į09404ĮA404Į4e2n04Į04Į09404ĮA404Į4*2n04Į04Į09404ĮA404Į42n44b2b2~44Į4@2d5O42~44Į42d5O42~44Į4E2d5O4ĮO42~44'2d5CSO42~44 2d5O42~442d5O44Į_&\]' 42b ĮO42~442d5O42~442d5]')04"4(O4(O4(2b@44,444$4,204Į4E2l0"4FDB (g04(f2b044Į044+0"4 4+Ү42*42\54@3d20"4'2b/[4.0Y4Į04Į09404ĮA404Į4n2n450"0 O_4O_0"O450"0 焮r2b2~/0"4Į4(72f52~'0"4Į4(2f54O_&O_0"O44O_&O_0"O44, '[2~"0"4Į4'2f54O_&O_0"O44, "[0"44404Į4&2j0"4FCC &/[O4&W04&&[O4&D2b0¯44Į044)0"4 4)42*444b2b2\54@3d2~O_[O_Z4_'\O4[O42~4Į4Ժ2d5CSO4ZCSO44Į_'\]'04Į04Į09404ĮA404Į42n42~44 2d5[2~4Į4O2d5O42~4Į42d5Z4_.\O4[CS]'44b2bծ4_.\O4Į]' 42b 4K2b2\54@3d2Ӯ04 ANALYZING...O_4\2b0440"44(2h0m4 ORG $O_4!0"4O_4O_Z04#2b4ʙ2bZ4]5'DV1?&VVRV4/_'\O4V4-_'\]'nV/V-04040540V4?40)442n04040340R4=40'44Ѧ2n]'2\5Z4R)4O__'\O4'4O__'\]'.0Z44044'.2hZ4_/\O4Z4O__.\]'0Z444044&2h0"4EQU $"04"2b'4RXI0실4O__'\]'004Z4044%q0"4 4%c4@2*)4RXI0실4O__'\]'00*4Z4044%0"4 4% 4@/2*Z4ZZ4&ZZ4]5'DV1?&VVRV4/_'\O4V4-_'\]'nV/V-04040540V4?40)44σ2n04040340R4=40'44R2n]'2\5Z4R)4O__'\O4'4O__'\]'.0Z44044$2hZ4_/\O4Z4O__.\]'0Z444044$2h0"4EQU $042b'4RXI0실4O__'\]'00.4Z4044#0"4 4#4@32*)4RXI0실4O__'\]'004Z4044"0"4 4"4@2*Z4ZZ4O_&04DONEO_4C-04DISASSEMBLING...O_42bZծ]'2\52~Z442d5]'Z404040404040404040Ȣ40b4420"40Ȣ4+ 4S0b4$2b04Z4044!0"4 4!4@2*V44b2b4V.Z4Z2~Z442d5]'0C4*442bZ404040404040404040Ȣ40b4422h0404A9,4AaZ44EĮ0^04A 2bX O_V44&V4XO_ X&504,4@Z44DĮ0^04@+4@2b&504,4@Z44DcĮ0^04@o++@g2b&-04,-@CZ44D&Į0^04@22b&.04,--@ Z44CĮ0^04?2bo&-04,4@Z44CĮ0^04?2b:&-04B,?Z44CĮ0^04?2b&-04A,?nZ44CQĮ0^04?]2b& O_&0ڳ4Į04Į09404ĮA40T4Į42nT T44Į044Br04Į42l0404>,4>Z44BĮ0^04>2b  &04Į04Į09404ĮA40T4Į42n04Į04Į09404ĮA40R4Į42nT44A4RVV V44Į044Ao04Į42l0404=,4=Z44AĮ0^04=2b & O_ &-04D,=]Z44A@Į0^04=L2b &0ش4Į04Į09404ĮA40T4Į42nT4,T44b2bTT4  44Į044@L04Į4b2l0404<,PCR<2b &04Į04Į09404ĮA40T4Į42n0ׯ4Į04Į09404ĮA40R4Į42nT44?4RVV4  44Į044?R04Į4h2l0404;,PCR;2b& O_&V4&04Į04Į09404ĮA40T4Į42n0֕4Į04Į09404ĮA40R4Į42nT44>4RVV V44Į044>F04Į4\2lO_]'504[4:04:k]4:2b0404:J2bO_0404:42bCS]'O_2\54@3d040442f4040442h04049Ϯ0492b2\54@3d 4_,\]'s4_&\]'04LDS92bH4_&\O44 _'\]'04STS9?2bO_W 4_,\]'4&04CMPD82b4 &04CMPY82bk4&04LDY82bH4_&\O44_'\]'04STY8s2bO_ 4?&04SWI28D2bf 4 _,\O4 40_/\]'/04L48/0482b040472bO_]'N040442f404044~2h040470472b2\54@3d 4_,\O4 4_/\]'P4&04CMPU7,2b+4 &04CMPS72bO_, 4?&04SWI362bO_]'N040442f404044r2h040460462b2\54@3d2O_O_046O2b040409404A40 442n 4_&\]' 4_&\]'4O_,10O40409404A40 44n2n 4]5'DV1?&Z 4XZ4]5'DV1?&VZ4TX4]5'DV1?&RX4PZ405O404b2b4Q48004X4484440445<2j0O4 &O_4500 4&04ANDCC42b 4&04BSR4l2b 4&04FCB4M2b 4&04FCB4.2b 4&04FCB42b 4&04FCB32b 4&04FCB32bZ4_&\O4X4_'\]'04043A432bZ4_&\O4X4_'\]'04043SB43{2b 4^_&\O4 4N_&\]'04FCB3 2b0O4F&O_0O4F'84O_& 4@2b 4& 4@2b4@)2bCS]'Q04FCB22b440446044(2l O_ O_(44O_, 42\54@3d2|B4ZB4]5'DV1?&BBXB4/_'\]'10ύ4040540B4?40)44p2n)4ZXI0실4O__'\EX/2\54@3d2|B4ZB4]5'DV1?&BB4-_'\]'104040340B4=40'442n'4ZXI0실4O__'\EX-2\5 4@3dB4 _.\O4B4Z_-\O4B4a_.\O4B4z_-\E2\54@3dB4!_.\O4B4Z_-\O4B4a_.\O4B4z_-\O4B4"_'\O4B4'_'\E2\54@3d2Į04 4O_404Į4!2jO_4O_0拃500 04Į42d0(404O_4) 44)2bĮ04Į0b2b44b2bTZ40OVV44W:554, 4V4]' P4 P4V50 4Z40O50 450 4P44b2b50 4 50 V4]'450 450 0404K>2b4D_,\O44"_,\O44_,\]'_Į04KĮ0444K44K44KqK4T50 0404Jd2b2\54@3d2]'2\54'.0 44D444b2b40 44@H2j0 40[4I2b[O2\54@3d2|B44b2bBB4ZB4]5'DV1?&BBXB41_'\]'10W4040740B4;40+442n+4ZXI0실4O__'\EX12\54@3dO_4Q4Sݮ004A@NEG FCB FCB COM LSR FCB ROR ASR LSL ROL DEC FCB INC TST JMP CLR O2b4Q4S~004A@FCB FCB NOP SYNCFCB FCB LBRALBSRFCB DAA ORCCFCB ANDCSEX EXG TFR O?2b4Q4S004A@BRA BRN BHI BLS BHS BLO BNE BEQ BVC BVS BPL BMI BGE BLT BGT BLE N2b4Q4R004A@LEAXLEAYLEASLEAUPSHSPULSPSHUPULUFCB RTS ABX RTI CWAIMUL FCB SWI N2b4Q4Ra004A@SUBACMPASBCASUBDANDABITALDA STA EORAADCAORA ADDACMPXJSR LDX STX N"2b4Q4R004A@SUBBCMPBSBCBADDDANDBBITBLDB STB EORBADCBORB ADDBLDD STD LDU STU M2b0J45010009635963596M2b0540123000044445555M2bO_44Qd004,CCMb2b44QB004,AMA2b44Q!004,BM 2b44Q004,DPL2b44Pޮ004,XL2b44P004,YL2b44P004,UL2b44P{004,PCLy2bO_44PZ0v04D4L2b44P90v04X4Le2b44P0v04Y4LD2b44O0v04U4L#2b44O֮0v04S4L2b44O0v04PCK2b44O0v04?4K2b44Os0v04?4K2b44OR0v04A4K~2b 44O10v04B4K]2b 44O0v04CCK2b 44N0v04DPJ2b 44Nή0v04?4J2b 44N0v04?4J2b44N0v04?4J2b44Nk0v04?4J2bO_44NK0^04X4Jw2b44N*0^04Y4JV2b44N 0^04U4J52b44M0^04S4J2bO_XI4500 XI4500 XI4500 XI4500 XI4500 XI4 500 XI4@500 XI4500 턮0$40123456789ABCDEFH2b2\5~4@3d4Į0JO404b2b '& '& '& 0'1'2'3& p4'5'6'7& G'(' '''& &04G2b4_&\O44_&\]'04#4G2b4&04<4G2b4_&\O4 4 _,\O4 40_/\]'2\54@3d2O_O_O_O_ 04Į04Į09404ĮA40V4Į42nF&04F2b &pV4,V44b2bV4V44Į044J 04Į4"2l4V  &04Į04Į09404ĮA40T4Į42nV44I4TR4R44Į044Ie04Į4{2l4R  `&AV44Į044I04Į4+2lV  &04Į04Į09404ĮA40T4Į42nV44H4TRR44Į044H~04Į42lR  &AV44Į044H504Į4K2lV  7&04Į04Į09404ĮA40T4Į42nV44H 4TRR44Į044G04Į42lR  &V 04C2b44GĮ004,UC2b 45,#44G^Į004,SC[2bO_T4T.TV4TXIĮ0실4O_'*0404CT44FĮ004C2bTT 2b04C&& O_0444Į4CI2h0404B2bz&V 04V4]5'DV1?&44FcĮ0v04Be,4BV444F7Į0v04BC2b0O4?_&\O40O4?_&\O40O4?_&\]'O_0404A2b &V4`4]5'DV1?&ZV4/V4XX4,X4 4b2bXX4404Į4Ej4PXO&ن"Or44"0YrX0jo0&0 ̧43~4@\PW2"5큌%5r5ض'5e5B %5큌%5r$޷nR4@3dB4D2\54@3d2{O_W0B4044a&2\52~O442d5ZZXWCS]'Z44aF0'04044`&*Z44a0'040B44`W4Z4ZZ4&O_ZZ4X& WO_f2\54@3d2{2~B442d5ZZXGO_WZ4_.\O4Z4O__/\]'04044`1O_G2\5WCS]'Z44`:044B&WiZ44`0'04044_& WO_G3Z4ZZ4&O_ZZ4X& WO_G^04Z44_0'044_d04044_&O_G2\54@3d2|O_0OZXX4Z_-\O4X0O4 _&\]' X4X X4,$044X44b2b44[2h2\54@3d204Z2bO_04Z2b0ȶ404Z2b0ȶ4Z&2\50ȶ44#2d0ȶ4Z&2\5040ȶO4Z2b0ȶ4444Z2h0ȶ442d0ȶ4Z&2\50ȶO4$&XO_0ȶO4/ O_0ȶOXVX4V.UV0ȶO404b2bZZ4 ,Z44b2bZ44]4ZVV 2b2~0ȶ44^2d52~ 0ȶ44Zn2f5ZZ4O_& O_0ȶOZ0ȶ44Z44Y2h0ȶ442dO_0ȶO4 ,O_4 50ȶ0 040ȶ4X2b2\54@3d2蛮04 X2bO_%O_Z4Z./Z44\0'04044\XZZ 2b0C4X&2\5040C4SYMO_4Oj2~0l44Pg2d5CSO4CS]'0940ȸ4?4QQn0ȸ40Ȧ40Z40Ȩ442j0Ȧ4S_X%&\O40Ȧ4J_X&\O40Ȧ4s_W&\O40Ȧ4j_W&\]'L0ȗ40Ȩ4W2bZȤ2~0ȗ44[425CS]'0^44O2d2\54@3d22~04J44I2f5]'0404W2b2\5040D4V2bH4&J4 ]5'DV1?&Z0404VZ40$O4V2bJ4]5'DV1?&4Z0404V}Z40$O4V2bJ4]5'DV1?&4Z0404V8Z40$O4VQ2bJ4Z0404VZ40$O4V2b2\54@3d20F440444Yb450 450 450 450 0404N\2b04O4UC2b4/34O0404TO4U2b 4044X~0404T2b2\5e4@3d2Į]'2\50F44D44b2bDZZ4D44X 4O__.\O4Z4D44W4_-\]'Z4D44WTF44b2b44WRR44b2b4 4W55ZR4Z4 4W4b2bXX44b2b44W5PX4P44b2b44W;4:=ISALPHANUM(Z); DONE:=(TESTSYMDAT(T) OR TESTSYMADR(T)); END; IF (LEN>=4) AND (NOT ALPHANUM) THEN LEN:=LEN-1; IF (LEN>=4) AND FCCSTRINGS THEN DOFCC ELSE DOFDB; END; BEGIN WRITE('ANALYZING...'); HEX(@SEGBEG,2,TEMPS);LINE:=1; WRITELN(OUTASM,' ORG $',TEMPS); X:=0; HD:=''; LOADSYMBOLS; REPEAT Z:=X LSR 3;BT:=Z; IF (Z<>ADRCACHEADR) OR (Z<>DATCACHEADR) THEN BEGIN ADRCACHEADR:=Z;DATCACHEADR:=Z; READBYTE(SYMADRF,TMPGRANLIST,PREVADRF,Z,ADRFOFF,ADRCACHEDAT); READBYTE(SYMDATF,TMPGRANLIST,PREVDATF,BT,DATFOFF,DATCACHEDAT); END; IF ERROR THEN EXIT; BT:=X AND 7; IF (ADRCACHEDAT<>0) OR (DATCACHEDAT<>0) THEN BEGIN HEX(@X,2,TEMPS2); IF (X<256) AND (X>=0) THEN HEX(@X+1,1,TEMPS2); TEMPS:='EQU $'+TEMPS2; IF ((DATCACHEDAT AND MASK[BT])<>0) THEN PRINTLINE(OUTASM,X,DTHD,TEMPS); IF ((ADRCACHEDAT AND MASK[BT])<>0) THEN PRINTLINE(OUTASM,X,LBHD,TEMPS); END; X:=X+1; UNTIL X=SEGBEG; X:=SEGEND; REPEAT Z:=X LSR 3;BT:=Z; IF (Z<>ADRCACHEADR) OR (Z<>DATCACHEADR) THEN BEGIN ADRCACHEADR:=Z;DATCACHEADR:=Z; READBYTE(SYMADRF,TMPGRANLIST,PREVADRF,Z,ADRFOFF,ADRCACHEDAT); READBYTE(SYMDATF,TMPGRANLIST,PREVDATF,BT,DATFOFF,DATCACHEDAT); END; IF ERROR THEN EXIT; BT:=X AND 7; IF (ADRCACHEDAT<>0) OR (DATCACHEDAT<>0) THEN BEGIN HEX(@X,2,TEMPS2); IF (X<256) AND (X>=0) THEN HEX(@X+1,1,TEMPS2); TEMPS:='EQU $'+TEMPS2; IF ((DATCACHEDAT AND MASK[BT])<>0) THEN PRINTLINE(OUTASM,X,DTHD,TEMPS); IF ((ADRCACHEDAT AND MASK[BT])<>0) THEN PRINTLINE(OUTASM,X,LBHD,TEMPS); END; X:=X+1; UNTIL X=65536; WRITELN('DONE'); WRITE('DISASSEMBLING...'); X:=SEGBEG;LEN:=1; REPEAT IF ERROR THEN EXIT; IF TESTPRG(X) THEN BEGIN GETOPC(X,VALID,VALIDADR,VALIDDAT,PG,OPC,OPD,AM,LEN,MN1,MN2); TEMPS:=MN1+' '+MN2; PRINTLINE(OUTASM,X,LBHD,TEMPS); FOR Z:=1 TO LEN-1 DO BEGIN X:=X+1; IF TESTPRG(X) THEN BEGIN WRITE(OUTASM,'*'); GETOPC(X,VALID,VALIDADR,VALIDDAT,PG,OPC,OPD,AM,LEN,MN1,MN2); TEMPS:=MN1+' '+MN2; PRINTLINE(OUTASM,X,LBHD,TEMPS); END; END; END ELSE DODATA; X:=X+1; UNTIL X>SEGEND; WRITELN('DONE'); END; (*DISASSEMBLE*) %L PROCEDURE INIT; VAR X,Y,Z:INTEGER; A,B,C,D,E:CHAR;R1,R2:REAL; BEGIN GETOPCINIT;(*THIS COULD BE DONE LATER, BUT I NEED MASK[]*) ERROR:=FALSE; READ(INPRG,A,B,C,D,E); SEGLEN:=ORD(B)*256+ORD(C); SEGBEG:=ORD(D)*256+ORD(E); SEGEND:=SEGBEG+SEGLEN-1; PREVINPRG:=-32700;START:=0; Z:=SEGLEN+9; READBYTE(INPRG,PRGGRANLIST,PREVINPRG,Z,0,X);(*0 OFFSET*) READBYTE(INPRG,PRGGRANLIST,PREVINPRG,Z,0,Y);(*0 OFFSET*) SEGEXEC:=X*256+Y; INPRGOFF:=-(SEGBEG-6); R1:=SEGLEN;IF R1<0 THEN R1:=R1+65536.; R2:=(MAXBM+1)*8;IF R2<0 THEN R2:=R2+65536.; IF R1>R2 THEN BEGIN ERROR:=TRUE;ERRORTYPE:=4;END; PREVPRGF:=-32700;PRGFOFF:=1; PREVADRF:=-32700;ADRFOFF:=(MAXBM+1)+1; PREVDATF:=-32700;DATFOFF:=(MAXBM+1)+8192+1; ADRCACHEADR:=32767;DATCACHEADR:=32767; DATCACHEDAT:=0;DATCACHEDAT:=0; PRGCACHEADR:=32767;PRGCACHEDAT:=0; END; PROCEDURE TITLESCREEN; BEGIN IF SCREENCOL<>0 THEN BYTE[$FF22]:=SCREENCOL; PAGE; WRITELN(' DISTRAC V2.1'); WRITELN; WRITELN(' (C) COPYRIGHT JULY 1988 BY'); WRITELN; WRITELN(' LAM SoftWare'); WRITELN; WRITELN; CURSOR(224); WRITELN('SOURCE FILE: ',INFILE); WRITE('OUTPUT FILE: '); IF OUTFILE=':-3' THEN WRITELN('SCREEN') ELSE WRITELN(OUTFILE); WRITELN('NUMBER OF LINES PER FILE:',LINELIMIT); WRITE('SYMBOL FILE: '); IF SYMFILENAME='' THEN WRITELN('NONE') ELSE WRITELN(SYMFILENAME); WRITELN('LOADING PROGRAM...LOADED'); END; PROCEDURE PRINTERROR; BEGIN WRITELN; CASE ERRORTYPE OF 1:WRITELN('STACK OVERFLOW'); 2:WRITELN('ERROR IN DEFAULT FILE DSTRAC21.DEF'); 3:WRITELN('SYMBOL TABLE OVERFLOW'); 4:WRITELN('FILE TO BIG'); 5:WRITELN('DISK FULL'); 6:WRITELN('I/O ERROR'); 7:WRITELN('DISK REQUEST ERROR') ELSE WRITELN(ERRORTYPE) END; (*CASE*) END; PROCEDURE LOADVARS; VAR TEMPF:TEXT; A,X,Z:INTEGER;C:CHAR; BEGIN RESET(TEMPF,'DSTRAC21.TMP'); FOR X:=1 TO 20480 DO READ(TEMPF,C); READLN(TEMPF,INFILE); READLN(TEMPF,OUTFILE); READLN(TEMPF,LINELIMIT); READLN(TEMPF,SYMFILENAME); READLN(TEMPF,NUMOFLINES); READLN(TEMPF,LINENUMS); READLN(TEMPF,FCBASCII); READLN(TEMPF,FDBASCII); READLN(TEMPF,FCCSTRINGS); READLN(TEMPF,STARTLINE);LINENUMBR:=STARTLINE;IF LINENUMBR<0 THEN LINENUMBR:=LINENUMBR+65536.; READLN(TEMPF,SCREENCOL); READLN(TEMPF,LBHD); READLN(TEMPF,DTHD); CLOSE(TEMPF); END; PROCEDURE OPENFILES; BEGIN RESET(INPRG,INFILE,'BIN'); REWRITE(OUTASM,OUTFILE,'ASM'); RESET(PRGF,'DSTRAC21.TMP'); IF FILEERROR(PRGF)<>0 THEN BEGIN ERROR:=TRUE;ERRORTYPE:=6;END; IF NOT ERROR THEN RESET(SYMADRF,'DSTRF OPC=207 THEN MN1:='FCB'; IF (HALF1=4) AND (HALF2<>14) THEN MN1:=MN1+'A'; IF (HALF1=5) AND (HALF2<>14) THEN MN1:=MN1+'B'; IF (OPC=94) OR (OPC=78) THEN MN1:='FCB'; IF MN1[1]='F' THEN VALID:=FALSE; IF MN1[1]<>'F' THEN IF PG=0 THEN PAGE0 ELSE IF PG=1 THEN PAGE1 ELSE PAGE2; IF NOT VALID THEN BEGIN MN1:='FCB'; GETSYM(OP1,1,LBHD,MN2); OPC:=OP1; OPD:=0; LEN:=1; PG:=0; END ELSE BEGIN LEN:=LEN+1; IF PG>0 THEN LEN:=LEN+1; END; END; (*END MAIN, END GETOPC*) FUNCTION TESTSYMADR(X:INTEGER):BOOLEAN; VAR BT,A:INTEGER; BEGIN BT:=X AND 7; X:=X LSR 3;A:=X; IF (X<>ADRCACHEADR) THEN READBYTE(SYMADRF,TMPGRANLIST,PREVADRF,X,ADRFOFF,ADRCACHEDAT); TESTSYMADR:=((ADRCACHEDAT AND MASK[BT])<>0); ADRCACHEADR:=A; END; FUNCTION TESTSYMDAT(X:INTEGER):BOOLEAN; VAR BT,A:INTEGER; BEGIN BT:=X AND 7; X:=X LSR 3; IF (X<>DATCACHEADR) THEN READBYTE(SYMDATF,TMPGRANLIST,PREVDATF,X,DATFOFF,DATCACHEDAT); TESTSYMDAT:=((DATCACHEDAT AND MASK[BT])<>0); DATCACHEADR:=A; END; PROCEDURE DISASSEMBLE; VAR X,Y,Z,T,BT,A,D:INTEGER; R,R2:REAL; MN1,MN2,TEMPS,TEMPS2:STRING(63); VALID,VALIDADR,VALIDDAT:BOOLEAN; PG,OPC,OPD,AM,LEN:INTEGER; LINE:INTEGER; HD:STRING(3); FUNCTION ISALPHANUM(X:INTEGER):BOOLEAN; BEGIN ISALPHANUM:= (((X>=32) AND (X<=90)) OR ((X>=97) AND (X<=122))); END; FUNCTION ISALPHANUM32(X:INTEGER):BOOLEAN; BEGIN ISALPHANUM32:= (((X>=33) AND (X<=90)) OR ((X>=97) AND (X<=122))) AND (X<>34) AND (X<>39); END; PROCEDURE PRINTLINE(VAR OUTASM:TEXT; ADR:INTEGER; HD:STRING(3); MN:STRING(31)); PROCEDURE PRINTLINENUM; VAR TEMPS:STRING(20); BEGIN DECODEREAL(LINENUMBR,10,0,TEMPS); TEMPS[0]:=PRED(TEMPS[0]); REMOVEBLANKS(TEMPS); WRITE(OUTASM,TEMPS,' '); LINENUMBR:=LINENUMBR+1; END; VAR TEMPS:STRING(15);X,Y:INTEGER; BEGIN TEMPS:=''; IF TESTSYMADR(ADR) OR TESTSYMDAT(ADR) THEN BEGIN X:=2; IF (ADR<256) AND (ADR>=0) THEN X:=1; GETSYM(ADR,X,HD,TEMPS); END; IF (TEMPS<>'') OR (MN<>'') THEN BEGIN IF LINENUMS THEN PRINTLINENUM; WRITELN(OUTASM,TEMPS,' ',MN); LINE:=LINE+1; IF (LINE=LINELIMIT) AND (OUTFILE<>':-3') THEN BEGIN X:=STRINGPOS('/',OUTFILE); Y:=STRINGPOS('.',OUTFILE); IF X=0 THEN X:=ORD(OUTFILE[0])+1; IF Y=0 THEN Y:=ORD(OUTFILE[0])+1; IF Y32) THEN TEMPS2:=''''+CHR(Z) ELSE GETSYM(Z,1,'$',TEMPS2); TEMPS:='FCB '+TEMPS2; PRINTLINE(OUTASM,X,LBHD,TEMPS); END; PROCEDURE DOFDB; BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,X,INPRGOFF,Y); READBYTE(INPRG,PRGGRANLIST,PREVINPRG,X,INPRGOFF,Z); READBYTE(INPRG,PRGGRANLIST,PREVINPRG,X,INPRGOFF,A); X:=X-3; IF TESTPRG(X+1) OR TESTSYMADR(X+1) OR TESTSYMDAT(X+1) OR ( FCCSTRINGS AND (*THIS AFFECTS FCC STRINGS*) ((NOT ISALPHANUM32(Y)) AND (ISALPHANUM32(Z) AND ISALPHANUM32(A)))) OR (X=SEGEND) THEN DOFCB ELSE BEGIN IF FDBASCII AND ISALPHANUM32(Y) AND ISALPHANUM32(Z) THEN TEMPS2:='"'+CHR(Y)+CHR(Z) ELSE BEGIN Y:=Y*256+Z; GETSYM(Y,2,'$',TEMPS2); END; TEMPS:='FDB '+TEMPS2; PRINTLINE(OUTASM,X,LBHD,TEMPS); X:=X+1; END; END; PROCEDURE DOFCC; VAR DEL:CHAR; BEGIN TEMPS:='';DEL:='/'; T:=X; FOR Y:=1 TO LEN DO BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,T,INPRGOFF,Z); TEMPS[Y]:=CHR(Z); TEMPS[0]:=CHR(ORD(TEMPS[0])+1); END; Y:=STRINGPOS('/',TEMPS); Z:=STRINGPOS('''',TEMPS); IF Y=0 THEN Y:=ORD(TEMPS[0])+1; IF Z=0 THEN Z:=ORD(TEMPS[0])+1; IF Z>Y THEN BEGIN Y:=Z; DEL:=''''; END; Z:=STRINGPOS('"',TEMPS); IF Z=0 THEN Z:=ORD(TEMPS[0])+1; IF Z>Y THEN BEGIN Y:=Z; DEL:='"'; END; STRINGCOPY(TEMPS,1,Y,TEMPS2); TEMPS:='FCC '+DEL+TEMPS2+DEL; PRINTLINE(OUTASM,X,LBHD,TEMPS); X:=X+LEN-1; END; PROCEDURE DODATA; VAR ALPHANUM,DONE:BOOLEAN; BEGIN T:=X;LEN:=0; ALPHANUM:=TRUE;DONE:=FALSE; WHILE (LEN<>16) AND ALPHANUM AND (NOT TESTPRG(T)) AND (NOT DONE) AND (T<>SEGEND) DO BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,T,INPRGOFF,Z); LEN:=LEN+1; ALPHANUMEN:=1;VALIDADR:=TRUE; END; 6:BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Y); Z:=X*256+Y; GETSYM(Z,2,LBHD,ADRMODESTRNG); OPD:=Z;LEN:=2;VALIDADR:=TRUE; END; 7:BEGIN OPD:=X;S:='';RG1[6]:=',U';LEN:=1; IF OPC>53 THEN RG1[6]:=',S'; FOR Y:=0 TO 7 DO IF (X AND MASK[Y])<>0 THEN S:=S+RG1[Y]; IF S='' THEN VALID:=FALSE ELSE STRINGDELETE(S,1,1); ADRMODESTRNG:=S; END; 8:BEGIN OPD:=X;LEN:=1; S:=RG2[X LSR 4]+','+RG2[X AND 15]; (* NOTE (SUB1 AND 8) SHOULD EQUAL (SUB2 AND 8) *) IF (S[1]='?') OR (S[3]='?') OR (S[4]='?') THEN VALID:=FALSE; ADRMODESTRNG:=S; END; 9:BEGIN LEN:=1; R:=(X AND 96) LSR 5; IF X<128 THEN BEGIN T:=X AND 31;(*VALIDDATA:=TRUE;*) IF T>15 THEN T:=T-32; (* GETSYM(T,1,LBHD,S);*) DECODE(T,3,S); S:=S+','+RG3[R];OPD:=T; END ELSE BEGIN INDIRECT:=FALSE; IF (X AND 16)=16 THEN INDIRECT:=TRUE; T:=X AND 15;OPD:=0; CASE T OF 0:S:=','+RG3[R]+'+'; 1:S:=','+RG3[R]+'++'; 2:S:=',-'+RG3[R]; 3:S:=',--'+RG3[R]; 4:S:=','+RG3[R]; 5:S:='B,'+RG3[R]; 6:S:='A,'+RG3[R]; 7:VALID:=FALSE; 8:BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Y); OPD:=Y;LEN:=2;VALIDDAT:=TRUE; GETSYM(Y,1,LBHD,S);S:=S+','+RG3[R]; END; 9:BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Y); READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Z); X:=Y*256+Z;LEN:=3;OPD:=X;VALIDDAT:=TRUE; GETSYM(X,2,DTHD,S);S:=S+','+RG3[R]; END; 10:VALID:=FALSE; 11:S:='D,'+RG3[R]; 12:BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Y); IF Y>127 THEN Y:=Y-256;LEN:=2; OPD:=Y+ADR;VALIDDAT:=TRUE; GETSYM(OPD,1,LBHD,S);S:=S+',PCR'; VALIDADR:=TRUE;END; 13:BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Y); READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Z); X:=Y*256+Z;LEN:=3; OPD:=X+ADR;VALIDDAT:=TRUE; GETSYM(OPD,2,LBHD,S);S:=S+',PCR'; VALIDADR:=TRUE;END; 14:VALID:=FALSE; 15:IF X=159 THEN BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Y); READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Z); X:=Y*256+Z;OPD:=X;LEN:=3; GETSYM(X,2,LBHD,S);VALIDDAT:=TRUE; END ELSE VALID:=FALSE END; (*CASE 9*) IF INDIRECT THEN BEGIN S2:='['+S+']'; S:=S2;VALIDADR:=FALSE; END; END; (*IF NOT X>127*) ADRMODESTRNG:=S; END (*BEGIN 9*) END; (*CASE *) IF NOT VALID THEN LEN:=0; END; PROCEDURE PAGE0; BEGIN CALCADRMODE(AM,HD); ADRMODE(AM,LEN,TEMPSTRING); MN2:=HD+TEMPSTRING; END; PROCEDURE PAGE1; BEGIN IF (OPC>191) THEN BEGIN IF (HALF2=14) THEN MN1:='LDS' ELSE IF (HALF2=15) AND (HALF1<>12) THEN MN1:='STS' ELSE VALID:=FALSE; END ELSE IF (OPC>127) THEN BEGIN IF HALF2=3 THEN MN1:='CMPD' ELSE IF HALF2=12 THEN MN1:='CMPY' ELSE IF HALF2=14 THEN MN1:='LDY' ELSE IF (HALF2=15) AND (HALF1<>8) THEN MN1:='STY' ELSE VALID:=FALSE; END ELSE IF OPC=63 THEN MN1:='SWI2' ELSE IF (OPC>32) AND (OPC<48) THEN BEGIN MN2:='L'+MN1; MN1:=MN2; END ELSE VALID:=FALSE; IF VALID THEN BEGIN CALCADRMODE(AM,HD); ADRMODE(AM,LEN,TEMPSTRING); MN2:=HD+TEMPSTRING; END; END; PROCEDURE PAGE2; BEGIN IF (OPC>127) AND (OPC<192) THEN BEGIN IF HALF2=3 THEN MN1:='CMPU' ELSE IF HALF2=12 THEN MN1:='CMPS' ELSE VALID:=FALSE; END ELSE IF OPC=63 THEN MN1:='SWI3' ELSE VALID:=FALSE; IF VALID THEN BEGIN CALCADRMODE(AM,HD); ADRMODE(AM,LEN,TEMPSTRING); MN2:=HD+TEMPSTRING; END; END; BEGIN (*MAIN, GETOPC*) VALID:=TRUE;PG:=0;LEN:=0;HD:=''; READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,OPC);OP1:=OPC; IF (OPC=16) THEN PG:=1; IF (OPC=17) THEN PG:=2; IF PG>0 THEN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,OPC); HALF1:=OPC LSR 4;HALF2:=OPC AND 15; QUART1:=HALF1 LSR 2;QUART2:=HALF1 AND 3; QUART3:=HALF2 LSR 2;QUART4:=HALF2 AND 3; OSN:=ORD(OPSTRNGNUM[HALF1+1])-48; STRINGCOPY(MEN[OSN],HALF2*4+1,4,MN1); IF MN1[4]=' ' THEN MN1[0]:=CHR(3); IF OPC=28 THEN MN1:='ANDCC'; IF OPC=141 THEN MN1:='BSR'; IF OPC=135 THEN MN1:='FCB'; IF OPC=143 THEN MN1:='FCB'; IF OPC=199 THEN MN1:='FCB'; IF OPC=205 THEN MN1:='FCB'; ID; VAR C:CHAR; BEGIN IF ERROR THEN EXIT; IF ADR<>SUCC(PREV) THEN POSITIONFILE(FILEN,ADR+OFFSET,ADR-PREV,GRANLIST); READ(FILEN,C); PREV:=ADR; X:=ORD(C); ADR:=SUCC(ADR); END; FUNCTION TESTPRG(X:INTEGER):BOOLEAN; VAR BT,A:INTEGER; BEGIN X:=X-SEGBEG; BT:=X AND 7; X:=X LSR 3;A:=X; IF (X<>PRGCACHEADR) THEN READBYTE(PRGF,TMPGRANLIST,PREVPRGF,X,PRGFOFF,PRGCACHEDAT); TESTPRG:=((PRGCACHEDAT AND MASK[BT])<>0); PRGCACHEADR:=A; END; PROCEDURE GETOPCINIT; (*THIS PROCEDURE SIMPLY INITIALIZES THE DATA FOR THE PROCEDURE GETOPC. *) BEGIN MEN[0]:='NEG FCB FCB COM LSR FCB ROR ASR LSL ROL DEC FCB INC TST JMP CLR '; MEN[1]:='FCB FCB NOP SYNCFCB FCB LBRALBSRFCB DAA ORCCFCB ANDCSEX EXG TFR '; MEN[2]:='BRA BRN BHI BLS BHS BLO BNE BEQ BVC BVS BPL BMI BGE BLT BGT BLE '; MEN[3]:='LEAXLEAYLEASLEAUPSHSPULSPSHUPULUFCB RTS ABX RTI CWAIMUL FCB SWI '; MEN[4]:='SUBACMPASBCASUBDANDABITALDA STA EORAADCAORA ADDACMPXJSR LDX STX '; MEN[5]:='SUBBCMPBSBCBADDDANDBBITBLDB STB EORBADCBORB ADDBLDD STD LDU STU '; AMODE:='5010009635963596'; OPSTRNGNUM:='0123000044445555'; RG1[0]:=',CC';RG1[1]:=',A'; RG1[2]:=',B';RG1[3]:=',DP'; RG1[4]:=',X';RG1[5]:=',Y'; RG1[6]:=',U';RG1[7]:=',PC'; RG2[0]:='D';RG2[1]:='X'; RG2[2]:='Y';RG2[3]:='U'; RG2[4]:='S';RG2[5]:='PC'; RG2[6]:='?';RG2[7]:='?'; RG2[8]:='A';RG2[9]:='B'; RG2[10]:='CC';RG2[11]:='DP'; RG2[12]:='?';RG2[13]:='?'; RG2[14]:='?';RG2[15]:='?'; RG3[0]:='X';RG3[1]:='Y'; RG3[2]:='U';RG3[3]:='S'; MASK[0]:=1;MASK[1]:=2; MASK[2]:=4;MASK[3]:=8; MASK[4]:=16;MASK[5]:=32; MASK[6]:=64;MASK[7]:=128; HX:='0123456789ABCDEF'; END; PROCEDURE GETOPC(ADR:INTEGER; VAR VALID,VALIDADR,VALIDDAT:BOOLEAN; VAR PG,OPC,OPD,AM,LEN:INTEGER; VAR MN1,MN2:STRING(30)); VAR HALF1,HALF2,QUART1,QUART2,QUART3,QUART4:INTEGER; OSN,OP1:INTEGER; HD:STRING(1); TEMPSTRING:STRING(63); PROCEDURE CALCADRMODE(VAR AM:INTEGER; VAR HD:STRING(1)); (*THIS THE ADDRESSING MODE OF THE OP CODE. THE 6809 IS VERY SYMETRIC IN IT'S OP CODE AND ADDRESSING MODES. THERE ARE ONLY A FEW EXCEPTIONS WHICH ARE HANDLED BY A CASE. IT ALSO CHECKS TO SEE IF IT IS A DIRECT PAGE ADDRESS OR IMMEDIATE AND WILL INDICATE THE CORECT HEADER SYMBOL <,# IT CHECKS TO SEE IF IT IS A LONG BRANCH AND IF SO IT WILL GIVE IT THE CORRECT ADDRESSING MODE. THE ADDRESSING MODES ARE 0: INHERENT 1: BRANCH 2: LONG BRANCH 3: 1 BYTE DATA 4: 2 BYTES DATA 5: 1 BYTE ADDRESS (DIRECT PG) 6: 2 BYTES ADDRESS 7: PSHS/PULS/PSHU/PULU 8: EXG/TFR 9: INDEXED IF BIT 4 IS SET THEN IT WILL BE [----] 0: ,R+ 1: ,R++ 2: ,-R 3: ,--R 4: ,R 5: B,R 6: A,R 7: NOT USED 8: 8 BIT,R 9: 16 BIT,R 10: NOT USED 11: D,R 12: 8 BIT,PCR 13: 16 BIT,PCR 14: NOT USED 15: INDIRECT ONLY [ADDRES] *) BEGIN AM:=ORD(AMODE[HALF1+1])-48; CASE OPC OF 22,23:AM:=2; 26,28:AM:=3; 30,31:AM:=8; 48,49,50,51:AM:=9; 52,53,54,55:AM:=7; 131,140,142,195,204,206:AM:=4; 141:AM:=1 END; (*CASE*) HD:=''; IF (AM=3) OR (AM=4) THEN HD:='#'; IF AM=5 THEN HD:='<'; IF ((PG=1) AND (OPC>32) AND (OPC<48)) THEN AM:=2; END; PROCEDURE ADRMODE(MODE:INTEGER; VAR LEN:INTEGER; VAR ADRMODESTRNG:STRING(63)); (*THE ADDRESSING MODES ARE 0: INHERENT 1: BRANCH 2: LONG BRANCH 3: 1 BYTE DATA 4: 2 BYTES DATA 5: 1 BYTE ADDRESS (DIRECT PG) 6: 2 BYTES ADDRESS 7: PSHS/PULS/PSHU/PULU 8: EXG/TFR 9: INDEXED IF BIT 4 IS SET THEN IT WILL BE [----] 0: ,R+ 1: ,R++ 2: ,-R 3: ,--R 4: ,R 5: B,R 6: A,R 7: NOT USED 8: 8 BIT,R 9: 16 BIT,R 10: NOT USED 11: D,R 12: 8 BIT,PCR 13: 16 BIT,PCR 14: NOT USED 15: INDIRECT ONLY [ADDRES] *) VAR R,T,X,Y,Z:INTEGER; S,S2:STRING(20); INDIRECT:BOOLEAN; BEGIN VALIDADR:=FALSE;VALIDDAT:=FALSE; LEN:=0;OPD:=0;READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,X); CASE MODE OF 0:ADRMODESTRNG:=''; 1:BEGIN IF X>127 THEN X:=X-256; GETSYM(ADR+X,2,LBHD,ADRMODESTRNG); OPD:=ADR+X;LEN:=1;VALIDADR:=TRUE; END; 2:BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Y); Z:=X*256+Y; GETSYM(ADR+Z,2,LBHD,ADRMODESTRNG); OPD:=ADR+Z;LEN:=2;VALIDADR:=TRUE; END; 3:BEGIN GETSYM(X,1,DTHD,ADRMODESTRNG); OPD:=X;LEN:=1;VALIDDAT:=TRUE; END; 4:BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,ADR,INPRGOFF,Y); Z:=X*256+Y; GETSYM(Z,2,DTHD,ADRMODESTRNG); OPD:=Z;LEN:=2;VALIDDAT:=TRUE; END; 5:BEGIN GETSYM(X,1,LBHD,ADRMODESTRNG); OPD:=X;L]; T:=X AND 15;S:=S+HX[T+1]; END; PROCEDURE GETGRANLIST (VAR FILEPTR:TEXT; NULL:INTEGER; VAR GRAN:STRING; VAR LAST:INTEGER); (*THE NULL IS NEEDED SO I CAN GET THE ADDRESS OF IT. IF I GOT THE ADDRESS OF GRAN IT WOULD POINT TO THE ACTUAL PARAMETER, NOT TO THE FORMAL PARAMETER (GRAN). GRAN IS A STRING CONTAINING CHR$ CODES FOR THE GRAN NUMBER THE LAST BYTE CONTAINS A NUM >=190. THIS IS HOW MANY SECTORS ARE USED IN THE LAST GRAN. LAST IS HOW MANY BYTES ARE USED IN THE LAST SECTOR. NOTE: NO ERROR CHECKING IS DONE. *) TYPE DEFTDISKBUF=RECORD FCBPOINTER:INTEGER; FCBNAME:ARRAY [0..7] OF CHAR; FCBEXT:ARRAY [0..2] OF CHAR; FCBDEVNO:-128..127; FCBSTATE:-128..127; FCBTYPE:-128..127; FCBGRAN:-128..127; FCBNEXTG:-128..127; FCBTRACK:-128..127; FCBSECTR:-128..127; FCBLSECT:-128..127; FCBOPEN:-128..127; FCBINDEX:INTEGER; FCBBUFSZ:INTEGER; FCBLAST:INTEGER; FCBTYPESIZE:INTEGER; FCBBUFR:ARRAY [0..255] OF CHAR; END; VAR D:DEFTDISKBUF; A,X:INTEGER; C:CHAR; GR:STRING; FB,P:^DEFTDISKBUF; BEGIN X:=@NULL;X:=X+2;X:=WORD[X]; P:=PTR(X);D:=P^;FB:=P; FB^.FCBTRACK:=17; FB^.FCBSECTR:=1; FB^.FCBLSECT:=3; FB^.FCBINDEX:=256; READ(FILEPTR,C); A:=D.FCBGRAN; GR:=CHR(A); WHILE A<190 DO BEGIN A:=ORD(FB^.FCBBUFR[A]); GR:=GR+CHR(A); END; P^:=D; LAST:=FB^.FCBLAST; GRAN:=GR; END; PROCEDURE READBYTE(VAR FILEN:TEXT; VAR GRANLIST:STRING; VAR PREV:INTEGER; VAR ADR:INTEGER; OFFSET:INTEGER; VAR X:INTEGER); (*THIS PROCEDURE GETS THE NEXT BYTE FROM DISK. IF IT HAS JUST READ THE PREVIOUS BYTE THEN IT CAN SIMPLY DO A READ, OTHERWISE IT HAS TO POSITON THE FILE FIRST. NOTE: NO ERROR CHECKING IS DONE. *) PROCEDURE POSITIONFILE (VAR FILEPTR:TEXT; REC:INTEGER; DIF:INTEGER; VAR GRAN:STRING); (*THIS TAKES A RECORD NUMBER AND CALCULATES WHERE IN THE FILE IT IS AT. IT THEN POSITIONS THE FILE AT THAT PLACE SO THE CORRECT RECORD WILL BE READ NEXT. IT USES THE CONSTANT RECSIZE TO DETERMINE HOW BIG EACH RECORD IS. DIF IS THE DIFFERENCE THERE IS BETWEEN THE WANTED RECORD AND THE PREVIOUS RECORD. IF IT IS WITHIN THIS SECTOR THEN IT JUST MOVES THE INDEX POINTER TO THE RIGHT PLACE THIS SAVES TIME. RECSIZE SHOULD BE TAKEN FROM THE FCB. IF IT IS 0 THEN RECSIZE IS 1, OTHERWISE IT IS WHATEVER IS READ. NOTE: NO ERROR CHECKING IS DONE. *) CONST SECSIZE=256; GRANSIZE=2304; RECSIZE=1; TYPE DEFTDISKBUF=RECORD FCBPOINTER:INTEGER; FCBNAME:ARRAY [0..7] OF CHAR; FCBEXT:ARRAY [0..2] OF CHAR; FCBDEVNO:-128..127; FCBSTATE:-128..127; FCBTYPE:-128..127; FCBGRAN:-128..127; FCBNEXTG:-128..127; FCBTRACK:-128..127; FCBSECTR:-128..127; FCBLSECT:-128..127; FCBOPEN:-128..127; FCBINDEX:INTEGER; FCBBUFSZ:INTEGER; FCBLAST:INTEGER; FCBTYPESIZE:INTEGER; FCBBUFR:ARRAY [0..255] OF CHAR; END; VAR B,C,GR,OFF,POS,SE,TK,X:INTEGER; E:PTR; L:CHAR; FB:^DEFTDISKBUF; BEGIN IF ERROR THEN EXIT; X:=@REC;X:=X+2;X:=WORD[X]; FB:=PTR(X);DIF:=DIF-2; B:=FB^.FCBINDEX; IF ((B+(DIF*RECSIZE)>=0) AND (B+(DIF*RECSIZE)<=255)) THEN OFF:=B+(DIF*RECSIZE) ELSE BEGIN POS:=(REC-1)*RECSIZE; B:=(POS-1) DIV GRANSIZE; C:=POS-B*GRANSIZE; SE:=((C-1) DIV SECSIZE)+1; OFF:=C-(SE-1)*SECSIZE-1; GR:=ORD(GRAN[B+1]); TK:=GR DIV 2; IF TK>16 THEN TK:=TK+1; IF ODD(GR) THEN SE:=SE+9; FB^.FCBGRAN:=GR; FB^.FCBNEXTG:=ORD(GRAN[B+2]); FB^.FCBTRACK:=TK; FB^.FCBSECTR:=SE-1; FB^.FCBLSECT:=9;IF ODD(GR) THEN FB^.FCBLSECT:=18; FB^.FCBINDEX:=256; READ(FILEPTR,L); END; IF (FB^.FCBGRAN>68) OR (FB^.FCBTRACK>34) OR (FB^.FCBSECTR>18) THEN BEGIN ERROR:=TRUE; ERRORTYPE:=7; WRITELN; WRITELN(FB^.FCBGRAN,FB^.FCBTRACK,FB^.FCBSECTR); END; FB^.FCBINDEX:=OFF; READ(FILEPTR,L); ENPROGRAM DSTRAC21; (*DISASSEMBLER*) CONST MAXBM=4095; MAXSYM=512; MAXSYM2=511;(*1 LESS THAN MAXSYM*) TYPE SYMREC=RECORD SYMBL:STRING(12); ADR:INTEGER; END; SYMRECARRAY=ARRAY [0..MAXSYM2] OF SYMREC; %N VAR MEN:ARRAY [0..5] OF STRING; MASK:ARRAY [0..7] OF INTEGER; RG1:ARRAY [0..7] OF STRING(5); RG2:ARRAY [0..15] OF STRING(5); RG3:ARRAY [0..3] OF STRING(5); AMODE:STRING(19); OPSTRNGNUM:STRING(20); HX:STRING(16); PRGGRANLIST:STRING; TMPGRANLIST:STRING;(*GRAN LIST FOR DSTRAC21.TMP*) INFILE,OUTFILE,SYMFILENAME:STRING(20); VAR STATIC INPRG,OUTASM,SYMADRF,SYMDATF,PRGF,SYMFILE:TEXT; VAR INPRGOFF,ADRFOFF,DATFOFF,PRGFOFF:INTEGER; PREVINPRG,PREVPRGF,PREVADRF,PREVDATF:INTEGER; PRGCACHEADR,ADRCACHEADR,DATCACHEADR:INTEGER; PRGCACHEDAT,ADRCACHEDAT,DATCACHEDAT:INTEGER; SYMBOLS:SYMRECARRAY; NULL:SYMREC; START:INTEGER; TEMPS:STRING(20); ERROR:BOOLEAN; ERRORTYPE:INTEGER; VALID:BOOLEAN; LASTSECSIZE:INTEGER; SEGBEG,SEGLEN,SEGEND,SEGEXEC:INTEGER; LINELIMIT:INTEGER; LINENUMS,FCBASCII,FDBASCII,FCCSTRINGS:BOOLEAN; STARTLINE:INTEGER; LINENUMBR:REAL; SCREENCOL:INTEGER; LBHD,DTHD:STRING(8); NUMOFLINES:INTEGER; FUNCTION HASH(X:INTEGER):INTEGER; BEGIN HASH:=X AND MAXSYM2; END; FUNCTION INSERT(SYM:SYMREC):BOOLEAN; VAR X,Y:INTEGER;DONE:BOOLEAN; BEGIN INSERT:=TRUE;DONE:=FALSE; IF SYM=NULL THEN EXIT; X:=HASH(SYM.ADR);Y:=X; WHILE NOT DONE DO IF SYMBOLS[X]=NULL THEN BEGIN SYMBOLS[X]:=SYM; DONE:=TRUE; END (* ELSE IF SYMBOLS[X].ADR=SYM.ADR THEN BEGIN SYMBOLS[X]:=SYM; DONE:=TRUE; END*) ELSE BEGIN X:=X+1; IF X=MAXSYM THEN X:=0; IF X=Y THEN BEGIN DONE:=TRUE; INSERT:=FALSE; END; END; END; FUNCTION FIND(VAR SYM:SYMREC; X:INTEGER):BOOLEAN; VAR Y,Z:INTEGER;DONE:BOOLEAN; BEGIN Y:=HASH(X);Z:=Y; FIND:=TRUE;DONE:=FALSE; IF (Y>=MAXSYM) OR (Y<0) THEN BEGIN SYM:=NULL; FIND:=FALSE; EXIT; END; WHILE NOT DONE DO IF SYMBOLS[Y].ADR=X THEN DONE:=TRUE ELSE IF SYMBOLS[Y]=NULL THEN BEGIN DONE:=TRUE; FIND:=FALSE; END ELSE BEGIN Y:=Y+1; IF Y=MAXSYM THEN Y:=0; IF Y=Z THEN BEGIN DONE:=TRUE; FIND:=FALSE; END; END; SYM:=SYMBOLS[Y]; IF SYM=NULL THEN FIND:=FALSE; END; PROCEDURE REMOVEBLANKS(VAR LINE:STRING(63)); VAR L,X:INTEGER; BEGIN L:=ORD(LINE[0]);X:=1; WHILE (X<=L) AND (LINE[X]=' ') DO X:=X+1; IF X>1 THEN STRINGDELETE(LINE,1,X-1); END; PROCEDURE SEPERATE(VAR LINE:STRING(63); VAR CMD:STRING(1); VAR ADR:INTEGER; VAR SYM:STRING(15)); VAR X,Y,Z:INTEGER; TEMPS:STRING(63); BEGIN CMD:='';ADR:=0;SYM:=''; TEMPS:=LINE; IF TEMPS='' THEN EXIT; REMOVEBLANKS(TEMPS); IF TEMPS='' THEN EXIT; CMD:=TEMPS[1]; STRINGDELETE(TEMPS,1,1); REMOVEBLANKS(TEMPS); IF TEMPS='' THEN EXIT; IF TEMPS[1]='$' THEN BEGIN Y:=5; IF ORD(TEMPS[0])<5 THEN Y:=ORD(TEMPS[0]); FOR Z:=2 TO Y DO BEGIN X:=ORD(TEMPS[Z])-48; IF X>9 THEN X:=X-7; ADR:=ADR*16+X; END; END ELSE ADR:=ENCODE(TEMPS); X:=STRINGPOS(' ',TEMPS); IF X=0 THEN X:=ORD(TEMPS[0]); STRINGDELETE(TEMPS,1,X); REMOVEBLANKS(TEMPS); IF ORD(TEMPS[0])>12 THEN TEMPS[0]:=CHR(12); SYM:=TEMPS; END; PROCEDURE LOADSYMBOLS; VAR X,Y:INTEGER;LINE:STRING(63);SYMB:STRING(15); CMD:STRING(1); SYM:SYMREC; BEGIN NULL.SYMBL:=' '; NULL.ADR:=0; FOR X:= 0 TO MAXSYM2 DO SYMBOLS[X]:=NULL; IF SYMFILENAME='' THEN EXIT; RESET(SYMFILE,SYMFILENAME,'SYM'); WHILE (NOT EOF(SYMFILE)) AND (NOT ERROR) DO BEGIN READLN(SYMFILE,LINE); SEPERATE(LINE,CMD,X,SYMB); IF (CMD='S') OR (CMD='J') OR (CMD='s') OR (CMD='j') THEN BEGIN SYM.SYMBL:=SYMB; SYM.ADR:=X; IF NOT INSERT(SYM) THEN BEGIN ERROR:=TRUE; ERRORTYPE:=3; END; END; END; CLOSE(SYMFILE); END; PROCEDURE GETSYM(X:INTEGER;LEN:INTEGER;HD:STRING(3);VAR S:STRING(15)); VAR T:INTEGER;SYM:SYMREC; BEGIN IF FIND(SYM,X) THEN BEGIN S:=SYM.SYMBL; EXIT; END; S:=HD; IF LEN=2 THEN BEGIN T:=X LSR 12;S:=S+HX[T+1]; T:=(X LSR 8) AND 15;S:=S+HX[T+1]; END; T:=(X LSR 4) AND 15;S:=S+HX[T+1%N (*********************************************** * * DEFT Pascal Version 3.0 * (C) Copyright 1984 DEFT Systems, Inc. * Standard Run-time Package * ************************************************) INTERFACE DFT_STANDARD; FUNCTION ENCODE (VAR ASCII : STRING) : INTEGER; PROCEDURE DECODE (NUMBER, SIZE : INTEGER; VAR ASCII : STRING); PROCEDURE HEX (ADDRESS : INTEGER; BYTECOUNT : INTEGER; VAR ASCII : STRING); PROCEDURE STRINGCOPY (VAR SOURCE : STRING; INDEX, LENGTH : INTEGER; VAR DESTINATION : STRING); PROCEDURE STRINGDELETE (VAR SOURCE : STRING; INDEX, LENGTH : INTEGER); PROCEDURE STRINGINSERT (VAR SOURCE : STRING; VAR DESTINATION : STRING; INDEX : INTEGER); FUNCTION STRINGPOS (VAR IMAGE, TARGET : STRING) : INTEGER; PROCEDURE MARK (VAR PTRVAR : PTR); PROCEDURE RELEASE (PTRVAR : PTR); FUNCTION MEMAVAIL : INTEGER; FUNCTION EOF (VAR FILEVAR : TEXT) : BOOLEAN; FUNCTION EOLN (VAR FILEVAR : TEXT) : BOOLEAN; PROCEDURE GET (VAR FILEVAR : TEXT); PROCEDURE PUT (VAR FILEVAR : TEXT); PROCEDURE PAGE (VAR FILEVAR : TEXT); FUNCTION FILEERROR (VAR FILEVAR : TEXT) : INTEGER; PROCEDURE CLOSE (VAR FILEVAR : TEXT); PROCEDURE CURSOR (POSITION : INTEGER); FUNCTION ENCODEREAL (VAR ASCII : STRING) : REAL; PROCEDURE DECODEREAL (VAR NUMBER : REAL; SIZE, FRACTION : INTEGER; VAR ASCII : STRING); FUNCTION SIN (RADIANS : REAL) : REAL; FUNCTION COS (RADIANS : REAL) : REAL; FUNCTION ARCTAN (TANGENT : REAL) : REAL; FUNCTION EXP (POWER : REAL) : REAL; FUNCTION LN (NUMBER : REAL) : REAL; FUNCTION SQRT (NUMBER : REAL) : REAL; FUNCTION SQR (NUMBER : REAL) : REAL; FUNCTION TRUNC (NUMBER : REAL) : INTEGER; FUNCTION ROUND (NUMBER : REAL) : INTEGER; END; %L ) : REAL; FUNCTION EXP (POWER : REAL) : REAL; FUNCTION LN (NUMBER : REAL) : REAL; FUNCTION SQRT (NUMBER : REAL) : RCDEFT MACRO ASSEMBLER II, V4.1 CPASBOOT Version 4.1 M S347F1A5017 YDFTDISKRESET0000 SB6FFF881FE2608B7FFD98610B7FF22B7FFDF4FB708A08EFDFE10EF841F14DC7234068E0112EC8334068C010022F710EF8D0088308D00599F7217 YDFTDISKVECTR0000 S1CAF308D YDFTHEAPSTART0002 SAF1E8E011E6FE2301F26FA30E486FDA70D86CCA788153410337E344017 YDFTPSCLMAIN 0000 S1A5017 YDFTDISKRESET0000 S32E901228E01003506ED818C011225F73506DD7235101F14B7FFD8B608A02705357F16 YTCELOAD 0000 SB7FFDE35FF128E01001F4210EE8D0020118C7FEC2503B7FFDF3506ED818C011225F735109F721F24B7FFDEB7FFD86E84 D0002 PA0000 0000 44017 YDFTPSCLMAIN 0000 S1A5017 YDFTDISKRESET0000 S32E901228E01003506ED818C011225F73506DD7235101F14B7FFD8B608A02705357F16 YTCELOAD 0000 SB7FFDE35FF128E01001F4210EE8D0020118C7FEC2503B7FFDF3506ED818C011225F73   #$%&'()*+-./0123456789:;<=>?@APASCALIBEXT PASBOOT OBJ!.RUNTIME LIB"FDIS PAS{DIS OBJ,DIS BINIS BKU IS LST-JPASMATHP KTRUNC KROUND CDEFT PASCAL II V4.0 RTRUNC 0000 S34403364327730423410CC000834064F5F340630533410AEC4341017 YDECODEREAL 0000 S326A327E30533410AEC4341017 YENCODE 0000 S32643506ED49325C35C0 RROUND 0037 S344033643042341017 YDFTREALLOAD 0000 S8D0600000000000017 YDFTREALLOAD 0000 S17 YDFTREALCMP 0000 S102F0001327E3042341017 YDFTREALLOAD 0000 S8D0600500000000017 YDFTREALLOAD 0000 S17 YDFTREALSUB 0000 SAEC434108D8F32693506ED49160002 F0052 S327E3042341017 YDFTREALLOAD 0000 S8D0600500000000017 YDFTREALLOAD 0000 S17 YDFTREALADD 0000 SAEC4341017FF6832693506ED49 F0078 S325C35C0 PP004B 0000 JPASMATH KARCTAN KCOS KEXP KLN KSIN KSQR KSQRT CDEFT MACRO ASSEMBLER II, V4.0 CPASMATH V 4.0 S002500000000005000000000001666666667003333333333007500000000011570796327048214381390700242007797108276704170300281605223708241341702100162831853070AFD68479391207E4850942160FF16111701807F3420963810FF54279132807F7245719650FF89802395400011093241308014283980 S800019999912108033333331600110000000000B7C46371524377D24166676257E11544999397E50139294607F19597696807F68089371690020699586590053938296660111712552140120346786770126509491290123025851250110000000000043429447590C0A100466877089181398528008329815505587604661 S76000711197440008620995200000539990857148477760000000415552000008332400000000272000000008218000000000160000000008117917594690C06122640230885442867500005161042727384590490000004218700000083820125000003312428571483121500000002486000000082202500000001900000 S00008145000000000130000000008110986122890C013237876081812630774316012152451713811775772663011479810553811248590154011070220132809364426155008427983539807901234568007901234568808888888889011333333333802876820724344033643278304934103042341017 YDFTREALLOAD 0000 S308DFE23341017 YDFTREALLOAD 0000 S17 YDFTREALADD 0000 S2011344033643278304934103042341017 YDFTREALLOAD 0000 S8D60308DFE27341017 YDFTREALLOAD 0000 S17 YDFTREALDIV 0000 S17 YDFTREALFRACT0000 S17 YDFTREALNEG 0000 S308DFDD2341017 YDFTREALLOAD 0000 S17 YDFTREALADD 0000 SA6E4A7542A10308DFDC6341017 YDFTREALLOAD 0000 S17 YDFTREALADD 0000 S6DE42B0317 YDFTREALNEG 0000 S308DFDAD341017 YDFTREALLOAD 0000 S17 YDFTREALADD 0000 S6D542A0317 YDFTREALNEG 0000 S318D0006308DFDBA202C17 YDFTREALMUL 0000 S8D1417 YDFTREALSTORE0000 S325C35C06F58A6622A06847FA7626358396D5827FB16 YDFTREALNEG 0000 S10AF56A680A759AF5A16001AA680A759AF5A10AF5630E4341017 YDFTREALLOAD 0000 S30E4341017 YDFTREALLOAD 0000 S17 YDFTREALMUL 0000 S30D8FA341017 YDFTREALLOAD 0000 S3067341017 YDFTREALLOAD 0000 S17 YDFTREALMUL 0000 SEC5AC30006ED5A30D8FA341017 YDFTREALLOAD 0000 S17 YDFTREALADD 0000 S6A5926E017 YDFTREALMUL 0000 SEC5AC30006ED5A30D8FA341017 YDFTREALLOAD 0000 S17 YDFTREALADD 0000 S6ED8F634403364327830493410A642484D2E103042341017 YDFTREALLOAD 0000 S17FF6C318DFF5C2023308DFD08341017 YDFTREALLOAD 0000 S308DFD6D341017 YDFTREALLOAD 0000 S3042341017 YDFTREALLOAD 0000 S17FF4A17 YDFTREALDIV 0000 S318D0007308DFD1016FF5C17 YDFTREALMUL 0000 S17 YDFTREALSUB 0000 S16FF2A344033643278304934103042341017 YDFTREALLOAD 0000 S308DFD87341017 YDFTREALLOAD 0000 S17 YDFTREALMUL 0000 SA6E44881042E2B8D3F813E2E2581C02D30A75417 YDFTREALFRACT0000 S318D0007308DFD1216FF09A6E4847FAB54847FA7E417 YDFTREALSTORE0000 S325C35C0863FA7E4CC9999ED61ED63ED6520EA6FE4CC000020F14FE662585D2F1AA66344444444C002270BC60A3D3404A664840FABE06D622A014039344033643278304934103042341017 YDFTREALLOAD 0000 SECE42BC25D27BF108301102606EC6227B5E6616FE4308DFCF1318DFC12C1222514308DFD3A318DFC0CC1462508308DFD83318DFC06AF54342017 YDFTREALLOAD 0000 S17 YDFTREALSUB 0000 S318D0005AE5416FE67E64258571D340617 YDFTINTTOREAL0000 S308DFCA2341017 YDFTREALLOAD 0000 S17 YDFTREALMUL 0000 S17 YDFTREALADD 0000 S17 YDFTREALSTORE0000 S325C35C0327916FF59344033643278304934106FE2327A6FE2327A3042341017 YDFTREALLOAD 0000 S341017FF643269308DFB98341017 YDFTREALLOAD 0000 S17 YDFTREALMUL 0000 S341017FECA326917 YDFTREALSTORE0000 S325C35C0344033643278304934103042341017 YDFTREALLOAD 0000 S3042341017 YDFTREALLOAD 0000 S17 YDFTREALMUL 0000 S17 YDFTREALSTORE0000 S325C35C0 RARCTAN 02F2 RCOS 01E6 REXP 0345 RLN 03CC RSIN 0205 RSQR 0484 RSQRT 044A PA0000 0000 JPASREAL KDECODEREAL KDFTDECODERL KDFTINTTOREAL KDFTREADREAL KDFTREALABS KDFTREALADD KDFTREALCMP KDFTREALDIV KDFTREALFRACT KDFTREALLOAD KDFTREALMUL KDFTREALNEG KDFTREALSTORE KDFTREALSUB KDFTWRTREAL KENCODEREAL CDEFT MACRO ASSEMBLER II, V4.0 CPASREAL V 4.0 S35306FE2EC243406EC223406ECA434066E8410AE6935103506EDA13506EDA13506EDA132636E84AE6417 YDFTREADFIELD0000 S26141F41ECE8113406327934161702CA32648DD2326F35306E84344033624F5FA3442A2232EB6FE21F413146EC44342610AE423436170364326A10AE4D1F414F5F343617 YDFTWRTSTRG 0000 S325E35403510326B6E846D632706A6628880A76239A662847FA76239A662484D2F07306217006020F3393510344086096FE24A26FB1F436E84304231C8148607E680E7A04A26F930C81417008432493540351032676E843436300731271CFEC606A682A9A219A7A45A26F635B63436300731271A01C60686998900A082ABA2 S19A7A45A26F235B63402A6848001250228028880A7843502340286046806690569046903690269014A26F135823402A6848B01250228028880A7843502340286046401660266036604660566064A26F135823416860630016D8026084A26F96FF8023596AE62A60184F026F68D9A20F4A64D48473402A6C8144847A0E0271D S2D0A810C102CFF41304D200C40304D810C102CFF2830C8148D944A26FB30C8148D8C304D8D8839A6628880A76217FEFC8DBF304D31C814A6C814A84D2B0617FF1816FF058D0A23028D1917FF2216FEF93436300131218606E680E1A026034A26F735B6343686073402E684A6A4E7A0A7806AE426F4326135B631693062A684 SA8A42A06A684A1A420406D842A021E12A6A4483402A68448A1E0272234018100260CA60126083501A621271E201AA6A42608A62126043501200A3501200C8D91270825048601200286803510326E6E8417FE5A304D17FEE7A6C814A84D8480A742A6C814AB4D847FAA42A7423142860CE6C81AC40F270A304D17FE5E6AC81A S20EF4A1027FE3630C81417FEB3304217FEAE20DD17FE17304DEC842605CC4010ED8417FE9B30C81417FE95314D17FF22240317FE56A6C814A84D8480A742A6C814A04D4C847FAA42A74231C814860C304D17FE1D24046C4820F517FDFE4A1027FDDB30C81417FE33304217FE2E20E03530327934103062CC0006E7801E2017 YDFTDECIMAL 0000 S30623279341617000E32643069C6073502A7805A26F939327A6F636F646F616FE4860CA765306C6F8410AE6AE6A0E7628D7B812027FA812B2708812D26068680A7848D698D7226086DE427F66C6320F2812E260E8D578D6026086DE426F66A6320F2814526258D45812B2706812D26046A618D3981302D1381392E0F8030E6 S643402860A3DEBE0E76420E7A6646D61270140AB63847FAA84A784A665270617FD794A26FAA60126026F843266396A642B03A6A039326220D381302D1C81392E186D67271480301F89EA62E762270A6A6717FD47AA06A7064F39AE6A10AE64A669E667A7A03476340632771F434D2F52A6844847A747A748EC01ED41EC03ED S43EC05ED456D4A2B048D492036A64980072D34810B2F02860BA74AA6498004A7498601A7488D2D6A47CC452B6D472A04C62D6047EDA1E647862F4CC00A2CFBCB3AEDA4324B35F610AE4FC62AE7A06A4926FA20EFC620A6494A6D482F034CA0488002A04A2DE12705E7A04A26FB6DD80D2A02C62DE7A030C4A6482F088D22C6 S2EE7A02017CC302EEDA16D48270E6D4A270EA7A06A4A27086C482BF6A64A8D01394D2F10E60154545454CA30E7A017FC6C4A26ED39 RDECODEREAL 03C8 RDFTDECODERL 03D3 RDFTINTTOREAL02DD RDFTREADREAL 0027 RDFTREALABS 0087 RDFTREALADD 019D RDFTREALCMP 01E9 RDFTREALDIV 0282 RDFTREALFRACT008E RDFTREALLOAD 0000 RDFTREALMUL 023F RDFTREALNEG 007C RDFTREALSTORE0012 RDFTREALSUB 0197 RDFTWRTREAL 0046 RENCODEREAL 0306 PA0000 0000 JPASDISK KDFTCLOSEDSK KDFTDISKREAD KDFTDISKRESET KDFTDISKVECTR KDFTDISKWRITE KDFTRDNXTDSK KDFTRETRYCNT KDFTREWRTDSK KDFTSRCHDIR KDFTWRITEDSK CDEFT MACRO ASSEMBLER II, V4.1 CPASDISK Version 4.1 S308D001BBF010A308D0022BF010D397F09827F09857FFF407F0986170157397D09822708BE0983AF6A7F09823B7DFF032A187DFF027D098527107A0985260BB609868430B70986B7FF403B3436B7FFD8868020073436B7FFD886A0C60334067F0985A60D318D0125A6A68A28E68812C1162D028A10F60986B70986B7FF40C5 S08260A108E00001700FF1700FC1700D61026008C108E097EA60DE6A6F7FF49E188122723E68812F7FF4BE7A6121212128616B7FF481E881E881700AA102600608518265C1700BEA68813B7FF4A318D004610BF098330881E108E0000B6FF48B609868A80B70986E6E47309821A50C180260EF7FF48B7FF4012F6FF4BE78020 SF9F7FF48B7FF4012E680F7FF4B20F97F09821CAF8D6120091CAFB6FF48847C272F108E097EA60D6FA612121212AE6486FEA70E6A612719108E097EA60D6FA68602B7FF488D218D3E85101027FF1386FEAE64A70E8678B709853262B6FFF881FE2603B7FFD935B6108E0000313F2708B6FF48850126F53986D0B7FF481E881E S887DFF48868039108E2616313F26FC390102414234166FE28611A788128603A7881317FEA96D0E26238608A7E431881E860B17 YDFTEQUALNAME0000 S271931A8206AE426F46C8813A68813810C2DDA86FDA70E32613596A62DA78811EC2EED881AA62BA70F20EC34068D11A68811A788108B1EE686E788118D13358634028602A788138611A7881217FE4A35823406A6881047A78812A6881081222D036C8812840127028609A788138B09A78814A6881181432308840FAB8813A7 S8814358634066D0E263A6C8813A68813A188142F0BA688118143222A8D8E20E617FDF7CC0100ED88184FED8816A6881181432310A68813A188142608EC881AED88182702358686FFA70E20F88D0A6D0E26058D3617FF7B39340617FF03A60E270881FD26236F0E201FA62D34026FA417FDB117FF4C350431881EA6A56FA56A SA51F894D2AF517FD9B358634368D5A6D0E26318611A788128603A7881317FD7B6D0E2620C60831881EA6A427194C271631A8205A26F36C8813A68813810C2DDD86FDA70E35B6C60B3002A680A7A05A26F9AE623135A60FA72BE72CA68810A72D6F2E6F2F17FD3D35B6342617FED46FE2862031881E8D3127206CE4ABE48D29 S27186CE46CE46CE4A0E44A2AE986FBA70E326135A6E68810A7A5A78810C6C9E78811E7A617FCFE20E8E6A65C27058A01E6A65C39342617FE8A6FE231881EA6881081202C088D2227CC8D0C20068D0827C48D1627C020B63406E6A65C27074C81432FF635863261358434068DBC27F680032AF8358634066D0E261D6C881317 SFCA46D0E26134F5FED8818A68813A188142D0617FF9F17FE3C358634266D0E26236C881317FC7FA6881317FE176D0E261331881E80092E028B098AC0E68810A7A517FC62A60F17FD9A6D0E2611A72B5F4A26015AE72CEC8818ED2E17FC4835A6 RDFTCLOSEDSK 03C9 RDFTDISKREAD 004B RDFTDISKRESET000F RDFTDISKVECTR0000 RDFTDISKWRITE0054 RDFTRDNXTDSK 0235 RDFTRETRYCNT 005B RDFTREWRTDSK 027D RDFTSRCHDIR 0191 RDFTWRITEDSK 03A4 PA0000 0000 JPASIO KCLOSE KDFTCLOSE KDFTEQUALNAME KDFTREADCHAR KDFTREADFIELD KDFTREADINT KDFTREADLN KDFTREADSTRG KDFTREADTYPE KDFTRESET KDFTREWRITE KDFTWRITELN KDFTWRTCHAR KDFTWRTINT KDFTWRTSTRG KDFTWRTTYPE KEOF KEOLN KFILEERROR KFILETYPE KGET KPAGE KPUT KSETFILETYPE CDEFT MACRO ASSEMBLER II, V4.0 CPASIO V 4.0 S8D536F8815A60D2A134C102700094C2B1186FCA70E201C17 YDFTRESETTAPE0000 S200617 YDFTSRCHDIR 0000 S1702BE86AAA78815EC881C27073416170145326410AEE4326A6EA4170018A60D2A084C260F17 YDFTREWRTTAPE0000 S200A17 YDFTREWRTDSK 0000 S6D0E27036F881520DEAE6A1F123189011E10AF81C61A318D0084A6A0A7805A26F910AE66AE6AEC64ED881C300AE6A0270DC1032302C603A6A0A7805A26F910AE68AE6A8602A7E2A6A0A7E2274EA6A0813A271E812F2704812E2606860AA761200AE661C10D2C04A7856C616AE426DE202AA6E44A2725E6A0C12B2707C12D27 S034F20074A27151F98E6A0C0302B0DC1032E09812D260150AE6CE70D32623920202020202020202020200000010000000000CC000000000000AE64E60E1DED66398601A767AE64E60E1701212703E70E396D0E26026F67396F67AE64E60E1701032703E70E396D0E2614EC881610A388182C0BC3001EA68B810D26026C6739 SAE646F0EA6881581CC270586FCA70E396F8815A60D102A YDFTCLOSEDSK 0000 S4C260F6D88192705C60117 YDFTWRITETAPE0000 SC6FF17 YDFTWRITETAPE0000 S39AE641700BD262786FCA70E10AE881C271D6F0E34203189011E10AF8417012D260BA7A0ECE4830001EDE426F0326239352032713430170081263C17010F2637812027F7810D27F3812C27EF31646FA0E664C10E2704A7A06C641700F0261581202708810D2704812C26E5EC8816830001ED88164F35903530326F6EA4AE66 S8DAF261C1F41343617 YENCODE 0000 S32643506326FAE628C00012705EDF8042003E7F804351032646E84AE648D11260817009F2603A7F8021700B035306E843406EC881C261335063406A60EE60DC1FD2709E68815C1AA270286FCA70E3586AE628DDC26088D6B2604810D26F817007B35306E84AE6410AE62EC881C271EEDE33089011EA680A7A0ECE4830001ED SE426F33262AE64341617FEEC326435306E84AE6610AE646FA08D96261F8D25261B810D270EE6F804E16324F1A7A06CF80420EAEC8816830001ED88168D1F351032646E8434068D1A2611EC8816C30001ED8816C3001DA68BA7E45F3586A60D4C2B18EC881610A388182D0E6D0E260BA60D2A084C270A17 YDFTREADKEYBD0000 S5F3917 YDFTRDNXTDSK 0000 S20E217 YDFTREADTAPE 0000 S20DD344033624F5FA3422A1A32EBEC421F4134041F02EC4417 YDFTDECIMAL 0000 S1F4110AE464F5F34368D2F325E354016005410AE6630648601A784EC6234368D19351632646E8410AE62308D000A4F5F34368D0635366E84010DAE6610AE64A6A0E6632707E03F2403A6635F4D27098D1C261331214A26F75D270B318D000D8D0C26035A20F2351032646E84203476A6881581CC270686FCA70E203EE60D5C S2B2A6D0E2635EC881833881E33CBA6A4A7C45CE78819270F6D0D2A1FC1FF261BC60117 YDFTWRITETAPE0000 S201417 YDFTWRITEDSK 0000 S200F6F0EA6A45C270517 YDFTSCREENOUT0000 S200317 YDFTRS232OUT 0000 S35166D0E35E0AE6410AE62EC881C271EEDE33089011EA6A0A780ECE4830001EDE426F33262AE643416170006326435306E84AE646D0E261E86FCA70EEC881C27156F0E3189011E10AF8417FF662607312183000126F43910AE648E000CCC0001343617FEF33586AE64E60F4FED6639AE66EC64E70F3934364D270B3002E680 SE1A026034A26F735B6 RCLOSE 014A RDFTCLOSE 014C RDFTEQUALNAME044C RDFTREADCHAR 021A RDFTREADFIELD01A5 RDFTREADINT 01F2 RDFTREADLN 024F RDFTREADSTRG 0290 RDFTREADTYPE 0264 RDFTRESET 0000 RDFTREWRITE 003A RDFTWRITELN 0343 RDFTWRTCHAR 032E RDFTWRTINT 0303 RDFTWRTSTRG 0356 RDFTWRTTYPE 03DC REOF 010C REOLN 0123 RFILEERROR 0104 RFILETYPE 043D RGET 0176 RPAGE 042D RPUT 0408 RSETFILETYPE 0445 PA0000 0000 JPASKEYBD KCURSOR KDFTDELAY KDFTPOLLKEY KDFTREADKEYBD KDFTRS232OUT KDFTSCREENOUT CDEFT MACRO ASSEMBLER II, V4.0 CPASKEYBD V 4.0 S3416B7FFD8327C6F63DC76830001DD762606CC00411700D28E01524F4AA7E4A762A6624910240080A7626CE417009FA761A884A484E661E7805C27E56C634D27E0C6F8CB084424FB308D00BFEBE42730C11A2F1F308D006BC1202F24308D0045C1302C1C8D78C12B2F0288404D2619CB102015CA408D67BA011A260CCA2020 S08588D5B27015CE685E7648E055E17007D86FF8D3A4C2611A6628D33A1612609C112261973011A20126D632708DC76108302BB2606CC02BC1700306F6432643401B6FFF881FE2603B7FFD935013596B7FF02B6FF008A807DFF022B028A4039867FB7FF02B6FF0043844039DD7686FFC6088E0152A7805A26FB395E5F0A5B08 S15095D202030120D0D0C5C03034013301F26FC393436327E6F0EC68FE7E46F6131881E4F5FED8816ED8818A6E48B10810F2602869FA7E48D766F6117FEC4260A6A612BF786088D6720E181032603 B S20EA340286088D583502810D27418108271781152721810C272FE688195C27BCA7A06C88198D3920B36D881927AE313F6A88198D2B20A56D88191027FF9E313F6A881986088D1920EE86FFA70E860DA7A08D0DEC8818C30001ED8818326235B634169E888108271F810D2726810C27428120254D4D2B0C81402D0681602D04 S84DF8840A78020158C040027358660A782200A8660A7801F10C51F26F69F888C0600251E8E0400EC8820ED818C05E025F620038E0400CC60609F88ED818C05FF25F97FFF02B6FF004348271017FDE5270B8113260717FDDC27FB20F53596EC648401C30400DD8839B7FFD83416C6083405F6FF22C40126F91A508D265F8D25 S5F44598D206A6126F78D183505A6E4810D26049E978D14B6FFF881FE2603B7FFD93596C60158F7FF209E95341017FE92351017FE8D39 RCURSOR 022A RDFTDELAY 010D RDFTPOLLKEY 0000 RDFTREADKEYBD0112 RDFTRS232OUT 0234 RDFTSCREENOUT01AD PA0000 0000 JPASCASST KDFTREADTAPE KDFTRESETTAPE KDFTREWRTTAPE KDFTWRITETAPE CDEFT MACRO ASSEMBLER II, V4.0 CPASCASST V 4.0 S34268D55A60E270481FF26206D881026F1A6028120270A860831881E17 YDFTEQUALNAME0000 S26E18D366D0E260586AAA7881535A6343631881ECC000FED8818C6083002A680A7A05A26F9C6076FA05A26FBAE62CCFFFFED88275F17010F35B634068D308D471700C38D144F5FED88166D0E26096D88102A0486FFA70E3586B6FF2184F7B7FF211CAFB6FFF881FE2603B7FFD9393422B6FF218A08B7FF21B7FFD8108E0000 S313F26FC1A5035A234066F88118D498D2F22108D2525106A8811A6881181A0271420EA8D1522E88D1725E86C8811A68811806026D8A7881235860F818D1E20040F818D21D681C1182203C10A396F8811390F816D881226098D1025FC8D0C24FC398D0724FC8D0325FC390C81F6FF2056398608A788148D07466A881426F839 S8DD0D68112C113393426327E31881E4F8DEE46813C26F98DD9A788108DD4A788196F8818A7E4AB8810A7616DE4270C8DC1A7A0AB61A7616AE426F48DB5A061270286FEA70E326235A63426E7881017FF1FCC559034048D346AE426FA3261863C8D2A5FA688108D24A688198D1F4D270C31881EA6A08D156A881926F71F988D S0C86558D0817FED46F881835A63426EBE4E761318D005B3420318D00333420C601A68811B7FF2010AEE4E564260CA6A0B7FF2010AC6223F6200AA6A1B7FF2010AC6225F6A6A0A788115824D5326435A68292AABACADAEAF2FAFAFAF2EADACABAAA927A6A52423222120A0202020A12223242526A RDFTREADTAPE 0059 RDFTRESETTAPE0000 RDFTREWRTTAPE002E RDFTWRITETAPE0166 PA0000 0000 JPASSTRNG KDFTCHRSTRAPP KDFTCHRSTRCPY KDFTSTRSTRAPP KDFTSTRSTRCMP KDFTSTRSTRCPY KSTRINGCOPY KSTRINGDELETE KSTRINGINSERT KSTRINGPOS CDEFT MACRO ASSEMBLER II, V4.0 CPASSTRNG V 4.0 S10AE6410AC62271F6FA4AE6210AE64E6A43404EB84E7A035044F31ABE6802707A680A7A05A26F9AEE432646E846FF80410AE646CA4E6A44F31ABA663A7A420E73406AE6610AE64E6A0E1802302E61F5D2709A6A0A18026095A20F4A6F804A1F806351632646E8410AE646FA06D672718E669AE6A4F308BE1F80A220CA680A7 SA06CF8045C6A6726EF39AE68E6844FA3662D29C3000110A3642C02ED64A36427133404EC67308BEC65318B3502E6A0E7804A26F9E6F808A364E7F80839327E10AE68E6672706E1A42303E6A45C4F30ABAFE4E6A030ABEBF80AE73F31ABACE42306A682A7A220F6AE6AE680270A10AEE4A680A7A05A26F9326239327E6F6A6F S6B10AE66E6A44F31AB10AFE410AE66312110AF66AE68E68027106C6B10ACE4220CA680A1A026E55A26F23262396F6B20F9 RDFTCHRSTRAPP0030 RDFTCHRSTRCPY002D RDFTSTRSTRAPP000A RDFTSTRSTRCMP0040 RDFTSTRSTRCPY0000 RSTRINGCOPY 0067 RSTRINGDELETE0089 RSTRINGINSERT00BC RSTRINGPOS 00F9 PA0000 0000 JPASSET KDFTSETCMP KDFTSETCONTAN KDFTSETDEFINE KDFTSETDIFF KDFTSETELEMNT KDFTSETIN KDFTSETINCLUD KDFTSETINTER KDFTSETLOAD KDFTSETRANGE KDFTSETSTORE KDFTSETUNION CDEFT MACRO ASSEMBLER II, V4.0 CPASSET V 4.0 S4D2619340454545430853504C4073404C6016AE42B035820F93261395F39ECE82230628DDBE4842702C601351032E8226E84EC6230648DC8EA84E784351032626E84EC6410A362220C30668DB3EA84E7846C6526ED351032646E843510C6206FE25A26FB6E848D10A684AAA0A7805A26F7351032E8206E84C62030E8243164 S398DF6A684A4A0A7805A26F720E48DE9A6A043A484A7805A26F620D68DDBA684A4A0A18026075A26F5C60120015F351032E8406E848DC21E1220E38DBCA6A0A18026EB5A26F720E63530C62031A5A6A234025A26F96E843510C62010AEE53502A7A05A26F932626E84 RDFTSETCMP 00BA RDFTSETCONTAN00B4 RDFTSETDEFINE005B RDFTSETDIFF 008D RDFTSETELEMNT0032 RDFTSETIN 001E RDFTSETINCLUD009B RDFTSETINTER 0080 RDFTSETLOAD 00C7 RDFTSETRANGE 0042 RDFTSETSTORE 00D6 RDFTSETUNION 0066 PA0000 0000 JTCELOAD KTCELOAD CDEFT MACRO ASSEMBLER II, V4.1 CTCELOAD Version 4.1 S1A50B7FFDF108E L006D S8EFC00ECA1ED81108C L025C S23F6108E L004C S8E00BFECA1ED81108C L0059 S23F6108E L0059 S8E00FBECA1ED81108C L0066 S23F6108E L0066 S8E00DBECA1ED81108C L006D S23F67EFC00B7FFDEAD9FA0001A50B7FFDF39B7FFDEAD9FC0041A50B7FFDF39B7FFDE6E9FFFFEB608AB8030810323014FB7FBFD8E01DABFFBF186038D5D1F13108E08A0C60BA6C0A1A0260B5A26F7A60DB7FBFA1600943088208C02DA26DFB6FBF94C810B26D5318D018917014C1701668E0400A684843FA7808C041F23F59D SBF810310270111810D26F417012C20978E02DCBFFBF17FFBF78602B7FBF98611B7FBF88E00EA8602A784B6FBFDA701B6FBF8A702F6FBF9E703FEFBF1EF049DFB7FFF404FA106102600BEBEFBF139F6FBFAB6FBFA84018100270286094CB7FBF954C11125015CF7FBF84F398DA38E01DABFFBF18DD98DACCE01DAA6C0810010 S260086ECC1C30005AEC1BFFBF3F3FBF3FDFBF52017B7FBFA8DB57FFBF7BBFBF9B7FBF917FF7EBEFBF3CE01DAA6C0A780BCFBF52729118302DA26F1BFFBF38D8F7CFBF7B6FBF7810823D3F6FBFA8E02DC3AA684814425BE8D428EFBFB6E9410BEFBF5313BA6A03402ECA1C30005AEA1BFFBF3BFFBFBF3FBF3FDFBF535028100 S26D6118302DA27B420A3108E L022D S8D3B8E0C004A26FD301F26F90EDB4FB7FF22B7FFC2B7FFC4B7FFC6B7FFC9B7FFCAB7FFCCB7FFCEB7FFD0B7FFD2398DDE86608E0400A7808C042025F9398DCF86608E0400A7808C060025F9AEA1A6A0810D27F81025FF07A78020F2054B4449534B604552524F52000400494E534552546050524F504552604449534B6C6050 S5245535360454E54455200 RTCELOAD 0000 PA0000 0000 JPASRUNTM KDECODE KDFTDECIMAL KDFTDIVIDE KDFTHEX KDFTMULTIPLY KDFTNEW KDFTSTRCTLOAD KDFTSTRUCTCMP KDFTSTRUCTMOV KENCODE KHEX KMARK KMEMAVAIL KRELEASE CDEFT MACRO ASSEMBLER II, V4.0 CPASUNTM V 4.0 S3440EE66AE6810AE64A6C0A1802604313F26F63540351032666E8435361E014353C3000132EB3410344033641F01A6A0A7C0300126F835C03440EE66AE6810AE64A6C0A780313F26F820C86D662A086C634F5FA366ED666D682A086A634F5FA368ED68396FE26FE28DE16FE2A666E6683DEDE4A665E6683DEBE4E7E4A666E6 S673DEBE4E7E46D6227064F5FA3E4EDE4ECE4AE6332696E846FE26FE26D662A026CE48DA834108E00104F5F68696968594910A3662504A3666C69301F26ED3510ED64A6E027064F5FA363ED63A6E027064F5FA364ED643934366FE24D2A086CE44F5FA361ED618620E66627313404A7805A26FB10AE62CC000A34268D9BA661 S2A01408B30A782CC000AEDE46A64270CEC6226E86D652704862DA7823265326135B6E667AE64E780EC6810AE668DA939AE6810AE64EC6658495849E366C3000144565AE7A0A6678D013934366FE24D271FE684545454548D1CE680C40F8D164A270EE6E4C8FFE7E426E7C620E7A020E13261353639CA30C1392F02CB07E7A0 S396F666F67AE64A6806FE2A7E22740A680812026066AE426F62034812D26046A61201C80302B1E8109221AA7E2EC695849ED6958495849E369EBE08900ED68A6806AE426DE6D6127064F5FA368ED68326239EC8D YDFTHEAPSTART0000 SEDF804E362ED8D YDFTHEAPSTART0000 S351032646E84EC8D YDFTHEAPSTART0000 SEDF80439EC64ED8D YDFTHEAPSTART0000 S391F40830064A38D YDFTHEAPSTART0000 S23072A07CC7FFF20024F5FED6439 RDECODE 0120 RDFTDECIMAL 00D6 RDFTDIVIDE 0097 RDFTHEX 0148 RDFTMULTIPLY 0064 RDFTNEW 01CF RDFTSTRCTLOAD001B RDFTSTRUCTCMP0000 RDFTSTRUCTMOV0038 RENCODE 017E RHEX 012E RMARK 01E2 RMEMAVAIL 01F1 RRELEASE 01EA PA0000 0000 CDEFT PASCAL II V4.1 RDFTPSCLMAIN 0000 S160001 D011E D011E D011E D011E D011E D011E S34403364EC423406CC01FFA4E0E4E0ED44325C35C034403364327BCC0001E7C8124F5FE75730423410AEC43089DE183410CC000F340617 YDFTSTRUCTCMP0000 S10260002325C35C0 F06F2 S327EEC4F3406AEC434108DB332643506ED5AEC5AED58E6574353C30001C300015D10270003EC5A3406CC000F340617 YDFTMULTIPLY 0000 SAEC43089DE27308B3410AEC43089DE183410CC000F340617 YDFTSTRUCTCMP0000 S10260004EC5A3406CC000F340617 YDFTMULTIPLY 0000 SAEC43089DE27308B341030423410CC000F340617 YDFTSTRUCTMOV0000 SCC0001E757160005 F0745 SEC5A3406CC0001E3E1ED5AEC5A3406CC020010A3E1102600064F5FED5A F0788 SEC5A3406EC5810A3E110260007CC0001E7574F5FE7C812 F0799 F076F S16FF66 F071B S325C35C034403364327B327EEC423406AEC4341017FEF832643506ED5AEC5AED58CC0001E7474F5FE757EC5A3406CC02001F025F10ACE12E015C4F3406EC5A34064F5F1F025F10ACE12F015CAAE0EAE05D1027000830D8043410AEC43089DE183410CC000F340617 YDFTSTRUCTMOV0000 S4F5FE747325C35C0 F07FB SE6574353C30001C300015D10270009EC5A3406CC000F340617 YDFTMULTIPLY 0000 SAEC43089DE34EC8B3406EC4210A3E11026000ACC0001E75716000B F0846 SEC5A3406CC000F340617 YDFTMULTIPLY 0000 SAEC43089DE27308B3410AEC43089DE183410CC000F340617 YDFTSTRUCTCMP0000 S1026000CCC0001E7574F5FE74716000D F0878 SEC5A3406CC0001E3E1ED5AEC5A3406CC020010A3E11026000E4F5FED5A F089D SEC5A3406EC5810A3E11026000FCC0001E7574F5FE747 F08AE F0884 F084E S16FF5E F0827 S30D8043410EC5A3406CC000F340617 YDFTMULTIPLY 0000 SAEC43089DE27308B3410CC000F340617 YDFTSTRUCTMOV0000 S30D8043410AEC43089DE183410CC000F340617 YDFTSTRUCTCMP0000 S102600104F5FE747 F08F6 S325C35C034403364327C4F5F30D802E68B4FED5ACC0001ED58EC583406EC5A1F025F10ACE12D015C4F3406EC5830D802E68B4F3406CC00201F025F10ACE126015CA4E0E4E05D10270011EC583406CC0001E3E1ED5820C2 F0944 SEC583406CC000110A3E1102C001230D8023410CC00013406EC583406CC00013406EC62A3E132623406AEC4341017 YSTRINGDELETE0000 S3268 F095F S325C35C03440336432E8BA30D80634108D010017 YDFTSTRSTRCPY0000 S32624F5FEDD80430D80234108D010017 YDFTSTRSTRCPY0000 S326230C8B6341030D808341017 YDFTSTRSTRCPY0000 S326230C8B634108D010017 YDFTSTRSTRCMP0000 S10260013325C35C0 F09CB S30C8B63410AEC4341017FF23326430C8B634108D010017 YDFTSTRSTRCMP0000 S10260014325C35C0 F09EC S30D8063410CC000130C8B6E68B4F340617 YDFTCHRSTRCPY0000 S326230C8B63410CC00013406CC00013406AEC4341017 YSTRINGDELETE0000 S326830C8B63410AEC4341017FED5326430C8B634108D010017 YDFTSTRSTRCMP0000 S10260015325C35C0 F0A3A SCC000130C8B6E68B4F3406CC002410A3E110260016CC0005ED584F5F30C8B6E68B4F3406CC000510A3E1102F00174F5F30C8B6E68B4FED58 F0A6C SCC0002ED56EC583406EC5610A3E4102E0018EC5630C8B6E68B4F3406CC00303406EC62A3E13262ED5AEC5A3406CC000910A3E1102C0019EC5A3406CC00073406EC62A3E13262ED5A F0AAD SECD8043406CC0010340617 YDFTMULTIPLY 0000 S3406EC5AE3E1EDD804EC56C30001ED5620A2 F0A88 S326216001A F0A53 S327E30C8B63410AEC4341017 YENCODE 0000 S32643506EDD804 F0AE2 S327E8D02012030C8B63410AEC4341017 YSTRINGPOS 0000 S32663506ED5AEC5A34064F5F10A3E11026001B4F5F30C8B6E68B4FED5A F0B1C S30C8B63410CC00013406EC5A3406AEC4341017 YSTRINGDELETE0000 S326830C8B63410AEC4341017FDB532644F5F30C8B6E68B4F3406CC000C10A3E1102C001C4F5F3406CC000C1F02350630C8B6308B1F20E784 F0B5F S30D802341030C8B6341017 YDFTSTRSTRCPY0000 S3262325C35C03440336432E89BAEC43089DE1834108D0D0C20202020202020202020202017 YDFTSTRSTRCPY0000 S32624F5FAEC4ED89DE254F5FED5ACC01FF3406EC5A10A3E4102E001DEC5A3406CC000F340617 YDFTMULTIPLY 0000 SAEC43089DE27308B3410AEC43089DE183410CC000F340617 YDFTSTRUCTMOV0000 SEC5AC30001ED5A20C8 F0BC3 S3262AEC43089FC4334108D010017 YDFTSTRSTRCMP0000 S1026001E325C35C0 F0C06 S308DF9893410AEC43089FC4334108D040353594D4F5F340617 YDFTRESET 0000 S327E308DF96C3410AEC4341017 YEOF 0000 S326435064353C30001C300014F3406AEC4E689DE004353C30001C30001A4E0E4E05D1027001F308DF939341030C8B83410CC003F340617 YDFTREADSTRG 0000 S17 YDFTREADLN 0000 S30C8B8341030C8A63410305A341030C8A83410AEC4341017FCFD326A30C8A634108D0201535F17 YDFTSTRSTRCMP0000 S26015C4F340630C8A634108D02014A5F17 YDFTSTRSTRCMP0000 S26015CAAE0EAE04F340630C8A634108D0201735F17 YDFTSTRSTRCMP0000 S26015CAAE0EAE04F340630C8A634108D02016A5F17 YDFTSTRSTRCMP0000 S26015CAAE0EAE05D1027002030C897341030C8A8341017 YDFTSTRSTRCPY0000 S3262EC5AEDC8A4327E30C8973410CC000F340617 YDFTSTRCTLOAD0000 SAEC4341017F9BA32E81135064353C30001C300015D10270021CC0001AEC4E789DE00CC0003ED89DDFE F0D22 F0CE6 S16FEF0 F0C5A S308DF85E3410AEC4341017 YCLOSE 0000 S3264325C35C03440336432E8EF327E30C8EB3410EC4A3406AEC4341017FA49326635065D1027002230D802341030C8EB341017 YDFTSTRSTRCPY0000 S3262325C35C0 F0D6A S30D80234103044341017 YDFTSTRSTRCPY0000 S3262EC483406CC000210A3E110260023EC4A3406CC000C1F025D350627064456313F26FAED5A30D802341030D802341017 YDFTSTRSTRCPY0000 SEC5A3406CC0001E3E1AEC43089FD24E68B4F340617 YDFTCHRSTRAPP0000 S3262EC4A3406CC00081F025D350627064456313F26FA3406CC000FA4E0E4E0ED5A30D802341030D802341017 YDFTSTRSTRCPY0000 SEC5A3406CC0001E3E1AEC43089FD24E68B4F340617 YDFTCHRSTRAPP0000 S3262 F0D99 SEC4A3406CC00041F025D350627064456313F26FA3406CC000FA4E0E4E0ED5A30D802341030D802341017 YDFTSTRSTRCPY0000 SEC5A3406CC0001E3E1AEC43089FD24E68B4F340617 YDFTCHRSTRAPP0000 S3262EC4A3406CC000FA4E0E4E0ED5A30D802341030D802341017 YDFTSTRSTRCPY0000 SEC5A3406CC0001E3E1AEC43089FD24E68B4F340617 YDFTCHRSTRAPP0000 S3262325C35C03440336432E9FE8830461F10EDC9FEDAECC9FEDA3406CC0002E3E1EDC9FEDAECC9FEDA3406ECF1EDC9FEDAECC9FEDAEDC9FE8430C9FEDE3410ECC9FE841F013410CC011E340617 YDFTSTRUCTMOV0000 SECC9FE84EDC9FE86ECC9FE863406CC00111F0235061F013088121F20E784ECC9FE863406CC00011F0235061F013088131F20E784ECC9FE863406CC00031F0235061F013088141F20E784ECC9FE863406CC01001F0235061F013088161F20ED8430D808341030C9FED9341017 YDFTREADCHAR 0000 S3262E6C9FEEE1DEDC9FEDC30C9FE883410ECC9FEDC4F340617 YDFTCHRSTRCPY0000 S3262ECC9FEDC3406CC00BE10A3E1102F0024ECC9FE863406ECC9FEDCE3E11F01E6881E4FEDC9FEDC30C9FE88341030C9FE88341017 YDFTSTRSTRCPY0000 SECC9FEDC4F340617 YDFTCHRSTRAPP0000 S326220BD F0F7A SECC9FE841F01341030C9FEDE3410CC011E340617 YDFTSTRUCTMOV0000 SECC9FE861F01EC881AEDD80230D804341030C9FE88341017 YDFTSTRSTRCPY0000 S3262325C35C01600253440336432E8EBAEC4AE84E689DE005D10270026325C35C0 F0FFA S30461F10EDC8ECECC8EC3406CC0002E3E1EDC8ECECC8EC3406ECF1EDC8ECECC8ECEDC8E7EC443406CC00023406EC62A3E13262ED44ECC8E71F01EC8816ED5AEC5A3406EC443406CC0001340617 YDFTMULTIPLY 0000 SE3E134064F5F1F025F10ACE12E015C4F3406EC5A3406EC443406CC0001340617 YDFTMULTIPLY 0000 SE3E13406CC00FF1F025F10ACE12D015CA4E0E4E05D10270027EC5A3406EC443406CC0001340617 YDFTMULTIPLY 0000 SE3E1ED54160028 F1088 SEC463406CC00013406EC62A3E132623406CC0001340617 YDFTMULTIPLY 0000 SED52EC523406CC00013406EC62A3E132623406CC0900340617 YDFTDIVIDE 0000 S35063506ED5AEC523406EC5A3406CC0900340617 YDFTMULTIPLY 0000 S3406EC62A3E13262ED58EC583406CC00013406EC62A3E132623406CC0100340617 YDFTDIVIDE 0000 S3506CC0001E3E1ED50EC583406EC503406CC00013406EC62A3E132623406CC0100340617 YDFTMULTIPLY 0000 S3406EC62A3E132623406CC00013406EC62A3E13262ED54EC5A3406CC0001E3E130D802E68B4FED56EC563406CC0002340617 YDFTDIVIDE 0000 S35063506EDC8EEECC8EE3406CC001010A3E1102C0029ECC8EE3406CC0001E3E1EDC8EE F117C SEC563406CC0001A4E0E4E05D1027002AEC503406CC0009E3E1ED50 F1199 SECC8E73406EC561F0235061F013088101F20E784ECC8E73406EC5A3406CC0002E3E130D802E68B4F1F0235061F013088111F20E784ECC8E73406ECC8EE1F0235061F013088121F20E784ECC8E73406EC503406CC00013406EC62A3E132621F0235061F013088131F20E784ECC8E73406CC00091F0235061F013088141F20E7 S84EC563406CC0001A4E0E4E05D1027002BECC8E73406CC00121F0235061F013088141F20E784 F1234 SECC8E73406CC01001F0235061F013088161F20ED8430D808341030C8E9341017 YDFTREADCHAR 0000 S3262 F109F SECC8E71F01E688101D3406CC00441F025F10ACE12C015C4F3406ECC8E71F01E688121D3406CC00221F025F10ACE12C015CAAE0EAE04F3406ECC8E71F01E688131D3406CC00121F025F10ACE12C015CAAE0EAE05D1027002CCC0001AEC4AE84E789DE00CC0007ED89DDFE309802341017 YDFTWRITELN 0000 SAEC4AE843098023410ECC8E71F01E688101D3406CC0006340617 YDFTWRTINT 0000 SECC8E71F01E688121D3406CC0006340617 YDFTWRTINT 0000 SECC8E71F01E688131D3406CC0006340617 YDFTWRTINT 0000 S17 YDFTWRITELN 0000 F12C5 SECC8E73406EC541F0235061F013088161F20ED8430D808341030C8E9341017 YDFTREADCHAR 0000 S3262325C35C0 F0FE6 S34403364327FAEC4E689DE005D1027002D325C35C0 F135C SECD8063406ECD808C3000110A3E11027002E30D80C3410ECD8063406EC44E3E13406ECD8063406ECD8083406EC62A3E13262340630D80A3410344017FC48326A F1372 S30D80C3410305B341017 YDFTREADCHAR 0000 S3262ECD806EDD808E65B4FEDD802ECD806C30001EDD806325C35C034403364327CEC423406AEC4EC89DDF93406EC62A3E13262ED42EC423406CC0007A4E0E4E0ED5AEC423406CC00031F025D350627064456313F26FAED42EC42ED58EC423406EC89FC311F025F10ACE127015C5D1027002F308DF0573410AEC43089FC8234 S10AEC43089FC37341030423410AEC4EC89FC3B34063089FC2B3410AEC4341017FEFE326E F141E SAEC4EC89FC2B3406EC5A58493089FE06EC8BA4E0E4E034064F5F1F025F10ACE127015CE745EC58AEC4ED89FC31325C35C0344033644F5F3406CC0051340617 YDFTMULTIPLY 0000 SAEC43089FE16308B34108D41404E4547204643422046434220434F4D204C53522046434220524F5220415352204C534C20524F4C204445432046434220494E4320545354204A4D5020434C522017 YDFTSTRSTRCPY0000 S3262CC00013406CC0051340617 YDFTMULTIPLY 0000 SAEC43089FE16308B34108D414046434220464342204E4F502053594E4346434220464342204C4252414C42535246434220444141204F52434346434220414E444353455820455847205446522017 YDFTSTRSTRCPY0000 S3262CC00023406CC0051340617 YDFTMULTIPLY 0000 SAEC43089FE16308B34108D41404252412042524E2042484920424C532042485320424C4F20424E452042455120425643204256532042504C20424D492042474520424C542042475420424C452017 YDFTSTRSTRCPY0000 S3262CC00033406CC0051340617 YDFTMULTIPLY 0000 SAEC43089FE16308B34108D41404C4541584C4541594C4541534C4541555053485350554C535053485550554C5546434220525453204142582052544920435741494D554C20464342205357492017 YDFTSTRSTRCPY0000 S3262CC00043406CC0051340617 YDFTMULTIPLY 0000 SAEC43089FE16308B34108D414053554241434D50415342434153554244414E4441424954414C44412053544120454F5241414443414F52412041444441434D50584A5352204C4458205354582017 YDFTSTRSTRCPY0000 S3262CC00053406CC0051340617 YDFTMULTIPLY 0000 SAEC43089FE16308B34108D414053554242434D50425342434241444444414E4442424954424C44422053544220454F5242414443424F524220414444424C444420535444204C4455205354552017 YDFTSTRSTRCPY0000 S3262AEC43089FD4A34108D11103530313030303936333539363335393617 YDFTSTRSTRCPY0000 S3262AEC43089FD3534108D11103031323330303030343434343535353517 YDFTSTRSTRCPY0000 S32624F5F3406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FDD6308B34108D04032C434317 YDFTSTRSTRCPY0000 S3262CC00013406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FDD6308B34108D03022C4117 YDFTSTRSTRCPY0000 S3262CC00023406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FDD6308B34108D03022C4217 YDFTSTRSTRCPY0000 S3262CC00033406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FDD6308B34108D04032C445017 YDFTSTRSTRCPY0000 S3262CC00043406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FDD6308B34108D03022C5817 YDFTSTRSTRCPY0000 S3262CC00053406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FDD6308B34108D03022C5917 YDFTSTRSTRCPY0000 S3262CC00063406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FDD6308B34108D03022C5517 YDFTSTRSTRCPY0000 S3262CC00073406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FDD6308B34108D04032C504317 YDFTSTRSTRCPY0000 S32624F5F3406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD76308B3410CC0044340617 YDFTCHRSTRCPY0000 S3262CC00013406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD76308B3410CC0058340617 YDFTCHRSTRCPY0000 S3262CC00023406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD76308B3410CC0059340617 YDFTCHRSTRCPY0000 S3262CC00033406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD76308B3410CC0055340617 YDFTCHRSTRCPY0000 S3262CC00043406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD76308B3410CC0053340617 YDFTCHRSTRCPY0000 S3262CC00053406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD76308B34108D0302504317 YDFTSTRSTRCPY0000 S3262CC00063406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD76308B3410CC003F340617 YDFTCHRSTRCPY0000 S3262CC00073406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD76308B3410CC003F340617 YDFTCHRSTRCPY0000 S3262CC00083406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD76308B3410CC0041340617 YDFTCHRSTRCPY0000 S3262CC00093406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD76308B3410CC0042340617 YDFTCHRSTRCPY0000 S3262CC000A3406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD76308B34108D0302434317 YDFTSTRSTRCPY0000 S3262CC000B3406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD76308B34108D0302445017 YDFTSTRSTRCPY0000 S3262CC000C3406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD76308B3410CC003F340617 YDFTCHRSTRCPY0000 S3262CC000D3406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD76308B3410CC003F340617 YDFTCHRSTRCPY0000 S3262CC000E3406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD76308B3410CC003F340617 YDFTCHRSTRCPY0000 S3262CC000F3406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD76308B3410CC003F340617 YDFTCHRSTRCPY0000 S32624F5F3406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD5E308B3410CC0058340617 YDFTCHRSTRCPY0000 S3262CC00013406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD5E308B3410CC0059340617 YDFTCHRSTRCPY0000 S3262CC00023406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD5E308B3410CC0055340617 YDFTCHRSTRCPY0000 S3262CC00033406CC0006340617 YDFTMULTIPLY 0000 SAEC43089FD5E308B3410CC0053340617 YDFTCHRSTRCPY0000 S32624F5F58493406CC00011F023506AEC43089FE06308B1F20ED84CC000158493406CC00021F023506AEC43089FE06308B1F20ED84CC000258493406CC00041F023506AEC43089FE06308B1F20ED84CC000358493406CC00081F023506AEC43089FE06308B1F20ED84CC000458493406CC00101F023506AEC43089FE06308B S1F20ED84CC000558493406CC00201F023506AEC43089FE06308B1F20ED84CC000658493406CC00401F023506AEC43089FE06308B1F20ED84CC000758493406CC00801F023506AEC43089FE06308B1F20ED84AEC43089FD2434108D11103031323334353637383941424344454617 YDFTSTRSTRCPY0000 S3262325C35C016003034403364AEC4EC1A3406CC0001E3E1AEC4AE843089FD4AE68B4F3406CC00303406EC62A3E13262EDD804AEC4EC980C10830016102700311083001710260032 F1BC6 SCC0002EDD804160033 F1BCE S1083001A102700341083001C10260035 F1BDF SCC0003EDD804160036 F1BE7 S1083001E102700371083001F10260038 F1BF8 SCC0008EDD804160039 F1C00 S108300301027003A108300311027003B108300321027003C108300331026003D F1C21 F1C19 F1C11 SCC0009EDD80416003E F1C29 S108300341027003F108300351027004010830036102700411083003710260042 F1C4A F1C42 F1C3A SCC0007EDD804160043 F1C52 S10830083102700441083008C102700451083008E10270046108300C310270047108300CC10270048108300CE10260049 F1C83 F1C7B F1C73 F1C6B F1C63 SCC0004EDD80416004A F1C8B S1083008D1026004BCC0001EDD804 F1C9C F1C94 F1C5B F1C32 F1C09 F1BF0 F1BD7 S30D80234108D010017 YDFTSTRSTRCPY0000 S3262ECD8043406CC00031F025F10ACE126015C4F3406ECD8043406CC00041F025F10ACE126015CAAE0EAE05D1027004C30D8023410CC0023340617 YDFTCHRSTRCPY0000 S3262 F1CDD SECD8043406CC000510A3E11026004D30D8023410CC003C340617 YDFTCHRSTRCPY0000 S3262 F1CFB SAEC4EC980E3406CC00011F025F10ACE126015C4F3406EC980C3406CC00201F025F10ACE12C015CA4E0E4E04F3406EC980C3406CC00301F025F10ACE12F015CA4E0E4E05D1027004ECC0002EDD804 F1D52 S325C35C03440336432E8CB4F5FAEC4E798124F5FE798104F5FEDD8044F5FED980A308DE2843410AEC4AE843089FCD33410AEC4AE843089FC393410AEC43088163410AEC4AE84EC89FC41340630563410AEC4AE84341017F59A326EEC46108300001026004F30D80234108D010017 YDFTSTRSTRCPY0000 S3262160050 F1DBD S1083000110260051EC563406CC007F10A3E1102C0052EC563406CC01003406EC62A3E13262ED56 F1DE3 SAEC4EC88163406EC56E3E13406CC00023406AEC4AE843089DDDA3410CC0004340617 YDFTSTRCTLOAD0000 S30D8023410AEC4AE84341017EF22326CAEC4EC88163406EC56E3E1ED980ACC0001EDD804CC0001E79812160053 F1DD5 S1083000210260054308DE1B03410AEC4AE843089FCD33410AEC4AE843089FC393410AEC43088163410AEC4AE84EC89FC41340630543410AEC4AE84341017F4C6326EEC563406CC0100340617 YDFTMULTIPLY 0000 S3406EC54E3E1ED52AEC4EC88163406EC52E3E13406CC00023406AEC4AE843089DDDA3410CC0004340617 YDFTSTRCTLOAD0000 S30D8023410AEC4AE84341017EE7B326CAEC4EC88163406EC52E3E1ED980ACC0002EDD804CC0001E79812160055 F1E4D S1083000310260056EC563406CC00013406AEC4AE843089DDD13410CC0004340617 YDFTSTRCTLOAD0000 S30D8023410AEC4AE84341017EE2B326CEC56AEC4ED980ACC0001EDD804CC0001E79810160057 F1EF4 S1083000410260058308DE0C03410AEC4AE843089FCD33410AEC4AE843089FC393410AEC43088163410AEC4AE84EC89FC41340630543410AEC4AE84341017F3D6326EEC563406CC0100340617 YDFTMULTIPLY 0000 S3406EC54E3E1ED52EC523406CC00023406AEC4AE843089DDD13410CC0004340617 YDFTSTRCTLOAD0000 S30D8023410AEC4AE84341017ED94326CEC52AEC4ED980ACC0002EDD804CC0001E79810160059 F1F3D S108300051026005AEC563406CC00013406AEC4AE843089DDDA3410CC0004340617 YDFTSTRCTLOAD0000 S30D8023410AEC4AE84341017ED4B326CEC56AEC4ED980ACC0001EDD804CC0001E7981216005B F1FD4 S108300061026005C308DDFE03410AEC4AE843089FCD33410AEC4AE843089FC393410AEC43088163410AEC4AE84EC89FC41340630543410AEC4AE84341017F2F6326EEC563406CC0100340617 YDFTMULTIPLY 0000 S3406EC54E3E1ED52EC523406CC00023406AEC4AE843089DDDA3410CC0004340617 YDFTSTRCTLOAD0000 S30D8023410AEC4AE84341017ECB4326CEC52AEC4ED980ACC0002EDD804CC0001E7981216005D F201D S108300071026005EEC56AEC4ED980A30C8DD34108D010017 YDFTSTRSTRCPY0000 S3262CC00063406CC0006340617 YDFTMULTIPLY 0000 SAEC4AE843089FDD6308B34108D03022C5517 YDFTSTRSTRCPY0000 S3262CC0001EDD804AEC4EC980C3406CC003510A3E1102C005FCC00063406CC0006340617 YDFTMULTIPLY 0000 SAEC4AE843089FDD6308B34108D03022C5317 YDFTSTRSTRCPY0000 S3262 F2102 S4F5FED54CC00073406EC5410A3E4102E0060EC563406EC545849AEC4AE843089FE06EC8BA4E0E4E034064F5F10A3E11027006130C8DD341030C8DD341017 YDFTSTRSTRCPY0000 SEC543406CC0006340617 YDFTMULTIPLY 0000 SAEC4AE843089FDD6308B341017 YDFTSTRSTRAPP0000 S3262 F2158 SEC54C30001ED5420A3 F2137 S326230C8DD34108D010017 YDFTSTRSTRCMP0000 S102600624F5FAEC4E79814160063 F219C S30C8DD3410CC00013406CC00013406AEC4AE84341017 YSTRINGDELETE0000 S3268 F21A6 S30D802341030C8DD341017 YDFTSTRSTRCPY0000 S3262160064 F20B4 S1083000810260065EC56AEC4ED980ACC0001EDD80430C8DD3410EC563406CC00041F025D350627064456313F26FA3406CC0006340617 YDFTMULTIPLY 0000 SAEC4AE843089FD76308B341017 YDFTSTRSTRCPY0000 SCC002C340617 YDFTCHRSTRAPP0000 SEC563406CC000FA4E0E4E03406CC0006340617 YDFTMULTIPLY 0000 SAEC4AE843089FD76308B341017 YDFTSTRSTRAPP0000 S3262CC000130C8DDE68B4F3406CC003F1F025F10ACE126015C4F3406CC000330C8DDE68B4F3406CC003F1F025F10ACE126015CAAE0EAE04F3406CC000430C8DDE68B4F3406CC003F1F025F10ACE126015CAAE0EAE05D102700664F5FAEC4E79814 F229F S30D802341030C8DD341017 YDFTSTRSTRCPY0000 S3262160067 F21DA S1083000910260068CC0001EDD804EC563406CC0060A4E0E4E03406CC00051F025D350627064456313F26FAED5AEC563406CC008010A3E1102F0069EC563406CC001FA4E0E4E0ED58EC583406CC000F10A3E1102C006AEC583406CC00203406EC62A3E13262ED58 F230E SEC583406CC0003340630C8DD3410AEC4AE84341017 YDECODE 0000 S326830C8DD341030C8DD341017 YDFTSTRSTRCPY0000 SCC002C340617 YDFTCHRSTRAPP0000 SEC5A3406CC0006340617 YDFTMULTIPLY 0000 SAEC4AE843089FD5E308B341017 YDFTSTRSTRAPP0000 S3262EC58AEC4ED980A16006B F22F3 S4F5FE7C8C7EC563406CC0010A4E0E4E03406CC001010A3E11026006CCC0001E7C8C7 F2390 SEC563406CC000FA4E0E4E0ED584F5FAEC4ED980AEC58108300001026006D30C8DD3410CC002C340617 YDFTCHRSTRCPY0000 SEC5A3406CC0006340617 YDFTMULTIPLY 0000 SAEC4AE843089FD5E308B341017 YDFTSTRSTRAPP0000 SCC002B340617 YDFTCHRSTRAPP0000 S326216006E F23B4 S108300011026006F30C8DD3410CC002C340617 YDFTCHRSTRCPY0000 SEC5A3406CC0006340617 YDFTMULTIPLY 0000 SAEC4AE843089FD5E308B341017 YDFTSTRSTRAPP0000 S8D03022B2B17 YDFTSTRSTRAPP0000 S3262160070 F23F1 S108300021026007130C8DD34108D03022C2D17 YDFTSTRSTRCPY0000 SEC5A3406CC0006340617 YDFTMULTIPLY 0000 SAEC4AE843089FD5E308B341017 YDFTSTRSTRAPP0000 S3262160072 F242E S108300031026007330C8DD34108D04032C2D2D17 YDFTSTRSTRCPY0000 SEC5A3406CC0006340617 YDFTMULTIPLY 0000 SAEC4AE843089FD5E308B341017 YDFTSTRSTRAPP0000 S3262160074 F2463 S108300041026007530C8DD3410CC002C340617 YDFTCHRSTRCPY0000 SEC5A3406CC0006340617 YDFTMULTIPLY 0000 SAEC4AE843089FD5E308B341017 YDFTSTRSTRAPP0000 S3262160076 F2499 S108300051026007730C8DD34108D0302422C17 YDFTSTRSTRCPY0000 SEC5A3406CC0006340617 YDFTMULTIPLY 0000 SAEC4AE843089FD5E308B341017 YDFTSTRSTRAPP0000 S3262160078 F24CE S108300061026007930C8DD34108D0302412C17 YDFTSTRSTRCPY0000 SEC5A3406CC0006340617 YDFTMULTIPLY 0000 SAEC4AE843089FD5E308B341017 YDFTSTRSTRAPP0000 S326216007A F2503 S108300071026007B4F5FAEC4E7981416007C F2538 S108300081026007D308DDAB33410AEC4AE843089FCD33410AEC4AE843089FC393410AEC43088163410AEC4AE84EC89FC41340630543410AEC4AE84341017EDC9326EEC54AEC4ED980ACC0002EDD804CC0001E79810EC543406CC00013406AEC4AE843089DDDA3410CC0004340617 YDFTSTRCTLOAD0000 S30C8DD3410AEC4AE84341017E788326C30C8DD341030C8DD341017 YDFTSTRSTRCPY0000 SCC002C340617 YDFTCHRSTRAPP0000 SEC5A3406CC0006340617 YDFTMULTIPLY 0000 SAEC4AE843089FD5E308B341017 YDFTSTRSTRAPP0000 S326216007E F254A S108300091026007F308DD9FE3410AEC4AE843089FCD33410AEC4AE843089FC393410AEC43088163410AEC4AE84EC89FC41340630543410AEC4AE84341017ED14326E308DD9C43410AEC4AE843089FCD33410AEC4AE843089FC393410AEC43088163410AEC4AE84EC89FC41340630523410AEC4AE84341017ECDA326EEC5434 S06CC0100340617 YDFTMULTIPLY 0000 S3406EC52E3E1ED56CC0003EDD804EC56AEC4ED980ACC0001E79810EC563406CC00023406AEC4AE843089DDD13410CC0004340617 YDFTSTRCTLOAD0000 S30C8DD3410AEC4AE84341017E685326C30C8DD341030C8DD341017 YDFTSTRSTRCPY0000 SCC002C340617 YDFTCHRSTRAPP0000 SEC5A3406CC0006340617 YDFTMULTIPLY 0000 SAEC4AE843089FD5E308B341017 YDFTSTRSTRAPP0000 S3262160080 F25FF S1083000A102600814F5FAEC4E79814160082 F2702 S1083000B1026008330C8DD34108D0302442C17 YDFTSTRSTRCPY0000 SEC5A3406CC0006340617 YDFTMULTIPLY 0000 SAEC4AE843089FD5E308B341017 YDFTSTRSTRAPP0000 S3262160084 F2714 S1083000C10260085308DD8B43410AEC4AE843089FCD33410AEC4AE843089FC393410AEC43088163410AEC4AE84EC89FC41340630543410AEC4AE84341017EBCA326EEC543406CC007F10A3E1102C0086EC543406CC01003406EC62A3E13262ED54 F2791 SCC0002EDD804EC543406AEC4EC8816E3E1ED980ACC0001E79810EC980A3406CC00013406AEC4AE843089DDDA3410CC0004340617 YDFTSTRCTLOAD0000 S30C8DD3410AEC4AE84341017E562326C30C8DD341030C8DD341017 YDFTSTRSTRCPY0000 S8D05042C50435217 YDFTSTRSTRAPP0000 S3262CC0001AEC4E79812160087 F2749 S1083000D10260088308DD7E93410AEC4AE843089FCD33410AEC4AE843089FC393410AEC43088163410AEC4AE84EC89FC41340630543410AEC4AE84341017EAFF326E308DD7AF3410AEC4AE843089FCD33410AEC4AE843089FC393410AEC43088163410AEC4AE84EC89FC41340630523410AEC4AE84341017EAC5326EEC5434 S06CC0100340617 YDFTMULTIPLY 0000 S3406EC52E3E1ED56CC0003EDD804EC563406AEC4EC8816E3E1ED980ACC0001E79810EC980A3406CC00023406AEC4AE843089DDDA3410CC0004340617 YDFTSTRCTLOAD0000 S30C8DD3410AEC4AE84341017E468326C30C8DD341030C8DD341017 YDFTSTRSTRCPY0000 S8D05042C50435217 YDFTSTRSTRAPP0000 S3262CC0001AEC4E79812160089 F2814 S1083000E1026008A4F5FAEC4E7981416008B F290E S1083000F1026008CEC563406CC009F10A3E11026008D308DD6CF3410AEC4AE843089FCD33410AEC4AE843089FC393410AEC43088163410AEC4AE84EC89FC41340630543410AEC4AE84341017E9E5326E308DD6953410AEC4AE843089FCD33410AEC4AE843089FC393410AEC43088163410AEC4AE84EC89FC41340630523410 SAEC4AE84341017E9AB326EEC543406CC0100340617 YDFTMULTIPLY 0000 S3406EC52E3E1ED56EC56AEC4ED980ACC0003EDD804EC563406CC00023406AEC4AE843089DDDA3410CC0004340617 YDFTSTRCTLOAD0000 S30C8DD3410AEC4AE84341017E35C326CCC0001AEC4E7981016008E F292E S4F5FAEC4E79814 F29F9 F2920 F2918 F2906 F280C F2741 F270C F26FA F25F7 F2542 F2530 F24FB F24C6 F2491 F245B F2426 F23E9 SE6C8C75D1027008F30C8C83410CC005B340617 YDFTCHRSTRCPY0000 S30C8DD341017 YDFTSTRSTRAPP0000 SCC005D340617 YDFTCHRSTRAPP0000 S326230C8DD341030C8C8341017 YDFTSTRSTRCPY0000 S32624F5FAEC4E79812 F2A08 F2374 S30D802341030C8DD341017 YDFTSTRSTRCPY0000 S3262 F22C0 F22B8 F21D2 F20AC F2015 F1FCC F1F35 F1EEC F1E45 F1DCD SAEC4E698144353C30001C300015D102700904F5FEDD804 F2A5E S325C35C034403364AEC43098083410AEC43088EA3410AEC4341017F10F3266AEC4EC980834063098063410AEC43088AA3410AEC4341017F2C03268AEC43098023410AEC43088EA341017 YDFTSTRSTRCPY0000 SAEC43088AA341017 YDFTSTRSTRAPP0000 S3262325C35C034403364AEC4EC980C3406CC00BF1F025F10ACE12C015C5D10270091EC183406CC000E1F025F10ACE126015C5D1027009230980434108D04034C445317 YDFTSTRSTRCPY0000 S3262160093 F2AF0 SAEC4EC183406CC000F1F025F10ACE126015C4F3406EC1A3406CC000C1F025F10ACE127015CA4E0E4E05D1027009430980434108D040353545317 YDFTSTRSTRCPY0000 S3262160095 F2B31 S4F5FAEC4E79814 F2B44 F2B03 S160096 F2ADB SAEC4EC980C3406CC007F1F025F10ACE12C015C5D10270097EC183406CC000310A3E11026009830980434108D0504434D504417 YDFTSTRSTRCPY0000 S3262160099 F2B74 SAEC4EC183406CC000C10A3E11026009A30980434108D0504434D505917 YDFTSTRSTRCPY0000 S326216009B F2B98 SAEC4EC183406CC000E10A3E11026009C30980434108D04034C445917 YDFTSTRSTRCPY0000 S326216009D F2BBC SAEC4EC183406CC000F1F025F10ACE126015C4F3406EC1A3406CC00081F025F10ACE127015CA4E0E4E05D1027009E30980434108D040353545917 YDFTSTRSTRCPY0000 S326216009F F2BFD S4F5FAEC4E79814 F2C10 F2BCF F2BAC F2B88 S1600A0 F2B66 SAEC4EC980C3406CC003F10A3E1102600A130980434108D05045357493217 YDFTSTRSTRCPY0000 S32621600A2 F2C2B SAEC4EC980C3406CC00201F025F10ACE12C015C4F3406EC980C3406CC00301F025F10ACE12F015CA4E0E4E05D102700A33098023410CC004C340617 YDFTCHRSTRCPY0000 SAEC4309804341017 YDFTSTRSTRAPP0000 S3262AEC43098043410AEC4309802341017 YDFTSTRSTRCPY0000 S32621600A4 F2C6F S4F5FAEC4E79814 F2C9E F2C3F F2C1A F2B4E SAEC4E698145D102700A53098083410AEC43088EA3410AEC4341017EECD3266AEC4EC980834063098063410AEC43088AA3410AEC4341017F07E3268AEC43098023410AEC43088EA341017 YDFTSTRSTRCPY0000 SAEC43088AA341017 YDFTSTRSTRAPP0000 S3262 F2CAF S325C35C034403364AEC4EC980C3406CC007F1F025F10ACE12C015C4F3406EC980C3406CC00C01F025F10ACE12F015CA4E0E4E05D102700A6EC183406CC000310A3E1102600A730980434108D0504434D505517 YDFTSTRSTRCPY0000 S32621600A8 F2D43 SAEC4EC183406CC000C10A3E1102600A930980434108D0504434D505317 YDFTSTRSTRCPY0000 S32621600AA F2D67 S4F5FAEC4E79814 F2D7B F2D57 S1600AB F2D35 SAEC4EC980C3406CC003F10A3E1102600AC30980434108D05045357493317 YDFTSTRSTRCPY0000 S32621600AD F2D96 S4F5FAEC4E79814 F2DAA F2D85 SAEC4E698145D102700AE3098083410AEC43088EA3410AEC4341017EDC13266AEC4EC980834063098063410AEC43088AA3410AEC4341017EF723268AEC43098023410AEC43088EA341017 YDFTSTRSTRCPY0000 SAEC43088AA341017 YDFTSTRSTRAPP0000 S3262 F2DBB S325C35C0 F1B8F S3440336432E8AECC0001E7D8144F5FEDD80E4F5FEDD80630C8EA34108D010017 YDFTSTRSTRCPY0000 S3262308DD1CC3410AEC43089FCD33410AEC43089FC39341030C8163410AEC4EC89FC41340630D80C3410AEC4341017E4EB326EECD80CEDC8ECECD80C3406CC00101F025F10ACE126015C5D102700AFCC0001EDD80E F2E7E SECD80C3406CC00111F025F10ACE126015C5D102700B0CC0002EDD80E F2E9A SECD80E34064F5F10A3E1102C00B1308DD14F3410AEC43089FCD33410AEC43089FC39341030C8163410AEC4EC89FC41340630D80C3410AEC4341017E46E326E F2EAE SECD80C3406CC00041F025D350627064456313F26FAED5AECD80C3406CC000FA4E0E4E0ED58EC5A3406CC00021F025D350627064456313F26FAED56EC5A3406CC0003A4E0E4E0ED54EC583406CC00021F025D350627064456313F26FAED52EC583406CC0003A4E0E4E0ED50EC5A3406CC0001E3E1AEC43089FD35E68B4F3406 SCC00303406EC62A3E13262EDC8EEECC8EE3406CC0051340617 YDFTMULTIPLY 0000 SAEC43089FE16308B3410EC583406CC0004340617 YDFTMULTIPLY 0000 S3406CC0001E3E13406CC0004340630D8043410AEC4341017 YSTRINGCOPY 0000 S326ACC000430D804E68B4F3406CC002010A3E1102600B24F5F3406CC00031F02350630D804308B1F20E784 F2FC0 SECD80C3406CC001C10A3E1102600B330D80434108D0605414E44434317 YDFTSTRSTRCPY0000 S3262 F2FE3 SECD80C3406CC008D10A3E1102600B430D80434108D040342535217 YDFTSTRSTRCPY0000 S3262 F3004 SECD80C3406CC008710A3E1102600B530D80434108D040346434217 YDFTSTRSTRCPY0000 S3262 F3023 SECD80C3406CC008F10A3E1102600B630D80434108D040346434217 YDFTSTRSTRCPY0000 S3262 F3042 SECD80C3406CC00C710A3E1102600B730D80434108D040346434217 YDFTSTRSTRCPY0000 S3262 F3061 SECD80C3406CC00CD10A3E1102600B830D80434108D040346434217 YDFTSTRSTRCPY0000 S3262 F3080 SECD80C3406CC00CF10A3E1102600B930D80434108D040346434217 YDFTSTRSTRCPY0000 S3262 F309F SEC5A3406CC00041F025F10ACE126015C4F3406EC583406CC000E1F025F10ACE127015CA4E0E4E05D102700BA30D804341030D804341017 YDFTSTRSTRCPY0000 SCC0041340617 YDFTCHRSTRAPP0000 S3262 F30DB SEC5A3406CC00051F025F10ACE126015C4F3406EC583406CC000E1F025F10ACE127015CA4E0E4E05D102700BB30D804341030D804341017 YDFTSTRSTRCPY0000 SCC0042340617 YDFTCHRSTRAPP0000 S3262 F311E SECD80C3406CC005E1F025F10ACE126015C4F3406ECD80C3406CC004E1F025F10ACE126015CAAE0EAE05D102700BC30D80434108D040346434217 YDFTSTRSTRCPY0000 S3262 F3163 SCC000130D804E68B4F3406CC004610A3E1102600BD4F5FE7D814 F3188 SCC000130D804E68B4F3406CC004610A3E1102700BEECD80E34064F5F10A3E1102600BF344017F8B232621600C0 F31B0 SECD80E3406CC000110A3E1102600C1344017F8F132621600C2 F31C9 S344017FB293262 F31D3 F31BA F31A2 SE6D8144353C30001C300015D102700C330D80434108D040346434217 YDFTSTRSTRCPY0000 S3262ECC8EC3406CC00013406AEC43089DDDA3410CC0004340617 YDFTSTRCTLOAD0000 S30D8023410AEC4341017DB28326CECC8ECEDD80C4F5FEDD80ACC0001EDD8064F5FEDD80E1600C4 F31EA SECD8063406CC0001E3E1EDD806ECD80E34064F5F10A3E1102C00C5ECD8063406CC0001E3E1EDD806 F3256 F323B S325C35C034403364327CEC423406CC0007A4E0E4E0ED5AEC423406CC00031F025D350627064456313F26FAED42EC42ED58EC423406AEC4EC89FC2F1F025F10ACE127015C5D102700C6308DCF8D3410AEC43089FC823410AEC43089FC35341030423410AEC4EC89FC3F34063089FC293410AEC4341017E070326E F32AC SAEC4EC89FC293406EC5A58493089FE06EC8BA4E0E4E034064F5F1F025F10ACE127015CE745EC58AEC4ED89FC2F325C35C034403364327CEC423406CC0007A4E0E4E0ED5AEC423406CC00031F025D350627064456313F26FAED42EC423406AEC4EC89FC2D1F025F10ACE127015C5D102700C7308DD0083410AEC43089FC8234 S10AEC43089FC33341030423410AEC4EC89FC3D34063089FC273410AEC4341017DFCD326E F334F SAEC4EC89FC273406EC5A58493089FE06EC8BA4E0E4E034064F5F1F025F10ACE127015CE745EC58AEC4ED89FC2D325C35C01600C834403364EC423406CC00201F025F10ACE12E015C4F3406EC423406CC005A1F025F10ACE12D015CA4E0E4E04F3406EC423406CC00611F025F10ACE12E015C4F3406EC423406CC007A1F025F S10ACE12D015CA4E0E4E0AAE0EAE0E745325C35C034403364EC423406CC00211F025F10ACE12E015C4F3406EC423406CC005A1F025F10ACE12D015CA4E0E4E04F3406EC423406CC00611F025F10ACE12E015C4F3406EC423406CC007A1F025F10ACE12D015CA4E0E4E0AAE0EAE04F3406EC423406CC00221F025F10ACE12701 S5CA4E0E4E04F3406EC423406CC00271F025F10ACE127015CA4E0E4E0E745325C35C01600C93440336432E8EBAEC4AE84AE843089DDE53410CC000A34064F5F340630C8E73410AEC4AE84AE84341017 YDECODEREAL 0000 S326A4F5F34064F5F30C8E7E68B8300011F02350630C8E7308B1F20E78430C8E73410AEC4AE84AE84341017D4023264AEC4309828341030C8E734104F5F340617 YDFTWRTSTRG 0000 SCC00203406CC0001340617 YDFTWRTCHAR 0000 S3262AEC4AE84AE843089DDE53410AEC4AE84AE843089DDE5341017 YDFTREALLOAD 0000 SCC0001340617 YDFTINTTOREAL0000 S17 YDFTREALADD 0000 S17 YDFTREALSTORE0000 S325C35C0 F34A3 S3440336432E8EC30C8EC34108D010017 YDFTSTRSTRCPY0000 S3262327EECC8263406AEC4AE84341017FCF6326435064F3406327EECC8263406AEC4AE84341017FD8632643506AAE0EAE05D102700CACC0002EDC8EAECC8263406CC01001F025F10ACE12F015C4F3406ECC82634064F5F1F025F10ACE12E015CA4E0E4E05D102700CBCC0001EDC8EA F35C8 SECC8263406ECC8EA340630C8223410CC0004340617 YDFTSTRCTLOAD0000 S30C8EC3410AEC4AE84341017D755326C F3595 S30C8EC34108D01005F17 YDFTSTRSTRCMP0000 S27015C4F3406304234108D01005F17 YDFTSTRSTRCMP0000 S27015CAAE0EAE05D102700CCAEC4AE84E689DDF05D102700CD344017FE733262 F362B S30D828341030C8EC34104F5F340617 YDFTWRTSTRG 0000 SCC00203406CC0001340617 YDFTWRTCHAR 0000 S304234104F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 SAEC4EC89FED33406CC0001E3E1ED89FED3EC89FED33406AEC4AE84EC89DDF11F025F10ACE126015C4F34063089FC5834108D04033A2D335F17 YDFTSTRSTRCMP0000 S27015CA4E0E4E05D102700CE327E8D02012FAEC4AE843089FC583410AEC4AE84341017 YSTRINGPOS 0000 S32663506EDC8EA327E8D02012EAEC4AE843089FC583410AEC4AE84341017 YSTRINGPOS 0000 S32663506EDC8E8ECC8EA34064F5F10A3E1102600CF4F5FAEC4AE843089FC58E68B4F3406CC0001E3E1EDC8EA F36F3 SECC8E834064F5F10A3E1102600D04F5FAEC4AE843089FC58E68B4F3406CC0001E3E1EDC8E8 F3718 SECC8E83406ECC8EA10A3E1102F00D1ECC8E8EDC8EA F373E S327E8D02013AAEC4AE843089FC583410AEC4AE84341017 YSTRINGPOS 0000 S32663506EDC8E8ECC8E834064F5F10A3E1102600D24F5FAEC4AE843089FC58E68B4F3406CC0001E3E1EDC8E8 F3772 SECC8E83406ECC8EA10A3E1102F00D3ECC8E8EDC8EA F3798 SECC8EA3406CC00013406EC62A3E13262EDC8EA30D8283410AEC4AE84341017 YCLOSE 0000 S3264ECC8EA3406ECC8EAAEC4AE843089FC58E68B4FC300011F023506AEC4AE843089FC58308B1F20E78430D8283410AEC4AE843089FC5834108D040341534D4F5F340617 YDFTREWRITE 0000 S4F5FAEC4ED89FED3 F36A5 F361E S327E30D8283410AEC4AE84341017 YFILEERROR 0000 S3264CC00054353C3000110A3E1102600D4CC0001AEC4AE84E789DE00CC0005ED89DDFE F382E S327E30D8283410AEC4AE84341017 YFILEERROR 0000 S3264CC00024353C3000110A3E1102600D5CC0001AEC4AE84E789DE00CC0006ED89DDFE F3861 S325C35C034403364308DC7823410AEC4AE843089FCD33410AEC4AE843089FC393410AEC4301A3410AEC4AE84EC89FC413406AEC430163410AEC4AE84341017DA97326EAEC4EC1A3406CC00013406EC62A3E13262ED1AAEC4AE84E689DDEF4F3406327EAEC4EC163406341017FAD332643506A4E0E4E04F3406AEC4EC163406 SCC00201F025F10ACE127015CA4E0E4E05D102700D63089FEE23410CC0027340617 YDFTCHRSTRCPY0000 SAEC4EC164F340617 YDFTCHRSTRAPP0000 S32621600D7 F3907 SAEC4EC163406CC000134068D020124CC0004340617 YDFTSTRCTLOAD0000 SAEC43089FEE23410AEC4AE84341017D3FC326C F3924 SAEC43089FF2234108D05044643422017 YDFTSTRSTRCPY0000 SAEC43089FEE2341017 YDFTSTRSTRAPP0000 S3262308DC7AE3410AEC4EC1A3406AEC4AE843089DDDA3410CC0004340617 YDFTSTRCTLOAD0000 SAEC43089FF223410CC0020340617 YDFTSTRCTLOAD0000 SAEC4341017FBAB32E82A325C35C034403364308DC6503410AEC4AE843089FCD33410AEC4AE843089FC393410AEC4301A3410AEC4AE84EC89FC413406AEC430183410AEC4AE84341017D965326E308DC6153410AEC4AE843089FCD33410AEC4AE843089FC393410AEC4301A3410AEC4AE84EC89FC413406AEC430163410AEC4 SAE84341017D92A326E308DC5DA3410AEC4AE843089FCD33410AEC4AE843089FC393410AEC4301A3410AEC4AE84EC89FC413406AEC430103410AEC4AE84341017D8EF326EAEC4EC1A3406CC00033406EC62A3E13262ED1A327EEC1A3406CC0001E3E13406AEC4AE84341017D940326435064F3406327EAEC4EC1A3406CC0001 SE3E13406AEC4AE84341017F7C132643506AAE0EAE04F3406327EAEC4EC1A3406CC0001E3E13406AEC4AE84341017F84532643506AAE0EAE04F3406AEC4AE84E689DDED4F3406327EAEC4EC183406341017F927326435064353C30001C300014F3406327EAEC4EC163406341017F90B326435064F3406327EAEC4EC10340634 S1017F8F732643506A4E0E4E0A4E0E4E0A4E0E4E0AAE0EAE04F3406AEC4EC1A3406AEC4AE84EC89DDF51F025F10ACE126015CAAE0EAE05D102700D8AEC4341017FD1D32621600D9 F3B53 SAEC4AE84E689DDEE4F3406327EAEC4EC183406341017F89C32643506A4E0E4E04F3406327EAEC4EC163406341017F88432643506A4E0E4E05D102700DAAEC43089FEE23410CC0022340617 YDFTCHRSTRCPY0000 SAEC4EC184F340617 YDFTCHRSTRAPP0000 SAEC4EC164F340617 YDFTCHRSTRAPP0000 S32621600DB F3B9C SAEC4EC183406CC0100340617 YDFTMULTIPLY 0000 S3406AEC4EC16E3E1ED18EC183406CC000234068D020124CC0004340617 YDFTSTRCTLOAD0000 SAEC43089FEE23410AEC4AE84341017D145326C F3BC5 SAEC43089FF2234108D05044644422017 YDFTSTRSTRCPY0000 SAEC43089FEE2341017 YDFTSTRSTRAPP0000 S3262308DC4F73410AEC4EC1A3406AEC4AE843089DDDA3410CC0004340617 YDFTSTRCTLOAD0000 SAEC43089FF223410CC0020340617 YDFTSTRCTLOAD0000 SAEC4341017F8F432E82AAEC4EC1A3406CC0001E3E1ED1A F3B5F S325C35C034403364327FAEC43089FF2234108D010017 YDFTSTRSTRCPY0000 S3262CC002FE75BAEC4EC1AED14CC0001ED18EC89FED53406AEC4EC1810A3E4102E00DC308DC3593410AEC4AE843089FCD33410AEC4AE843089FC393410AEC430143410AEC4AE84EC89FC413406AEC430163410AEC4AE84341017D66E326EAEC4EC183406EC161F0235063089FF22308B1F20E7844F5F34064F5FAEC43089FF S22E68B4F3406CC0001E3E11F023506AEC43089FF22308B1F20E784AEC4EC18C30001ED1816FF72 F3CA4 S3262327E8D02012FAEC43089FF223410AEC4AE84341017 YSTRINGPOS 0000 S32663506AEC4ED18327E8D0201273089FF223410AEC4AE84341017 YSTRINGPOS 0000 S32663506AEC4ED16EC1834064F5F10A3E1102600DD4F5F3089FF22E68B4F3406CC0001E3E1AEC4ED18 F3D72 SAEC4EC1634064F5F10A3E1102600DE4F5F3089FF22E68B4F3406CC0001E3E1AEC4ED16 F3D95 SAEC4EC163406EC1810A3E1102C00DFEC16ED18CC0027E75B F3DB8 S327E8D020122AEC43089FF223410AEC4AE84341017 YSTRINGPOS 0000 S32663506AEC4ED16EC1634064F5F10A3E1102600E04F5F3089FF22E68B4F3406CC0001E3E1AEC4ED16 F3DED SAEC4EC163406EC1810A3E1102C00E1EC16ED18CC0022E75B F3E10 SAEC43089FF223410CC00013406AEC4EC1834063089FEE23410AEC4AE84341017 YSTRINGCOPY 0000 S326AAEC43089FF2234108D05044643432017 YDFTSTRSTRCPY0000 SE65B4F340617 YDFTCHRSTRAPP0000 SAEC43089FEE2341017 YDFTSTRSTRAPP0000 SE65B4F340617 YDFTCHRSTRAPP0000 S3262308DC2AF3410AEC4EC1A3406AEC4AE843089DDDA3410CC0004340617 YDFTSTRCTLOAD0000 SAEC43089FF223410CC0020340617 YDFTSTRCTLOAD0000 SAEC4341017F6AC32E82AAEC4EC1A3406EC89FED5E3E13406CC00013406EC62A3E13262ED1A325C35C034403364327EAEC4EC1AED144F5FED89FED5CC0001E75B4F5FE75AAEC4EC89FED53406CC00101F025F10ACE127015C4F3406E65BA4E0E4E04F3406327EEC143406AEC4AE84341017D4BA326435064353C30001C30001 SA4E0E4E04F3406E65A4353C30001C30001A4E0E4E04F3406AEC4EC143406AEC4AE84EC89DDF51F025F10ACE127015CA4E0E4E05D102700E2308DC0AC3410AEC4AE843089FCD33410AEC4AE843089FC393410AEC430143410AEC4AE84EC89FC413406AEC430163410AEC4AE84341017D3C1326EAEC4EC89FED53406CC0001E3 SE1ED89FED5327EEC163406341017F40C32643506E75B327EAEC4EC143406AEC4AE84341017F34F326435064F3406327EAEC4EC143406AEC4AE84341017F29032643506AAE0EAE0E75A16FEFA F3F51 SAEC4EC89FED53406CC00041F025F10ACE12E015C4F3406E65B4353C30001C30001A4E0E4E05D102700E3EC89FED53406CC00013406EC62A3E13262ED89FED5 F400E SAEC4EC89FED53406CC00041F025F10ACE12E015C4F3406AEC4AE84E689DDEDA4E0E4E05D102700E4AEC4341017FC1B32621600E5 F404B SAEC4341017F94B3262 F4057 S325C35C0 F33B4 S3440336432E9FED3AEC430980234108D0D0C414E414C595A494E472E2E2E4F5F340617 YDFTWRTSTRG 0000 S3262AEC43089DDF93410CC0002340630C9FF223410AEC4341017 YHEX 0000 S3268CC0001EDC9FED3308DC06D34108D0706204F524720244F5F340617 YDFTWRTSTRG 0000 S30C9FF2234104F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 S4F5FED5A30C9FECF34108D010017 YDFTSTRSTRCPY0000 S3262AEC4341017CA993262EC5A3406CC00031F025D350627064456313F26FAED56EC56ED52EC563406AEC4EC89FC2F1F025F10ACE127015C4F3406EC563406EC89FC2D1F025F10ACE127015CAAE0EAE05D102700E6EC56ED89FC2FEC56ED89FC2D308DC0F43410AEC43089FC823410AEC43089FC35341030563410AEC4EC89 SFC3F34063089FC293410AEC4341017D1D7326E308DC1E13410AEC43089FC823410AEC43089FC33341030523410AEC4EC89FC3D34063089FC273410AEC4341017D1A6326E F4139 SAEC4E689DE005D102700E7325C35C0 F41B2 SEC5A3406CC0007A4E0E4E0ED52AEC4EC89FC2934064F5F1F025F10ACE127015C4F3406EC89FC2734064F5F1F025F10ACE127015CAAE0EAE05D102700E8305A3410CC0002340630C9FEE23410AEC4341017 YHEX 0000 S3268EC5A3406CC01001F025F10ACE12F015C4F3406EC5A34064F5F1F025F10ACE12E015CA4E0E4E05D102700E9305A3410CC0001E3E13406CC0001340630C9FEE23410AEC4341017 YHEX 0000 S3268 F4236 S30C9FF2234108D0605455155202417 YDFTSTRSTRCPY0000 S30C9FEE2341017 YDFTSTRSTRAPP0000 S3262AEC4EC89FC273406EC5258493089FE06EC8BA4E0E4E034064F5F1F025F10ACE127015C5D102700EA308DBE823410EC5A3406AEC43089DDD13410CC0004340617 YDFTSTRCTLOAD0000 S30C9FF223410CC0020340617 YDFTSTRCTLOAD0000 S344017F28732E82A F4299 SAEC4EC89FC293406EC5258493089FE06EC8BA4E0E4E034064F5F1F025F10ACE127015C5D102700EB308DBE2A3410EC5A3406AEC43089DDDA3410CC0004340617 YDFTSTRCTLOAD0000 S30C9FF223410CC0020340617 YDFTSTRCTLOAD0000 S344017F22F32E82A F42F1 F41F3 SEC5A3406CC0001E3E1ED5AEC5A3406AEC4EC89DDF910A3E11026FDB2EC89DDF5ED5AEC5A3406CC00031F025D350627064456313F26FAED56EC56ED52EC563406AEC4EC89FC2F1F025F10ACE127015C4F3406EC563406EC89FC2D1F025F10ACE127015CAAE0EAE05D102700ECEC56ED89FC2FEC56ED89FC2D308DBEA03410AE SC43089FC823410AEC43089FC35341030563410AEC4EC89FC3F34063089FC293410AEC4341017CF83326E308DBF8D3410AEC43089FC823410AEC43089FC33341030523410AEC4EC89FC3D34063089FC273410AEC4341017CF52326E F438D SAEC4E689DE005D102700ED325C35C0 F4406 SEC5A3406CC0007A4E0E4E0ED52AEC4EC89FC2934064F5F1F025F10ACE127015C4F3406EC89FC2734064F5F1F025F10ACE127015CAAE0EAE05D102700EE305A3410CC0002340630C9FEE23410AEC4341017 YHEX 0000 S3268EC5A3406CC01001F025F10ACE12F015C4F3406EC5A34064F5F1F025F10ACE12E015CA4E0E4E05D102700EF305A3410CC0001E3E13406CC0001340630C9FEE23410AEC4341017 YHEX 0000 S3268 F448A S30C9FF2234108D0605455155202417 YDFTSTRSTRCPY0000 S30C9FEE2341017 YDFTSTRSTRAPP0000 S3262AEC4EC89FC273406EC5258493089FE06EC8BA4E0E4E034064F5F1F025F10ACE127015C5D102700F0308DBC2E3410EC5A3406AEC43089DDD13410CC0004340617 YDFTSTRCTLOAD0000 S30C9FF223410CC0020340617 YDFTSTRCTLOAD0000 S344017F03332E82A F44ED SAEC4EC89FC293406EC5258493089FE06EC8BA4E0E4E034064F5F1F025F10ACE127015C5D102700F1308DBBD63410EC5A3406AEC43089DDDA3410CC0004340617 YDFTSTRCTLOAD0000 S30C9FF223410CC0020340617 YDFTSTRCTLOAD0000 S344017EFDB32E82A F4545 F4447 SEC5A3406CC0001E3E1ED5AEC5A34064F5F10A3E11026FDB6AEC430980234108D0504444F4E454F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 SAEC430980234108D1110444953415353454D424C494E472E2E2E4F5F340617 YDFTWRTSTRG 0000 S3262AEC4EC89DDF9ED5ACC0001EDC9FED5AEC4E689DE005D102700F2325C35C0 F45E2 S327EEC5A3406AEC4341017CDD4326435065D102700F3EC5A340630C9FEE1341030C9FEE0341030C9FEDF341030C9FEDD341030C9FEDB341030C9FED9341030C9FED7341030C9FED5341030C8A2341030C9FF623410AEC4341017E7CB32E81830C9FF22341030C8A2341017 YDFTSTRSTRCPY0000 SCC0020340617 YDFTCHRSTRAPP0000 S30C9FF62341017 YDFTSTRSTRAPP0000 S3262308DBAB53410EC5A3406AEC43089DDDA3410CC0004340617 YDFTSTRCTLOAD0000 S30C9FF223410CC0020340617 YDFTSTRCTLOAD0000 S344017EEBA32E82ACC0001ED56ECC9FED53406CC00013406EC62A3E132623406EC5610A3E4102E00F4EC5A3406CC0001E3E1ED5A327EEC5A3406AEC4341017CCF8326435065D102700F5308DBA433410CC002A3406CC0001340617 YDFTWRTCHAR 0000 S3262EC5A340630C9FEE1341030C9FEE0341030C9FEDF341030C9FEDD341030C9FEDB341030C9FED9341030C9FED7341030C9FED5341030C8A2341030C9FF623410AEC4341017E6DA32E81830C9FF22341030C8A2341017 YDFTSTRSTRCPY0000 SCC0020340617 YDFTCHRSTRAPP0000 S30C9FF62341017 YDFTSTRSTRAPP0000 S3262308DB9C43410EC5A3406AEC43089DDDA3410CC0004340617 YDFTSTRCTLOAD0000 S30C9FF223410CC0020340617 YDFTSTRCTLOAD0000 S344017EDC932E82A F46D8 SEC56C30001ED5616FF1D F46B7 S32621600F6 F45FC S344017F7283262 F4796 SEC5A3406CC0001E3E1ED5AEC5A3406AEC4EC89DDF510A3E1102CFE1E30980234108D0504444F4E454F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 S325C35C03440336432E8E9AEC4341017CC9F32624F5FAEC4E789DE00308DB81234103055341017 YDFTREADCHAR 0000 S3054341017 YDFTREADCHAR 0000 S3053341017 YDFTREADCHAR 0000 S3052341017 YDFTREADCHAR 0000 S3051341017 YDFTREADCHAR 0000 S3262E6544F3406CC0100340617 YDFTMULTIPLY 0000 S3406E6534FE3E1AEC4ED89DDF7E6524F3406CC0100340617 YDFTMULTIPLY 0000 S3406E6514FE3E1AEC4ED89DDF9EC89DDF93406EC89DDF7E3E13406CC00013406EC62A3E13262ED89DDF5CC7FBC4353C30001ED89FC394F5FED89DE16EC89DDF73406CC0009E3E1ED56308DB7773410AEC43089FCD33410AEC43089FC393410305634104F5F3406305A3410AEC4341017CA9C326E308DB74C3410AEC43089FC SD33410AEC43089FC393410305634104F5F340630583410AEC4341017CA71326EEC5A3406CC0100340617 YDFTMULTIPLY 0000 S3406EC58E3E1AEC4ED89DDF3EC89DDF93406CC00063406EC62A3E132624353C30001ED89FC4130C8EB3410AEC4EC89DDF7340617 YDFTINTTOREAL0000 S17 YDFTREALSTORE0000 S30C8EB341017 YDFTREALLOAD 0000 S4F5F340617 YDFTINTTOREAL0000 S17 YDFTREALCMP 0000 S102F00F730C8EB341030C8EB341017 YDFTREALLOAD 0000 S8D0605655360000017 YDFTREALLOAD 0000 S17 YDFTREALADD 0000 S17 YDFTREALSTORE0000 F4937 S30C8E53410CC0FFF340617 YDFTINTTOREAL0000 SCC0001340617 YDFTINTTOREAL0000 S17 YDFTREALADD 0000 SCC0008340617 YDFTINTTOREAL0000 S17 YDFTREALMUL 0000 S17 YDFTREALSTORE0000 S30C8E5341017 YDFTREALLOAD 0000 S4F5F340617 YDFTINTTOREAL0000 S17 YDFTREALCMP 0000 S102F00F830C8E5341030C8E5341017 YDFTREALLOAD 0000 S8D0605655360000017 YDFTREALLOAD 0000 S17 YDFTREALADD 0000 S17 YDFTREALSTORE0000 F4991 S30C8EB341017 YDFTREALLOAD 0000 S30C8E5341017 YDFTREALLOAD 0000 S17 YDFTREALCMP 0000 S102C00F9CC0001AEC4E789DE00CC0004ED89DDFE F49C6 SCC7FBC4353C30001AEC4ED89FC37CC0001ED89FC3BCC7FBC4353C30001ED89FC35CC0FFF3406CC0001E3E13406CC0001E3E1ED89FC3FCC7FBC4353C30001ED89FC33CC0FFF3406CC0001E3E13406CC2000E3E13406CC0001E3E1ED89FC3DCC7FFFED89FC2FCC7FFFED89FC2D4F5FED89FC274F5FED89FC27CC7FFFED89FC31 S4F5FED89FC2B325C35C034403364AEC4EC89DDE334064F5F10A3E1102700FACCFF223406EC89DDE3E7F1 F4A74 SAEC43098023410AEC4341017 YPAGE 0000 S3264AEC430980234108D171620202020202020202020444953545241432056322E314F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 SAEC4309802341017 YDFTWRITELN 0000 SAEC430980234108D1E1D20202028432920434F50595249474854204A554C5920313938382042594F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 SAEC4309802341017 YDFTWRITELN 0000 SAEC430980234108D1716202020202020202020204C414D20536F6674576172654F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 SAEC4309802341017 YDFTWRITELN 0000 SAEC4309802341017 YDFTWRITELN 0000 SCC00E03406AEC4341017 YCURSOR 0000 S3264AEC430980234108D0E0D534F555243452046494C453A204F5F340617 YDFTWRTSTRG 0000 SAEC43089FC6D34104F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 SAEC430980234108D0E0D4F55545055542046494C453A204F5F340617 YDFTWRTSTRG 0000 S3262AEC43089FC5834108D04033A2D3317 YDFTSTRSTRCMP0000 S102600FBAEC430980234108D070653435245454E4F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 S1600FC F4BAF SAEC43098023410AEC43089FC5834104F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 F4BCC SAEC430980234108D1A194E554D424552204F46204C494E4553205045522046494C453A4F5F340617 YDFTWRTSTRG 0000 SAEC4EC89DDF13406CC0006340617 YDFTWRTINT 0000 S17 YDFTWRITELN 0000 SAEC430980234108D0E0D53594D424F4C2046494C453A204F5F340617 YDFTWRTSTRG 0000 S3262AEC43089FC4334108D010017 YDFTSTRSTRCMP0000 S102600FDAEC430980234108D05044E4F4E454F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 S1600FE F4C54 SAEC43098023410AEC43089FC4334104F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 F4C6F SAEC430980234108D19184C4F4144494E472050524F4752414D2E2E2E4C4F414445444F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 S325C35C034403364AEC4309802341017 YDFTWRITELN 0000 SAEC4EC89DDFE10830001102600FF30980234108D0F0E535441434B204F564552464C4F574F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 S160100 F4CD4 S1083000210260101AEC430980234108D23224552524F5220494E2044454641554C542046494C452044535452414332312E4445464F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 S160102 F4CFF S1083000310260103AEC430980234108D161553594D424F4C205441424C45204F564552464C4F574F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 S160104 F4D40 S1083000410260105AEC430980234108D0C0B46494C4520544F204249474F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 S160106 F4D74 S1083000510260107AEC430980234108D0A094449534B2046554C4C4F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 S160108 F4D9E S1083000610260109AEC430980234108D0A09492F4F204552524F524F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 S16010A F4DC6 S108300071026010BAEC430980234108D13124449534B2052455155455354204552524F524F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 S16010C F4DEE SAEC43098023410AEC4EC89DDFE3406CC0006340617 YDFTWRTINT 0000 S17 YDFTWRITELN 0000 F4E17 F4DE6 F4DBE F4D96 F4D6C F4D38 F4CF7 S325C35C03440336432E9FEDB30C9FEDE34108D0D0C44535452414332312E544D508D01004F5F340617 YDFTRESET 0000 SCC0001EDC9FEDACC50003406ECC9FEDA10A3E4102E010D30C9FEDE341030C9FED7341017 YDFTREADCHAR 0000 S3262ECC9FEDAC30001EDC9FEDA20D7 F4E73 S326230C9FEDE3410AEC43089FC6D3410CC0014340617 YDFTREADSTRG 0000 S17 YDFTREADLN 0000 S30C9FEDE3410AEC43089FC583410CC0014340617 YDFTREADSTRG 0000 S17 YDFTREADLN 0000 S30C9FEDE3410AEC43089DDF13410CC0002340617 YDFTREADINT 0000 S17 YDFTREADLN 0000 S30C9FEDE3410AEC43089FC433410CC0014340617 YDFTREADSTRG 0000 S17 YDFTREADLN 0000 S30C9FEDE3410AEC43089DDCF3410CC0002340617 YDFTREADINT 0000 S17 YDFTREADLN 0000 S30C9FEDE3410AEC43089DDF03410CC0001340617 YDFTREADINT 0000 S17 YDFTREADLN 0000 S30C9FEDE3410AEC43089DDEF3410CC0001340617 YDFTREADINT 0000 S17 YDFTREADLN 0000 S30C9FEDE3410AEC43089DDEE3410CC0001340617 YDFTREADINT 0000 S17 YDFTREADLN 0000 S30C9FEDE3410AEC43089DDED3410CC0001340617 YDFTREADINT 0000 S17 YDFTREADLN 0000 S30C9FEDE3410AEC43089DDEB3410CC0002340617 YDFTREADINT 0000 S17 YDFTREADLN 0000 SAEC43089DDE53410AEC4EC89DDEB340617 YDFTINTTOREAL0000 S17 YDFTREALSTORE0000 SAEC43089DDE5341017 YDFTREALLOAD 0000 S4F5F340617 YDFTINTTOREAL0000 S17 YDFTREALCMP 0000 S102F010EAEC43089DDE53410AEC43089DDE5341017 YDFTREALLOAD 0000 S8D0605655360000017 YDFTREALLOAD 0000 S17 YDFTREALADD 0000 S17 YDFTREALSTORE0000 F4FBC S30C9FEDE3410AEC43089DDE33410CC0002340617 YDFTREADINT 0000 S17 YDFTREADLN 0000 S30C9FEDE3410AEC43089DDDA3410CC0008340617 YDFTREADSTRG 0000 S17 YDFTREADLN 0000 S30C9FEDE3410AEC43089DDD13410CC0008340617 YDFTREADSTRG 0000 S17 YDFTREADLN 0000 S30C9FEDE3410AEC4341017 YCLOSE 0000 S3264325C35C034403364308DAFBB3410AEC43089FC6D34108D040342494E4F5F340617 YDFTRESET 0000 S308DB0BE3410AEC43089FC5834108D040341534D4F5F340617 YDFTREWRITE 0000 S308DB3FD34108D0D0C44535452414332312E544D508D01004F5F340617 YDFTRESET 0000 S327E308DB3DC3410AEC4341017 YFILEERROR 0000 S32644F5F10A3E11027010FCC0001AEC4E789DE00CC0006ED89DDFE F50B1 SAEC4E689DE004353C30001C300015D10270110308DB16534108D0D0C44535452414332312E544D508D01004F5F340617 YDFTRESET 0000 F50D4 S327E308DB1443410AEC4341017 YFILEERROR 0000 S32644F5F10A3E110270111CC0001AEC4E789DE00CC0006ED89DDFE F510D SAEC4E689DE004353C30001C300015D10270112308DB22734108D0D0C44535452414332312E544D508D01004F5F340617 YDFTRESET 0000 F5130 S327E308DB2063410AEC4341017 YFILEERROR 0000 S32644F5F10A3E110270113CC0001AEC4E789DE00CC0006ED89DDFE F5169 S308DAE8434104F5F3406AEC43089FCD33410AEC43089DDFB3410AEC4341017BCFC326A308DB2D934104F5F3406AEC43089FC823410AEC43089DDFB3410AEC4341017BCD9326A325C35C034403364308DAE363410AEC4341017 YCLOSE 0000 S3264308DAF453410AEC4341017 YCLOSE 0000 S3264308DB2903410AEC4341017 YCLOSE 0000 S3264308DB1633410AEC4341017 YCLOSE 0000 S3264308DB0363410AEC4341017 YCLOSE 0000 S3264325C35C0 F0001 S3440336432E9DDD330D80234108D1E1D494E53455254204449534B20414E4420505245535320454E5445523A204F5F340617 YDFTWRTSTRG 0000 S326230D802341030C9DE013410CC0014340617 YDFTREADSTRG 0000 S17 YDFTREADLN 0000 S344017FBCE3262344017FDD03262E6C9DE004353C30001C300015D10270114344017F54D3262 F5281 S344017F7D23262E6C9DE004353C30001C300015D10270115344017EDBF3262 F52A0 SE6C9DE005D10270116344017FA033262 F52B0 S344017FF07326230D802341017 YDFTWRITELN 0000 S30D80234108D0504444F4E454F5F340617 YDFTWRTSTRG 0000 S17 YDFTWRITELN 0000 S325C35C0 PP24A7 0000 1 SDFTWRITELN 0000 S325C35C0 PP24A7 0000 2 S344017F7C13262E6C9DE004353C30001C300015D10270116344017EDAE3262 F52B1 SE6C9DE005D10270117344017F9F23262 F52C1 S344017FEF6326230D802341017 YDFTWRITELN 0000 S30D80234108D0504444F4E454F5F340617 YDFTWRTSTRG 0000 S17 YN Y:=Z; DEL:=''''; END; Z:=STRINGPOS('"',TEMPS); IF Z=0 THEN Z:=ORD(TEMPS[0])+1; IF Z>Y THEN BEGIN Y:=Z; DEL:='"'; END; STRINGCOPY(TEMPS,1,Y,TEMPS2); TEMPS:='FCC '+DEL+TEMPS2+DEL; PRINTLINE(OUTASM,X,LBHD,TEMPS); X:=X+LEN-1; END; PROCEDURE DODATA; VAR ALPHANUM,DONE:BOOLEAN; BEGIN T:=X;LEN:=0; ALPHANUM:=TRUE;DONE:=FALSE; WHILE (LEN<>16) AND ALPHANUM AND (NOT TESTPRG(T)) AND (NOT DONE) AND (T<>SEGEND) DO BEGIN READBYTE(INPRG,PRGGRANLIST,PREVINPRG,T,INPRGOFF,Z); LEN:=LEN+1; ALPHANUM:=ISALPHANUM(Z); DONE:=(TESTSYMDAT(T) OR TESTSYMADR(T)); END; IF (LEN>=4) AND (NOT ALPHANUM) THEN LEN:=LEN-1; IF LEN>=4 THEN DOFCC ELSE DOFDB; END; BEGIN WRITE('ANALYZING...'); HEX(@SEGBEG,2,TEMPS);LINE:=1; WRITELN(OUTASM,' ORG $',TEMPS); X:=0; HD:=''; LOADSYMBOLS; REPEAT Z:=X LSR 3; IF Z<>ADRCACHEADR THEN BEGIN READBYTE(SYMDATF,TMPGRANLIST,PREVDATF,X,DATFOFF,DATCACHEDAT); READBYTE(SYMADRF,TMPGRANLIST,PREVADRF,X,ADRFOFF,ADRCACHEDAT); ADRCACHEADR:=Z;DATCACHEADR:=Z; END; (*READBYTE(SYMDATF,TMPGRANLIST,PREVDATF,Z,DATFOFF,D);*) (*READBYTE(SYMADRF,TMPGRANLIST,PREVADRF,Z,ADRFOFF,A);*) IF ERROR THEN EXIT; BT:=X AND 7; (*IF (A<>0) OR (D<>0) THEN*) IF (ADRCACHEDAT<>0) OR (DATCACHEDAT<>0) THEN BEGIN HEX(@X,2,TEMPS2); IF (X<256) AND (X>=0) THEN HEX(@X+1,1,TEMPS2); TEMPS:='EQU $'+TEMPS2; IF ((DATCACHEDAT AND MASK[BT])<>0) THEN PRINTLINE(OUTASM,X,DTHD,TEMPS); IF ((ADRCACHEDAT AND MASK[BT])<>0) THEN PRINTLINE(OUTASM,X,LBHD,TEMPS); (* IF ((D AND MASK[BT])<>0) THEN PRINTLINE(OUTASM,X,DTHD,TEMPS);*) (* IF ((A AND MASK[BT])<>0) THEN PRINTLINE(OUTASM,X,LBHD,TEMPS);*) END; X:=X+1; UNTIL X=SEGBEG; X:=SEGEND; REPEAT Z:=X LSR 3; IF Z<>ADRCACHEADR THEN BEGIN READBYTE(SYMDATF,TMPGRANLIST,PREVDATF,X,DATFOFF,DATCACHEDAT); READBYTE(SYMADRF,TMPGRANLIST,PREVADRF,X,ADRFOFF,ADRCACHEDAT); ADRCACHEADR:=Z;DATCACHEADR:=Z; END; IF ERROR THEN EXIT; BT:=X AND 7; IF (ADRCACHEDAT<>0) OR (DATCACHEDAT<>0) THEN BEGIN HEX(@X,2,TEMPS2); IF (X<256) AND (X>=0) THEN HEX(@X+1,1,TEMPS2); TEMPS:='EQU $'+TEMPS2; IF ((DATCACHEDAT AND MASK[BT])<>0) THEN PRINTLINE(OUTASM,X,DTHD,TEMPS); IF ((ADRCACHEDAT AND MASK[BT])<>0) THEN PRINTLINE(OUTASM,X,LBHD,TEMPS); END; X:=X+1; UNTIL X=65536; WRITELN('DONE'); WRITE('DISASSEMBLING...'); X:=SEGBEG;LEN:=1; REPEAT IF ERROR THEN EXIT; IF TESTPRG(X) THEN BEGIN GETOPC(X,VALID,VALIDADR,VALIDDAT,PG,OPC,OPD,AM,LEN,MN1,MN2); TEMPS:=MN1+' '+MN2; PRINTLINE(OUTASM,X,LBHD,TEMPS); FOR Z:=1 TO LEN-1 DO BEGIN X:=X+1; IF TESTPRG(X) THEN BEGIN WRITE(OUTASM,'*'); GETOPC(X,VALID,VALIDADR,VALIDDAT,PG,OPC,OPD,AM,LEN,MN1,MN2); TEMPS:=MN1+' '+MN2; PRINTLINE(OUTASM,X,LBHD,TEMPS); END; END; END ELSE DODATA; X:=X+1; UNTIL X>SEGEND; WRITELN('DONE'); END; (*DISASSEMBLE*) %L PROCEDURE INIT; VAR X,Y,Z:INTEGER; A,B,C,D,E:CHAR; BEGIN GETOPCINIT;(*THIS COULD BE DONE LATER, BUT I NEED MASK[]*) ERROR:=FALSE; READ(INPRG,A,B,C,D,E); SEGLEN:=ORD(B)*256+ORD(C); SEGBEG:=ORD(D)*256+ORD(E); SEGEND:=SEGBEG+SEGLEN-1; PREVINPRG:=-32700;START:=0; Z:=SEGLEN+9; READBYTE(INPRG,PRGGRANLIST,PREVINPRG,Z,0,X);(*0 OFFSET*) READBYTE(INPRG,PRGGRANLIST,PREVINPRG,Z,0,Y);(*0 OFFSET*) SEGEXEC:=X*256+Y; INPRGOFF:=-(SEGBEG-6); IF SEGLEN>MAXBM*8 THEN BEGIN ERROR:=TRUE;ERRORTYPE:=4;END; PREVPRGF:=-32700;PRGFOFF:=1; PREVADRF:=-32700;ADRFOFF:=MAXBM+2; PREVDATF:=-32700;DATFOFF:=(MAXBM+8194); ADRCACHEADR:=32767;DATCACHEADR:=32767; DATCACHEDAT:=0;DATCACHEDAT:=0; END; PROCEDURE TITLESCREEN; BEGIN IF SCREENCOL<>0 THEN BYTE[$FF22]:=SCREENCOL; PAGE; WRITELN(' DISTRAC V1.1'); WRITELN; WRITELN(' (C) COPYRIGHT JULY 1988 BY'); WRITELN; WRITELN(' LAM SoftWare'); WRITELN; WRITELN; CURSOR(224); WRITELN('SOURCE FILE: ',INFILE); WRITE('OUTPUT FILE: '); IF OUTFILE=':-3' THEN WRITELN('SCREEN') ELSE WRITELN(OUTFILE); WRITELN('NUMBER OF LINES PER FILE:',LINELIMIT); WRITE('SYMBOL FILE: '); IF SYMFILENAME='' THEN WRITELN('NONE') ELSE WRITELN(SYMFILENAME); WRITELN('LOADING PROGRAM...LOADED'); END; PROCEDURE PRINTERROR; BEGIN WRITELN; CASE ERRORTYPE OF 1:WRITELN('STACK OVERFLOW'); 2:WRITELN('ERROR IN DEFAULT FILE DSTRAC11.DEF'); 3:WRITELN('SYMBOL TABLE OVERFLOW'); 4:WRITELN('FILE TO BIG'); 5:WRITELN('DISK FULL'); 6:WRITELN('I/O ERROR') ELSE WRITELN(ERRORTYPE) END; (*CASE*) END; PROCEDURE LOADVARS; VAR TEMPF:TEXT; A,X,Z:INTEGER;C:CHAR; BEGIN RESET(TEMPF,'DSTRAC11.TMP'); (* A:=-32700;Z:=MAXBM+8192+8192; READBYTE(TEMPF,TMPGRANLIST,A,Z,0,X); *) FOR X:=1 TO 20480 DO READ(TEMPF,C); READLN(TEMPF,INFILE); READLN(TEMPF,OUTFILE); READLN(TEMPF,LINELIMIT); READLN(TEMPF,SYMFILENAME); READLN(TEMPF,NUMOFLINES); READLN(TEMPF,LINENUMS); READLN(TEMPF,FCBASCII); READLN(TEMPF,FDBASCII); READLN(TEMPF,FCCSTRINGS); READLN(TEMPF,STARTLINE); READLN(TEMPF,SCREENCOL); READLN(TEMPF,LBHD); READLN(TEMPF,DTHD); CLOSE(TEMPF); END; BEGIN (*MAIN DISTRAC*) WRITE('INSERT DISK AND PRESS ENTER: '); READLN(TEMPS); LOADVARS; WRITE('OPENING FILES'); RESET(INPRG,INFILE,'BIN');WRITE(' 1'); REWRITE(OUTASM,OUTFILE,'ASM');WRITE(', 2'); RESET(PRGF,'DSTRAC11.TMP');WRITE(', 3'); RESET(SYMADRF,'DSTRAC11.TMP');WRITE(', 4'); RESET(SYMDATF,'DSTRAC11.TMP');WRITELN(' AND 5'); INIT; TITLESCREEN; GETGRANLIST(INPRG,0,PRGGRANLIST,LASTSECSIZE);WRITELN('GRANLIST 1'); GETGRANLIST(PRGF,0,TMPGRANLIST,LASTSECSIZE);WRITELN('GRANLIST 2'); IF NOT ERROR THEN DISASSEMBLE; IF ERROR THEN PRINTERROR; CLOSE(OUTASM); CLOSE(INPRG); WRITELN; WRITELN('DONE'); END. EN; GETGRANLIST(INPRG,0,PRGGRANLIST,LASTSECSIZE);WRITELN('GRANLIST