IMD 1.11: 1/03/2006 20:43:47 CP/M 68K 1.1 Relase Disk 3&5 -Master- (B) SF0038A SN019 3-17-83 SAGE RELOC3 SUBC SUBCP68 REL CP68 REL CPM H 5CTYPE H C068 RELC068 REL !"#$%&'C068 REL()*+,-./C068 RELw01234567ERRNO H 8PORTAB H 9:C168 REL;<=>?@ABC168 RELCDEFGHIJC168 RELKLMNOPQRC168 RELSTUVWXYZC168 REL[SR400 SYS\]^_`abcSR400 SYSdefghijkSR400 SYSlmnopqrsSR400 SYStSETJMP H uSIGNAL H vSTDIO H wxRELOC5 SUByBIOS C z{|}~BIOS C uBIOS O ]BIOSA O BIOSA S BIOSTYPSH BOOTER O BOOTER S CPM RELCPM RELCPM RELYCPMLDR SYS0CPMLIB CPMLIB CPMLIB CPMLIB ~ELDBIOS S 4ERGBIOS S @LCPM SUBLDBIOS O =LDBIOSA O LDBIOSA S LDRLIB DLOADBIOSH LOADBIOSSUBMAKELDR SUBNORMBIOSH NORMBIOSSUBPUTBOOT REL PUTBOOT S RELCPM SUBreloc c068.rel c068.68k reloc c168.rel c168.68k reloc cp68.rel cp68.68k CP68 $1.C $1.I C068 $1.I $1.IC $1.ST ERA $1.I ERA $1.ST C168 $1.IC $1.S -L era $1.ic AS68 -L -U $1.S era $1.s COPYRIGHT (C) 1982, Digital Research B9P O|N3Ny0< B9NBB0<B29ANBO|Nrv`0/"/NBNu"<0<?NB##  #p;"<NBJ@f29p NBB"9|"ApNB$IR yB g !gR@`/<?<NXZ\Bp\aj/<?<NXZ\Bp8aR y"y/)@@_?! !<RN`Ns @f"<$` @f"<M` @"<jp NBpNBй @"|Bp#QNuNV0| .?<NQTO0| .?<NQTON^NuNVH *n(n JgHop`Hlp`RR`JfB@`pNqJL0N^NuNVH*n&|J9g(|4Jg` B9Jg !g`BJL8N^NuNVH0|.?< NQTO<0|.?<NQTO>|Aa JFgB| e|1| 0|0@|$`0|0@|$.Y?< NQTOB0.?<NQTO0|>.?<NQTOJLN^NuNVH*n>. |f J9P fa4Jg !gHH.?<NQTO`JGf0|?.?<NQTO`a8JL N^NuNVH*nBG|d80 @"|./ a.XOJ@f0 @"|00`@RG`BG|d0H@B@H@м4 @ :gRG`|f6J96f.J9Nf&94H|m94H||np`޾|f&94H|m94H||op`|g0H@B@H@м4 @ :fp`.Bga`TOJ@cp`x|f~`BGBF|d$ |40pH"|1`HAfp`BRF`BF|d20H@B@H@м4 @Jo0H@B@H@м4 @  lp`RF`pNqJL N^NuNVH*nJg !gR` !fJg  fR`#`:J9g,J9f `B9 yJg`B9JL N^NuNVH *n.. Sހ.?< NQTOJ9g 9;ga9H|Hм @|  9;f (|  g  fR`  gFdB am zn H|`H  g  fR @  g  f``R`BJL0N^NuNVH*n !gJgR` !g  g  fR` NqJL N^NuNVH *n(|4BG|hdBRG`BGJg !gz|drBF !g2  g,  g&Jg"|d0B2Ём4 @RFR`B02Ём4 @BRG  g  fR|f#`|JL0N^NuNVH`5 ,<`PCP/M-68K(tm), Version 1.1, Copyright (c) 1983, Digital Research1015-0901-000019 o"h&IB[b#?E?/ NN%rNVB odpN^NuNV0/"/ NB?d0< A5"NB0<NBN^NuNVH#57d#6d7h#67l y7lBP~a<0`JGg <6䰹7hb.8~NNBGT7h y7h07p`JGg|`~JGf`vJGg`lJGfvBG>aJ@gh`JGf`BWaJ@gV <6f7hfH<96f> N0`TJGf0|n*``H |7r W h$N~>aZJ@g`$.8N|f > NB@NqJLN^NuNVH.N>0`.a37pp`By7pKzSEmH|'g||\f^ 0m$ 7nBF 0m 7nFH@|``4H0`| `(| `$|` | `|f``H |7rW hN0297pAA37p`vp`J.N*@g .N`p `$`0``|g0| gİ|!g ``JL N^NuNVH?0.@Hм7r @6|? y7lPl y7d Pf nfU7dU7lp`` y7h: y7d0@Hм7r @>0|@g8U7h y7h: y7d0`D` D`U7lU7d 97d @ PgB@`TU7h y7hJPg0`0:`B@`20E`ЊD`D`ĺDgB@`p:`DfB@`p:`DmB@`p:`DoB@`p:`DnB@`p:`tDlB@`p:`dB0e`\B0e`T0D@:`LJEgB@`p:`>0F@:`60:`.0H:`$0HH@:``S@|b@0@8" PN y7h0U7lU7d`N <7b7lb.8NNT7d y7d0T7l y7l0pNqJLN^NuNVHBFz n 0f"zR . @ xg n XfzR nH>0RJ@gH|am |fn|W`&|Am |Fn|7`|0m |9n|0``El 02A<`0NqJLN^NuNVH*n|BGJgJFo H@SF`0|NqJL N^NuNVH (n ~*nHfJgSGfp``B@NqJL0N^NuNVH *n(n ~SGm Jg`B`JL0N^NuNV>:n/<9NXO>?.?.?.?.?. /.N> N"hRyCN^NuNV <_Bb.9aN0."yBRBN^NuNVH.NH*@c %H>a`JL N^NuNVH <[BdSB yBH`zByA09<м_.N$>JGnPJyN%Sy?<,/.a\O0` .м,d*a4H0@"|80H8| g|!fR`H>a`b>=aJ@g| =`L>>aJ@g|>`>=aJ@g|=`">=aJ@g|=`>=aJ@g=`|`>*anJ@g|69:nafJgJ< f0Jy/aJ@f`Jf3:n.: aF|# n `(>/aJ@gaJg< g`| n `,H>/<:aXO``W@|b@0@9P PNB0NqJL N^NuNVH*n>. UGav<.H@gPJFg| f .:,a`:SGo`JGf .:Ea|\fa4<SGo`JGf .:Ua``BJL N^NuNVHa>nfp` >aB@NqJLN^NuNVH ByN3#B#|0<3?3A`3A?#B|3:nBy|ByC#[B#::>/<;.a XO>/<;7a XOSnmBW n2n/0a XO`a(J@gv(|?JyoHN%>_N%JyCgB@`pNqJL0N^NuNVH*|:pJg./NXOJ@f0-`\`B@NqJL N^NuNVHa.N>JGfB@` |f.a>|fp`.ar`^.a| f.NJg >a` BWaRyA`6.a| f .NJgBWanRyA`>a^`a<JFfSyA`|g .;SN`ah<JFfSyA>a` |fRyABWa` .;bN`JyAfa `JyAf .a>| f .a`VJyAfa`HNJ@g >a` BWaRyA`&.;pN``S@|b@0@: PNa`l|f`bJyAgaj`T|gNJGgJ| f .N*@g.a>`KJg H>aT`.N>`BWa|gJGg`JLN^NuNV <AqPc0."yqPRqP`JyBfRyB.;NN^NuNV <?#qP @BByBN^NuNVJy?f,>N3f.;NN3?Ry|Sy?0."y|R|N^NuNVH.N*@Jg+|8JL N^NuNVH.a>| g./<;NXO`.N&@./NZXO'y|BFK.N>|ff.a>|gJ|a`.N>a.a>|gJGg| fDBEFl&. N2E/(NXOJ@gRE`ֺFl>RWa*>a"```J|"fDNB:| f.Jya`IJg H>a`.N>`8.NBWaJL8N^NuNVH ydA@RyADo.;N`x n&h./.NXOJ@fJg H>a``JBE f`.N|g.N`bI.a8JDgL|9:j`.(N>y:j>an.<.N`NR.NH*@ Se6 f %HFm N2FSI.(N` H>NS`JL8N^NuNVH.aF>|g| f0`*|f.a(>| g./<<1NXO0NqJLN^NuNVH.N>|#f`0NqJLN^NuNVH (nBBn=|,.N=@|g nfJngXKgSnn.|g|f.Iպg`B`x|g.|g|gJGgIgR``Ҿ|g. NJL0N^NuNVH.N*@./.NZXO+y|. H>aBWaJL N^NuNVH0.H H@>0.H =@>W0NJnnJLN^NuNV>.JGl 0.D@=@BF0.H H@|0"N4F@RF0.H =@nJGl N2F|-RFSn0.@n n  R `SFm n 2FR ` n BJLN^NuNV. a0=@?/.a"XO=@_lB@`&. 0.nHЮ/aXOJ@fp`B@NqN^NuNVH n  g n  g n  fR`| n +g n -f n +fp`p<RBG n 0m& n 9n0 "nHA>|R`0NqJLN^NuNVHN2pBW/<5N&XO>/<5N&XO>/<5N&XO-|5 .2. HЁ @B=|*nJgJg  o mR`JgBG 2HЁ @  oR 2HЁ @ lB 2HЁ @ Am 2HЁ @ Zn 5pH| `5pH" 4H҂"ARG`J5pg 2HЁ @BRG f0>N%BWBg/ RN'0\O|g.R/<=eaRXO` N2n!MRn` N2n!|.?.NTONqJL N^NuNV.N4>/.?<N+\O. N4>/. ?<N+\O>/<=t?<N+\O>N%rN^NuNVHIBBn .RdRn-\ fRn-\*\&Lg(K<%gH>/?.a\O`Bn<-fRn| <0fG=|<0m*<9n$JnlBnH2. A|=@`=|<.fBn<0m <9nH2. A|=@`Bn<lfRnA-HH`@Jng -| `-|!BW/.?<?< // N!VTJngT`BW/<!Bg?< // N!VT`Jng -| `-|!BW/.Bg?<// N!VTJngT`Jng -| `-|!<XgBW`>/.Bg?<// N!VTJngT`N-\&L`F=[0.@B.`4H>/?.a"\O``H |=vr W h0N.N4=@0.nl Jnm=n0.n=@Jnf^ . g. n -f$Sn nH>/?.a\OR0.SnJ@o.H>/?.at\O`0.SnJ@g nH>/?.aJ\OR`0.SnJ@o.H>/?.a \O`` nf nBJL8N^NuNV0.`@.H>N"h`B n ..H?N"HTO`( n  @"n R``J@g|gư|gNq.HNqN^NuNVH*n<.H n. nfzJgJEg SE``j nf&z JgJEg SE`JEf-`/ ?. N+\ON^NuNV y=n*>/ ?<N+\O|gp`b. H`ZJy=n4#==>/9=?9=N+\O|gp`&3= y= R=Sy=. HNqN^NuNVH><y=3=#==>/9=?9=N+\OGgp`B@NqJLN^NuNVH*n ;|A+HJnfB@`p=@>?</.N'0\O:NqJL N^NuNVH*n Jmn*A+H>/-?N+\O|gp`;| m RSm. HNqJL N^NuNVH*n .0.@?WaTO.?.WaxTO0.NqJL N^NuNVH*n><m;|A+H>/-?N+\OGgp`B@NqJL N^NuNVH*n BmJnfB@`p=@>Bg/.N&\O:NqJL N^NuNVH*nJmnA+H>/-?N'\O;@Jmnp`Sm mH|RNqJL N^NuNVH*n.a>|fp`4<|F.a~>|fp`0|@g <@0NqJL N^NuNVHBG|l >N%RG`BBgNTOJLN^NuNVH>N3*@fp`H|g>N2>N3B@`g.f(>B?.N0\O>/<5?.N+\Og,>"/</ 2/-/ N2|gp`,.?<NTO>N2>N3B@NqJL N^NuNVHN3L>JGlp`>N2>N2*@Jn fJnf.5/.N4 XOJ@f 0`B`.5/.N4 XOJ@f0`">/.?N1\OJ@gp`0NqJL N^NuNVHN3L>JGlp`~>N2>N2*@Jnf.5/.N4 XOJ@f 0`B`.5/.N4 XOJ@f0`">/.?N1\OJ@gp`0NqJL N^NuNVH*n :.H>N3(@fp`PgB@`Dgp`8g./ / a:PO`"f./ / aPO` -EJo.,gpg2>"/</ 2/,/ N2|gp`>!/</ 2// N2|g .`)G ,-@&L2 мdDJo@<f , o)l .`6`< fRR` SRR`` , o)l .NqJL8N^NuNVH*n(n ..-G --@ -g -glg2>"/</ 2/-/ N2|gp`>!/</ 2/./ N2|gp``+n "-¼Ё&@2 мdJo SR`Jf - o+m .`RB -@Jo>!/./ /./ N2H,ݮ ѭ   - o+m g .`Jf .`g0>"/</ 2/-/ N2|gp``>!/</ 2/./ N2|g  .`(߭ - o+m G2JoS` .NqJL8N^NuNVH *n.. |.?< NTO0| .?<NTO.HH̼IJo JoSS`Jo R "ҼNqJL0N^NuNVH*n :.H>N3(@fp`JnB@`gp`g>// a PO`g>// aPO`hf./ / abPO`R-EBJoF ,-@B ,g8g2>"/</ 2/,/ N2|gp` ,g8 , l.>!/</ 2/./ N2|gp`)n ,-@&L2, мd"Jo  f < g< `SR` мe2>"/</ 2/./ N2|g .`$`@Jf , o)l .``JL8N^NuNVH*n(n ..-G --@ -g -gg2>"/</ 2/-/ N2|gp` - l0>!/</ 2/./ N2|gp``>/ 2aXO+n "-¼Ё&@2 мd JoS`Jn$@ .ѭ - o+m .`2>"/</ 2/./ N2|gp`R -@Jo*>"/./ /./ N2H".gp` . . .ѭ - o+m Jf .`g,>"/</ 2/-/ N2|gp``@ -+@ - l$>!/</ 2/-/ N2`>/ 2a XOG2JoS` .NqJL8N^NuNVH*n>. 0SGJ@oB`JL N^NuNVH*n.. <.-GJo,  f0| .?NTOHH.?NTOS` .NqJL N^NuNVH>N3*@fp`H0.`&+n `0 . ѭ`& - Ю +@`p``J@gְ|gذ|g` -NqJL N^NuNVH*n >N2(@G -:f" am zn H|`H|TBG  o6|l0 .g* am zn H|`H"K4G@RGR` .f:RBG  o0|l* am zn H|`H"K4G@ RGR` nf.?<NTO.?.NTO>|nB@`pNqJL8N^NuNVH? *n.. (n,.:.BJo<.?<NTO+G..?NTO8JDg `RSR` NqJL0N^NuNVHBG|l>aRG`JLN^NuNVH >aP*@0.@B+|BB B-I мd ` м.dB`JL0N^NuNVH>.0мqTNqJLN^NuNVH nep`>N2*@fp` NqJL N^NuNVH|BG|l0y?f y?0` FRG`pNqJLN^NuNVH|BGnlFRG`0F@y?B@NqJLN^NuNVH. gRn*y?0.H.N|fp`*y?0.Hѹ? NqJL N^NuNVH *n(n Jg*Jg&H>a,H>a"op`lp``B@NqJL0N^NuNVH. <am <zn< HNqJLN^NuNVH*nBGJgRG`0NqJL N^NuNVH*nBGJgRG`0NqJL N^NuNVH?BC..,. Jf#? <`ro #?B`bJl D.RCJl D,RCfzB` xm`BJgm`|f D#? D` #? NqJLN^NuCP/M-68K(tm), Version 1.1, Copyright (c) 1983, Digital Research1015-0901-000019Stack Overflow$C runtimeCON:LST:PPFFHJHLLNNNNDDRRR|JT\\f\|bfnrt"(8HXhxexpression stack overflowexpression syntaxexpression operator stack overflow## !!!!!!!!!!  "    D Z  x # %d: too many characters pushed backsymbol table overflowno */ before EOFbad character 0%ostring cannot cross linestring too longstring too long::::::;;; *L8defineincludeundefifdefifndefelseendififcan't open %s can't creat %s NewlabelLabelunmatched conditionalinvalid #endifinvalid #elseinvalid preprocessor commandline overflowdefine table overflowbad define name: %stoo many argumentsargument buffer overflowdefine recursiontoo many argumentsargument buffer overflow_Lbad argument:%smacro argument too longunexpected EOFcondition stack overflowbad include filebad include file nameincludes nested too deeplycan't open %s<=CP/M-68K(tm), Version 1.1, Copyright (c) 1983, Digital Research1015-0901-000019usage: c68 [-i x:] inputfile outputfile Cannot open Cannot create CDOSUXcdosuxT,T,=/****************************************************************************/ /* */ /* C P M . H */ /* --------- */ /* Copyright 1982 by Digital Research Inc. All rights reserved. */ /* */ /* This file contains CP/M specific definitions for the CP/M */ /* C Run Time Library. */ /* This file is intended only for inclusion with those functions */ /* dealing directly with the BDOS, as well as any function which */ /* has hardware dependent code (byte storage order, for instance). */ /* */ /* must be included BEFORE this file. */ /* */ /****************************************************************************/ /* * CP/M FCB definition */ struct fcbtab /****************************/ { /* */ BYTE drive; /* Disk drive field */ BYTE fname[8]; /* File name */ BYTE ftype[3]; /* File type */ BYTE extent; /* Current extent number */ BYTE s1,s2; /* "system reserved" */ BYTE reccnt; /* Record counter */ BYTE resvd[16]; /* More "system reserved" */ LONG record; /* Note -- we overlap the */ /* current record field to */ /* make this useful. */ }; /****************************/ #define SECSIZ 128 /* size of CP/M sector */ #define _MAXSXFR 1 /* max # sectors xferrable */ #define _MAXSHFT 12 /* shift right BDOS rtn val */ /* to obtain nsecs on err */  /****************************/ /****************************************************************************/ /* */ /* Channel Control Block (CCB) */ /* */ /* One CCB is allocated (statically) for each of the 16 possible open */ /* files under C (including STDIN, STDOUT, STDERR). Permanent data */ /* regarding the channel is kept here. */ /* */ /* */ /****************************************************************************/ struct ccb /************************************/ { /* */ BYTE flags; /* Flags byte */ BYTE chan; /* Channel number being used */ LONG offset; /* File offset word (bytes) */ LONG sector; /* Sector currently in buffer */ LONG hiwater; /* High water mark */ struct fcbtab fcb; /* File FCB (may have TTY info)*/ BYTE buffer[SECSIZ]; /* Read/write buffer */ }; /************************************/ #define MAXCCBS 16 /* Maximum # CC Blocks */ extern struct ccb _fds[MAXCCBS]; /* Declare storage */ #define FD struct ccb /* FD Type definition */ /************************************/ /* Flags word bit definitions */ /************************************/ #define OPENED 0x01 /* Channel is OPEN */ #define ISTTY 0x02 /* Channel open to TTT */ #define ISLPT 0x04 /* Channel open to LPT */ #define ISREAD 0x08 /* Channel open readonly */ #define ISASCII 0x10 /* ASCII file attached */ #define ATEOF 0x20 /* End of file encountered */ #define DIRTY 0x40 /* Buffer needs writing */ #define ISSPTTY 0x80 /* Special tty info */ /************************************/ #define READ 0 /* Read mode parameter for open */ #define WRITE 1 /* Write mode */ /* CCB manipulation macros *************************************/ #define _getccb(i) (&_fds[i]) /* Get CCB addr */ /* Error handling *************************************/ EXTERN WORD errno; /* error place for assigning */ EXTERN WORD __cpmrv; /* the last BDOS return value */ EXTERN WORD _errcpm; /* place to save __cpmrv */ #define RETERR(val,err) {errno=(err);_errcpm=__cpmrv;return(val);} /************************************/ /****************************************************************************/ /* */ /* B D O S F u n c t i o n D e f i n i t i o n s */ /* ------------------------------------------------- */ /*  */ /* Following are BDOS function definitions used by the C runtime */ /* library. */ /* */ /****************************************************************************/ /****************************/ #define EXIT 0 /* Exit to BDOS */ #define CONOUT 2 /* Direct console output */ #define LSTOUT 5 /* Direct list device output*/ #define CONIO 6 /* Direct console I/O */ #define CONBUF 10 /* Read console buffer */ #define OPEN 15 /* OPEN a disk file */ #define CLOSE 16 /* Close a disk file */ #define DELETE 19 /* Delete a disk file */ #define CREATE 22 /* Create a disk file */ #define SETDMA 26 /* Set DMA address */ #define B_READ 33 /* Read Random record */ #define B_WRITE 34 /* Write Random record */ #define FILSIZ 35 /* Compute File Size */ #define SETMSC 44 /* Set Multi-Sector Count */ #define SETVEC 61 /* Set exception vector */ /****************************/ /****************************************************************************/ /* Other CP/M definitions */ /****************************************************************************/ #define TERM "CON:" /* Console file name */ #define LIST "LST:" /* List device file name */ #define EOFCHAR 0x1a /* End of file character-^Z */ /****************************/ /****************************************************************************/ /* Hardware dependencies */ /****************************************************************************/ #define HILO /* used when bytes stored */ /* Hi,Lo */ /****************************/ #ifdef HILO /* Hi/Lo storage used in */ struct { /* 68K */ BYTE lbhihi; /* Use this for accessing */ BYTE lbhilo; /* ordered bytes in 32 bit*/ BYTE lblohi; /* LONG qtys. */ BYTE lblolo; /* */ }; /* */ struct { /* Use this for accessing */ WORD lwhi; /* ordered words in 32 bit*/ WORD lwlo; /* LONG qtys. */ }; /* */ #else /****************************/ struct { /* Lo/Hi storage use on */ BYTE lblolo; /* PDP-11, VAX, 8086,... */ BYTE lblohi; /* */ BYTE lbhilo; /* */ BYTE lbhihi; /* */ }; /* */ struct { /* */ WORD lwlo; /* */ WORD lwhi; /* */ }; /* */ #endif /****************************/ /*************************** end of cpm.h ***********************************/ ^gZ`3~ yDm.gNN09Z"yè yZfBW/<N{`XO*@ yè!MHfN|~RyD\è-f(0y"|0029AHҼ"ARQ` -29AHҼ""A2``j yZf`Jy\g" y\g09@Hм, @0`*0y"|,Jpf09@Hм, @0 yfa4 yè!y\09Z"yè@RyD\èJL N^NuNVH y,fJyg.9\ yDg* yDf 9 f y-f D.*yf@Jy^g yfm"n##Ry`TJoo`F~gf 9##`"gf 9D##JL N^NuNVH *n(n >.0SGJ@g`JL0N^NuNVH*nBGJgH. f0`RG`pNqJL N^NuNVH*nB@;@;@;@:Bp;@ ;@ JL N^NuNVH0.@H*@RBF.a>#/9èaXOJ@g& yfp`09;@:<\è`Z>(/9èaFXOJ@g\èa>|f ::;|`D|g]èa2>JGl&JFf a`|g>NX`J]è`0|:>,/9èaXOJ@g>/ a&XO`a|g8JFf >+/9èaXOJ@g \èU`JFg U(;|`U>W a `>-/9èaZXOJ@gX\è>(/9èa@XOJ@g8\èaR>JGl  è`"0| :a>W a`^]èa>gr:9|g |fJEg >NX|g|f0|g*|g$|g|gJEg| gJEg >NX;G >W a:`a>JGm2: yf|m|n >NX>W a`.!Nf 9èd]/************************************************************************** * CTYPE.H - macros to classify ASCII-coded integers by table lookup. * * * Note: Integer args are undefined for all int values > 127, * except for macro 'isascii()'. * Assumes: * User will link with standard library functions. * Compiler can handle declarator initializers and * '#defines' with parameters. ***************************************************************************/ /* Define bit patterns for character classes */ #define __c 01 #define __p 02 #define __d 04 #define __u 010 #define __l 020 #define __s 040 #define __cs 041 #define __ps 042 #ifndef CTYPE extern char __atab[]; #endif #define isascii(ch) ((ch) < 0200) #define isalpha(ch) (__atab[ch] & (__u | __l)) #define isupper(ch) (__atab[ch] & __u) #define islower(ch) (__atab[ch] & __l) #define isdigit(ch) (__atab[ch] & __d) #define isalnum(ch) (__atab[ch] & (__u | __l | __d)) #define isspace(ch) (__atab[ch] & __s) #define ispunct(ch) (__atab[ch] & __p) #define isprint(ch) (__atab[ch] & (__u | __l | __d | __p)) #define iscntrl(ch) (__atab[ch] & __c) #define tolower(ch) (isupper(ch) ? (ch)-'A'+'a' : (ch) ) #define toupper(ch) (islower(ch) ? (ch)-'a'+'A' : (ch) ) #define toascii(ch) ((ch) & 0177) g(l `P`JL0N^NuNVH*nJy*f-f .a`&MBG|l.?N TORG`.?-N TO-g$.BgN TO.?-N TO`$.?-N TO.?-N TOJL8N^NuNVRylJyf4 y0o3:a.NRyRyByh./<5NXO yh@RyhDo.;NByhN^NuNVH *n-f- gB@`(M./<=NXO-g.DNp`-gn>?-aTO>?-aTO-g.TN`8-g.\N`"-g.dN` .lN`Ryl.tNpNqJL0N^NuNVHJy*grJygh>9309nyFlRa>n/<`i2`PCP/M-68K(tm), Version 1.1, Copyright (c) 1983, Digital Research1015-0901-000019 o"h&IB[b#}E?/ NONY^NVB odpN^NuNV0/"/ NB}d0< Ai"NB0<NBN^NuNVH>QNBJ@fL <#y#=|Jygp`p=@3.]/Y/UaPO> n fN@>Bg?.?.a\O*yx gJGf0-|0| g.kNF`f ng. N.R0-|0| gf.aN nfN@`>>YNBJ@f(>RNBJ@f>ENBJ@g y\g.a `0Bx>BNBJ@g`$N7|Qg .k)NFJL N^NuNVH?BtByBCBnBnBDBG n<BEBnN7=@|Ef y\gBG#\t` nYf09`Jyg .kDNDRy`JFg|g|g .k^ND|`JFg|g .ktND|`JFg|g .kND|`xJFg|g| g .kND|`VRn`NRD`HRC`B3 =yBy=yRy>ENBJ@gP*y\J-f&JyTf| ;| BWa8;@ - g. /<kNDXOBy>RNBJ@gRyr=yBy n f>`> a :3>SNBJ@f.kNF`> g:0m"|Jpg. /<kNDXO0-@Hм @0Syr` f.lND` - g. /<lNDXO``0-@Hм @JPf:=| Ry09|m .l8ND09@Hм @ `0-@Hм @:3JGg .lQND nf~ `>.`PJGg .ljND~`NBJGf~JFf|Jng | f~ `|f~` .lNDJDg|g .lNDJCg|g.lND`~JDfJyg|f~ n0 n 0 n00.NqJL N^NuNVH?>QNBJ@f>WNBJ@gB@`JyrgB>ANBJ@g4N,8JDf> ?<aTO=@`>?. a4TO=@`a ;@`. /<m NDXO`0. || f;yBG-H`b`t n g nf.`` ng n f`NRG-Hnf 0-n f`4. /<m-NDXO0.`D`|b@0@jR PN;n :. |00. |=@ JygJyrg>ANBJ@g@=| N,8029AA6JGgmfh;C>?. a TO6=C`(> ?. aJTO6>?-?-aXOC=@n JGg 0-n f;n | f6 ng ng ng .mAND ng=|` nfJEff <i2. HЁ @f.m^ND=|`: <i29VHЁ @Jf=|`0yV"|i0H;@RyV`T|g.m}ND=|`: <i29HЁ @Jf=|`0y"|i0H;@Ry nf,>?-?-a ZXOR@|y09D@;@` nf;yyRyy0.@JyTf0.NqJL N^NuNVH n8( n> n?(?a XO<>BNBJ@f>QNBJ@gP>RG| n (f>/. N.lXO`"N.> n>N2.>N.N-`*>NBȸ|g 0|0|fN."`N. n (f. N2f` n>N2. n> n?( n?(aXO>Fl>0WN.>0R@|@gN.Fox n0(|0|0fX n8(0|0|0f >a 8` n0(@Hм/ n?( n?(?a p\O?0H _0` .mND n (fN-JLN^NuNVH?=n0.|0|0f>a =@`BF> ?. ?.a XO8BG n1f&>XNBJ@g<9N3Fo>F`0.|0|0g 0.|| f~0.|0|gn> ?. RW?.aTO?a XO?0H=@0H=@>RNBJ@f .mND n1f&>XNBJ@g<9N3Fo>F`>QNBJ@fBWNBJ@f>RNBJ@g\JGg >N.GBG> ?. RW?.aBTO?aXO6no.mND`nl>0WN.n`<>SNBJ@f>>a6CJGf>.Go .mNDGmBG`C>BNBJ@f.>SNBJ@f .mNF`2>RNB6>a<<JCg>SNBJ@f .n NFJGg >N.G0NqJLN^NuNVHRyN*@Sy><-0.|?` |Cf.>?<N-TOp`*|Dg|?<N-TO`>/ N4XOp`|Cf0y#.N3R`$|Df.N3R`>/ N4XOp`|Cf4Jyg0F#.N3Rp`|>?<N-TOp`h|Df.N3Rp`R>/ N4XOJygp` |?-?--H??-aTO?N6PO#n#yN-. N2H>9> a3yRyy>RNBJ@f.n'NF`By|(|*Tgt: mfRE -f9E`Bl;E|0-|0|0f>?-aTO?aTO;@Rm>?-?-aBXOR@|@\`BWa?9V?9N.XOal>SNBJ@f"BWNBJ@g.nN2.>?9VN/FTO3SyTN@FJL0N^NuNVH (|*TgJlg|# #BWBg?--H??-N6PO.NBWBg?,?<?-N6PO.N>N fN .N5BB\`nJL0N^NuNVHBGBE=n=|.]/U/Ya POJ@g>??.?.a\O< n gFF`Eo: nfJxg yxf .xavBx>BNBJ@f>QNBJ@f.nONF``Z>?<aTO@0NqJL N^NuNVHBx>a>JGm>a`0NqJLN^NuNVHBG>VNBJ@g>a>>WNBJ@g>NBJ@g>?.aTO?aTO`89>ENBJ@g 9\#x*@BG;D>VNBJ@gJyTfByVBy(|>ENBJ@g`&y\g. /<nbNDXO`,ze.nvNF`&`| 7|(\>BNBJ@g`B>WNBJ@g> ?aTO>`D>TNBJ@gh>UNBJ@g >a`>N,:<yl?0@Hм @00RF`>aR>UNBJ@g*>0?aTO>`JnfJxg0```.nNFpNqJL8N^NuNVH>9|@RyDm .nND0@Hм @00NqJLN^NuNVH>.|n02. |0A2.AANqJLN^NuNVH>.|n02.AANqJLN^NuNVH>.|0.|0g>?a|TO>>a=@`0NqJLN^NuNVHBGJn n.nNDBn 0.`b n o .nND0. y|o~`N n o .nND0. y|o~`&.nNDB@`.`|g|g|g`JGgBy0. y0NqJLN^NuNVH>. Jyg09^@@@By0.|0|0f>a=@` ngRG|0n NqJLN^NuNVH~0.|0|0f 0. @Hм @>>aB=@`0.|0| fB@`Z0.|0|f|`2 n f0. @Hм @<`0n"|i0H<|?JFf .oND0NqJLN^NuNVHBD n<(0|0g0|0|0fRD` >a<`BG<. :.0|0gP>?aBTO>JDg60|0|0f* n0h"|?00@Hм @00RE>a4<` n<( n:(0|0g*0|0|0f0E"|>azRE>a<` n<(0|0g>?aTO<>a>`>|| f n"n0`| f n00NqJLN^NuNVH?(y&y69XJgJf# #`X y0d y1|#yByXN7>JGg0`>?<aTO.aJ@g8|Qg|Sf>NB.qzND##3XB``.?<aTO.avJ@f`|*y\fF>VNBJ@g|;|#`&Jyg|`. /<qNDXO -g0-|0| f.at*@;|`">?-?--H??-N6PO*@.aJ@f`>N3BWBg?9?<?<1N6PO.aJ@f` yf~\JyXf`ByX`JyXg`JyXg~`zJyXg~`lJyXfB>CNBJ@g09D@3`$>DNBJ@g 9D#`~ `JyXf~<`JyXf~=`JyXfBnBn.]/U/YN>POJ@g n f>N=@`=y>?.BgBg?.N6PO*@>Nށm>WNBJ@gJtg.\?-?-/9tNPO;@.a~P y P\f RyX``>WNBJ@g~]`~H` Ry``H |o rW hHN0G|V(g4JyXf|g|g|Pf|g|g |]gByX0@Hм|V @:|?Jyg|BfzJyg|Afz yhn" yhfp0@Hм|V @gZX 9e .qND|g|fz`|Vg |Tg|Hfz y0 y1E` y<Y=|C0`>NBBWaJ@gaj*@ g##3X `|Wf`h>IaJ@g` |Uf>axJ@g|=`<>?<a$TO.a>aTJ@gf``H |or W h$Nм|Vg >a&J@g8```.qNDBNqJL8N^NuNVH*y 2.HЁe .qND 2.HЁ# NqJL N^NuNVH>a*@:E n(H;@ n;h n;h n;h n;h ./. NB a6*@:C;nBmBm;n  NqJL N^NuNVH> a*@:D;nBmBm+n  NqJL N^NuNVH>a*@:;n ;n ;n+n+n NqJL N^NuNV <b .qND y XN^NuNVH <İeB`Y y*P NqJL N^NuNV.aJyXgp` RyXB@NqN^NuNVH?0n|V(g a(@ fB@` .a \.a(@:,ah*@ fB@` n\f,>?-?-NXO>?<aRTO.ap` n<g .a*@ nHg nIg.a*@./ ?.a\OJ@gp`t<-0.@Hм|V @g >/ a ^XO0.@Hм|V @g >/ a JEf z9EBC8`b>a8>a60.@Hм|V @f"Do0D2"|p0H6x>`0C2"|p0H6BD0.@Hм|V @g` nf|g|f TCg .r/ a XO???/ a *@`>/ a XO???/ an (@` nPf lg9m0.@Hм|V @g~ nPf .a`./ ?.a\OJ@f>0|| g 0|| g&M`&L./ ?+?+??.aR .aJng<|g6a*@ fB@`,>/-aXO??<?</ a .aHpNqJL8N^NuNVH n >(0.`B`TB@`Z>/. aXO n 1|. a>=a|a-@ .ahJ@f .rlND n>(0|0|0f>a> n0("nRi n> n?(?/. aPO. a> BgaTO.ab>a n0(|0|0g>=aan-@ n h f$. n?( n?(??<JaPO-@ `: n PAg .rND n PCfN n ( @ PCf> n ( @ PCf. n Jhg n h0(` n h 0("n 3@`$./. BgBg n?(?.a8 -@ `./. BgBg?<?.a -@ ` n P?<aTO*@./.BgBg?. ?<a$ *@`d nf .`p nfp`p>>?<aTO*@`2~$`.~%`*.rND .`2`U@|b@0@p PN./.BgBg?. ?a NqJL N^NuNVH n1n Jnm n1n n1n n>| a=@ `(|=f>?. N?.?. n/(a|POJLN^NuNV n0(|0| f8. n?( n?(?< n?(N(|g&|g |g0|0fn g .s NDJLN^NuNV0.`B@`(p`$p` p`p``S@| b@0@p PNN^NuNVH n PCgB@` n >( n PCgB@` n<(0.`F`ƞF`0>`0H>`0HH@>`F`F`0G`B0g`~B0g`tFgB@`p>`dFfB@`p>`TFnB@`p>`FFmB@`p>`8FlB@`p>`*FoB@`p>`B@`,`S@|"b@0@p PN n 1G. apNqJLN^NuNVH n PCgB@`Z n >(0.`$0F@>`00D@>`(JGgB@`p>`B@`*`| g| gذ| g` n 1G. a"pNqJLN^NuNVH (yy#yRya*@g UCg .s NDSy#y0-NqJL0N^NuNV0.|0f .s2ND>NrNqN^NuNV n0(|0g, n> n?( n?(NrTO?NXO`pNqN^NuNV3.sDNQN^NuNV nfa`a> /<sLNQXON^NuNV3.sPNQN^NuNV.sXNQN^NuNV3.s`NQN^NuNV3.shNQN^NuNV.spNQN^NuNV./<swNQXON^NuNV0. H././<sNQPON^NuNV>/<sNQXON^NuNV.sNQN^NuNVJn f Jn fXn0.D@>/<sNQXOJn fJn gJ>0. W/<sNQXOJn g >/a>0. W/<sNQXO.sNQN^NuNVJnfJn g^.sNQJng&>0.W/<sNQXOJn g>/aJn g>0. W/<sNQXO> az.tNQN^NuNV0. `X0.|0| g>/. /<tNQPO`F>/. /<t"NQPO`.>/. /<t.NQPO``|g|g°|gNqN^NuNVH? n <(0nSH :(>F nnP*n Snm:Jmf.t9NQ`>/<tBNQXO>/<tONQXOX`> a`6JGo0.@nJFg>/<tYNQXO69yRyy> ?/<tfNQ\O>/<t|NQXO.tNQa>a*n Enmf >aX`> aRF`a`69yRyy>?/<tNQ\O89yRyy>a>/<tNQXO0.@>/<uNQXOaV>ax*n 8.SDm >a0X`BWa(*n 8.SDm>a2X`> a(aJL N^NuNV>/<u!NQXON^NuNV>/<u,NQXON^NuNV>/<u8NQXON^NuNV././<u>NQPON^NuNV./<uPNQXON^NuNVH. NOt.NOtJLN^NuNVH> NYBW/< /.NXjPOJ@l./<uYNDXO. NX>JGo.?NWTO`.NOtJLN^NuNVJyg>,aRy>/<ugNQXON^NuNVa~>a> aaN^NuNVBy> aN^NuNVJno>/<ujNQXON^NuNV-yP# P=ysB3sB>/<utNQXOa#P3sBN^NuNVHa*|>9JGoH>Wa SG`aLJL N^NuNVJPf>/ ?<N_\O`V . f$JysBgJyf.P?<(NWTO`* . gB@`p3sB.P. H?NWTON^NuNV.BgBg?. ?<LNPO.aNN^NuNV.Bg?.?. ?<KNPO.a(N^NuNV.BgBg?<?<MNPO.aN^NuNVJysBf > N4,>Z/<uNQXO.aN^NuNVJg@ n> n0?/<uNQ\O n0` n>/<uNQXO` n> n?(/<uNQ\O` n>/<uNQXO n hf./<uNQXO` n> /<uNQXO`> N4,`x n>/<uNQXO n.a `R> N4, n.a n0P|V(g n. a``H |uzrW hNN^NuNVH>Nl*@:E;n ;n;n;n;n NqJL N^NuNVHBa<0m<9n ހH|Hހ`H>av NqJLN^NuNVHBa<0m <9n<0`&<am <fn<W`<Am <Fn<7`` HHЁ.`H>a NqJLN^NuNVHBEBa><0m*<7n$Jng RE0|n H|HЁ.`H>a NqJLN^NuNVHJyg:9By0`a>JGg |u0pH`d.xVND`j |u0pH`b`V>=a`J@gp`p `H>"?<,/<a:\O3yRyypX`>=a J@gp`p`>=a J@gp`>&aJ@gp>`p`>'?<,/<a\O yo.xhND3By*|Syo09@3H|y`pC`x>=azJ@gp`p`b>=adJ@gp`>+aTJ@gp`p`<>=a>J@gp`">-a.J@gp`>>aJ@gpZ`p`>*aJ@g8a*>JGg|*f >/aJ@f`JGf.xNDB@``&>/aJ@ga>JGg| g``>=aJ@gp`p`BE|0g >aZa(nlRE`D>xadJ@f >XaXJ@ga(JmmRE`BWa(JmmRE>la J@f>LaJ@fJEg #pD` 3pC`>=aJ@gp#`">=aJ@gp`p`p"`>>aJ@g>>aJ@gp`r`ba>>/<xaXO:JEmB |w0PH:g"ar<| g>/<xNDXO>a0|``>ap`>=a J@gp!`">>aJ@g>=aJ@gp`p`p `Kz0Hмu @ sg0Hмu @ ofJEoa>SE`JEoB>aj.Qaj#\ y\g y\3pY`^BypE`R>=aVJ@gp`p `@>=aDJ@gp`>|a6J@gp?`p ` `H |wrW hHN`jB@NqJL N^NuNVHa >nfp` >aB@NqJLN^NuNVHJyg>9By`B.NX>| fJygBy`RyZ`|f Ry~ `JGlBG0NqJLN^NuNVHa>| g | g| f`nfp`>aB@NqJLN^NuNVJyg.xND`3N^NuNVH3*n>. a<.H@gJFg| f.xND`|\fha<|0m0|7n*>ax>az<JFm|o.xND`J`*>/<xa$XO:JEm |w0PH<`| gJGo Ry`JGf .xNDSG`DJGnSBJL N^NuNVH*|v`Jg>?< /a\O\`JL N^NuNVH*y| f:>Ng*@ f .y ND~.SGm+y|#|``#|0. B-BmBmBm;n. /.aXO>r09W/.abXO>0@Hм @+P0@Hм @ NqJL N^NuNVH (nBW/ aXO@Hм @*P g(H|g. / a0XOJ@g `Z*m `>r09W/ aXO@Hм @*P g. / aXOJ@g `*m`BWBg/ a\ONqJL0N^NuNVH-|><SGmj n*P gX&mf. /<y!NDXOH|g(M`" g)m` n +y|#|*K`X`JL8N^NuNVH *|><SGm(U g,HJEg60,|| f(0l"| p9h0,|| 9@| f*0,@Hм @JPf. /<y7NDXO| f. /<yMNDXO|JyTg >/  ,H??,N/PO(l`:X`,JL0N^NuNVHJn g0<`B@>*n|JgJFo H@SF`0|NqJL N^NuNVH *n(n ~HfJgSGfp``B@NqJL0N^NuNVH *n(n ~SGmJgH`B@`JL0N^NuNVH*nBGJgH. f0`RG`pNqJL N^NuNVHaL3ngB@`pNqJLN^NuNVHa">nfp` 3B@NqJLN^NuNVJyg .yiND3N^NuNVH~nl^0@HЮ @*P -ga0H` Ry`Ry`Ryy``a `J@g|1gް|Dgа|Lg```RG` nlaBW/< n /(NXjPOJ@l n 2G./<ya4XOBW/< n /(NW:POJ@mBW/< n /( NW:POJ@l .ya#PRyZN>BWNBJ@fN`N2N. n . N2JyfBW`>NY^JL N^NuNV.z a~N^NuNVH*yPBPRyJyZg>Z/<z*NQXO>?.?.?.?.?. /.NQ.z1NQ#PJL N^NuNV>?.?.?.?.?. /.af>NY^N^NuNVH? N7>0`BWNBJ@f>SNBJ@fa`.zND`>NB`>:N=TJ@ga`>NBN.N5`09`vaJ>N3`|a`haV>N3`da`Paf`Ta`a.>N3`>at`la`0a.`^a(`X.za`L`U@|b@0@z6 PN`H |zrW hN>QNBJ@f.zaV``JL0N^NuNVH>VNBJ@gN*@>WNBJ@g ` .{ aBNqJL N^NuNVH>?.?.?.?.?. /.NDN7>|QgJGg|Rg|Sg`>NBJLN^NuNVH>ENBJ@f .{+a`L*y\J-f;| Jmf;yyRyyJ-g -f m f0-`.{:a6B@NqJL N^NuNVH*y\J-g. /<{HNDXO`.|;| Jmf;yyRyy>N2.JL N^NuNVJyf .{bND09NqN^NuNVJyf .{zND09NqN^NuNVHRyN,>Sy>ANBJ@f .{aHJyz4l.{ND`\ yz4m.{ND`D<9y>??9z409W09@Hм}/a,PORyy>N2.Ryz4JLN^NuNV>ANBJ@f .{NDJyz4l.{ND`3yRyy>N2.N^NuNVH<93yRyy:93yRyy>9yRyy>N2.a>N2.>aJ@f.| ND>N3`>?<a/N4\O>N2.33JLN^NuNVH? <93yRyy:93yRyy>VNBJ@f.|a|`">QNBJ@fN.N5>QNBJ@g>N2.>QNBJ@f&>BgN/N4\O>QNBJ@g>WNBJ@gad>N3`~>93yRyy*yyN(@#y89Z>WNBJ@g$a 69Z3Z>N2..N5#y3Z>N3>N2.33JL0N^NuNVHa*@BF> a:J@ga<`^>a&J@gaX<`J>aJ@gah<`6>aJ@g*>;N=TJ@g<9>;N=` >YNBJFg:>?</ N4\O>QNBJ@f .|/a> aJ@ga`\>9yRyy>Bg/ N4\Oa> alJ@g*<9yRyy>N3>N2.a>N2.`>N2.JL N^NuNVH>;N=TJ@fl# #.nNN.N>93>N f3N @. N4BB` >;N=>N3JL N^NuNVH?>93yRyya*@>/ N*XO.N489z4JDlRyz4693z4<9yRyy>N3:9Byap>N3>N2.Jyf 309@Hм}.?9?9z409WN0>XO>N2.33z433JL N^NuNVH<93yRyy>93yRyy>N2.>Bga/N4\Oa>N3>N2.33JLN^NuNVHN7>|Yf 09ng >NBB@`pNqJLN^NuNVH 0. @H*@;n:(MYSn m:0,mf .|AND0,ml>,9m;G>8:YY`JL0N^NuNV.NX"NqN^NuNVHNf\BW/<iNZrXO>/<iNZrXO>/<iNZrXO-|i .2. HЁ @B=| *nJgJg  o mR`JgBG 2HЁ @  oR 2HЁ @ lB 2HЁ @ Am 2HЁ @ Zn 5pH| `5pH" 4H҂"ARG`J5pg 2HЁ @BRG f0>NYBWBg/ RN[\O|g.R/<}aRXO` N2n!MRn` N2n!|.?.NCTONqJL N^NuNV.Nh>/.?<N_\O. Nh>/. ?<N_\O>/<}.?<N_\O>NY^N^NuNVHIBBn .RdRn-\ fRn-\*\&Lg(K<%gH>/?.a\O`Bn<-fRn| <0fG=|<0m*<9n$JnlBnH2. A|=@`=|<.fBn<0m <9nH2. A|=@`Bn<lfRnA-HH`@Jng -|Ut`-|VBW/.?<?< // NV(TJngT`BW/<VBg?< // NV(T`Jng -|Ut`-|VBW/.Bg?<// NV(TJngT`Jng -|Ut`-|V<XgBW`>/.Bg?<// NV(TJngT`N-\&L`F=[0.@B.`4H>/?.a"\O``H |}0r W h0N.Nhn=@0.nl Jnm=n0.n=@Jnf^ . g. n -f$Sn nH>/?.a\OR0.SnJ@o.H>/?.at\O`0.SnJ@g nH>/?.aJ\OR`0.SnJ@o.H>/?.a \O`` nf nBJL8N^NuNV0.`@.H>N4,`B n ..H?NWTO`( n  @"n R``J@g|gư|gNq.HNqN^NuNVH*n<.H n. nfzJgJEg SE``j nf&z JgJEg SE`JEf-`/ ?. N_\ON^NuNVH*n ;|A+HJnfB@`p=@>?</.N[\O:NqJL N^NuNVH*n Jmn*A+H>/-?N_\O|gp`;| m RSm. HNqJL N^NuNVH*n .0.@?WaTO.?.WaxTO0.NqJL N^NuNVH*n><m;|A+H>/-?N_\OGgp`B@NqJL N^NuNVH*n BmJnfB@`p=@>Bg/.NZr\O:NqJL N^NuNVH*nJmnA+H>/-?N[\O;@Jmnp`Sm mH|RNqJL N^NuNVH*n.a>|fp`4<|F.a~>|fp`0|@g <@0NqJL N^NuNVHBG|l >NYRG`BBgNTOJLN^NuNVH>Ng*@fp`H|g>Nf~>NgrB@`g.f(>B?.Nd|\O>/<i?.N_\Og,>"/</ 2/-/ Ne|gp`,.?<NTO>Nf~>NgrB@NqJL N^NuNVHNg8>JGlp`>Nf~>Nf*@Jn fJnf.i/.NgXOJ@f 0`B`.i/.NgXOJ@f0`">/.?Nd\OJ@gp`0NqJL N^NuNVHNg8>JGlp`~>Nf~>Nf*@Jnf.i/.NgXOJ@f 0`B`.i/.NgXOJ@f0`">/.?Nd\OJ@gp`0NqJL N^NuNVH*n :.H>Ng(@fp`PgB@`Dgp`8g./ / a:PO`"f./ / aPO` -EJo.,gpg2>"/</ 2/,/ Ne|gp`>!/</ 2// Ne|g .`)G ,-@&L2 мdDJo@<f , o)l .`6`< fRR` SRR`` , o)l .NqJL8N^NuNVH*n(n ..-G --@ -g -glg2>"/</ 2/-/ Ne|gp`>!/</ 2/./ Ne|gp``+n "-¼Ё&@2 мdJo SR`Jf - o+m .`RB -@Jo>!/./ /./ NeH,ݮ ѭ   - o+m g .`Jf .`g0>"/</ 2/-/ Ne|gp``>!/</ 2/./ Ne|g  .`(߭ - o+m G2JoS` .NqJL8N^NuNVH *n.. |.?< NTO0| .?<NTO.HH̼IJo JoSS`Jo R "ҼNqJL0N^NuNVH*n :.H>Ng (@fp`JnB@`gp`g>// a PO`g>// aPO`hf./ / abPO`R-EBJoF ,-@B ,g8g2>"/</ 2/,/ Ne|gp` ,g8 , l.>!/</ 2/./ Ne|gp`)n ,-@&L2, мd"Jo  f < g< `SR` мe2>"/</ 2/./ Ne|g .`$`@Jf , o)l .``JL8N^NuNVH*n(n ..-G --@ -g -gg2>"/</ 2/-/ Ne|gp` - l0>!/</ 2/./ Ne|gp``>/ 2aXO+n "-¼Ё&@2 мd JoS`Jn$@ .ѭ - o+m .`2>"/</ 2/./ Ne|gp`R -@Jo*>"/./ /./ NeH".gp` . . .ѭ - o+m Jf .`g,>"/</ 2/-/ Ne|gp``@ -+@ - l$>!/</ 2/-/ Ne`>/ 2a XOG2JoS` .NqJL8N^NuNVH*n>. 0SGJ@oB`JL N^NuNVH*n.. <.-GJo,  f0| .?NTOHH.?NTOS` .NqJL N^NuNVH>Ng*@fp`H0.`&+n `0 . ѭ`& - Ю +@`p``J@gְ|gذ|g` -NqJL N^NuNVH*n >Nf(@G -:f" am zn H|`H|TBG  o6|l0 .g* am zn H|`H"K4G@RGR` .f:RBG  o0|l* am zn H|`H"K4G@ RGR` nf.?<NTO.?.NTO>|nB@`pNqJL8N^NuNVH? *n.. (n,.:.BJo<.?<NTO+G..?NTO8JDg `RSR` NqJL0N^NuNVHBG|l>aRG`JLN^NuNVH >aP*@0.@B+|BB B-I мd ` м.dB`JL0N^NuNVH>.0мNqJLN^NuNVH nep`>Nf*@fp` NqJL N^NuNVH|BG|l0y}f y}0` FRG`pNqJLN^NuNVH|BGnlFRG`0F@y}B@NqJLN^NuNVH. gRn*y}0.H.N|fp`*y}0.Hѹ} NqJL N^NuNVH *n(n Jg*Jg&H>a,H>a"op`lp``B@NqJL0N^NuNVH. <am <zn< HNqJLN^NuNVH*nBGJgRG`0NqJL N^NuNVH*nBGJgRG`0NqJL N^NuNVH?BC..,. Jf# <`ro #B`bJl D.RCJl D,RCfzB` xm`BJgm`|f D# D` # NqJLN^NuCP/M-68K(tm), Version 1.1, Copyright (c) 1983, Digital Research1015-0901-000019Stack Overflow$C runtimeCON:LST:ABBDABBD ^rrJF$NZbTVZl~~ 1347;PllPllexternal definition syntaxexternal definition syntaxinvalid typedef statementinvalid storage classinvalid storage classinvalid storage classinvalid register specificationredeclaration: %.8sstructure declaration syntaxredeclaration: %.8sno structure nameinvalid structure prototype: %.8sstructure table overflowinvalid type declarationinvalid type declarationinvalid type declarationfloating point not supportedinvalid long declarationinvalid short declarationinvalid unsigned declarationinvalid structure declaration: %.8sredeclaration: %.8sillegal function declarationillegal register specificationillegal register specificationtoo many initializersmissing { in initializationinitializer list too longinitializer allignmentmissing }missing }invalid initializerfunction body syntax{ not matched by }declaration syntaxredeclaration: %.8stoo many paramsinvalid declaratordimension table overflowinvalid field sizefield overflows wordfield overflows byteinvalid field type descriptioninvalid data type CDETUVWXYZ[bTdpPPpHTV]d     <=>?@BHIZ[$'>&&n&n%&n&&$$$(((6((((6((((~((((((~*+**++*++++f+l+r+|++++++,,,,,,,,,,,,,,,,,,,+++++,invalid expressionundefined symbol: %.8sexpression too complexunexpected EOFexpression too complexexpression too complexassignable operand requiredstructure operation not yet implementedillegal type conversionillegal type conversioninvalid structure member nameinvalid ?: operator syntaxindirection on function invalidillegal call& operand illegaladdress of registerinvalid conversioninvalid operand typeconstant requiredbad indirection .dc.b %d .dc.w .text .data .data .bss .globl _%.8s .comm _%.8s,%ld .ds.b %d .even link R14,#%d movem.l R%d-R7R%d-R13,-(sp) tst.l (sp)+ movem.l (sp)+,R%d-R7R%d-R13 unlk R14 rts ~%.8s=L%d ~%.8s=R%d ~%.8s=%d tst R0 cmp #%d,R0 beq L%d sub #%d,R0 cmp #%d,R0 bhi L%d asl #2,R0 move R0,R8 add.l #L%d,R8 move.l (R8),R8 jmp (R8) ext.l R0 move.l #L%d,R8 move #%d,R1 cmp.l (R8)+,R0 dbeq R1,L%d move.l %d(R8),R8 jmp (R8) .dc.l %d .dc.l L%d L%d: _%.8s: ~~%.8s: _%.8s: can't copy %s%d bra L%d L%d:CDEJK65556"6"6F.%x %x.%x.%x .%x.%x .%x.%.8s .%x .%x eeeeeeefghijVWklBm[nooooooooooAQpqr@ssssssssssssssssssssssssssTUtsssssssssssssssssssssssssssRuS wwwwwwwww w w w w wwxxxxxx$x+x2x9xAxGxP efghijklmnopqrstu828R8V8l8889<9R9x9:*:;;;<`Bg/.N9L\O.a -@.PabJ@f .NqN^NuNVH n:0@Hм~ @g .` 0@Hм~ @g6 n ( @ PJf$ n*h(m>-G|8-||B0fSF n ( @ PCf|g|f|f$ n!L n h 20(`1@ .` n h Jhf, n0 n!L02`F@"n"i 3@ .`L0"n"i 2)A@f* n0 n!L02`"n"i 3@ .`|f n!L`$.N<@(@.a*@ n: n-h |g"./ BgBg?<?WN7 -@>?<N7TO./.BgBg?<?<N7 -@>?<N7TO./.BgBg?<?<N7 -@02`F@>?<N7TO./ N<@XO/BgBg?<?<N7 *@./ BgBg?<?< N7 -@./ BgBg?<?<N7 -@`к|Jf n>(G|p"n2)|`<SF>?<N7TO. n/(BgBg?<?<N7 -@>?<N7TO./.BgBg?<?<N7 -@`B/. n/(aXO _!@0E~(g/. n/( aXO _!@ .NqJL0N^NuNVH n&P0+|g kk80@Hм~ @gB@`bBE0D~(g . a@.Pa@80@Hм~ @f n *k0D~(g(k kf7|.a $-@` .a -@*kJg n<(0`Jg JFf&M` Ua >JGmD Uf>. a(@g,>a Gf 0|@Hм} @6 nBh``pJg$JFf >N"^J@g n1|&n`X`BJgJFf>N"^J@g&n`4`JgJFf&L` |f&M``JgJFf&M`|f&L``JgJFf&M`|f6 `` kf T$f.N"^J@g 'l `JgJFf&M`g 'n ``r U=f&m`v UEf4 mf,6> ?<N7TO'@ ;k;|Bm `<`&-m0`l&n`$BWBg?-?< ?+N1xPO&@`> Bg?-?< ?+N1xPO&@`.afJ@g;|;kBm &M`` n PEfD n hf8. a(@g& n0(|0|g0,"ni &n`t.aJ@gd. a(@g( n1| n1k0,"ni &n`.Jy$f" m P0@Hм~ @gJ n&h. n/( aXOJ@g. n2|AHҼ}"A0 n"n!i  n!K 0@Hм~ @gA-H\Ad-H`.`/\/.aPOY\Y`K\b .a>*X`K\b$(M\b./a6XOJ@g&T(*X`X`(n\*n` мdc &U'T 'd.aJ@gY\Y`Y`IKd&\`bV U!K&]'\ >N"vJ@f: k >N"vJ@g k 7h` k>N"vJ@g k7h`-K`p0G~(g2/. n/(aHXO _!@/. n/( a0XO _!@ `,0G"|~00|@@f/. n/(aXO _!@ .NqJL8N^NuNV n h fB@`r n h fp``. N#,J@gB@`N.N#,J@gp`<. aJgp`,.aJgB@` n0("n 2)AnB@`pNqN^NuNVH (n *n n0"n")"A2Af./ n/(aPO` T"n X n0"n") "A2Af./ n/( aPO` T"n X U XJL0N^NuNV n PCf .`( n P$f n ( @ PCf n (`BNqN^NuNV n PEf" n hf n> N#J@fp`B@NqN^NuNVH? n&P>0@Hм~ @gB@`*BD*k UDf -mRD` .aD*@g 0m-H`B@`0G~(gr(k |@f:*l(l UCf TCgB@`Jg0-`0,;@ n p` TDfRD&,`.a(@g6,H`B@`p .< :0` ׮`.`&JDgB@`F0`T0-@``0HH-@`R0HH@H-@`B02`H-@`402`H-@`&02@H-@``W@|b@0@_ PN`mB@`pH-@`oB@`pH-@`~nB@`pH-@`hlB@`pH-@`R .D-@`F .F-@`:JgB@`p-@`(`"Ǯ`B@`B`S@|"b@0@_ PNJDg.?<N7TO*@` .;@ n pNqJL8N^NuNVH n(P. a*@gb>a>JGlB@`T:0`*z`-SG`&z>-SG`B@`&`H |`r W h0N8;Gp`B@NqJL0N^NuNV n P$f n h>N"^J@fB@` n PDfp` n>N"vNqN^NuNVH n(P.a>g n(P&l .aJ@f*l.aJ@g0`8(`.ajJ@gT% SDf6N`t.aNJ@gh SDf6N UEf mf.aEN6`(T./ BgBg?<?<?. /.a"\O> мdP|f>NDjKd>RW?</a\OX`|f.?NCPTO`|f>ND0NqJL0N^NuNVH n>0@Hм~ @g .`~|g|f" n  @ "n X n.N<@`N0G~(g/./. n/( aPO _!@ /./. n/(ajPO _!@ .NqJLN^NuNVH? n0`ZBE<9 n ( @ PEgRy n PHf& n*h UBf. a4@*m`.a&@ n0>?</.a\O>NC3BW?. /.al\OB@`Z>?< n/(aR\O>?. n/( a<\O`* n f n. a6JCm~> n/(aXO6JCmf n ( @0@Hм~ @g n"n"i !i n h 1C n0&.N-@>?./.N9L\O`$`"|g\|Bg$|Hg|IgNq>?. /Paj\OJ@g: n f2 n PEf(.N|J@g. n?( NCPTO0.`>?. /.ax\O80NqJL N^NuNV0. `<.?.NCPTO`>Ry n gBW`>/.?.NC\O``|g|gʰ|gNq0.NqN^NuNVH n0` n f0.``>a J@g n. N<*@g n h>a J@fx mg mff>?< n/(a\O> n.?.?NBXO mf.?.?.NBXO.?.?.NBXO0.`:` n.N|J@gf>a =@.?. n h>( ?NBXO n h1n >RW?. /.af\O.??.NBXO0.``P n. N<*@gJml mm0-D@;@ nRP``H |a\rW h?./.N9L\O>?. /.a T\O>JGm0`:>?. /.a\O>JGm0`>?. /.a\O>JGm0` n fz>?</.a\O*@ g`.?.?</.aPO> n0@Hм~ @g. n.N|J@g n. n h?( NCPTO`x>?. /.a\O*@g.?.?. /.aXPO>`D n g&>?</.a \O>?. /.a\O>` n0>/<cN6XO0NqJL N^NuNVH? n>|m| o n hf >ab=@ n-hBCBn n*h(M=|0G~(gRn n(h n>aJ@g8|g0|g*|g&>a0J@g>aJ@f>azJ@fRC0`2>aPJ@gRn`6>a>J@f >a2J@gRn``W@|b@0@a PN<.RF nH80RJ@g|0`>N8`Sy.cNF`Uy>NC`v n f.cNF` .cNFRy`J0D"|} ./<cNFXO`$0@Hм~ @g n>`>NA`0@Hм~ @g n>`>NAP`>aJ@f >aJ@g >NA`>NA`|gJng0 @"|{0H=@`0 @"|{0H=@0n"|z.NF`>|f ` &@>/ N>$XO`>NC`>NC`>a>NC`>a>NC`>?</ NA\O`ȸ|f>`>?-/ NA\O`|f>`>?,/ NA\O`Sn|f `|f ` .&@ nH=@R=|.g n f=|`=|`.g=|.g:`:..gf S=g>/<cN6XO&kBn.a Jg&kRnJnf SEg SCf$0@Hм~ @f kg>at:>?./ aH\O=@ nf.g(>apJ@g.?a:TO??.NBXO`.g<.`Ⱥng|g>a(J@gJno|f4BW?./ N9L\O"n2)An>?./ N9L\O|o8|fFBW?./ N9L\O"n2An,>?./ N9L\O|n>ad=@<.RF`.?.aNTO??.NBXO`|f -` ,&@.a&@ g SCfJkg BW/ N>$XO`H0` >NB`|g|g|*g|-gNq``||&bf@0@b8 PN`4JCgB n f:>aJ@g.>aJ@f >aJ@g >NA` >NAr0.NqJL8N^NuNVH n>|/mB`0@Hм~ @g(n` n(h0G~(fB@`p<g n&h 0@Hм~ @gb|gZ0@Hм~ @fF n!l l>a@J@g|f>?. /.aB\O*@ g ` n!L`Z0@Hм~ @gF n!k k>aJ@g|f>?. /.a\O*@ g ` n!K 0. `*z` /<dN6XOB`|`S@|b@0@b PN0E2"|{0H:JEfB`B0@Hм{f @*PJUg*>/ a&XOJ@gJFg>/ aXOJ@g `P`BNqJL8N^NuNV ngB@`pNqN^NuNV ng0.|0fB@`pNqN^NuNV nfp`0.|0gp`B@NqN^NuNV nfp`0.NqN^NuNV0.|NqN^NuNV0.|NqN^NuNV nlB@`pNqN^NuNV nmB@`pNqN^NuNV n PEf n hgB@`pNqN^NuNVH n0(n n. g n P=gB@`8. | n>(0|0| f|>a<g>a>BE n0` n hnRE``|Cg|DgNq0`L|gB@`p`T|fp`J|gJEfB@`p`80`4>ad`,>/<dN6XOB@``S@| b@0@b PNJLN^NuNVH? n P=g n hn n:( n P=f` n(h TfP*l (lBG UCf>-|m|n TgBWBg??<?N1xPO-@.N|J@g n1l `J>a>?</ a\O<>aJ@g.?aTO??NBXO/.?aTO _1@ ` UCf*l (l.N|J@f.N|J@f.aJ@g&L(M*KB.N|J@g(6, .aJ@g mg=m =m`&M`F.aJ@g( lg Jy$f U0.Wa°|n<.JgD>a>?</.a\O6>aJ@g .?aTO??NBXO>a6RF g0 Sa@>?</ a\O=@=k>?.???N;PO-@>aJ@g n hf >a=@./.Bg?< n?(?<'N7 -@>?. /.a\O`pNqJL8N^NuNVH n PfP n*h UCf `BJy$f6 Ug n f=yxfRyxf>?.?</.axPOBW?<N7TO.N-@>?. /.a~\O=yxfRyxf>N8>N8>?<N7TO.N-@>?. /.a.\O>N80.`pNqN^NuNVH n P@f n g>9xfRyxf>?Bg n/(aPO:9>?. n h /(a\O8.?.?NBXO3<9xf>N8Ryxf>N8>?. n h /( af\O8.?.?NBXO>N80.`pNqJLN^NuNVH n*h n:0E~(g n(h 8. 0` nJhfJn f >N8`Jn g >N8`>?.Jn gBg`?</ a|PO`Jn gB@`p=@ Jn fB>9xfRyxf>?JDgBg`?</ a?.?/ a*PO>N8`$>?.?/ aPO>?.?/ aPO`">?< n/(aP\O>?.?. n/( aPO`0@Hм~ @g" UFf TFf0-lf .NB`>?</.a\OBF0@Hм~ @g>aZJ@f >aNJ@gRF`zJn f0|@Hм} @:0F2E"||0H<>0F"|z/0/<d&NFPO``H |crW hNJL0N^NuNVH n*P<BG0@Hм~ @fR|BgL>?. / Pa\O@0F~(g>?. /  a\O@>?. /.a.\O@JGg/. n /NXO _ 0NqJL N^NuNVHBF n*P>0G~(gL&m SEf@-m 0` kg0`* n0`> a.J@g0` n(h ln TEf lf0, k f0` n(h TEf lf 0, k g+L >?</ a\O n+h n0|:`x`S@| b@0@cD PN kg0`l>?</ a\O*K`< n f0`J>?</ a\O*K``||b@0@cl PN`.N*@ n RF`0NqJL8N^NuNVH n>(0|0gp`80` p`0p`,`|g|g|g|gNq.d.N6B@NqJLN^NuNVHBG n PEf n h f.dCN6`4JygBW?</.a<\O.aV>`BW?</.a \O0NqJLN^NuNVH n hfBG`.a2. AA>SG n PEfV n0(`4 n> a J@g0. `p`0"ni 0. |`r`U@|b@0@c PN`T n P=fJ/.??<N7XO/ n/(BgBg n h?(?<N7 _!@0. |`pNqJLN^NuNV.N<-@g n>N`pNqN^NuNVJyga.a,J@gBW?</.NXO/N\ON^NuNVHJygah.aJ@g2BW?</.NXO/N\O>JGg.Bg?NBXOJLN^NuNVJyga.aJ@g BW?.?. /.NXO/N)PON^NuNVHJyga.aPJ@g n>(.N-@ n PNA> N8>/.N>$XO` .x N8JLN^NuNVH>N8 *@:E;n;n;n;n 0. `JBm Bm ;n `NBm ;n Bm`>;|;n ;| Bm`&;n Bm Bm``|gа|g|g` NqJL N^NuNV .e <dB@`P n0@Hм~ @gp`4 n0P~(g n. aJ@fB@` n.aNqN^NuNVJygJyf > N8>&/<xSNFXON^NuNVH~nl0@HЮ @*P -gaH`@Ry`Ry$`Ry`Ry`Ry6`Ry8`Ry``ah`H |xhrW hNNJL N^NuNVH.NM>JGo0`a,3&# a*@gR0`:.N0`B>?-/-N0p\O`,.N0` .N/``|Kg̰|Lg|Mg``B.NM>| g>aL`>aD`.zEa<``|(gȰ|.gL``,JL N^NuNVH a^>JGnB`HaN<0` aB:|f.Qa.??NDXO*@`BWBga???N1xPO*@`a>?a~TO*@`a=@a=@.?aTO*@`a:a\*@g./ Bg???a *@`0G~(g6a*@ fB`pa(@ fB``./ BgBg??a *@`(a*@g./ BgBg??a| *@``|C|b@0@x PN NqJL0N^NuNVHBG.NM<0`20`FG0|@`8G0|@`,G0|@` .z]ad`H |y rW h`N`JLN^NuNVH~*n.NM<| gSGm`JGoB .NqJL N^NuNVRy:Ry Jy&g>&/<zuNFXO>?.?.?.?.?. /.NF> aSy N^NuNV>?.?.?.?.?. /.az>NNN^NuNVH>a*@:;n ;n +n+n NqJL N^NuNVH> aN*@:C;n;n  NqJL N^NuNVH> a *@:D;n+n  NqJL N^NuNVH*y 2.HЁe .z}a 2.HЁ# NqJL N^NuNVH *n(n ~SGmJgH`B@`JL0N^NuNV.zaN^NuNVJno>/<zNFXON^NuNVJno>/<zNFXON^NuNVJy g>/ ?<NT\O`8 yo>/ ?<NT\O.. H?NLTON^NuNVH > N"=@ n:0E~(g n*h n(h `0E"|~00|@@f n*h0` n (l n (n><` n (8|Cf n8(JDfBG`4|f><`(|m |n><`|m |n><`><`>?. / a\O??.?. / aPO_o>?. / a\O`>?. / a\O>| o0`0< >`J>?. / a\O>`4><`, n hg><` n> N#J@g><`><`>?. / ad\O>?. / aT\O>< `>?. / a<\O>0E~(gx|n,>?. / a\OGl0`>?. / a\O>`2>?. RW/ a\O<|o n o| o0`0< >| l0< `0>`|n| l0< `0>``|(|&b@@0@~$ PNJng n1G0NqJL0N^NuNVH>N8 *@:E;n;|;n ;|;n ;n;n NqJL N^NuNVH n0` n hg n hf$. n?( n?(aXO*@`0BWBg n?( n?( n?(N1xPO*@ n;h n;h n;h `D n> n?(N7TO`( n. n?(N7TO` n. n?(N7TO*@:N ` n0P~(g@ n. a. n/(aXO/BgBg n?( n0?N7 ` n0P"|~00|@@f6. n/(aXO/BgBg n?( n0?N7 `B n0>/<N6XO .`&`$|Cgܰ|Dg|EgF|Ng`JL N^NuNVH n P#N8 n>( n<( n:( n0`>/<NFXO`>/<NFXO`. g >#N8 n>/<NFXO`. g >#N8 n.a`JGgT n0(`4>/<NFXO`8>/<NFXO`&.N6``U@|b@0@| PN n0(` >/<4NFXO` >/<8NFXO`./<>NFXO`>/./<DNFPO`>/<ONFXO`>?/<SNF\O` n>??/<\NFPO n>aZ>)N8``>/<gNFXO`N n=h n=h.ar`0 n>/<jN6XO``U@|b@0@ PN`2 n0>/<N6XO``|C| b@0@ PNJLN^NuNVHBG ."N4G@RG .-@ <Jf>$N8SGm$6pH<| m>WW`>W0N8`JLN^NuNV>N"vJ@g.NF` nf .NFN^NuNV>N"vJ@g .NFN^NuNV>/<NFXON^NuNV>?.?./<NFPON^NuNV>N#J@gB n>N"vJ@f0> N"vJ@g" n>N"^J@g>a`>arN^NuNV>/<NFXON^NuNV./<NFXO> N"J@f>N"J@g n>a` n>a>?. /<NF\ON^NuNV0.n g. ?. ?./<axPON^NuNV. ?. ?./<aXPON^NuNV.NF n h>a* n h > n h?( /<NF\ON^NuNV>N"ذ|o .N6>/<NFXON^NuNV>N"J@g,.NF n >a>/<NFXO`*.%NF n >at>/<)NFXON^NuNV./NF n >azJng>-`BW?./<4NF\ON^NuNVJno>/<ANFXON^NuNVH>N8 *@:E;n;n BmBm ./. N8hXO NqJL N^NuNV>/<MNFXON^NuNV>/<ZNFXON^NuNV.NMLNqN^NuNVHN[BW/<^NOXO>/<^NOXO>/<^NOXO-|^ .2. HЁ @B=|*nJgJg  o mR`JgBG 2HЁ @  oR 2HЁ @ lB 2HЁ @ Am 2HЁ @ Zn 5pH| `5pH" 4H҂"ARG`J5pg 2HЁ @BRG f0>NNBWBg/ RNPF\O|g.R/<uaRXO` N2n!MRn` N2n!|.?.N2TONqJL N^NuNV.N]h>/.?<NT\O. N]h>/. ?<NT\O>/<?<NT\O>NNN^NuNVHIBBn .RdRn-\ fRn-\*\&Lg(K<%gH>/?.a\O`Bn<-fRn| <0fG=|<0m*<9n$JnlBnH2. A|=@`=|<.fBn<0m <9nH2. A|=@`Bn<lfRnA-HH`@Jng -|J`-|KBW/.?<?< // NKRTJngT`BW/<KBg?< // NKRT`Jng -|J`-|KBW/.Bg?<// NKRTJngT`Jng -|J`-|K<XgBW`>/.Bg?<// NKRTJngT`N-\&L`F=[0.@B.`4H>/?.a"\O``H |r W h0N.N]D=@0.nl Jnm=n0.n=@Jnf^ . g. n -f$Sn nH>/?.a\OR0.SnJ@o.H>/?.at\O`0.SnJ@g nH>/?.aJ\OR`0.SnJ@o.H>/?.a \O`` nf nBJL8N^NuNV0.`@.H>N8`B n ..H?NLDTO`( n  @"n R``J@g|gư|gNq.HNqN^NuNVH*n<.H n. nfzJgJEg SE``j nf&z JgJEg SE`JEf-`/ ?. NT\ON^NuNVH*n ;|A+HJnfB@`p=@>?</.NPF\O:NqJL N^NuNVH*n Jmn*A+H>/-?NT\O|gp`;| m RSm. HNqJL N^NuNVH*n .0.@?WaTO.?.WaxTO0.NqJL N^NuNVH*n><m;|A+H>/-?NT\OGgp`B@NqJL N^NuNVH*n BmJnfB@`p=@>Bg/.NO\O:NqJL N^NuNVH*nJmnA+H>/-?NP\O;@Jmnp`Sm mH|RNqJL N^NuNVH*n.a>|fp`4<|F.a~>|fp`0|@g <@0NqJL N^NuNVHBG|l >NNRG`BBgNTOJLN^NuNVH>N\**@fp`H|g>N[>N\B@`g.f(>B?.NY\O>/<^?.NT\Og,>"/</ 2/-/ N[|gp`,.?<NTO>N[>N\B@NqJL N^NuNVHN\b>JGlp`>N[>N\*@Jn fJnf.^/.N\XOJ@f 0`B`.^/.N\XOJ@f0`">/.?NZ\OJ@gp`0NqJL N^NuNVHN\b>JGlp`~>N[>N\*@Jnf.^/.N\XOJ@f 0`B`.^/.N\XOJ@f0`">/.?NZ\OJ@gp`0NqJL N^NuNVH*n :.H>N\*(@fp`PgB@`Dgp`8g./ / a:PO`"f./ / aPO` -EJo.,gpg2>"/</ 2/,/ N[|gp`>!/</ 2// N[|g .`)G ,-@&L2 мdDJo@<f , o)l .`6`< fRR` SRR`` , o)l .NqJL8N^NuNVH*n(n ..-G --@ -g -glg2>"/</ 2/-/ N[|gp`>!/</ 2/./ N[|gp``+n "-¼Ё&@2 мdJo SR`Jf - o+m .`RB -@Jo>!/./ /./ N[H,ݮ ѭ   - o+m g .`Jf .`g0>"/</ 2/-/ N[|gp``>!/</ 2/./ N[|g  .`(߭ - o+m G2JoS` .NqJL8N^NuNVH *n.. |.?< NTO0| .?<NTO.HH̼IJo JoSS`Jo R "ҼNqJL0N^NuNVH*n :.H>N\*(@fp`JnB@`gp`g>// a PO`g>// aPO`hf./ / abPO`R-EBJoF ,-@B ,g8g2>"/</ 2/,/ N[|gp` ,g8 , l.>!/</ 2/./ N[|gp`)n ,-@&L2, мd"Jo  f < g< `SR` мe2>"/</ 2/./ N[|g .`$`@Jf , o)l .``JL8N^NuNVH*n(n ..-G --@ -g -gg2>"/</ 2/-/ N[|gp` - l0>!/</ 2/./ N[|gp``>/ 2aXO+n "-¼Ё&@2 мd JoS`Jn$@ .ѭ - o+m .`2>"/</ 2/./ N[|gp`R -@Jo*>"/./ /./ N[H".gp` . . .ѭ - o+m Jf .`g,>"/</ 2/-/ N[|gp``@ -+@ - l$>!/</ 2/-/ N[`>/ 2a XOG2JoS` .NqJL8N^NuNVH*n>. 0SGJ@oB`JL N^NuNVH*n.. <.-GJo,  f0| .?NTOHH.?NTOS` .NqJL N^NuNVH>N\**@fp`H0.`&+n `0 . ѭ`& - Ю +@`p``J@gְ|gذ|g` -NqJL N^NuNVH*n >N\(@G -:f" am zn H|`H|TBG  o6|l0 .g* am zn H|`H"K4G@RGR` .f:RBG  o0|l* am zn H|`H"K4G@ RGR` nf.?<NTO.?.NTO>|nB@`pNqJL8N^NuNVH? *n.. (n,.:.BJo<.?<NTO+G..?NTO8JDg `RSR` NqJL0N^NuNVHBG|l>aRG`JLN^NuNVH >aP*@0.@B+|BB B-I мd ` м.dB`JL0N^NuNVH>.0м@NqJLN^NuNVH nep`>N\*@fp` NqJL N^NuNVH|BG|l0yf y0` FRG`pNqJLN^NuNVH|BGnlFRG`0F@yB@NqJLN^NuNVH *n(n Jg*Jg&H>a,H>a"op`lp``B@NqJL0N^NuNVH. <am <zn< HNqJLN^NuNVH*nBGJgRG`0NqJL N^NuNVH*nBGJgRG`0NqJL N^NuNVH?BC..,. Jf# <`ro #B`bJl D.RCJl D,RCfzB` xm`BJgm`|f D# D` # NqJLN^NuCP/M-68K(tm), Version 1.1, Copyright (c) 1983, Digital Research1015-0901-000019Stack Overflow$C runtimeCON:LST:<CDE 6   LBlP* P l lP*  v t00 4J`v()*+,-HPXLTbHPXLTbl*22bNNdivide by zeromodulus by zerohard long to register+,-ET           @PPPPPPPPPPPPPvvvv2|V*DzzZZ!!!!!#$#$$$$ $$$# >?BC**&*6*)*,,,,-n,,,,,----,-|-|----n-n-|-|-|./////no code table for %d(sp)+(sp)-(sp)%scode skeleton error: %d match cookie=%d skelmatch type: %x%s L%d cdsize: invalid typestructure operation not implemented , , , , , , ,() ,  djdj dxdx dd , , , , ,()  dd dd dd  () , ()   e< e< eB eB  eL eL , ,  (),  (),  e e  e e e e e , , ,  f f f f  f& f& , ,  (), ,()   fh fh fx fx   f f , , ,  , (), ,()  , ,() ,()  , ,() f  f f fffgggg  g.  g.  g.  g. g>g> g>g>  () , , , , , , , , ,  , ,()  (), ,  ,()  (),()  g g gggg ggggh hhhh,h8h@fhLhZhrhrhr  h h hhhhhhh  h  h  h  g.  g.  g.  g. g>g> g>g> , , , ,  , ,  , , ,  ,  ,  j  j jjjj0jDjD jN jN jN jN j\j\ jpjp  j~ ,  ,  kk  k$ , ,  jN jN jN jN  kPj\ ,  ,  , ,  j  j  kk k k k k  k k kk , (),  ,  , ,  ,  ,     l, l6 lD  lPl\ lj l|l , , ,  , (), (), ,  ,  ,  , l ll l m m m& m: m:  mH mHl , , , , , , ,  (), ,  , ,  (), (), ,()  , , , ,() (),  , (), ,()  , (), ,()  (), , ,()  (), , ,() m mmm mmm n n$  nD  n\  n\ n\nv n nn n (), ,  (), ,()  , (), , ,  , ,  (), , ,() , , , ,  , ,()  , ,()  , ,()  dh dh dh dh gghhfggggh8fffo f o o o  o  g. g> op p$ fof  g.p4 pJ p` m  nD n , , , , , , ,  , , , ,  , ,  (), , ,() q q qr  r r r. r. , ,  , ,() (),   r r rr rr rr , ,  gg  f f ff g. g. g. g. g>gsofh g.p4 ,  () (), , ,  , , ,  , (), , ,()  (), , ,()  s s ss  s s sstt t,t, t,t,  () , ,  (), , ,  t t gg tt tt  u u , ,  uh un uz  u , , , , ,  u u u  u +2(),  uz v j ,    v.v@ (), , , ,  j jD e g g g g vb vb gghhh8ggghvfvfvf vt vt vtjDjDjDjDjv jN jN jN jN j\ jpjp  j~ ,  ,()  wwww  xx x x.dc.l .dc.invalid initialization*line %d yz'CDEFLMOcdeflmo3,3$233 2333$233 2333.5<5P455555r5r .0123456789ABCDEFabcdef6Z6Z6^6^6^6^6^6^6^6^6^6^6j6j6j6j6j6j6v6v6v6v6v6v6CP/M-68K(tm), Version 1.1, Copyright (c) 1983, Digital Research1015-0901-000019can't open %s can't create %s intermediate code errorintermediate code error** %d: expression too complexusage: c168 icode asm [-DLmec]bra L%d L%d:}D}E}I}M}Q}U}Z}_}d}i}m}q}u}y}}}}}}}}}}}}}}}}}}}}}}}}}}}}pxhus"exvwk0uf0jlmVkkbfnfgTqrPtLre\uvevJd            ((  %$ #!"#"! "# !}}~~~ ~~~~addincsubdecmulsmuludivsdivuasrlsrasllslandoreornegnotmoveclrcmptstlmul_ldivlremalmulaldivalrembeqbnebgtbgebltbleblsblobccbhijmp*nopbtstmovemove.ljsrclrclr.lext.wext.llea(sp)::::::;;;;;;;;;;;;;;:;;;;;:.99:::::;;;;:OOPPP N NKJJ$ $ """""".....LLMMMM@@@@@@@" $IH G GE@@@@@R@"Q@RR R?>>?>>????F?n??Z???@@>>>>l>@f@f@f@f@f@f>tcopy op=%d(R%d)+-(R%d)%d%d+%dinvalid register expressionR%d(R%d)_%.8s_%.8s(R%d)L%dL%d(R%d)%d(R%d,R%d%dinvalid storage class %d invalid operator %d .l.b.lext.l R%d swap R%d clr R%d swap R%d swap R%d %s R%d,R%d moveaddcmpm (R%d)+,(R%d)+ expression too complexR%dcmp #0,R%d tst R%d move R%d,%c(sp) add #%d,sp move sr,R%d move R%d,ccr Cannot open Cannot create CDOSUXcdosuxHGHPHH(HHGHPHH(HIA8CA20400C10000D672C3005484042404840D0BC16 S224016F400001A8CA20400C10000A67163005484042404840D0BC0001A8CA20400C10002152 S224016F606604524560B4BA7C0080662442452EBC0001A8A63F3C00144EB900015102544F69 S224016F804A40670A13FC000100019DD6602660203005484042404840D0BC0001A8CA204040 S224016FA00C10001A660813FC000100019DD660046000FF6833C500019DDC4A9F4CDF30F0D2 S224016FC04E5E4E754E56000048E707042A6E00084247BE7C0080621630074840424048403A S224016FE0D0BC0001A95A20404210524760E4307C00FF2E883F3C00204EB900015102544F72 S2240170003C004280303900019DE02E803F3C00204EB900015102544F2EBC0001A8CA3F3C66 S224017020001A4EB900015102544F4A3900019DD266084A3900019DD467484247BE7C0080EA S22401704064163007484042404840D0BC0001A8CA20404210524760E42EBC0001A8A63F3CA5 S22401706000144EB900015102544F4A40670E13FC000100019DD642390001A95A427900013A S2240170809DDC4A3900019DD666062E8D6100FC9C4247BE7C0080646030074840424048408A S2240170A0D0BC0001A95A20400C1000616D283007484042404840D0BC0001A95A20400C10F3 S2240170C0007A6E12207C0001A95A103070004880D0S12304004EF9000004BA4EF9000004B40000000000000000000000000000000000000000D4 S12304200000000000000000000000000000000000000000000000000000000000000000B8 S1230440000000000000000000000000000000000000000000000000000000000000000098 S1230460000000000000000000000000000000000000000000000000000000000000000078 S1230480000000000000000000000000000000434F50595249474854202843292031393829 S12304A0322C204469676974616C2052657365617263682042390000040C4FF900005A80E2 S12304C04EB900004F9633C000004FA24EB900002DE8303C00204281123900004FA24E4211 S12304E04280303C000E4281323900004FA2024100FF4E424FF900005A804EB90000267606 S123050060F2302F0004222F00064E424E75223C00005022303C003F4E4223F900005024DD S12305200000501023F9000050280000501423FC00005DDC0000500C703B223C0000500C46 S12305404E424A40660000963239000051E270204E424281223900005018D27C008022410C S1230560701A4E42244952892079000051EE42800C100000670C0C100021670612D85240C6 S123058060EE148012BC00002F3C00005DDC3F3C00014EB900000C5A5C8F4280705C616AD6 S12305A02F3C00005DDC3F3C00024EB900000C5A5C8F42807038615220790000501C227901 S12305C0000050182F29000840C002405F003F002109213C000006064E604E730C40000120 S12305E06608223C0000502C60180C4000026608223C00005055600A0C400003223C000061 S1230600507270094E4270004E42D0B9000050182040227C00005DDC4280702310D951C88C S1230620FFFC4E754E56FFFC307C000D2E883F3C00024EB900000502544F307C000A2E8850 S12306403F3C00024EB900000502544F4E5E4E754E56000048E7010C2A6E0008286E000CD7 S12306604A15671E10154880B0146F047001601E10154880B0146C0470FF6012528D528CC0 S123068060DE4A1466044240600270FF4E714A9F4CDF30004E5E4E754E56000048E7011C9B S12306A02A6E0008267C00005C244A39000051DA6718287C00005B384A14670416DC60F8FD S12306C016FC00204239000051DA4A15670A0C150021670416DD60F242134A9F4CDF3800DB S12306E04E5E4E754E56FFFC48E70700307C00FF2E883F3C00204EB900000502544F3C00C9 S1230700307C00002E883F3C00194EB900000502544F3E00DE7C00416100FF0A4A466742B2 S1230720BC7C000A651C1D7C0031FFFC9C7C000A3006D07C00301D40FFFD1D7C0024FFFE46 S123074060103006D07C00301D40FFFC1D7C0024FFFD2E8E59973F3C00094EB90000050224 S1230760544F428030072E803F3C00024EB900000502544F307C003E2E883F3C00024EB9D9 S123078000000502544F4A9F4CDF00C04E5E4E754E56000048E703042A6E00083E2E000C76 S12307A0BE7C0001660C4A390000040C66046100FF344A15671C0C1500216716101D488061 S12307C048C02E803F3C00024EB900000502544F60E04A476614307C003F2E883F3C0002C8 S12307E04EB900000502544F60046100FE384A9F4CDF20804E5E4E754E56000048E7070448 S12308002A6E00084247BE7C000764383007C0FC00062040227C000050942EB098002F0D41 S12308206100FE2E584F4A4066163007C0FC00062040227C00005094303098046000014002 S1230840524760C24247BE7C0019641A3007484042404840D0BC00005B3820400C10003AE1 S12308606704524760E0BE7C000166364A3900005B3A662E4A3900005B52662610390000A8 S12308805B384880D07CFFBF6D18103900005B384880D07CFFBFB07C000F6E067005600038 S12308A000DEBE7C00016626103900005B384880D07CFFBF6D12103900005B384880D07C72 S12308C0FFBFB07C000F6F0670FF600000B2BE7C0001671C3007484042404840D0BC000012 S12308E05B3820400C10003A660670FF600000902EBC00005DDC426761000360544F4A4023 S1230900630670FF60000078BE7C000166047E02600242474246BC7C00106424207C00001F S12309205B38103070004880227C000051F2123160004881B041660470FF6042524660D621 S12309404246BC7C001964323006484042404840D0BC00005B3820404A106F1A300648403C S123096042404840D0BC00005B3820400C1000206C0470FF6008524660C870084E714A9F87 S12309804CDF20C04E5E4E754E56000048E701042A6E00084A15670A0C1500216704528D05 S12309A060F20C1D0021661E4A15671A13FC000100004FA60C1500206604528D60F623CD5E S12309C0000051E6603A4A3900004FA4672C4A39000051D6660A13FC000100004FA66018A2 S12309E0423900004FA42079000051E64A10670813FC000100004FA66006423900004FA611 S1230A004A9F4CDF20004E5E4E754E56000048E7030C2A6E00082E2E000C200D5380DE80E7 S1230A2013FC008000005BA02EBC00005BA03F3C000A4EB900000502544F4A3900005BA18E S1230A40670E0C39003B00005BA267046100FBD6103900005BA14880C07C00FF48C0D0BC27 S1230A6000005BA02040117C000A00020C39003B00005BA2660813FC000A00005BA2287CD9 S1230A8000005BA20C14002067060C1400096604528C60F00C14000A6746BBC764420C14C8 S1230AA000616D100C14007A6E0A10144880D07CFFE06004101448801AC00C140020670654 S1230AC00C1400096616528C200C20400C10002067060C140009660260EC6002528C60B429 S1230AE042154A9F4CDF30804E5E4E754E56000048E701042A6E00080C15002167084A15E0 S1230B006704528D60F20C150021670C0C15002067060C1500096604528D60EA200D4E7129 S1230B204A9F4CDF20004E5E4E754E56000048E7070C2A6E0008287C00005B384247BE7C8E S1230B4000686406421C524760F442474A15670000820C1500216700007ABE7C00046400DE S1230B60007242460C15002167320C150020672C0C15000967264A156722BC7C001964185C S1230B803007C0FC001A42813206D081D0BC00005B38204010955246528D60C8428030063D S1230BA03207C2FC001AD081D0BC00005B382040421052470C15002067060C150009660225 S1230BC0528DBE7C0001660623CD000051EE6000FF7C4A9F4CDF30C04E5E4E754E5600006A S1230BE048E701042A6E00080C1500206E04700160261015488060067001601C601648C0B5 S1230C00207C000052027211B09857C9FFFC206800444ED042404E714A9F4CDF20004E5EEF S1230C204E754E56000048E701042A6E00080C15002A6604703F60182E8D61A04A40660CE1 S1230C405279000051DE10154880600470204E714A9F4CDF20004E5E4E754E56000048E780 S1230C601F0C3E2E00082A6E000A4215780CB87C00236210200D42813204D0812040421062 S1230C80524460EA7801B87C000B6212200D42813204D081204010BC0020524460E84A3920 S1230CA0000051D867061C3C003F60041C3C00204279000051DE284D3007C0FC001AD0BC2F S1230CC000005B3842813239000051DED08120404A10663C528C7A01BA7C000B620618C693 S1230CE0524560F4307C00002E883F3C00194EB900000502544F52401A804A39000051D886 S1230D006708700B60000174600642406000016C3007C0FC001AD0BC00005B384281323901 S1230D20000051DED08120400C28003A0001666A3079000051DE3207C2FC001AD2BC000019 S1230D405B38103018004880D07CFFC018805479000051DE3007C0FC001AD0BC00005B3811 S1230D6042813239000051DED08120404A10662849ED00017A01BA7C000B620618C65245A9 S1230D8060F44A39000051D86708700B600000EC60064240600000E46016307C00002E8815 S1230DA03F3C00194EB900000502544F52401A80284D528C7A01BA7C000862223007C0FC3B S1230DC0001AD0BC00005B3842813239000051DED0812E806100FE4C18C0524560D83007F1 S1230DE0C0FC001AD0BC00005B3842813239000051DED0812E806100FDE44A406608527999 S1230E00000051DE60D83079000051DE3207C2FC001AD2BC00005B3810301800488048C035 S1230E20722EB08166305279000051DE7A01BA7C000362223007C0FC001AD0BC00005B38E9 S1230E4042813239000051DED0812E806100FDD418C0524560D842447A01BA7C000B62169F S1230E60200D42813205D08120400C10003F66025244524560E430044E714A9F4CDF30F03B S1230E804E5E4E754E56FFF848E73F003E2E00084243426EFFF8422EFFFE3043D1FC000089 S1230EA05B384A28001A67143043D1FC00005B380C28003A001A6704524360DE3043D1FCBB S1230EC000005B380C28003A001A661AB67C0001671442572F3C00005B526100F8B4584F60 S1230EE04240600002464A3900005B6C67262EBC000051BA3F3C00094EB900000502544FC3 S1230F0042572F3C00005B6C6100F886584F4240600002180C39003A00005B5366280C3980 S1230F20004100005B526D0A0C39005000005B526F1442572F3C00005B526100F854584F7E S1230F404240600001E62EBC00005DDC3F3C00016100FD08544F103900005DDC4880D07C86 S1230F6000403D40FFFA2EBC00005DDC3F3C00114EB900000502544F3C00BC7C00FF66126C S1230F802EBC0000512A3F3C00094EB900000502544F3806EB4C52444245BC7C00FF670083 S1230FA001564A4767103044D1FC00005BA008280007000966144A4766383044D1FC000068 S1230FC05BA008280007000966284A2EFFFE67086100F652422EFFFE4A4566144280302E21 S1230FE0FFFA2E803F3C00024EB900000502544F60223D7C0001FFF82EBC00005DDC3F3C47 S123100000124EB900000502544F3C003806EB4C52446086EB4E5246307C003A2E883F3CF4 S123102000024EB900000502544F307C00202E883F3C00024EB900000502544F7601B67CA0 S1231040000B623EB67C00096612307C00202E883F3C00024EB900000502544F207C0000E2 S12310605BA0103060004880C07C007F48C02E803F3C00024EB900000502544F524652433D S123108060BC307C00202E883F3C00024EB900000502544F2EBC00005DDC3F3C00124EB9C9 S12310A000000502544F3C00BC7C00FF674852453806EB4C5244BA7C0005663642454A47CF S12310C067103044D1FC00005BA008280007000966144A4766163044D1FC00005BA0082826 S12310E00007000966066100F53C60061D7C0001FFFE6000FEA64A6EFFF8672E6100F5261D S12311004A4767142EBC000050C43F3C00094EB900000502544F60122EBC000050C83F3C9D S123112000094EB900000502544F4A9F4CDF00F84E5E4E754E56000048E703004A3900001D S12311405B5266222EBC000050DE3F3C00094EB900000502544F3EBC00192F3C00005B52DE S12311606100F8A8584F4A3900005B6C67262EBC000051BA3F3C00094EB900000502544FC2 S123118042572F3C00005B6C6100F606584F42406000016E42473047D1FC00005B384A2859 S12311A0001A67143047D1FC00005B380C28003A001A6704524760DE3047D1FC00005B381E S12311C00C28003A001A662EBE7C000166140C39004100005B526D0A0C39005000005B524E S12311E06F1442572F3C00005B526100F5A4584F42406000010C2EBC00005DDC3F3C000188 S12312006100FA58544F3E004A47660000AC4A3900005B52670000A22EBC00005DDC3F3CBC S1231220000F4EB900000502544FB07C0003620000882EBC00005DDC3F3C00144EB9000018 S12312400502544F4A4066444247BE7C007F623A3007484042404840D0BC00005BA020401E S12312600C10001A671E207C00005BA010307000488048C02E803F3C00024EB9000005025F S1231280544F60026004524760C060A62EBC00005DDC3F3C00104EB900000502544F10397A S12312A000005DDC488048C02E803F3C00254EB900000502544F60484A3900005B526740A3 S12312C04A47632ABE7C000B661042572F3C00005B526100F4BC584F60122EBC00005134E7 S12312E03F3C00094EB900000502544F60122EBC0000512A3F3C00094EB900000502544FA9 S12313004A9F4CDF00804E5E4E754E56FFDC48E71F0042444A3900005B52665E2EBC000095 S123132050F03F3C00094EB900000502544F3EBC00192F3C00005B866100F6D0584F4A3984 S123134000005B8666064240600003142EBC000051023F3C00094EB900000502544F3EBCD7 S123136000192F3C00005B526100F6A0584F13FC003D00005B6C600000BE42473047D1FC9C S123138000005B380C28003D001A67123047D1FC00005B384A28001A6704524760DE304796 S12313A0D1FC00005B380C28003D001A661E4A4763163047D1FC00005B384A28001B6708DD S12313C04A3900005B6C67027801601C0C39003D00005B6C66104A3900005B6D66084A3966 S12313E000005B86660278014A44664A3047D1FC00005B380C28003D001A663A3047D1FCA3 S123140000005B384228001A52474246207C00005B381030701A48803246D3FC00005B38F5 S12314201340004E524752464A40670260DE13FC003D00005B6C7C01BC7C0004640000AEC7 S12314404245428030053206C2FC001AD081D0BC00005B3820400C10003A671C428030055A S12314603206C2FC001AD081D0BC00005B3820404A106704524560CABA7C0001631C42808A S123148030053206C2FC001AD081D0BC00005B3820400C10003A660278014247BE7C001029 S12314A064443006C0FC001A2040227C00005B38103098004880227C000051F212317000AF S12314C04881B041661C42573006C0FC001AD0BC00005B382F006100F2B8584F4240600045 S12314E0017E524760B654466000FF4E4A44660001584A3900005B526700014E4A390000BD S12315005B86670001442E8E0697FFFFFFDC3F3C00016100F746544F3E002EBC00005DDCEA S12315203F3C00036100F734544F3C004A47660001064A4666000100102EFFDC4880B039FF S123154000005DDC673E0C39003A00005B5366140C39003A00005B87670A13EEFFDC000054 S12315605DDC60200C39003A00005B5367140C39003A00005B87660A1D7900005DDCFFDC8B S1231580600278010C2E0001FFDC6D080C2E0010FFDC6F0278014A44662E2E8E0697FFFF59 S12315A0FFDC3F3C00114EB900000502544FB07C00FF67142EBC000051143F3C00094EB98F S12315C000000502544F606C42457E10BE7C002362223007484042404840D0BC00005DDC0D S12315E02040224E95CA3445D3CA10A9FFDC5245524760D84A3900005DDC6D0A0C39000F1F S123160000005DDC6F0278014A4466282EBC00005DDC3F3C00174EB900000502544F4A4097 S123162063122EBC0000512A3F3C00094EB900000502544F60122EBC000051343F3C000932 S12316404EB900000502544F4A4467122EBC0000514C3F3C00094EB900000502544F4A9F29 S12316604CDF00F04E5E4E754E56000048E703004A3900005B5266222EBC000050DE3F3CBB S123168000094EB900000502544F3EBC00192F3C00005B526100F374584F4A3900005B52C2 S12316A066064240600001644A3900005B6C67262EBC000051BA3F3C00094EB90000050215 S12316C0544F42572F3C00005B6C6100F0C4584F42406000013642473047D1FC00005B3863 S12316E00C28003A001A67123047D1FC00005B384A28001A6704524760DE3047D1FC0000FC S12317005B380C28003A001A6636BE7C0001661C0C39004100005B526D120C39005000000A S12317205B526E084A3900005B54661442572F3C00005B526100F05A584F4240600000CC25 S12317402EBC00005DDC3F3C00016100F50E544F3E004A47630000824A3900004FA466004F S123176000782EBC0000516A3F3C00094EB900000502544F307C00002E883F3C00014EB92E S123178000000502544F13C000005B6C0C39006100005B6C6D180C39007A00005B6C6E0E0D S12317A0103900005B6C4880D07CFFE06008103900005B6C488013C000005B6C6100EE6693 S12317C00C39004E00005B6C670E0C39005900005B6C6704424060320C39004E00005B6CF8 S12317E067282EBC00005DDC3F3C00134EB900000502544F4A4063122EBC0000512A3F3C15 S123180000094EB900000502544F4A9F4CDF00804E5E4E754E56000048E703004A390000AE S12318205B5266222EBC0000517A3F3C00094EB900000502544F3EBC00192F3C00005B525A S12318406100F1C8584F4A3900005B5266067001600000AC4A3900005B6C67262EBC0000E9 S123186051BA3F3C00094EB900000502544F42572F3C00005B6C6100EF18584F7001600079 S1231880007E0C39003000005B526D0A0C39003900005B526F04424060641E3900005B5245 S12318A04887DE7CFFD0BE7C000963044240604E4A3900005B5367163007C0FC000A3E0069 S12318C0103900005B534880DE40DE7CFFD0BE7C0010641C4A3900005B546614428030078F S12318E02E803F3C00204EB900000502544F60044240600A33C7000051E270014E714A9F54 S12319004CDF00804E5E4E754E56FFFC103900005B384880D07CFFBF33C0000051E4428072 S12319203039000051E42E803F3C000E4EB900000502544F4E5E4E754E56FFF848E73F00A5 S1231940424542444239000051D8760113FC0001000051D0422EFFF8307C00FF2E883F3CE7 S123196000204EB900000502544F33C0000051E2307C00002E883F3C00194EB90000050268 S1231980544F33C0000051E40C6E000A000866122EBC00005DDC42676100F2C0544F3E00B4 S12319A060122EBC00005DDC3F3C00016100F2AC544F3E004A4763182EBC000051343F3C3C S12319C000094EB900000502544F42406000046C0C39002000005DE5660002FE4247BE7C27 S12319E00006640C3047D1CE4228FFFA524760EE103900005DDC4880534048C02E803F3CFF S1231A00000E4EB900000502544F13FC003F00005DDC423900005DE82EBC00005DDC3F3C1E S1231A2000114EB900000502544F3E00BE7C00FF670001B4EB4F3007484042404840D0BCBE S1231A4000005BA020404A106716207C00005BA0103070004880B079000051E26600014A34 S1231A607C09BC7C000B621A3007D046484042404840D0BC00005BA020400210007F52462F S1231A8060E03047D1FC00005BA04228000C13FC003600005DE513FC003800005DE613FC2D S1231AA0004B00005DE73007484042404840D0BC00005BA02E8052972F3C00005DDD6100A6 S1231AC0EB90584F4A406626207C00005BA0103070004880B079000051E266081D7C000157 S1231AE0FFFA60061D7C0001FFFD600000BC13FC002000005DE513FC002000005DE613FCDF S1231B00002000005DE73007484042404840D0BC00005BA02E8052972F3C00005DDD610070 S1231B20EB30584F4A406624207C00005BA0103070004880B079000051E266081D7C000158 S1231B40FFFB60061D7C0001FFFE605C13FC005300005DE513FC005500005DE613FC004232 S1231B6000005DE73007484042404840D0BC00005BA02E8052972F3C00005DDD6100EAD274 S1231B80584F4A406622207C00005BA0103070004880B079000051E266081D7C0001FFFC1A S1231BA060061D7C0001FFFF0C6E000A000866080C2E0001FFFA67100C6E00070008660E81 S1231BC00C2E0001FFFC66063E3C00FF60142EBC00005DDC3F3C00124EB900000502544F11 S1231BE03E006000FE480C6E000A000866102EBC00005DDC42676100F062544F60102EBC7F S1231C0000005DDC3F3C00016100F050544F42803039000051E42E803F3C000E4EB9000029 S1231C200502544F42470C6E00070008660E0C2E0001FFFC66047E0260027E05BE7C00062B S1231C40640E3047D1CE4A28FFFA6604524760EC30076070307C00002E883F3C00204EB933 S1231C6000000502544F13FC003600005DE513FC003800005DE613FC004B00005DE760584F S1231C80307C00002E883F3C00204EB900000502544F6044307C00002E883F3C00204EB9EA S1231CA000000502544F13FC005300005DE513FC005500005DE613FC004200005DE760181E S1231CC042436014B07C000562F6E5403040D1FC0000529220504ED00C39005300005DE5D0 S1231CE0661A0C39005500005DE666100C39004200005DE766061D7C0001FFF84A45660050 S1231D0000E04A44660000DA4A43670000D42EBC00005DDC3F3C000F4EB900000502544FEB S1231D20B07C00036200008E4A2EFFF867000082307C00FF2E883F3C00204EB9000005021E S1231D40544F33C0000051E078014A3900004FA4670A13FC0001000051D4600813FC0001AB S1231D60000051D24247BE7C002464263007484042404840D0BC00005CA620403207484152 S1231D8042414841D2BC00005DDC22411091524760D40C6E000A000866064239000051DAFD S1231DA013FC000100004FA44239000051D660027A016028307C00FF2E883F3C00204EB912 S1231DC000000502544F4A406716307C00002E883F3C00204EB900000502544F6000FF1E23 S1231DE04A4567102EB9000051EA6100EB9C4EB90000050E4A44661A0C6E000700086612A6 S1231E002EBC0000518C3F3C00094EB900000502544F42803039000051E22E803F3C00201B S1231E204EB900000502544F13FC0001000051D84239000051D030044E714A9F4CDF00F819 S1231E404E5E4E754E56000048E73F0C3E2E00083C2E000A2A6E000C3839000051DCBE7C8D S1231E600080652642472EBC00005CA63F3C00144EB900000502544F4A40670E13FC00018F S1231E80000051D63007600001523007484042404840D0BC00005CCA20400C1000306D0099 S1231EA000C23007484042404840D0BC00005CCA20400C1000396E0000AA207C00005CCA52 S1231EC01030700048803600D67CFFD0284D0C1C005366260C1C005566200C1C0042661AC6 S1231EE00C1C004D66140C1C0049660E0C1C005466080C14002066025243284D7A01BA43F6 S1231F00621A0C14002067084A146704528C60F20C1400206602528C524560E20C140020FA S1231F20673C4A146738B87C00806432BC7C000166163004484042404840D0BC00005D5AF5 S1231F402040109C52446014101C488048C02E803F3C00024EB900000502544F60BE5247D8 S1231F606048BC7C000166183004484042404840D0BC00005D5A204010BC0024524460129D S1231F80307C00242E883F3C00024EB900000502544F3007484042404840D0BC00005CCA0E S1231FA020400C1000246602524733C4000051DCBE7C0080652042472EBC00005CA63F3C29 S1231FC000144EB900000502544F4A40670813FC0001000051D630074E714A9F4CDF30F8D6 S1231FE04E5E4E754E56000048E707043E2E00082A6E000A42466100E6ECBE7C00806400A1 S123200000763007484042404840D0BC00005CCA20400C10001A675E3007484042404840A7 S1232020D0BC00005CCA20400C10000D67483007484042404840D0BC00005CCA20400C10BB S12320400024661252472E8D42673F076100FDF6584F3E00601E207C00005CCA1030700074 S1232060488048C02E803F3C00024EB900000502544F52476084BE7C008066503007484004 S123208042404840D0BC00005CCA20400C10001A673A3007484042404840D0BC00005CCACE S12320A020400C10000D672442472EBC00005CA63F3C00144EB900000502544F4A40670A58 S12320C013FC0001000051D67C01604A3007484042404840D0BC00005CCA20400C10000D9A S12320E0662A5447BE7C0080652042472EBC00005CA63F3C00144EB900000502544F4A4033 S1232100670813FC0001000051D6600813FC0001000051D67C014A466700FEE030074E712E S12321204A9F4CDF20C04E5E4E754E56000048E71F0C2A6E000842473A39000051DC4A39EE S1232140000051D6660001A6BE7C00806400019E3005484042404840D0BC00005CCA2040B1 S12321600C10000D670001863005484042404840D0BC00005CCA20400C1000216700016E58 S1232180207C00005CCA103050004880600001442E8D3F056100FE4E544F3A006000014A48 S12321A04A4763263007484042404840D0BC00005D5A20403205484142414841D2BC00003B S12321C05CCA2241109152455247BA7C008064303005484042404840D0BC00005CCA20407E S12321E00C10002067163005484042404840D0BC00005CCA20400C1000096604524560CAF9 S1232200BA7C0080652442452EBC00005CA63F3C00144EB900000502544F4A40670A13FCBE S12322200001000051D6600260A0600000BC524533C7000051DC2E8D3F3C00013F0561005A S1232240FC04584F3A003E39000051DC6000009A5245BA7C0080652042452EBC00005CA6B6 S12322603F3C00144EB900000502544F4A40670813FC0001000051D6606E13FC000100000C S123228051D660643007484042404840D0BC00005D5A20403205484142414841D2BC000089 S12322A05CCA2241109152455247BA7C0080652042452EBC00005CA63F3C00144EB900007C S12322C00502544F4A40670813FC0001000051D6601648C0207C000052AA7206B09857C92A S12322E0FFFC206800184ED06000FE543005484042404840D0BC00005CCA20400C10000D6D S123230067183005484042404840D0BC00005CCA20400C1000216600009CBA7C00806446C2 S12323203005484042404840D0BC00005CCA20400C10000D672C3005484042404840D0BCB1 S123234000005CCA20400C10000A67163005484042404840D0BC00005CCA20400C1000213A S12323606604524560B4BA7C0080662442452EBC00005CA63F3C00144EB900000502544F51 S12323804A40670A13FC0001000051D6602660203005484042404840D0BC00005CCA204028 S12323A00C10001A660813FC0001000051D660046000FF6833C5000051DC4A9F4CDF30F0BA S12323C04E5E4E754E56000048E707042A6E00084247BE7C00806216300748404240484088 S12323E0D0BC00005D5A20404210524760E4307C00FF2E883F3C00204EB900000502544F5A S12324003C0042803039000051E02E803F3C00204EB900000502544F2EBC00005CCA3F3C9B S1232420001A4EB900000502544F4A39000051D266084A39000051D467484247BE7C00801F S123244064163007484042404840D0BC00005CCA20404210524760E42EBC00005CA63F3C8D S123246000144EB900000502544F4A40670E13FC0001000051D6423900005D5A4279000070 S123248051DC4A39000051D666062E8D6100FC9C4247BE7C00806460300748404240484071 S12324A0D0BC00005D5A20400C1000616D283007484042404840D0BC00005D5A20400C10DB S12324C0007A6E12207C00005D5A103070004880D07CFFE0600C207C00005D5A1030700099 S12324E048803207484142414841D2BC00005D5A224112805247609A2EBC00005BA03F3C15 S1232500001A4EB900000502544F428030062E803F3C00204EB900000502544F4A9F4CDFE6 S123252020C04E5E4E754E56000048E707042A6E00082E8D6100E2C26000011E4257610091 S1232540E944600001283EBC00016100E9386000011C6100EBE0600001146100EDAE6000CA S1232560010C6100F104600001046100F2A84A4066122EBC000051A23F3C00094EB900002A S12325800502544F600000E66100F37E600000DE7C074A3900005B52660000942EBC0000A0 S12325A050DE3F3C00094EB900000502544F3EBC007F2F3C00005CCA6100E450584F4247E5 S12325C03007484042404840D0BC00005CCA20400C100020673A3007484042404840D0BCEA S12325E000005CCA20404A106726BE7C001964203047D1FC00005B383207484142414841EE S1232600D2BC00005CCA22411151001A524760B03047D1FC00005B384228001A4A47670A1D S123262013FC0001000051DA6002604060064239000051DA60027C0A3E866100F2FC4A40C8 S1232640662ABC7C0007672442572F3C00005B386100E13E584F6014B07C000962EAE54044 S12326603040D1FC000052E220504ED04A9F4CDF20C04E5E4E754E56000048E7010413FC0D S12326800001000051D82EBC00005BA03F3C001A4EB900000502544F4A39000051D06732A4 S12326A042803039000051E42E803F3C000E4EB900000502544F42803039000051E22E80C2 S12326C03F3C00204EB900000502544F4239000051D04A3900004FA667344A3900004FA485 S12326E067122A7C00005D5A2EBC00005C246100FCD460062A79000051E6423900004FA6B5 S12327003EBC00012F0D6100E088584F603C6100DFD42A7C0000040D4A390000040C66149A S1232720307C00802E882F3C0000040D6100E2DC584F60163EBC00012F3C0000040D610023 S1232740E050584F42390000040C4A15670000FC23CD000051EA2E8D6100E3D04A390000D4 S12327605B38670A2EBC00005B386100FDBA4A3900004FA4660C2E8D6100E3722A40600099 S123278000B64A39000051D267424A39000051DA670C2EBC00005CCA6100DEFE60062E8DA1 S12327A06100DEF62A7C00005D5A2EB9000051EA6100E33A23C0000051E62EBC00005C245F S12327C06100FC024239000051D2603C4A39000051D467324A39000051DA670C2EBC000010 S12327E05CCA6100DEB460062E8D6100DEAC2A7C00005D5A2EBC00005C246100FBC842394A S1232800000051D4600242154A15662A4A39000051D667102A79000051E6423900004FA47E S1232820601460102A7C00005D5A2EBC00005C246100FB9260D24A15670C3EBC00012F0DC0 S12328406100DF4E584F6000FF024A9F4CDF20004E5E4E750C40003E672C48E77FFE0C4026 S1232860003267162F013F013F004EB90000435C48C0504F4CDF7FFE4E73204130184CD873 S123288000064E4360EE005720004E73242F0008600C342F00086006222F00066004322F63 S12328A00006302F000448E71F1E4E434CDF78F84E75102F0005E148102F00044E75202F8E S12328C0000480EF0008206F000A48403080424048404E754E56FFFC4A3900005ACC670428 S12328E07001600A3EBC00024EB9000028A24E714E5E4E754E56000048E7070042063EBCE2 S123290000024EB9000028A24A4067583EBC00034EB9000028A21E00BE3C0003660A3EBC44 S123292000014EB900002E7ABE3C001366061C3C0001602CBE3C0011660442066022BE3C4C S1232940001066164A3900005ACE670442406002700113C000005ACE600613C700005ACC1B S12329604A0666A84A9F4CDF00C04E5E4E754E56000048E703001E2E00096100FF78100798 S123298048803E803F3C00044EB90000289E544F4A3900005ACE6712100748803E803F3C82 S12329A000054EB90000289E544FBE3C00206D08527900005AD0601ABE3C000D6608427970 S12329C000005AD0600CBE3C00086606537900005AD04A9F4CDF00804E5E4E754E56000052 S12329E048E703001E2E0009BE3C000966163EBC00206100FF7A303900005AD0C07C000703 S1232A0066EC600A100748803E806100FF624A9F4CDF00804E5E4E754E56000048E70300BE S1232A201E2E0009BE3C0009660A100748803E8061AA601CBE3C00206C0C3EBC005E61005B S1232A40FF2E8E3C0040100748803E806100FF204A9F4CDF00804E5E4E754E56000048E748 S1232A6003001E3900005ACC423900005ACC4A07670610074880600A3EBC00034EB9000026 S1232A8028A24E714A9F4CDF00804E5E4E754E56000048E7030061C21E00100748803E80F2 S1232AA06100FECCBE3C001066144A3900005ACE670442406002700113C000005ACE1007E6 S1232AC048804E714A9F4CDF00804E5E4E754E56000048E703003E2E0008BE7C00FF660877 S1232AE06100FF7860226020BE7C00FE66086100FDE4601460123E87025700FF3F3C00048E S1232B004EB90000289E544F4A9F4CDF00804E5E4E754E56000048E701042A6E00081015A1 S1232B204880B03900005ACD670C101D48803E806100FEAA60E84A9F4CDF20004E5E4E759F S1232B404E56000048E703003E2E00083EBC000D6100FE1C3EBC000A6100FE144A47670C2A S1232B603EBC00206100FE08534760F04A9F4CDF00804E5E4E754E56000048E70F0C2A6E5D S1232B8000083E2E000C4A2D00016704532D00011A2D00014885CA7C00FF49ED0002300586 S1232BA053454A40671E1C1CBC3C000966085047CE7CFFF8600CBC3C00206C0454476002FA S1232BC0524760DABE7900005AD0641A3EBC00086100FD9C3EBC00206100FD943EBC000835 S1232BE06100FD8C60DE4A9F4CDF30E04E5E4E754E56FFFE48E70F0C2A6E00083D790000D5 S1232C005AD0FFFE4AB900005AD26756207900005AD2101048803C00CC7C00FF52B9000062 S1232C205AD21A154885CA7C00FFBA4664023C051B46000149ED00024A46671C2079000036 S1232C405AD21010488018C03E806100FDCC52B900005AD2534660E042B900005AD2600005 S1232C60017E422D0001102D00014880C07C00FF12154881C27C00FFB0416C0001626100D2 S1232C80FDDA1E00BE3C0003661C4A2D000166163EBC00036100FD823EBC00014EB90000E9 S1232CA02E7A60000136BE3C000D6706BE3C000A66103EBC000D6100FCB6600001226000E6 S1232CC0011ABE3C000866103EAEFFFE2F0D6100FEA6584F60000104BE3C007F663A4A398B S1232CE000005ACF67224A2D0001671A532D00011C2D00014886CC7C00FF103560024880D6 S1232D003E806100FC6A600C3EAEFFFE2F0D6100FE66584F600000C4BE3C001066184A39FE S1232D2000005ACE670442406002700113C000005ACE600000A6BE3C001866163EAEFFFE2F S1232D402F0D6100FE32584F4A2D000166EE6000008ABE3C0005660C3EAEFFFE6100FDE2AB S1232D6060000078BE3C001566163EBC00236100FBFE3EAEFFFE6100FDC8422D0001605A3C S1232D80BE3C001266323EBC00236100FBE23EAEFFFE6100FDAC4246102D00014880C07C73 S1232DA000FFBC4064101035600248803E806100FC68524660E2602210074880224D142DC3 S1232DC000014882C47C00FF48C2D3C2134000023E806100FC44522D00016000FE8A4A9F41 S1232DE04CDF30E04E5E4E754E56000048E701042EBC000028543F3C00223F3C00164EB9B2 S1232E000000288C584F423900005ACC13FC002400005ACD423900005ACE13FC00010000A5 S1232E205ACF42B900005AD23EBC000D4EB90000435C3EBC00124EB9000028A22A40202DFD S1232E40000223C000005D4E23C000005D56202D0006D0B900005D4E23C000005D4A23C054 S1232E6000005D522EBC00005AF04EB900004D904A9F4CDF20004E5E4E754E56FFFC3039DC S1232E800000549E4640C1790000549C42790000549E4279000054A04A6E0008670E424079 S1232EA013C000004FA613C000004FA413FC00FF00005AD623F900005D4E00005D5623F9AC S1232EC000005D4A00005D522EBC00005AF04EB900004D903EBC00014EB9000028A24E5E08 S1232EE04E754E56FFFC2EAE00084EB900002B122EBC000053994EB900002B1210390000E1 S1232F005AD648803E80065700414EB90000296E4E5E4E754E56FFFC2EAE000861C43EBCAA S1232F2000016100FF564E5E4E754E56000048E707001E2E00092EAE000A61A62EBC000061 S1232F4053AB4EB900002B124A07670C2EBC000053D54EB900002B122EBC000053F64EB9D7 S1232F6000002B124EB900002A8E1C00CC3C005F2EBC000053FA4EB900002B121006488075 S1232F8060203EBC00016100FEF23EBC00016100FEEA4A07670470016026602042406020E8 S1232FA0601AB07C000367DAB07C004167DCB07C004367DEB07C005267E24E716000FF7E5C S1232FC04A9F4CDF00C04E5E4E754E56000048E7070C2A6E0008284D2EBC000053FE4EB96D S1232FE000002B127E08528C101448803E800257007F4EB90000296E534766EA3EBC002EFA S12330004EB90000296E7E03528C101448803E800257007F4EB90000296E534766EA2EBCBB S1233020000054164EB900002B122EBC000054264EB900002B124EB900002A8E1C00CC3C53 S1233040005F2EBC000054654EB900002B1210064880603C3EBC00016100FE203EBC000137 S12330606100FE18022D007F00093EBC00022F0D2F3C00003C844EB900003340504F302E44 S1233080000CE4403E804EB90000329260186014B07C000367BEB07C004167C0B07C004330 S12330A067C24E7160844A9F4CDF30C04E5E4E754E56FFFC2EBC000054694EB900002B1243 S12330C0302E0008604A2EBC000054773F3C00016100FE58544F604C2EBC0000547D3F3C6F S12330E000016100FE46544F603A2EBC000054846100FE222EBC0000548C42676100FE2CA8 S1233100544F60202EBC000054946100FE086014B07C0004620EE5403040D1FC0000533452 S123312020504ED04E5E4E754E56000048E703042A6E00083E155547BE7C00206706BE7C24 S12331400021660470FF604ABE7C001E6D0CBE7C00256E069E7C001460104A476D06BE7C47 S123316000096F06303C00FF60283047D1C8D1C8D1FC00005ACC2B68002400063047D1C871 S1233180D1C8D1FC00005ACC216D0002002442404E714A9F4CDF20804E5E4E754E560000E3 S12331A048E701042A6E0008082D00000001672E23ED000200005D5623ED000600005D52E2 S12331C0082D00010001671423F900005D5600005D4E23F900005D5200005D4A60102B7939 S12331E000005D5600022B7900005D5200064A9F4CDF20004E5E4E754E56FFEE48E7030057 S12332003E2E00101D7900005AD6FFF14A47672C1D7C0002FFEE300753401D40FFEF700146 S1233220122EFFF14881E360C0790000549E670A3EBC00044EB9000030B0600A1D7C0001C9 S1233240FFEE422EFFEF2D6E0008FFF22D6E000CFFF82D7900005ADAFFFC2E8E0697FFFFC1 S1233260FFEE4EB9000047B64A4067184A4767063EBC0001600242574EB9000030B04A40EB S1233280660260D642404E714A9F4CDF00804E5E4E754E56FFFC42572F3900005ADE306ED2 S12332A000082F086100FF52504F4E714E5E4E754E56000048E707003E2E00083EBC000202 S12332C02F3900005ADE30472F086100FF2C504F3C00207900005AE2BE68000C641830077B S12332E048C0227900005ADA22290012D0812F006112205F108030064E714A9F4CDF00C0CB S12333004E5E4E754E56000048E707042A7900005ADE42877C20DE9D53464A4666F82007F3 S12333207210E2A0DE802007E080DE802007C0BC000000FF4E714A9F4CDF20C04E5E4E757E S12333404E56000048E73F1C2A6E000C3E2E0010287900005AE2383C00FF08070000670A4B S1233360303900005AE65240600242403C00080700036612207900005ADA302800045240A9 S1233380BC40620000DEBC6C0008620000D63006C07C0003660000863A06E44D3E8561008F S12333A0FEF2BA6C000C6400007442803005227900005ADA22290012D08126400807000224 S12333C067086100FF40168060526100FF38B013674A207900005ADA316C00080004760199 S12333E04280103900005AD64880E16B3003C079000054A0670887790000549E601E300308 S12334004640C1790000549C103900005AD648803E804EB90000362C6000FF7E33C60000BA S12334205AE63F063006C07C0003EB48484042404840D0B900005ADE2F002F0D206E000807 S12334404E90DEFC000A4A406712080700016704424460083006C07C0003600A5246600063 S1233460FF0E30044E714A9F4CDF38F84E5E4E754E56000048E703003E2E000820790000B2 S12334805AE2BE680006622C303C00803207C27C0007E2603F00207900005ADA202800161C S12334A03207E649484142414841D08120401210825F10814A9F4CDF00804E5E4E754E561F S12334C0000048E703003E2E00084A47633A207900005AE2BE680006622E303C008032075E S12334E0C27C0007E26046403F00207900005ADA202800163207E649484142414841D08103 S123350020401210C25F10814A9F4CDF00804E5E4E754E56000048E703003E2E00083007EF S1233520E6483040227900005ADA226900161030980048804600323C00803407C47C000723 S1233540E461C0414E714A9F4CDF00804E5E4E754E56000048E71F003E2E00082079000060 S12335605AE2382800063A077CFF4A476604BA4464264A47670E53473E8761964A40670415 S12335803C076014BA44640E52453E8561844A4067043C05600260D2BC7CFFFF67063E8690 S12335A06100FECE30064E714A9F4CDF00F04E5E4E754E56000048E703042A6E000C1015CF S12335C04880C07C00FFB07C00106C56207900005ADA316E001000044247207900005AE208 S12335E00C6801000006641C1035701048803E80025700FF4EB9000034705247BE7C000F9C S12336006FE6601E3047D1C83EB588104EB9000028B23E804EB9000034705247BE7C000714 S12336206FE24A9F4CDF20804E5E4E754E56FFEC48E70F001E2E000930390000549C12077E S12336404881E26846401A00CA3C0001BE3900005AD666044A056778422EFFEE10074880B1 S12336601D40FFF113C000005AD610074880C07C00FFB07C000F6F0A3EBC00024EB9000025 S123368030B0100548807201B3401D40FFEF2E8E0697FFFFFFEE4EB9000047B623EEFFFC64 S12336A000005ADA660E3EBC00034EB9000030B04A4067DA207900005ADA23E8000A0000CD S12336C05ADE207900005ADA23E8000E00005AE24A056700008C207900005AE23C2800060B S12336E03E864EB9000034BE300653464A4066F02E8E0697FFFFFFEC207900005AE210280B S1233700000348805240E5403F00207900005AE23028000852404840424048402F004EB955 S1233720000028BE5C4F3C004A6EFFEC6702524653463E864EB9000034704A4666F23EBC2A S1233740000E42A72F3C000035B24EB900003340504F700112074881E36081790000549C83 S12337604A9F4CDF00E04E5E4E754E56000048E7030C2A6E0008286E000C3E2E001030070B S123378053474A40670418DD60F44A9F4CDF30804E5E4E754E56000048E7070C2A6E000894 S12337A0286E000C7E0C1C150A06003F101D4880121C4881B340C07C007F67084A06670495 S12337C04240604E53474A4766DC4A2E0011673E0C15003F67201015488012144881B34064 S12337E0227900005AE21229000448814601C04167044240601C548D548C10154880121461 S12338004881B340C07C003F67044240600470014E714A9F4CDF30C04E5E4E754E560000D5 S123382048E707042A6E00083EBC00012F2E000C2F0D6100FF60504F1C0067301E2D000CA1 S12338403EBC00202F0D2F2E000C6100FF1E504F1B47000C002D0080000E700112390000A3 S12338605AD64881E3608179000054A0100648804E714A9F4CDF20C04E5E4E754E56FFEE89 S123388048E703001D7C0003FFEE2E8E0697FFFFFFEE4EB9000047B63E0067103EBC000171 S12338A04EB9000030B04A40660260DE30074E714A9F4CDF00804E5E4E754E56FFFC48E726 S12338C00F1C2A6E0008286E000C3EBC00012F0C2F0D6100FEC0504F4A406700011647ED0B S12338E0001041EC00102D48FFFC207900005AE20C6801000006643A7E10206EFFFC4A10A8 S1233900671C4A136710206EFFFC10104880B013660000C86006206EFFFC16906006206E61 S1233920FFFC1093528B52AEFFFC53474A4766CA60367E08206EFFFC4A50671A4A53670EE0 S1233940206EFFFC3010B053660000906006206EFFFC36906006206EFFFC3093548B54AE59 S1233960FFFC53474A4766CC2E8D4EB9000040CA3C001A2C000C4885CA7C001FBC45621CE0 S1233980BC456622102D000F4880C07C00FF122C000F4881C27C00FFB0416F0A196D000FF9 S12339A0000F1946000C196D000D000D082C00070009670E3EAE00102F0D4EB900002FCAF8 S12339C0584F022C007F000B302E0010E4403E804EB9000032B07001601C700112390000A2 S12339E05AD64881E36081790000549E42406006600442404E714A9F4CDF38E04E5E4E7573 S1233A004E56FFFC6100FE76206E000808280007000E67044240601642572F2E00082F3C87 S1233A20000038BA4EB900003340504F4E714E5E4E754E56FFFC70014E714E5E4E754E5667 S1233A40FFFC3EBC00012F2E000C2F2E00086100FD44504F4E714E5E4E754E56000048E75C S1233A6007042A6E00083E2E000C0C15003F6624103900005AD748803E806100FBB03E8764 S1233A802F0D2F3C00003A324EB900003340504F3C00602E2EAE000E4EB90000476A0C2D51 S1233AA0003F000C6704422D000C422D000E3E872F0D2F3C00003A3E4EB900003340504F57 S1233AC03C003EBC00802F3900005AE82F3900005ADE6100FC96504F30064E714A9F4CDF47 S1233AE020C04E5E4E754E56000048E70F1C2A6E0008286E000C3E2E00100C1400E5670447 S1233B004240600270011A00675047ED000F7C11421B53464A4666F83EBC00202F0C2F0D36 S1233B206100FC48504F3007E4403E804EB9000032B0207900005ADABE680004630A20793E S1233B4000005ADA314700047001123900005AD64881E3608179000054A0100548804E712F S1233B604A9F4CDF38E04E5E4E754E56000048E70F0C2A6E0008286E000C3E2E0010425761 S1233B802F0C2F0D6100FC0E504F1A00676C082C00070009670C3E872F0D4EB900002FCAFB S1233BA0584F18BC00E53007E4403E804EB9000032B0207900005AE20C6801000006641CCF S1233BC07C1053461034601048803E80025700FF4EB9000034BE4A4666E8601E7C085346B8 S1233BE03046D1C83EB488104EB9000028B23E804EB9000034BE4A4666E4100548804E711A S1233C004A9F4CDF30E04E5E4E754E56FFFC48E70F1C2A6E0008286E000C3E2E00104257BD S1233C202F0C2F0D6100FB6E504F1A006746082C00070009670C3E872F0D4EB900002FCA21 S1233C40584F47ED001141EC00012D48FFFC7C0B101B4880C07C007F226EFFFC128052AE84 S1233C60FFFC53464A4666E83007E4403E804EB9000032B0100548804E714A9F4CDF38E004 S1233C804E5E4E754E56000048E7070C2A6E0008286E000C3E2E001042572F0C2F0D61009C S1233CA0FAF4504F1C00671E3EBC000B2F0C52972F0D52976100FAB4504F3007E4403E80BD S1233CC04EB9000032B0100648804E714A9F4CDF30C04E5E4E754E56000048E701042A6E77 S1233CE00008102D000C4880C07C001F48C0EF80122D000E4881C27C003F48C1740CE5A133 S1233D0080814E714A9F4CDF20004E5E4E754E56FFFC48E701042A6E00082E8D61B8122DB6 S1233D2000204881C27C00FF48C1D0812D40FFFC1B6EFFFD00211B6EFFFE00221B6EFFFFC2 S1233D4000234A9F4CDF20004E5E4E754E56FFFC48E7030C2A6E0008286E000C42572F0CA6 S1233D602F0D6100FA30504F1E00672A2E8C6100FF66122C000F4881C27C00FF48C1D081FD S1233D802D40FFFC1B6EFFFD00211B6EFFFE00221B6EFFFF0023100748804E714A9F4CDF0D S1233DA030804E5E4E754E56FFF848E703042A6E000842AEFFFC424742AEFFF83E872F0D13 S1233DC02F3C00003D4C4EB900003340504FB07C00FF64261D6D0021FFF91D6D0022FFFAD5 S1233DE01D6D0023FFFB202EFFF8B0AEFFFC6F062D6EFFF8FFFC7E0160C21B6EFFFD002131 S1233E001B6EFFFE00221B6EFFFF00234A9F4CDF20804E5E4E754E56000048E71F04102EF5 S1233E20000948803E806100F8044287207900005ADA2A68001642464244207900005AE271 S1233E40B8680006622C4A46660A3C3C8000301D46403A003005C0466712207900005AE21C S1233E60102800034880524048C0DE80E24E524460C8207900005AE820874A9F4CDF20F0AF S1233E804E5E4E754E56000048E7070C2A6E0008287900005AE21C2C00024886102D000CEB S1233EA04880122C00044881C04172079246E3603E003007122D00204881C27C00FF340682 S1233EC0E461D0414E714A9F4CDF30C04E5E4E754E56000048E703042A6E00083E2E000C64 S1233EE04A6E000E67123047D1C83EB588104EB9000028B2600E600C103570104880C07C60 S1233F0000FF4E714A9F4CDF20804E5E4E754E56000048E707042A6E00083E2E000C3C2E5C S1233F200010022D007F000E4A6E000E671C204D3247D3C9D1C92F083F064EB9000028B2EF S1233F40544F205F31400010600A204D3247D1C9114600104A9F4CDF20C04E5E4E754E5662 S1233F60000048E707043E2E000C2A7900005AE24280302E0008122D0002488148C1E3A0EE S1233F80122D00034881142E000B4882C24248C1D0812C003E872F3900005AE82F064EB9C6 S1233FA0000031F8504F4E714A9F4CDF20C04E5E4E754E56000048E71F042A6E00084A6EC5 S1233FC0000E672C102D00214880E940122D00224881E84180411E001C2D0022CC3C000F39 S1233FE0E306082D0007002367048C3C0001600E1E2D000ECE3C003F1C2D000C5206BC3C8C S123400000206D0442065207BE3C00406D067006600000AE10074880122D000E4881C27C06 S1234020003FB041662C10064880122D000C4881B340227900005AE21229000448814601AF S1234040C041C07C001F660A1B46000C4240600000702E8D4EB900003A00B07C00FF650441 S12340607003605C1A2D000E182D000C1B47000E1B46000C42572F0D2F3C0000381C4EB9EF S123408000003340504FB07C00FF65304A2E000D670C1B45000E1B44000C700460223EBC89 S12340A000082F0D2F3C00003AE64EB900003340504FB07C00FF65047005600442404E7166 S12340C04A9F4CDF20F04E5E4E754E56000048E7030C2A6E00087E0F49ED00204A2466060A S12340E053474A4766F6207900005AE20C6800FF00066302E24F42807007227900005AE241 S12341001229000248819041E06F3007227900005AE21229000448814601142D000C488201 S1234120C242C27C001F80414E714A9F4CDF30804E5E4E754E56000048E703042A6E0008ED S12341402E8D61863E00102D000C4880BE40660E102D000F4880C07C00FF60186016102D7E S1234160000C4880BE406308303C00806006600442404E714A9F4CDF20804E5E4E754E5640 S1234180FFFC48E73F0C2A6E00081E2E000D207900005AE236280006C67CFF004A0766205C S12341A0082D000700096718207900005ADA2068000E3EA800082F0D4EB900002FCA584F03 S12341C04A6E000E67303EBC0001100748803F002F0D6100FDDE5C4F3D40FFFE6708302EFB S12341E0FFFE6000016E102D00234880C07C007F1B40002060260C2D00800020661E425715 S1234200100748803F002F0D6100FDA85C4F4A40670670016000013C422D00201D6D000F62 S1234220FFFC2E8D6100FF0E122D00204881C27C00FFB041621C4A076706700160000114DE S1234240022D007F000E102D0020488052401D40FFFC2E8D6100FC2E3A003E833F052F0DCE S12342606100FC6E5C4F3C004A4667104A0767044240600270013800600000A64A07670674 S12342807001600000CE3E834A4567063F055357600242672F0D6100FC385C4F3E804EB984 S12342A0000035503C00BC7CFFFF66067002600000A23E863F033F052F0D6100FC52504F4F S12342C078030C6E0002000E6656287900005AE823F900005ADE00005AE83A3C0080534512 S12342E0300548C0D0B900005AE8204042104A4566EC4245207900005AE2102800034880C0 S1234300BA406E163E84100548803F003F066100FC4E584F7801524560DA23CC00005AE82B S12343203E84102D002048803F003F066100FC30584F3D40FFFE4A6EFFFE66101B6EFFFCB1 S1234340000F4A6E000E6604522D0020302EFFFE4E714A9F4CDF30F84E5E4E754E56FFFA19 S123436048E70F043E2E00083C2E000A2A6E000C422EFFFB2D4DFFFC42453007600003C0AB S123438042574EB900002E7A4EB900002A8E600003D0100648803E804EB9000029DC6000D7 S12343A003B23EBC00074EB9000028A2600003B2100648803E803F3C00064EB90000289E73 S12343C0544F6000038E100648803E803F3C00054EB90000289E544F600003783E864EB913 S12343E000002ACE6000037A3EBC00134EB9000028A26000036C3E863F3C00144EB90000DD S1234400289E544F6000034C2E8D4EB900002B12600003402E8D4EB900002BF0600003346A S12344204EB9000028D460000338303C20226000033042790000549C42790000549E427986 S1234440000054A013FC00FF00005AD6423900005AD7600002FE100648803E804EB9000077 S1234460362C13C600005AD7600002E82E8E5D97610002F8422D000C422D000E42572F0DAA S12344802F3C0000381C4EB900003340504F3A00600002C02E8E5D97610002D02E8D4EB93F S12344A000003A003A00600002AA23CD00005AEC2E8E5D9742672F0D4EB900003A5A5C4F67 S12344C03A006000028E2A7900005AEC2D4DFFFC2E8E5D973F3C00012F0D4EB900003A5A4D S12344E05C4F3A006000026C2E8E5D976100027C3EBC00022F0D2F3C00003B6A4EB9000027 S12345003340504F3A006000024A2E8E5D976100025A42573F3C00012F0D4EB90000417E1B S12345205C4F3A006000022C2E8E5D976100023C425742672F0D4EB90000417E5C4F3A008C S1234540600002102E8E5D9761000220422D000C422D000D422D000E422D000F3EBC0008BE S12345602F0D2F3C00003AE64EB900003340504F3A00600001DE2E8E5D97610001EE3EBCE4 S123458000022F0D2F3C00003C0A4EB900003340504F3A00600001BC30390000549C6000FF S12345A001C0103900005AD74880C07C00FF600001B023CD00005AE86000019870011239C1 S12345C000005AD74881E36081790000549E6000018230390000549E600001862E8E5D97D9 S12345E0610001883EBC00022F0D2F3C00003C844EB900003340504F3A0060000156103917 S123460000005AD64880B03900005AD76710103900005AD748803E804EB90000362C3EBCAA S123462000102F0D2F3900005AE24EB90000376A504F6000011E3006C07C00FFB07C000F14 S1234640620613C600005AD8103900005AD84880C07C00FF6000010A2E8E5D976100010CDC S12346603EBC00013F3C00012F0D4EB90000417E5C4F3A00600000DC2E8E5D97610000EC9F S12346803EBC000142672F0D4EB90000417E5C4F3A00600000BE2E8E5D97610000CE2E8DD3 S12346A04EB900003DA6600000AA2E8E5D97610000BA2E8D4EB900003D0E600000963006FE S12346C046403C00CD790000549CCD790000549ECD79000054A06000007A2E8E5D97610081 S12346E0008A3EBC000242672F0D4EB90000417E5C4F3A00605C3E864EB900003E16605213 S123470023F900005AE800005AD242574EB900002E7A4EB90000387C60462E8D4EB90000A0 S123472048E8603C2E8D4EB90000312860322E8D4EB90000319C601A70FF60246014B07C60 S1234740003F62F4E5403040D1FC000054A220504ED04A2EFFFB67041AAEFFFA30054E7148 S12347604A9F4CDF20E04E5E4E754E56000048E7030C2A6E0008286D0002101448801A8013 S12347801E004A07670A100748803E805357600A103900005AD748803E804EB90000362C1B S12347A018B900005AD81B7C000100014A9F4CDF30804E5E4E754E56FFFE48E7031C2A6E9F S12347C00008424710154880600000F213ED000300005A82102D000148803E801039000019 S12347E05A8248803F003F3C00094EB900002892584F2B40000E600000E2102D0003488023 S1234800B03900005A82671C4257102D0003488013C000005A823F003F3C00094EB9000032 S12348202892584F286D000E266C000E2E8E55973F132F2D00044EB9000028BE5C4F3E8020 S1234840302B000ED1573F3C000A4EB90000289E544F2E943F2EFFFE3F3C00104EB9000010 S1234860288C584F3E803F3C000B4EB90000289E544F2EAD000A3F3C000C4EB900002898F2 S1234880544F0C150001660E3EBC000D4EB9000028A23E006016102D000148803E803F3C10 S12348A0000E4EB90000289E544F3E00602C3EBC00154EB9000028A23E00601E4A4067001F S12348C0FF0CB07C00016700FF32B07C00026700FF2AB07C000367D64E7130074E714A9F3C S12348E04CDF38804E5E4E7548E77FFE206F003C4280614E4A40662A610001024A406622EA S1234900610002524A40661A2E3900005A9ABEB900005AA867046100034A4A406604610092 S123492003E24CDF7FFE4E752F002228000070144E422200201F4E752F00701A4E42201FEA S12349404E752228000461F061DE4A4166147E122A6800042C7C00005A843CDD51CFFFFCCD S12349604E7570024E754281247C00005AA8267C00005A862E322000BEB230006C0CDEB32B S12349802000BEB230006E104E752E323000DEB33000BEB220006F0272014E752C025346C3 S12349A0E54A2E2800082A7C00005AA82C7C00005A869EB62000088700002B872000BEA8FB S12349C000046DD44283619E58834A8156CEFFF84E752A02538523C500005AC0E58A42840B S12349E02C3900005AC02A7C00005AA82E35400061B458844A8157CDFFE84E753C390000EA S1234A005A840246FFFE0C46601A6600012023F900005A9200005ABC2E3C0000010023C7A9 S1234A2000005A9245F900005A96BE526D0224870C79601B00005A8467084A7900005A9E26 S1234A40670C23F900005A9A00005AA8604008280000001566162E280004DEBC0000010176 S1234A600887000023C700005AA860222E2800089EB900005A869EB900005A8A9EB900000E S1234A805A8E59870887000023C700005AA80C79601B00005A84661623F900005AA000005F S1234AA05AAC23F900005AA400005AB0602A2E3900005AA8DEB900005A86528708870000F6 S1234AC023C700005AACDEB900005A8A52870887000023C700005AB074036100FEF64A8174 S1234AE0670A74036100FEB64A81664074046100FEAC4A81670A74046100FED84A81662C79 S1234B002A7C00005AA82C7C00005A86428276042E352000BEA800046D12DEB62000BEA89D S1234B2000086E08588251CBFFE84E7570014E75227900005AB42C3C000000809C79000079 S1234B405AC6D2C6977900005AC6600214D951CBFFFC4E757E3F2A6800042C7900005AB43A S1234B603CDD51CFFFFC3E3C00640C79601A00005A846702514733C700005AC633FC0002F6 S1234B8000005AC4247900005AA8243900005A864283363900005AC6B6826D0626026190FF S1234BA060489483618A263C00000080B4836D18220A6100FD846100FD704A41665694836F S1234BC0D5FC0000008060E44A82671E223900005AB46100FD646100FD504A41663633C3F5 S1234BE000005AC626026100FF48247900005AAC243900005A8A537900005AC4669224795E S1234C0000005AB0243900005A8E6706421A538266FA4E7570024E753E1B02470007E34F70 S1234C204EFB7002601460226020601E6006601260026006201F70034E75088200004A5A7E S1234C404E7508C200004A5A4E750882000066083C12DC4534C64E754A622C12DC8524C603 S1234C604E75223900005AB46100FCCE2E3900005ABC8EFC00803C074847363900005AC6F1 S1234C8096476C06064300805246267900005AB4D6FC008096C3E24B600A6100FC8C4A41FD S1234CA06600FF7251CEFFF42A3900005AA824459AB900005A9A283900005A8633FC000280 S1234CC000005AC44282E28C601E53436A146100FC584A416600FF3E267900005AB4363CEC S1234CE0003F6100FF3453844A8466DE247900005AAC283900005A8A537900005AC466C4F8 S1234D004E75217900005AB4000C2E3900005AB8DEB900005A960887000021470010227976 S1234D2000005AB422E8000422E8000822F900005AA822F900005A8622F900005AAC22F9ED S1234D4000005A8A22F900005AB022B900005A8E2E2800082C29FFFCDC992C7C00005AA8B6 S1234D607A0442B900005AB0BC966206BE9663022E164A9E51CDFFF29E8622C72468000065 S1234D801012660670194E42524012C042804E7570167202243C00004E0248E7E0004E4335 S1234DA04CDF0007524158820C410018660272200C41002267EE0C41002367E80C410030F1 S1234DC06DD870124E4320404A5822182401D490263900005D4E283900005D4A7011206F90 S1234DE0000423C800005AC8B290620CB4906308B6906206B890630242904A9851C8FFEA2E S1234E004E7561000056610000526100004E6100004A6100004661000042613E613C613AE6 S1234E2061386136613461326130612E612C612A61286126612461226120611E611C611ACE S1234E4061186116611461126110610E610C610A61086106610461024E71426748E780808F S1234E60202F000A90BC00004E060C4000246F100C4000586D200C4000746E1A0440003059 S1234E80207900005AC8D0C04A9066580C4000286D0406400030DEFC000EE4400C40000276 S1234EA06C044CDF03004A5F54400C4000176F0250403F0041F9000055A26100009A301FF5 S1234EC0610000B241F9000055B16100008A201F6100009241F9000055C46100007A42806E S1234EE04E424E732F50000A4E680C4000086D24082F000D000E664A212F0010312F000E69 S1234F004E604CDF01012F6F000200085C4F02577FFF4E73082F000D0016662E212F001871 S1234F20312F0016212F0012212F000E4E604CDF01012F6F00020010DEFC000E02577FFFED S1234F404E733F6F000E000860063F6F001600084CDF01014E7342811218670670024E424C S1234F6060F44E753F0048406102301F3F00E0486102301F3F00E8486102301F0240000F12 S1234F800C40000A6D040600000706000030320070024E424E754EF9000000004EF900007E S1234FA004F4000000000000000000000000000000000000000000000000000000000000F5 S1234FC00000000000000000000000000000000000000000000000000000000000000000CD S1234FE00000000000000000000000000000000000000000000000000000000000000000AD S123500000000000000000000000000000000000000000000000000000000000000000008C S12350200000000000000000000000000D0A696E73756666696369656E74206D656D6F720E S123504079206F72206261642066696C6520686561646572240D0A72656164206572726F93 S123506072206F6E2070726F6772616D206C6F6164240D0A6261642072656C6F6361746910 S12350806F6E20696E666F726D6174696F6E2062697473240000530A00000000530E0009AC S12350A00000531300010000531800020000531C00030000532000040000532500060000B1 S12350C0FFFF00004E4F4E2D53595354454D2046494C452853292045584953542400456E69 S12350E07465722046696C656E616D653A202400456E746572204F6C64204E616D653A206A S12351002400456E746572204E6577204E616D653A20240046696C6520616C72656164797E S1235120206578697374732400004E6F2066696C652400004E6F2077696C6463617264209F S123514066696C656E616D657324000053796E7461783A2052454E204E657766696C653D86 S12351604F6C6466696C65240000436F6E6669726D28592F4E293F202400456E74657220B2 S123518055736572204E6F3A202400002E5355422066696C65206E6F7420666F756E642468 S12351A000005573657220232072616E6765206973205B302D31355D2400546F6F206D6101 S12351C06E7920617267756D656E74733A202400000001000000000001000000000000006E S12351E00000000000010000040D0000040D0000040D3E3C2E2C3D5B5D3B7C262F28292B26 S12352002D5C0000002600000028000000290000002B0000002C0000002D0000002E0000D8 S1235220002F0000003A0000003B0000003C0000003D0000003E0000005B0000005C000058 S1235240005D0000007C0000000000000BF800000BF800000BF800000BF800000BF8000062 S12352600BF800000BF800000BF800000BF800000BF800000BF800000BF800000BF8000012 S12352800BF800000BF800000BF800000BF800000C1400001C6600001C9200001CA60000EC S12352A01C5400001C8000001C94000000090000000A0000001A00000020000000240000BD S12352C0003B00000000000021A0000022500000227A000021A00000222E000021900000FE S12352E022840000253C000025520000255A000025620000256A0000258800002590000035 S123530026480000263600002546444952004449525300545950450052454E004552410044 S123532055534552005355424D4954000000534800005388000030C6000030D8000030EAC8 S1235340000030F40000310443502F4D2D36384B28746D292C2056657273696F6E20312E18 S1235360312C20436F707972696768742028632920313938332C204469676974616C2052AE S12353806573656172636800585858582D303030302D36353433323100206572726F722015 S12353A06F6E2064726976652024000A0D446F20796F752077616E7420746F3A202041624D S12353C06F7274202841292C202052657472792028522924002C206F7220436F6E74696EA1 S12353E0756520776974682062616420646174612028432924003F2024000D0A24004350C9 S12354002F4D204469736B2066696C65206572726F723A20240020697320726561642D6F85 S12354206E6C792E24000D0A446F20796F752077616E7420746F3A204368616E6765206976 S12354407420746F20726561642F7772697465202843292C206F722041626F727420284139 S1235460293F2024000D0A24000D0A43502F4D204469736B2024007265616424007772691A S12354807465240073656C656374240073656C65637424006368616E676524000000000039 S12354A00000000043800000438800004392000043A2000043B0000043C6000043DC000085 S12354C043E8000043F60000440800004414000044200000442A00004432000044560000DE S12354E0446C00004494000044AA000044C6000044E80000450A00004528000045440000B7 S1235500457600004598000045A2000045B200004738000045BC000045D2000045DC000059 S123552045FE00004636000046580000467800004696000046AA000046BE000047380000FD S12355404738000046DA0000473800004738000047380000473800004738000046F60000F1 S123556047000000471200004738000047380000473800004738000047380000473800008D S123558047380000473800004738000047380000471A000047380000472400004738000041 S12355A0472E0D0A0A457863657074696F6E202400206174207573657220616464726573F7 S12355C0732024002E202041626F727465642E0000000000000000000000000000000000B3 S9030000FC 02400206174207573657220616464726573F7 S12355C0732024002E202041626F727465642E0000000000000000000000000000000000B3 S9030000FC eincludeundefifdefifndefelseendififcan't open %s can't creat %s NewlabelLabelunmatched conditionalinvalid #endifinvalid #elseinvalid preprocessor commandline overflowdefine table overflowbad define name: %stoo many argumentsargument buffer overflowdefine recursiontoo many argumentsargument buffer overflow_Lbad argument:%smacro argument too longunexpected EOFcondition stack overflowbad include filebad include file nameincludes nested too deeplycan't open %s<=CP/M-68K(tm), Version 1.1, Copyright (c) 1983, Digital Research1015-0901-654321usage: c68 [-i x:] inputfile outputfile Cannot open Cannot create CDOSUXcdosuxT,T,=/****************************************************************************/ /* */ /* L o n g j u m p H e a d e r F i l e */ /* --------------------------------------- */ /* */ /* Copyright 1982 by Digital Research. All rights reserved. */ /* */ /* Long jumps on the 68K are implemented as follows: */ /* */ /* 1). Routine "setjmp" is called to setup a special */ /* buffer for return. The return address, stack */ /* pointer and frame pointer are saved. This allows */ /* the calling program to do the proper number of */ /* "pops". */ /* */ /* 2). At some later time, the procedure "longjmp" is */ /* called. The programmer sees a return from the */ /* previous "setjmp" as the result. */ /* */ /* Calling sequence: */ /* */ /* #include (definitions) */ /* jmp_buf env; (define a buffer for saved stuff) */ /* */ /* setjmp(env); */ /* a: */ /* */ /* longjmp(env,val); */ /* */ /* Setjmp returns a WORD of 0 on first call, and "val" on the */ /* subsequent "longjmp" call. The longjmp call causes execution to */ /* resume at "a:" above. */ /* */ /****************************************************************************/ typedef LONG jmp_buf[3]; /****************************************************************************/ /* */ /* S i g n a l H e a d e r F i l e */ /* ----------------------------------- */ /* */ /* Copyright 1982 by Digital Research, Inc. All rights reserved. */ /* */ /* Define the "signal" arguments, so anyone using the function will */ /* not get compile-time errors. Some functions are not implemented. */ /* */ /****************************************************************************/ #define NSIG 16 /* 16 simulated signals */ #define SIGHUP 1 /* Hangup */ #define SIGINT 2 /* Interrupt (^C) */ #define SIGQUIT 3 /* Quit signal */ #define SIGILL 4 /* Illegal Instruction trap */ #define SIGTRAP 5 /* Trace Trap */ #define SIGIOT 6 /* IOT instruction (on PDP-11) */ #define SIGEMT 7 /* EMT instruction (TRAP on 68k) */ #define SIGFPE 8 /* Floating point exception */ #define SIGKILL 9 /* Kill (cannot be intercepted) */ #define SIGBUS 10 /* BUSERR (non-ex memory reference) */ #define SIGSEGV 11 /* Segmentation (MMU) violation */ #define SIGSYS 12 /* Bad argument to system call */ #define SIGPIPE 13 /* Write on a broken pipe */ #define SIGALRM 14 /* Alarm clock (what a name!) */ #define SIGTERM 15 /* Software termination signal */ /************************************/ #define BADSIG (-1L) /* Error return */ #define SIG_DFL (0L) /* Default action on signal call */ #define SIG_IGN (1L) /* Ignore */ /************************************/ /***************************************************************************** * * C P / M C H E A D E R F I L E * ----------------------------------- * Copyright 1982 by Digital Research Inc. All rights reserved. * * This is the standard include file for the CP/M C Run Time Library. * *****************************************************************************/ /* */ #include /* Portability Definitions */ /* */ /**************************************************************************** * Stream I/O File Definitions *****************************************************************************/ #define BUFSIZ 512 /* Standard (ascii) buf size */ #define MAXFILES 16 /* Max # open files ( < 32 ) */ struct _iobuf { /* */ WORD _fd; /* file descriptor for low level io */ WORD _flag; /* stream info flags */ BYTE *_base; /* base of buffer */ BYTE *_ptr; /* current r/w pointer */ WORD _cnt; /* # chars to be read/have been wrt */ }; /* */ #ifndef FILE /* conditionally include: */ extern struct _iobuf _iob[MAXFILES]; /* an array of this info */ #define FILE struct _iobuf /* stream definition */ #endif /************************************/ /* flag byte definition */ #define _IOREAD 0x01 /* readable file */ #define _IOWRT 0x02 /* writeable file */ #define _IOABUF 0x04 /* alloc'd buffer */ #define _IONBUF 0x08 /* no buffer  */ #define _IOERR 0x10 /* error has occurred */ #define _IOEOF 0x20 /* EOF has occurred */ #define _IOLBUF 0x40 /* handle as line buffer */ #define _IOSTRI 0x80 /* this stream is really a string */ #define _IOASCI 0x100 /* this was opened as an ascii file */ /************************************/ #define stdin (&_iob[0]) /* standard input stream */ #define stdout (&_iob[1]) /* " output " */ #define stderr (&_iob[2]) /* " error "  */ /************************************/ #define clearerr(p) ((p)->_flag & ~_IOERR) /* clear error flag */ #define feof(p) ((p)->_flag & _IOEOF) /* EOF encountered on stream */ #define ferror(p) ((p)->_flag & _IOERR) /* error encountered on stream */ #define fileno(p) ((p)->_fd) /* get stream's file descriptor */ #define getchar() getc(stdin) /* get char from stdin */ #define putchar(c) putc(c,stdout) /* put char to stdout */ #define putc fputc #define getc fgetc /****************************************************************************/ /* */ /* M A C R O S */ /* ----------- */ /* */ /* Define some stuff as macros .... */ /* */ /****************************************************************************/ #define abs(x) ((x) < 0 ? -(x) : (x)) /* Absolute value function */ #define max(x,y) (((x) > (y)) ? (x) : (y)) /* Max function */ #define min(x,y) (((x) < (y)) ? (x) : (y)) /* Min function */ /*************************** end of stdio.h *********************************/ reloc putboot.rel putboot.68k /*=======================================================================*/ /*/---------------------------------------------------------------------\*/ /*| |*/ /*| CP/M-68K(tm) BIOS for the EXORMACS |*/ /*| |*/ /*| Copyright 1983, Digital Research. |*/ /*| |*/ /*| Modified 9/ 7/82 wbt |*/ /*| 10/ 5/82 wbt |*/ /*| 12/15/82 wbt |*/ /*| 12/22/82 wbt |*/ /*| 1/28/83 wbt |*/ /*| |*/ /*\---------------------------------------------------------------------/*/ /*=======================================================================*/ #include "biostype.h" /* defines LOADER : 0-> normal bios, 1->loader bios */ /* also defines CTLTYPE 0 -> Universal Disk Cntrlr */ /* 1 -> Floppy Disk Controller */ #include "biostyps.h" /* defines portable variable types */ char copyright[] = "Copyright 1983, Digital Research"; struct memb { BYTE byte; }; /* use for peeking and poking memory */ struct memw { WORD word; };  struct meml { LONG lword;}; /************************************************************************/ /* I/O Device Definitions */ /************************************************************************/ /************************************************************************/ /* Define the two serial ports on the DEBUG board */ /************************************************************************/ /* Port Addresses */ #define PORT1 0xFFEE011 /* console port */ #define PORT2 0xFFEE015 /* debug port */ /* Port Offsets */ #define PORTCTRL 0 /* Control Register */ #define PORTSTAT 0 /* Status Register */ #define PORTRDR 2 /* Read Data Register */ #define PORTTDR 2 /* Write Data Register */ /* Port Control Functions */ #define PORTRSET 3 /* Port Reset */ #define PORTINIT 0x11 /* Port Initialize */ /* Port Status Values */ #define PORTRDRF 1 /* Read Data Register Full */ #define PORTTDRE 2 /* Write Data Register Empty */ /************************************************************************/ /* Define Disk I/O Addresses and Related Constants */ /************************************************************************/ #define DSKIPC 0xFF0000 /* IPC Base Address */ #define DSKINTV 0x3FC /* Address of Disk Interrupt Vector */ #define INTTOIPC 0xD /* offsets in mem mapped io area */ #define RSTTOIPC 0xF #define MSGTOIPC 0x101 #define ACKTOIPC 0x103 #define PKTTOIPC 0x105 #define MSGFMIPC 0x181 #define ACKFMIPC 0x183 #define PKTFMIPC 0x185 #define DSKREAD 0x10 /* disk commands */ #define DSKWRITE 0x20 /* Some characters used in disk controller packets */ #define STX 0x02 #define ETX 0x03 #define ACK 0x06 #define NAK 0x15 #define PKTSTX 0x0 /* offsets within a disk packet */ #define PKTID 0x1 #define PKTSZ 0x2 #define PKTDEV 0x3 #define PKTCHCOM 0x4 #define PKTSTCOM 0x5 #define PKTSTVAL 0x6 #define PKTSTPRM 0x8 #define STPKTSZ 0xf /************************************************************************/ /* BIOS Table Definitions */ /************************************************************************/ /* Disk Parameter Block Structure */ struct dpb { WORD spt; BYTE bsh; BYTE blm; BYTE exm; BYTE dpbjunk; WORD dsm; WORD drm; BYTE al0; BYTE al1; WORD cks; WORD off; }; /* Disk Parameter Header Structure */ struct dph { BYTE *xltp; WORD dphscr[3]; BYTE *dirbufp; struct dpb *dpbp; BYTE *csvp; BYTE *alvp; }; /************************************************************************/ /* Directory Buffer for use by the BDOS */ /************************************************************************/ BYTE dirbuf[128]; #if ! LOADER /************************************************************************/ /* CSV's */ /************************************************************************/ BYTE csv0[16]; BYTE csv1[16]; #if ! CTLTYPE BYTE csv2[256]; BYTE csv3[256]; #endif /***** *******************************************************************/ /* ALV's */ /************************************************************************/ BYTE alv0[32]; /* (dsm0 / 8) + 1 */ BYTE alv1[32]; /* (dsm1 / 8) + 1 */ #if ! CTLTYPE BYTE alv2[412]; /* (dsm2 / 8) + 1 */ BYTE alv3[412]; /* (dsm2 / 8) + 1 */ #endif #endif /************************************************************************/ /* Disk Parameter Blocks */ /************************************************************************/ /* The following dpb definitions express the intent of the writer, */ /* unfortunately, due to a compiler bug, these lines cannot be used. */ /* Therefore, the obscure code following them has been inserted. */ /************* spt, bsh, blm, exm, jnk, dsm, drm, al0, al1, cks, off struct dpb dpb0={ 26, 3, 7, 0, 0, 242, 63, 0xC0, 0, 16, 2}; #if ! CTLTYPE struct dpb dpb2={ 32, 5, 31, 1, 0, 3288, 1023, 0xFF, 0, 256, 4}; #endif ********** end of readable definitions *************/ /* The Alcyon C compiler assumes all structures are arrays of int, so */ /* in the following definitions, adjacent pairs of chars have been */ /* combined into int constants --- what a kludge! **********************/ struct dpb dpb0 = { 26, 775, 0, 242, 63, -16384, 16, 2 }; #if ! CTLTYPE struct dpb dpb2 = { 32, 1311, 256, 3288, 1023, 0xFF00, 256, 4 }; #endif /*************** End of kludge *****************/ /************************************************************************/ /* Sector Translate Table for Floppy Disks */ /************************************************************************/ BYTE xlt[26] = { 1, 7, 13, 19, 25, 5, 11, 17, 23, 3, 9, 15, 21, 2, 8, 14, 20, 26, 6, 12, 18, 24, 4, 10, 16, 22 }; /************************************************************************/ /* Disk Parameter Headers */ /* */ /* Four disks are defined : dsk a: diskno=0, (Motorola's #fd04) */ /* if CTLTYPE = 0 : dsk b: diskno=1, (Motorola's #fd05) */ /* : dsk c: diskno=2, (Motorola's #hd00) */ /* : dsk d: diskno=3, (Motorola's #hd01) */ /* */ /* Two disks are defined : dsk a: diskno=0, (Motorola's #fd00) */ /* if CTLTYPE = 1 : dsk b: diskno=1, (Motorola's #fd01) */ /* */ /************************************************************************/ #if ! LOADER /* Disk Parameter Headers */ #if ! CTLTYPE struct dph dphtab[4] = #else struct dph dphtab[2] = #endif { {&xlt, 0, 0, 0, &dirbuf, &dpb0, &csv0, &alv0}, /*dsk a*/ {&xlt, 0, 0, 0, &dirbuf, &dpb0, &csv1, &alv1}, /*dsk b*/ #if ! CTLTYPE { 0L, 0, 0, 0, &dirbuf, &dpb2, &csv2, &alv2}, /*dsk c*/ { 0L, 0, 0, 0, &dirbuf, &dpb2, &csv3, &alv3}, /*dsk d*/ #endif }; #else #if ! CTLTYPE struct dph dphtab[4] = #else struct dph dphtab[2] = #endif { {&xlt, 0, 0, 0, &dirbuf, &dpb0, 0L, 0L}, /*dsk a*/ {&xlt, 0, 0, 0, &dirbuf, &dpb0, 0L, 0L}, /*dsk b*/ #if ! CTLTYPE { 0L, 0, 0, 0, &dirbuf, &dpb2, 0L, 0L}, /*dsk c*/ { 0L, 0, 0, 0, &dirbuf, &dpb2, 0L, 0L}, /*dsk d*/ #endif }; #endif /************************************************************************/ /* Memory Region Table */ /************************************************************************/ struct mrt { WORD count; LONG tpalow; LONG tpalen; } memtab = { 1, 0x0400L, 0x14c00L }; #if ! LOADER /************************************************************************/ /* IOBYTE */ /************************************************************************/ WORD iobyte; /* The I/O Byte is defined, but not used */ #endif /************************************************************************/ /* Currently Selected Disk Stuff */ /************************************************************************/ WORD settrk, setsec, setdsk; /* Currently set track, sector, disk */ BYTE *setdma; /* Currently se t dma address */ /************************************************************************/ /* Track Buffering Definitions and Variables */ /************************************************************************/ #if ! LOADER #define NUMTB 4 /* Number of track buffers -- must be at least 3 */ /* for the algorithms in this BIOS to work properly */ /* Define the track buffer structure */ struct tbstr { struct tbstr *nextbuf; /* form linked list for LRU */ BYTE buf[32*128]; /* big enough for 1/4 hd trk */ WORD dsk; /* disk for this buffer */ WORD trk; /* track for this buffer */ BYTE valid; /* buffer valid flag */ BYTE dirty; /* true if a BIOS write has */ /* put data in this buffer, */ /* but the buffer hasn't been */ /* flushed yet. */ }; struct tbstr *firstbuf; /* head of linked list of track buffers */ struct tbstr *lastbuf; /* tail of ditto */ struct tbstr tbuf[NUMTB]; /* array of track buffers */ #else /* the loader bios uses only 1 track buffer */ BYTE buf1trk[32*128]; /* big enough for 1/4 hd trk */ BYTE bufvalid; WORD buftrk; #endif /************************************************************************/ /* Disk I/O Packets for the UDC and other Disk I/O Variables */ /************************************************************************/ /* Home disk packet */ struct hmpkst { BYTE a1; BYTE a2; BYTE a3; BYTE dskno; BYTE com1;  BYTE com2; BYTE a6; BYTE a7; } hmpack = { 512, 1792, 0, 768 }; /* kludge init by words */ /* Read/write disk packet */ struct rwpkst { BYTE stxchr; BYTE pktid; BYTE pktsize; BYTE dskno; BYTE chcmd; BYTE devcmd; WORD numblks; WORD blksize; LONG iobf; WORD cksum; LONG lsect; BYTE etxchr; BYTE rwpad; }; struct rwpkst rwpack = { 512, 5376, 4097, 13, 256, 0, 0, 0, 0, 0, 768 }; #if ! LOADER /* format disk packet */ struct fmtpkst { BYTE fmtstx; BYTE fmtid; BYTE fmtsize; BYTE fmtdskno; BYTE fmtchcmd; BYTE fmtdvcmd; BYTE fmtetx; BYTE fmtpad; }; struct fmtpkst fmtpack = { 512, 1792, 0x4002, 0x0300 }; #endif /************************************************************************/ /* Define the number of disks supported and other disk stuff */ /************************************************************************/ #if ! CTLTYPE #define NUMDSKS 4 /* number of disks defined */ #else #define NUMDSKS 2 #endif #define MAXDSK (NUMDSKS-1) /* maximum disk number */ #if ! CTLTYPE BYTE cnvdsk[NUMDSKS] = { 4, 5, 0, 1 }; /* convert CP/M dsk# to EXORmacs */ BYTE rcnvdsk[6] = { 2, 3, 0, 0, 0, 1 }; /* and vice versa */ #else BYTE cnvdsk[NUMDSKS] = { 0, 1 }; BYTE rcnvdsk[2] = { 0, 1 }; #endif /* defines for IPC and disk states */ #define IDLE 0 #define ACTIVE 1 WORD ipcstate; /* current IPC state */ WORD actvdsk; /* disk number of currently active disk, if any */ LONG intcount; /* count of interrupts needing to be processed */ struct dskst { WORD state; /* from defines above */ BYTE ready; /* 0 => not ready */ BYTE change; /* 0 => no change */ } dskstate[NUMDSKS]; /************************************************************************/ /* Generic Serial Port I/O Procedures */ /************************************************************************/ /************************************************************************/ /* Port initialization */ /************************************************************************/ portinit(port) REG BYTE *port; { *(port + PORTCTRL) = PORTRSET; /* reset the port */ *(port + PORTCTRL) = PORTINIT; } /************************************************************************/ /* Generic serial port status input status */ /************************************************************************/ portstat(port) REG BYTE *port; { ! if ( *(port + PORTSTAT) & PORTRDRF) return(0xff); /* input ready */ else return(0x00); /* not ready */ } /************************************************************************/ /* Generic serial port input */ /************************************************************************/ BYTE portin(port) REG BYTE *port; { while ( ! portstat(port)) ; /* wait for input */ return ( *(port + PORTRDR)); /* got some, return it */ } /************************************************************************/ /* Generic serial port output */ /************************************************************************/ portout(port, ch) REG BYTE *port; REG BYTE ch; { while ( ! (*(port + PORTSTAT) & PORTTDRE) ) ; /* wait for ok to send */ *(port + PORTTDR) = ch; /* then send character */ } /************************************************************************/ /* Error procedure for BIOS */ /************************************************************************/ #if ! LOADER bioserr(errmsg) REG BYTE *errmsg; { printstr("\n\rBIOS ERROR -- "); printstr(errmsg); printstr(".\n\r"); } printstr(s) /* used by bioserr */ REG BYTE *s; { while (*s) {portout(PORT1,*s); s += 1; }; } #else bioserr() /* minimal error procedure for loader BIOS */ { l : goto l; } #endif /************************************************************************/ /* Disk I/O Procedures */ /************************************************************************/ EXTERN dskia(); /* external interrupt handler -- calls dskic */ EXTERN setimask(); /* use to set interrupt mask -- returns old mask */ dskic() { /* Disk Interrupt Handler -- C Language Portion */ REG BYTE workbyte; BYTE stpkt[STPKTSZ]; workbyte = (DSKIPC + ACKFMIPC)->byte; if ( (workbyte == ACK) || (workbyte == NAK) ) { if ( ipcstate == ACTIVE ) intcount += 1; else (DSKIPC + ACKFMIPC)->byte = 0; /* ??? */ } workbyte = (DSKIPC + MSGFMIPC)->byte; if ( workbyte & 0x80 ) { getstpkt(stpkt); if ( stpkt[PKTID] == 0xFF ) { /* unsolicited */ unsolst(stpkt); sendack(); } else { /* solicited */ if ( ipcstate == ACTIVE ) intcount += 1; else sendack(); } } } /* end of dskic */ /************************************************************************/ /* Read status packet from IPC */ /************************************************************************/ getstpkt(stpktp) REG BYTE *stpktp; { REG BYTE *p, *q; REG WORD i; p = stpktp; q = (DSKIPC + PKTFMIPC); for ( i = STPKTSZ; i; i -= 1 ) { *p = *q; p += 1; q += 2; } } /************************************************************************/ /* Handle Unsolicited Status from IPC */ /************************************************************************/ unsolst(stpktp) REG BYTE *stpktp; { REG WORD dev; REG WORD ready; REG struct dskst *dsp; dev = rcnvdsk[ (stpktp+PKTDEV)->byte ]; ready = ((stpktp+PKTSTPRM)->byte & 0x80) == 0x0; dsp = & dskstate[dev]; if ( ( ready && !(dsp->ready) ) || (!ready) && (dsp->ready) ) dsp->change = 1; dsp->ready = ready; #if ! LOADER if ( ! ready ) setinvld(dev); /* Disk is not ready, mark buffers */ #endif } #if ! LOADER /************************************************************************/ /* Mark all buffers for a disk as not valid  */ /************************************************************************/ setinvld(dsk) REG WORD dsk; { REG struct tbstr *tbp; tbp = firstbuf; while ( tbp ) { if ( tbp->dsk == dsk ) tbp->valid = 0; tbp = tbp->nextbuf; } } #endif /************************************************************************/ /* Wait for an ACK from the IPC */ /************************************************************************/ waitack() { REG WORD imsave; REG BYTE work; ! while (1) { while ( ! intcount ) ; /* wait */ imsave = setimask(7); intcount -= 1; work = (DSKIPC + ACKFMIPC)->byte; if ( (work == ACK) || (work == NAK) ) { (DSKIPC + ACKFMIPC)->byte = 0; setimask(imsave); return(work == ACK); } setimask(imsave); } } /************************************************************************/ /* Acknowledge a message from the IPC */ /************************************************************************/ sendack() { (DSKIPC + MSGFMIPC)->byte = 0; /* clear message flag */ (DSKIPC + ACKTOIPC)->byte = ACK; /* send ACK */ (DSKIPC + INTTOIPC)->byte = 0; /* interrupt IPC */ } /************************************************************************/ /* Send a packet to the IPC */ /************************************************************************/ sendpkt(pktadr, pktsize) REG BYTE *pktadr; REG WORD pktsize; { REG BYTE *iopackp; REG WORD imsave; while ( (DSKIPC+MSGTOIPC)->byte ); /* wait til ready */ (DSKIPC+ACKFMIPC)->byte = 0; (DSKIPC+MSGFMIPC)->byte = 0; iopackp = (DSKIPC+PKTTOIPC); do {*iopackp = *pktadr++; iopackp += 2; pktsize -= 1;} while(pktsize); (DSKIPC+MSGTOIPC)->byte = 0x80; imsave = setimask(7); dskstate[actvdsk].state = ACTIVE; ipcstate = ACTIVE; intcount = 0L; (DSKIPC+INTTOIPC)->byte = 0; setimask(imsave); waitack(); } /************************************************************************/ /* Wait for a Disk Operation to Finish  */ /************************************************************************/ WORD dskwait(dsk, stcom, stval) REG WORD dsk; BYTE stcom; WORD stval; { REG WORD imsave; BYTE stpkt[STPKTSZ]; imsave = setimask(7); while ( (! intcount) && dskstate[dsk].ready && (! dskstate[dsk].change) ) { setimask(imsave); imsave = setimask(7); } if ( intcount ) { intcount -= 1; if ( ( (DSKIPC + MSGFMIPC)->byte & 0x80 ) == 0x80 ) { getstpkt(stpkt); setimask(imsave); if ( (stpkt[PKTSTCOM] == stcom) && ( (stpkt+PKTSTVAL)->word == stval ) ) return (1); else return (0); } } setimask(imsave); return(0); } /************************************************************************/ /* Do a Disk Read or Write */ /************************************************************************/ dskxfer(dsk, trk, bufp, cmd) REG WORD dsk, trk, cmd; REG BYTE *bufp; { /* build packet */ REG WORD sectcnt; REG WORD result; #if CTLTYPE LONG bytecnt; /* only needed for FDC */ WORD cheksum; #endif rwpack.dskno = cnvdsk[dsk]; rwpack.iobf = bufp; sectcnt = (dphtab[dsk].dpbp)->spt; rwpack.lsect = trk * (sectcnt >> 1); rwpack.chcmd = cmd; rwpack.numblks = (sectcnt >> 1); #if CTLTYPE cheksum = 0; /* FDC needs checksum */ bytecnt = ((LONG)sectcnt) << 7; while ( bytecnt-- ) cheksum += (~(*bufp++)) & 0xff; rwpack.cksum = cheksum; #endif actvdsk = dsk; dskstate[dsk].change = 0; sendpkt(&rwpack, 21); result = dskwait(dsk, 0x70, 0x0); sendack(); dskstate[dsk].state = IDLE; ipcstate = IDLE; return(result); } #if ! LOADER /************************************************************************/ /* Write one disk buffer */ /************************************************************************/ flush1(tbp) struct tbstr *tbp; { REG WORD ok; if ( tbp->valid && tbp->dirty ) ok = dskxfer(tbp->dsk, tbp->trk, tbp->buf, DSKWRITE); else ok = 1; tbp->dirty = 0; /* even if error, mark not dirty */ tbp->valid &= ok; /* otherwise system has trouble */ /* continuing. */ return(ok); } /************************************************************************/ /* Write all disk buffers */ /************************************************************************/ flush() { REG struct tbstr *tbp; REG WORD ok; ok = 1; tbp = firstbuf; while (tbp) { if ( ! flush1(tbp) ) ok = 0; tbp = tbp->nextbuf; } return(ok); } /*****************"********************************************************/ /* Fill the indicated disk buffer with the current track and sector */ /*************************************************************************/ fill(tbp) REG struct tbstr *tbp; { REG WORD ok; if ( tbp->valid && tbp->dirty ) ok = flush1(tbp); else ok = 1; if (ok) ok = dskxfer(setdsk, settrk, tbp->buf, DSKREAD); tbp->valid = ok; tbp->dirty = 0; tbp->trk = settrk; tbp->dsk = setdsk; return(ok); } /************************************************************************/ /* Return the address of a track buffer structure containing the */ /* currently set track of the currently set disk. */ /************************************************************************/ struct tbstr *gettrk() { REG struct tbstr *tbp; REG struct tbstr *ltbp; REG struct tbstr *mtbp; REG WORD imsave; /* Check for disk on-line -- if not, return error */ imsave = setimask(7); if ( ! dskstate[setdsk].ready ) { setimask(imsave); tbp = 0L; return (tbp); } /* Search through buffers to see if the required stuff */ /* is already in a buffer */ tbp = firstbuf; ltbp = 0; mtbp = 0; while (tbp) { if ( (tbp->valid) && (tbp->dsk == setdsk) && (tbp->trk == settrk) ) { if (ltbp) /* found it -- rearrange LRU links */ { ltbp->nextbuf = tbp->nextbuf; tbp->nextbuf = firstbuf; firstbuf = tbp; } setimask(imsave); return ( tbp ); } else {  mtbp = ltbp; /* move along to next buffer */ ltbp = tbp; tbp = tbp->nextbuf; } } /* The stuff we need is not in a buffer, we must make a buffer */ /* available, and fill it with the desired track */ if (mtbp) mtbp->nextbuf = 0; /* detach lru buffer */ ltbp->nextbuf = firstbuf; firstbuf = ltbp; setimask(imsave); if (flush1(ltbp) && fill(ltbp)) mtbp = ltbp; /* success */ else mtbp = 0L ; /* failure */ return (mtbp); } /************************************************************************/ /* Bios READ Function -- read one sector */ /************************************************************************/ read() { REG BYTE *p; REG BYTE *q; REG WORD i; REG struct tbstr *tbp; tbp = gettrk(); /* locate track buffer with sector */ if ( ! tbp ) return(1); /* failure */ /* locate sector in buffer and copy contents to user area */ p = (tbp->buf) + (setsec << 7); /* multiply by shifting */ q = setdma; i = 128; do {*q++ = *p++; i -= 1;} while (i); /* this generates good code */ return(0); } /************************************************************************/ /* BIOS WRITE Function -- write one sector */ /************************************************************************/ write(mode) BYTE mode; { REG BYTE *p; REG BYTE *q; REG WORD i; REG struct tbstr *tbp; /* locate track buffer containing sector to be written */ tbp = gettrk(); if ( ! tbp ) return (1); /* failure */ /* locate desired sector and do copy the data from the user area */ p = (tbp->buf) + (setsec << 7); /* multiply by shifting */ q = setdma; i = 128; do {*p++ = *q++; i -= 1;} while (i); /* this generates good code */ tbp->dirty = 1; /* the buffer is now "dirty" */ /* The track must be written if this is a directory write */ if ( mode == 1 ){if ( flush1(tbp) ) return(0); else return(1);} else return(0); } #else /************************************************************************/ /* Read and Write functions for the Loader BIOS */ /************************************************************************/ read() { REG BYTE *p; REG BYTE *q; REG WORD i; if ( ( (! bufvalid) || (buftrk != settrk) ) && ( ! dskxfer(setdsk, settrk, buf1trk, DSKREAD) ) ) {return(1);} bufvalid = 1; buftrk = settrk; p = buf1trk + (setsec << 7); q = setdma; i = 128; do { *q++ = *p++; i-=1; } while(i); return(0); } #endif /*********************************************"***************************/ /* BIOS Sector Translate Function */ /************************************************************************/ WORD sectran(s, xp) REG WORD s; REG BYTE *xp; { if (xp) return (WORD)xp[s]; else return (s+1); } /************************************************************************/ /* BIOS Set Exception Vector Function */ /************************************************************************/ LONG setxvect(vnum, vval) WORD vnum; LONG vval; { REG LONG oldval; REG BYTE *vloc; vloc = ( (long)vnum ) << 2; oldval = vloc->lword; vloc->lword = vval; return(oldval); } /************************************************************************/ /* BIOS Select Disk Function */ /************************************************************************/ LONG slctdsk(dsk, logged) REG BYTE dsk; BYTE logged; { REG struct dph *dphp; REG BYTE st1, st2; BYTE stpkt[STPKTSZ]; setdsk = dsk; /* Record the selected disk number */ #if ! LOADER /* Special Code to disable drive C. On the EXORmacs, drive C */ /* is the non-removable hard disk. Including this code lets */ /* you save your non-removable disk for non-CP/M use. */ if ( (dsk > MAXDSK) || ( dsk == 2 ) ) { printstr("\n\rBIOS ERROR -- DISK "); portout(PORT1, 'A'+dsk); printstr(" NOT SUPPORTED\n\r"); return(0L); } #endif dphp = &dphtab[dsk]; if ( ! (logged & 0x1) ) { hmpack.dskno = cnvdsk[setdsk]; hmpack.com1 = 0x30; hmpack.com2 = 0x02; actvdsk = dsk; dskstate[dsk].change = 0; sendpkt(&hmpack, 7); if ( ! dskwait(dsk, 0x72, 0x0) ) { sendack(); ipcstate = IDLE; return ( 0L ); } getstpkt(stpkt); /* determine disk type and size */ sendack(); ipcstate = IDLE; st1 = stpkt[PKTSTPRM]; st2 = stpkt[PKTSTPRM+1]; if ( st1 & 0x80 ) /* not ready / ready */ { dskstate[dsk].ready = 0; return(0L); } else dskstate[dsk].ready = 1; switch ( st1 & 7 ) { case 1 : /* floppy disk */ dphp->dpbp = &dpb0; break; #if ! CTLTYPE case 2 : /* hard disk */ dphp->dpbp = &dpb2; break; #endif default : bioserr("Invalid Disk Status"); dphp = 0L; break; } } return(dphp); } #if ! LOADER /****************************************************************/ /* */ /* This function is included as an undocumented, */ /* unsupported method for EXORmacs users to format */ /* disks. It is not a part of CP/M-68K proper, and */ /* is only included here for convenience, since the */ /* Motorola disk controller is somewhat complex to */ /* program, and the BIOS contains supporting routines. */ /* */ /****************************************************************/ format(dsk) REG WORD dsk; { REG WORD retval; if ( ! slctdsk( (BYTE)dsk, (BYTE) 1 ) ) return; fmtpack.dskno = cnvdsk[setdsk]; actvdsk = setdsk; dskstate[setdsk].change = 0; sendpkt(&fmtpack, 7); if ( ! dskwait(setdsk, 0x70, 0x0) ) retval = 0; else retval = 1; sendack(); ipcstate = IDLE; return(retval); } #endif /************************************************************************/ /* */ /* Bios initialization. Must be done before any regular BIOS */ /* calls are performed. */ /* */ /************************************************************************/ biosinit() { initprts(); initdsks(); } initprts() { portinit(PORT1); portinit(PORT2); } initdsks() { REG WORD i; REG WORD imsave; #if ! LOADER for ( i = 0; i < NUMTB; ++i ) { tbuf[i].valid = 0; tbuf[i].dirty = 0; if ( (i+1) < NUMTB ) tbuf[i].nextbuf = &tbuf[i+1]; else tbuf[i].nextbuf = 0; } firstbuf = &tbuf[0]; lastbuf = &tbuf[NUMTB-1]; #else bufvalid = 0; #endif for ( i = 0; i <= MAXDSK; i += 1) { dskstate[i].state = IDLE; dskstate[i].ready = 1; dskstate[i].change = 0; } imsave = setimask(7); /* turn off inter#rupts */ intcount = 0; ipcstate = IDLE; setimask(imsave); /* turn on interrupts */ } /************************************************************************/ /* */ /* BIOS MAIN ENTRY -- Branch out to the various functions. */ /* */ /************************************************************************/ LONG cbios(d0, d1, d2) REG WORD d0; REG LONG d1, d2; { switch(d0) { case 0: biosinit(); /* INIT */ break; #if ! LOADER case 1: flush(); /* WBOOT */ initdsks(); wboot(); /* break; */ #endif case 2: return(portstat(PORT1)); /* CONST */ /* break; */ case 3: return(portin(PORT1)); /* CONIN */ /* break; */ case 4: portout(PORT1, (char)d1); /* CONOUT */ break; case 5: ; /* LIST */ case 6: portout(PORT2, (char)d1); /* PUNCH */ break; case 7: return(portin(PORT2)); /* READER */ /* break; */ case 8: settrk = 0; /* HOME */ break; case 9: return(slctdsk((char)d1, (char)d2)); /* SELDSK */ /* break; */ case 10: settrk = (int)d1; /* SETTRK */ break; case 11: setsec = ((int)d1-1); /* SETSEC */ break; case 12: setdma = d1; /* SETDMA */ break; case 13: return(read()); /* READ */ /* break; */ #if ! LOADER case 14: return(write((char)d1)); /* WRITE */ /* break; */ case 15: if ( *(BYTE *)(PORT2 + PORTSTAT) & PORTTDRE ) return ( 0x0ff ); else return ( 0x000 ); /* break; */ #endif case 16: return(sectran((int)d1, d2)); /* SECTRAN */ /* break; */ #if ! LOADER case 18: return(&memtab); /* GMRTA */ /* break; */ case 19: return(iobyte); /* GETIOB */ /* break; */ case 20: iobyte = (int)d1; /* SETIOB */ break; case 21: if (flush()) return(0L); /* FLUSH */ else return(0xffffL); /* break; */ #endif case 22: return(setxvect((int)d1,d2)); /* SETXVECT */ /* break; */ #if ! LOADER /**********************************************************/ /* This function is not part of a standard BIOS. */ /* It is included only for convenience, and will */ /* not be supported in any way, nor will it */ /* necessarily be included in future versions of */ /* CP/M-68K */ /**********************************************************/ case 63: return( ! format((int)d1) ); /* Disk Formatter */ /* break; */ #endif default: return(0L); break; } /* end switch */ } /* END OF BIOS */ /* End of C Bios */ XJ@ga(JmmRE`BWa(JmmRE>la J@f>LaJ@fJEg #pD` 3pC`>=aJ@gp#`">=aJ@gp`p`p"`>>aJ@g>>aJ@gp`r`ba>>/<xaXO:JEmB |w0PH:g"ar<| g>/<xNDXO>a0|``>ap`>=a J@gp!`">>aJ@g>=aJ@gp`p`p `Kz0Hмu @ sg0Hмu @ ofJEoa>SE`JEoB>aj.Qaj#\ y\g y\3pY`^BypE`R>=aVJ@gp`p `@>=aDJ@gp`>|a6J@gp?`p ` `H |wrW hHN`jB@NqJL N^NuNVHa >nfp` >aB@NqJLN^NuNVHJyg>9By`B.NX>| fJygBy`RyZ`|f Ry~ `JGlBG0NqJLN^NuNVHa>| g | g| f`nfp`>aB@NqJLN^NuNVJyg.xND`3N^NuNVH3*n>. a<.H@gJFg| f.xND`|\fha<|0m0|7n*>ax>az<JFm|o.xND`J`*>/<xa$XO:JEm |w0PH<`| gJGo Ry`JGf .xNDSG`DJGnSBJL N^NuNVH*|v`Jg>?< /a\O\`JL N^NuNVH*y| f:>Ng*@ f .y ND~.SGm+y|#|``#|0. B-BmBmBm;n. /.aXO>r09W/.abXO>0@Hм @+P0@Hм @ NqJL N^NuNVH (nBW/ aXO@Hм @*P g(H|g. / a0XOJ@g `Z*m#` pNNVH*nJL N^NuNVH*ng0<``B@NqJL N^NuNVH*n.aJ@f`-HNqJL N^NuNVH*n. f`GJL N^NuNVH*n.a.a.a JL N^NuNVH*nJgH>/<aXOR`JL N^NuNVH9<g<f yfR`B99g8.a8 .f.aTaV` yfR`a>JLN^NuNVH*n(M&|~JGg RTSG`JL8N^NuNVH *n-H0@"|0H>-gB@`p<0@H(@JFgJ,g JFf J,g|FJFf>a JL0N^NuNVH>.*y gmfB-*U`JL N^NuNVHJf`>N>S9<g<fB9>N<gB@`p` >N`JLN^NuNVB9B9 N^NuNVH *n>. J9g`B9B9(|TSGJGf>N<09@Hм @03BB9 >NaJL0N^NuNVH>.>N<Jf:0G"|J0g(0G"|J0f>N>N<`JgHS9H|g4.a>N.H. f0.n fp``B@` >NB@NqJLN^NuNVH?>.<. *n :.0Hм @#0 @"|\ 0 @802A#0@330GB(>/<a0XOBW?<p?aXO6a0@Hм @BPBy0NqJL N^NuNVH nJ(g. nJ( g$> /.X n?( n?(aPO>`~ nB( ? n(_A0NqJLN^NuNVH~*y g.aJ@fBG*U`0NqJL N^NuNVH*nJ-gJ- g .aL>`~JGg>/ X?9?9ahPO>GB- ;y;y0NqJL N^NuNVH>N>0y"|J0f>N `*y̗ gFJ-g80-yf,0-yf g(*#>N `B`&L(M*U` gB(#>N.aRJ@g.aJ@g&L` NqJL8N^NuNVHa&&@ fp`( 29AHЁ*@X(y><SGJGfB@NqJL8N^NuNVHa&@ fp`L 29AHЁ*@X(y><SGJGf| . f.aJ@gB@` `p``B@NqJL8N^NuNVH>.*n g 5pH``0R@NqJL N^NuNVH0.H*@.* NqJL N^NuNVH. H3<n<f0.aH>WA/<aXO.)aB@`,H*@\. f <29HЁ @0H3H0@B(>/<a\XOBW?<rH?aXOJ@fa$ByB@`.aaBy..gH0@B(B@`X`H0@|H|`$+|"`(+|2`.:a``|gְ|g` NqJL N^NuNVH>.<H>H?a^TOJgp <29HЁ @30yB(>/<a.XOBW?<p?9aXOJ@fBF`|aBy0NqJLN^NuNVaa N^NuNV.a$.aN^NuNVHBG|lf0 м @B(0 м @B( 0R@|l 0R@ м2 Ҽ"A"`0 м @ RG`##0BG|n60@Hм @BP0G|0GB(RG`>N<BBy>NJLN^NuNVH>.,. *.0`\a`ha,aN.aH`J.a H`: >/<a4XO`& >/<a XO`.aH`By` > ?a&TO` 3` S3`#`aH` >a*H`9H|g <``B`. ?afTOH`x <`n09H`b 3`VaJ@gB@`J` <`@. ?aLTO`2 >aJ@gB@`pH`B@```|?b@0@ PNJLN^NuCopyright 1983, Digital Research?       B"B"22L @   . B B V f p J   & J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J 4 BIOS ERROR -- . BIOS ERROR -- DISK NOT SUPPORTED Invalid Disk Status_dirbuf_csv0_csv1_csv2_csv3_alv0 _alv1 _alv2_alv3_iobyte_settrk_setsec_setdsk_setdma_firstbu_lastbuf_tbuf@(_ipcstat_actvdsk_intcoun_dskstat$_wboot_setimas_dskia_copyrig_dpb0"_dpb22_xltB_dphtab\_memtab_hmpack_rwpack_fmtpack_cnvdsk_rcnvdsk_portini~~portin~port L2_portsta~~portstL48L3L63PL65LL62T_fill^~~fill^L67L68L69L66_gettrk~~gettrk~ltbp ~mtbp L71L70L73 L72VL74NL75@L76TL77\L78L79_read~~readL81L80L84L83L82_write~~write~mode L86L85BL89L88L87L90>L918L92|Aa JFgB| e|1| 0|0@|$`0|0@|$.Y?< NTOB0.?<NTO0|>.?<NTOJLN^NuNVH*n>. |f J9 fa4Jg !gHH.?<NTO`JGf0|?.?<NTO`a8JL N^NuNVH*nBG|d80 @"|L./ a.XOJ@f0 @"|L00`@RG`BG|d0H@B@H@мW8 @ :gRG`|f6J9W:f.J9WRf&9W8H|m9W8H||np`޾|f&9W8H|m9W8H||op`|g0H@B@H@мW8 @ :fp`.YBga`TOJ@cp`x|f~`BGBF|d$ |W80pH"|M1`HAfp`BRF`BF|d20H@B@H@мW8 @Jo0H@B@H@мW8 @  lp`RF`pNqJL N^NuNVH*nJg !gR` !fJgK  fR`#M`:J9Kg,J9Mf K`B9K yMJgK`B9KJL N^NuNVH *n.. SހW.W?< NTOJ9Wg 9;Wga9WH|HмW @|  9;Wf W(|W  g  fR`  gFdB am zn H|`H  g  fR @  g  f``R`BJL0N^NuNVH*n !gJgR` !g  g  fR` NqJL N^NuNVH *n(|W8BG|hdBRG`BGJg !gz|drBF !g2  g,  g&Jg"|d0B2ЁмW8 @RFR`B02ЁмW8 @BRG  g  fR|f#M`|JL0N^NuNVH*n  np`&H`p``H |NrW hDNB@NqJL N^NuNVH*n *fp?`.aJ@f RyMH`p NqJL N^NuNVH >.*n Bx |#b B2Ё @BRD`x| b B2Ё @ RD`J9Mg<?`< ByM(M0мW8B29MЁ @Jf.BCBnB.0CW8J(g0CW8 (:gRC`0CW8 (:f|gBW/<WRaXOB@`FJ9Wlg&.M?< NTOBW/<WlaXOB@` 9:WSf( 9AWRm 9PWRoBW/<WRaTXOB@`.Y?<aTO9YH|@=@.Y?<NTO<|f.M*?< NTO8LRDBE|gVJGg0DW( fJGf80DW( f(J.gaRB.JEfB0..?<NTO`"=|.Y?<NTO<8LRD`NRF0|:.?<NTO0| .?<NTOv| b>| f0| .?<NTO |W0`H|H.?<NTORFRC`0| .?<NTO.Y?<NTO<|gHRE8LRD|f6BEJGg0DW( fJGf0DW( fa<`|`Jng.a&JGg.L?< NTO`.L?< NTOJLN^NuNVHJ9WRf".L?< NTO>/<WRaXOJ9Wlg&.M?< NTOBW/<WlaXOB@`nBG0GW8J(g0GW8 (:gRG`0GW8 (:f.|f 9AWRm 9PWRoBW/<WRaXOB@` .Y?<aXTO>JGfJ9WRg.Y?<NTO|b.Y?<NTOJ@fDBG|b:0H@B@H@мW @ g |W0pHH.?<NTO``RG``.Y?<NTO9YHH.?<%NTO`HJ9WRg@JGc*| fBW/<WRaXO`.M4?< NTO`.M*?< NTOJLN^NuNVHBDJ9WRf^.L?< NTO>/<WaXOJ9WfB@`.M?< NTO>/<WRaXO=Wl`BG0GW8 (=g0GW8J(gRG`0GW8 (=fJGc0GW8J(gJ9Wlgx` 9=WlfJ9WmfJ9W'fxJDfJ0GW8 (=f:0GW8B(RGBF |W80pH2FW8@NRGRFJ@g`=Wl||dBEB02ЁмW8 @ :gB02ЁмW8 @JgRE`ʺ|cB02ЁмW8 @ :fxBG|dD0 @"|W80H"|M1pHAfBW0мW8/aXOB@`~RG`TF`NJDfXJ9WRgNJ9WgD.?<aFTO>.Y?<a4TO<JGfJFf.H9Yg> 9:WSf 9:Wg Y` 9:WSg 9:Wf yY`x .m .oxJDf..?<NTO|g.M?< NTO`lBE~|#b"0H@B@H@мY @"N4ERERG`J9Ym 9YoxJDf(.Y?<NTOJ@c.M*?< NTO`.M4?< NTOJDg.ML?< NTOJLN^NuNVHJ9WRf".L?< NTO>/<WRatXOJ9WRfB@`dJ9Wlg&.M?< NTOBW/<WlaXOB@`6BG0GW8 (:g0GW8J(gRG`0GW8 (:f6|f 9AWRm 9PWRnJ9WTfBW/<WRaZXOB@`.Y?<aTO>JGcJ9Kfx.Mj?< NTO0|.?<NTOWl 9aWlm 9zWln9WlH|`9WlHWlaf 9NWlg 9YWlgB@`2 9NWlg(.Y?<NTOJ@c.M*?< NTOJLN^NuNVHJ9WRf".Mz?< NTO>/<WRaXOJ9WRfp`J9Wlg&.M?< NTOBW/<WlaXOp`~ 90WRm 99WRoB@`d9WRH|о| cB@`NJ9WSg0 >9WSH@|о|dJ9WTfB0.?< NTO`B@` 3MpNqJLN^NuNV9W8H|3MB09M.?<NTON^NuNVH?BEBDB9MvMB.0|.?< NTO3M0|.?<NTO3M n f.YBgaTO>`.Y?<aTO>JGc.M4?< NTOB@`l 9 YfBG|d 0GB(RG`9YHS@H.?<NTO?YB9Y.Y?<NTO>|gO0H@B@H@мW @Jg |W0pHyMfJ| | b0FH@B@H@мW @RF`0GWB( 6Y8YKY0H@B@H@мW.R/<YaXOJ@f& |W0pHyMf|`|` Y Y Y0H@B@H@мW.R/<Ya0XOJ@f$ |W0pHyMf|`|`\SYUYBY0H@B@H@мW.R/<YaXOJ@f" |W0pHyMf|`| n f .g nf .f><`.Y?<NTO>`H n f.YBgabTO`.Y?<aPTOB09M.?<NTOBG nf .f~`~|d0GJ(fRG`0`p0|.?< NTO6Y8YKY`X0|.?< NTO`D0|.?< NTOSYUYBY`BC`|b@0@N PN 9SYf 9UYf 9BYf|JEfJDfJCg.Y?<NTO|bJ.g0|.?< NTO3MxJ9Kg M`MBG|$d&0H@B@H@мX @2HABAHAҼY"ARG` n fB9MKB9M`z`(0|.?< NTOJ@g0|.?< NTO`JEg.MaNJDf nf.M?< NTOB09M.?< NTOMB9M0NqJLN^NuNVH? >.<. *n 89Mܾ|e&BG.X?<NTOJ@gM0`R0H@B@H@мX @ 0m0H@B@H@мX @ 9n |X0pH6|(M Sf& Uf Bf Mf If Tf  fRC(MzCb  gJgR`  fRRE`  g.*n BFa|dv0H@B@H@мX @ g^0H@B@H@мX @  gH0H@B@H@мX @ $fRG.Bg?aXO>` |X0pHH.?<NTORG`|fP0H@B@H@мX @ g:0H@B@H@мX @  g$BG.X?<NTOJ@g M|`J0H@B@H@мX @  f*TG|e BG.X?<NTOJ@gM`M|JFg0NqJL N^NuNVH *nBG:9MJ9Mf|d0H@B@H@мX @  g0H@B@H@мX @ !gn |X0PH`D.?aNTO:`JJGc&0H@B@H@мYZ @2HABAHAҼX"ARERG|d00H@B@H@мX @  g0H@B@H@мX @  fRE`ʺ|e$BE.X?<NTOJ@g M```RE3M.?<?aXO:>9M`RE|e BE.X?<NTOJ@gM`nM`d0H@B@H@мYZ @2HABAHAҼX"ARERG|e BE.X?<NTOJ@gM`H |NrW hN`T0H@B@H@мX @  g0H@B@H@мX @ !f|dF0H@B@H@мX @  g,0H@B@H@мX @  g0H@B@H@мX @ !fRE`|f$BE.X?<NTOJ@g M`&` 0H@B@H@мX @ fM``h3MJL0N^NuNVH*nBG|b0H@B@H@м'YZ @BRG`0|.?< NTO<B09M.?< NTO.X?<NTOJ9MfJ9MgHBG|d0H@B@H@мX @BRG`.X?<NTOJ@gMB9YZByMJ9Mf.aBG|d`0H@B@H@мYZ @ am(0H@B@H@мYZ @ zn |YZ0pH|` |YZ0pH2HABAHAҼYZ"ARG`.W?<NTOB0.?< NTOJL N^NuNVH*n.a`BWaD`(>a8`a`a` a`aJ@f.M?< NTO`a~`|J9WRf.L?< NTO>/<XaPXOBG0H@B@H@мX @  g:0H@B@H@мX @Jg&|d 0GW82HABAHAҼX"AQRG`0GW8B(JGg M``@`B9M`| >aJ@f*|g$BW/<W8a>XO`| b@0@N PNJL N^NuNVHM.W?<NTOJ9Mg2B09M.?<NTOB09M.?< NTOB9MJ9Kg4J9Kg*|YZ.X$a`*yMB9K>/ aXO`/< aPXOB9 Jg#M.aJ9W8g .W8aJ9Kf .ar*@`J9MgBJ9Mg .Xa`.a*|YZ.Ma:#M.X$aB9M`/ aNXO`JL N^Nu @>g,H @2g/??N?\HPOLNs A0LNC`W Ns$/` 4/`"/`2/0/HNCLxNu/H/Nu / o H@0B@H@NuNVJ9Vgp` >N$NqN^NuNVHB>N$J@gX>N$<f >N*z<f<`,<fB`"<fJ9VgB@`pV`VJfJLN^NuNVH. axH>?<N$TOJ9VgH>?<N$TO< mRyV`< fByV` <fSyVJLN^NuNVH. < f> az09V|f` H>abJLN^NuNVH. < f H>a`< l >^a.<@H>a JLN^NuNVH9VB9VJgH` >N$NqJLN^NuNVHaH>a̾<fJ9VgB@`pVHNqJLN^NuNVH>.|fax`"` |fa``>W?<N$TOJLN^NuNVH*nH9Vg H>a`JL N^NuNVH>.> a> aJGg > aSG`JLN^NuNVH *n>. J-gS--H|I0SEJ@g< fPG|` < lTG`RG`ھyVd>a> a>a`JL0N^NuNVH *n=yVJVgV yVH<|RVH|Fd<FIJFg yVH>aRVSF`BV`~B--H|H|Alba<fJ-f>a>N*z`6< g< f> a`"`<f>/ aXO`<f:J9Vg"J-gS--H|5`H>aj` >/ afXO`ľ<fJ9VgB@`pV`<f>/ a2XOJ-f`<f >a`x<f>#a>aB-`Z<f2>#a>aBF-H|@d5`H>ahRF``"H"M-H|H@>aDR-`JL0N^NuNVH.$T?<"?<N$XOB9V$VB9VVBV> N?\>N$*@ -#YN#YV -йYN#YJ#YR.VNIJL N^NuNV09PF@yPByPByPJngB@KKV#YNYV#YJYR.VNI>N$N^NuNV.N'.ON'9VH>WAN%nN^NuNV.a>aVN^NuNVH. . a.ON'Jg .ON'.ON'N&<_.ON'H` >a>aJgp`&` B@` `|gڰ|Agܰ|Cgް|RgNq`~JLN^NuNVH *n(M.ON'~RH>WN%nSGf>.N%n~RH>WN%nSGf.PN'.P&N'N&<_.PeN'H`<>a >a- >/ /<8N/@PO0. @>N.``|g|Ag|CgNq`JL0N^NuNV.PiN'0.`J.Pw?<aXTO`L.P}?<aFTO`:.Pa".PBga,TO` .Pa`|b@0@O4 PNN^NuNVH*n>UG| g|!fp`J|m |%n|`JGm| o0<`(0GV+h$0GV!m$B@NqJL N^NuNVH*n-g.#YV#YR-g#YVYN#YRYJ`+yYV+yYRJL N^NuNVH>.yVJGg,|0S@@p.H`yPg >N,` |B.-n-n -yV.NCJ@gJGg>`BWN,J@f`B@NqJLN^NuNVBW/9V0n/aRPONqN^NuNVH>.>/9V0G/a,PO< yVh d0H"yV")Ё/a _0NqJLN^NuNVH*yVB| ޝSFJFf rހ ހ NqJL N^NuNVH?*n >.(yV8<g 09VR@`B@<f yV0(R@@b޼lb0|f:M>al dtB0"yV")Ё&@ga@`Ra8gJ yV1lvB9(VHk0yPgyP`0F@yP9VH>N2,`~3V?0|HH@B@H@йV// nN J@ggBD`0|` RF`0NqJL8N^NuNVH>. yVhb,0<2|`? yV (2IHABAHAЁ @_JLN^NuNVH>.JGc: yVhb.0<2|`F@? yV (2IHABAHAЁ @_JLN^NuNVH>.0H0@"yV"i0HF2<4|aANqJLN^NuNVH>. yV8(:|JGfDd&JGgSG>aJ@g<`DdRE>aJ@g<``Ҽ|g>a0NqJLN^NuNVH*n H||lV yV1nBG yV hd5pH>WN0pRG|o`0G>N$>N0pRG|oJL N^NuNVH. 09PHhF@<9VfJgxB.H@VH||o >N,Hr@@.NC#Vf>N,J@g yV# V yV#VJg yV<(>N00SFJ@f. yV(HR@@? yV0(R@H@B@H@/N$\O<JngRFSF>N0pJFf>B/<1N/@POpH`yPJLN^NuNVH *n(n >.0SGJ@g`JL0N^NuNVH *n(n ~  ?HH@|gJgB@`NSGJGfJ.g> ?g HH@"yV)HFAgB@`TTHH@|?gB@`pNqJL0N^NuNVH*n>/. / a`POg0- > / /. aPOG -p9VH`yPHNqJL N^NuNVH|.NC>g>N,J@f`0NqJLN^NuNVH*n(n >/ / aPOJ@gGA-H yV hd:~ nJgJg nHf` n` nRRSGJGf`6~ nJPgJSg n0Sf` n6` n0TTSGJGf.N<<, H|EbEf"-H|,H|Ao mF m , g>/ N+XO, 0.@>N.p`p9VH`yPB@``B@NqJL8N^NuNVav n(gB@`BW/./<4N/@PONqN^NuNVpNqN^NuNV>/. /.aDPONqN^NuNVH*n>. ?f$9VH>a>/ /<62N/@PO<`..NCj -? gB- B->/ /<6>N/@PO<>/9V/9VaPO0NqJL N^NuNVH*n(n >. gB@`pgPG|BSFJFf> / / aHPO0@>N. yVھhc yV1Gp9VH`yPHNqJL8N^NuNVH *n(n >.BW/ / aPOgl, g >/ N+XO0@>N. yV hd|SF4`H>WN0JFf`|SF0F>N$>N0JFfHNqJL0N^NuNVH*n(n >.BW/ / anPOgF, g >/ N+XOGA-H| H|"nRSFJFf0@>N.HNqJL8N^NuNVH *n(n >.BW/ / aPOg> / R/ RaPO0@>N.HNqJL0N^NuNVH*n- H|H-H|?Ht 塀NqJL N^NuNVH*n.a- H|HЁ-@n!n"n#JL N^NuNVH *n(n BW/ / a0POg*.af,H|HЁ-@n!n"n#HNqJL0N^NuNVH*nBBGB>/ /<9LN/@PO|d&m!m"m# .o-n~`n!n"n#JL N^NuNVH. H>aB yV*hBFBD yVhb,JFf <<0F@:0Fg yV(HR@HހNRD` yV JL N^NuNVH *n(yV,H- H,HArF`>0- H|4aANqJL0N^NuNVH*n>. Jng0G>N$`` 5pH|NqJL N^NuNVH*n>. <.-Jng M2G/?N$TO _1@` M2GFJL N^NuNVH>. *yVB0.-HH-H. HBHЁ,>/9V/N-PONqJL N^NuNVH*nJng,-!H@-"HAA-"<-#g<`-<?- R< mBR<@mp`H-H|?Af,H- H@"yV)HFA|f F B@`p.N6|ep`\-- GF BW/ /<4N/@PO|e0J. g ED p`">/ /<6N/@PO|ep`B@NqJL N^NuNVH *n~I J$fSGJGf yV hcOBp"yV)HAo0"yV)HF- HB|ANqJL0N^NuNVH*n.a>- H@f-H|``- H@c0<``B@NqJL N^NuNVH? *n. yV6(|Jf - g yV h>/ N+XOJng0>H?/ a\O=@g0.`n-#H|@ `& - fBWH?/ a\OJ@gp`?/ an\O<JFgJgB@`p8`Jgp`>JEg?SW`Bg/ a8\O>N1P<|fp`>??/ aRPOx nfV(yV#VV:<SE0HйV @BJEfBE yV(H@n>H??aNXOxRE`#V>- H??a0XO=@JnfnJnfR- 0.NqJL0N^NuNVH>.<. *n B.-MBE0`BWN*zN&`H>N%`>N$`H>?<N$TO`H>?<N$TO`x>N&(`z>N$`l>?<N$TO`L.N'`@.N'`4N$`80< "`0ByPByPByPVB9V`H>N2,V`.]aB- B-BW/ /<4N/@PO:`.]a.N6:`#V.]Bg/ N6Z\O:`*yV-M.]?</ N6Z\O:`l.]a|>/ /<7jN/@PO:`J.]aZBW?</ N=~\O:`,.]a/ /<6N/@PO:`.]a>/ /<8 N/@PO:`09P`9VH|`#V`p9VH`yP`09P`.]a>/ /<8N/@PO:`V9VH9Vg9VH>N2,>/ /9VN3jPO`0||bV9VH|` .]a >?</ N=~\O:`.]a>Bg/ N=~\O:`.]a.N9`.]a.N9`0F@<yPyPyP`z.]a>Bg/ N=~\O:`\>N:`R#VVBWN*zN4|`F.ND`<.N-(`2.N-`p`$`|?b@0@P PNJ.g0NqJL N^NuNVH *n(mHJg H>SW` 9VH>N2,V|JL0N^NuNVH*nBGH`V-H>9VH??< N$XO+@`-H9VgBW-HV??< N$XO(m&l.U?/-N$\O>0+W?< N$TO.?.?<N$XO>?< N$TO. ?< N$TO f> N$>`-H>?<N$TO>`,>N$>`J@g |g2|g*|gNq0NqJL8N^NuH o<d y`VgQG3V3V$yV$9VB69Vƶm&a`Ha&<m" aapJAfV`Jg"9VadaPJAf63V&aH$yV$9VSyVf$yV$9VgBSfNupNu>GONp``"` ````` pNuJZNuJZNuf<E4NuJb,܅$Nu"9Va.9V<HG69VƖGlCRF&yVK` aJAfrQ*9V$EV(9V3VB`SCjaXJAf>&yV6<?a4SJf$yV(9VSyVfNu!yV .9V޹V!G"yV"""V"V"V"V"V"V.(,)ܙ,|VzBVbc.JQ"$hfpNBR@BNupr$<JHNCLRAX Afr A"g A#g A0mpNC @JX"$Ԑ&9YN(9YJp o#VȲb cbcBJQNuaVaRaNaJaFaBa>a<.,=[];|&/()+-\&()+,-./:;<=>[\]|fT  $;Pz.!<!R!Z!b!j!!"H"6!FDIRDIRSTYPERENERAUSERSUBMITOHO,,,,-CP/M-68K(tm), Version 1.1, Copyright (c) 1983, Digital Research1015-0901-000019 error on drive $ Do you want to: Abort (A), Retry (R)$, or Continue w)ith bad data (C)$? $ $CP/M Disk file error: $ is read-only.$ Do you want to: Change it to read/write (C), or Abort (A)? $ $ CP/M Disk $read$write$select$select$change$?????????@@@ @*@2@V@l@@@@A A(ADAvAAAC8AAAAB6BXBxBBBC8C8BC8C8C8C8C8BCCC8C8C8C8C8C8C8C8C8C8CC8C$C8C. Exception $ at user address $. Aborted._submitK_morecmdK_autost _usercmd _ccp_patchKcpm_bdos___LOAD_cmd_tblL_msgL_msg2L_msg3L_msg4M_msg5M_msg6M*_msg7M4_msg8ML_msg9Mj_msg10Mz_msg11M_msg12M_msg13M_load_trM_first_sM_chain_sM_end_of_M_dirflagM_subpromM_sub_indM_indexM_sub_useM_userM_cur_disM_user_ptM_glb_indM_tailM_delM_scan_cm_strcmpP_decode_delim_true_ch"_fill_fcZ_user_cm_cmd_fil8_dollarD_comment_submit__cr_lf$_copy_cm_prompt_echo_cm_check_c_get_cmd _get_par*_dir_cmd _type_cm 4_ren_cmd _era_cmdh_change__transla*_execute!&_main"vstackV_bios1$_bios2$_bios3$_bios4$_bios5$_bios6$_traphnd$T_swap$_udiv$_constat$_conbrk$_conout%n_tabout%_cookdou&_getch&Z_conin&_rawconi&_prt_lin'_newline'@_backsp'v_readlin'_copyrtO,_serialO0_bdosini)_warmboo*z_prt_err*_abrt_er+_ext_err+*_ro_err+_error,_setexc-(_set_tpa-_rdwrt-_dir_rd._dir_wr._dchksum/_dirscan/@_setaloc0p_clraloc0_chkaloc1_getaloc1P_alloc1_seldsk2,_move3j_match3_openfil4_flushit4|_close4_close_f6_alltrue62_matchit6>_search6Z_create6_delete7j_rename8 _set_att8_extsize8_setran9_fsize9L_getsize9_free_sp:_blkindx:_blknum:_setblk;_do_io;^_new_ext;_calcext<_get_rc=4_bdosrw=~_log_dskP_ro_dskP_crit_dsP__bdos?\_tmp_selCj_do_phioC_pgmldD_initexcI_initK_gblsV_parmW8_dmaW_save_suX$_subfcbX_subdmaX_tpa_hpYJ_tpa_lpYN_tpa_htYR_tpa_ltYV_subcomYZ_cmdfcbY)**++.N/``|Kg̰|Lg|Mg``B.NM>| g>aL`>aD`.zEa<``|(gȰ|.gL``,JL N^NuNVH a^>JGnB`HaN<0` aB:|f.Qa.??NDXO*@`BWBga???N1xPO*@`a>?a~TO*@`a=@a=@.?aTO*@`a:a\*@g./ Bg???a *@`0G~(g6a*@ fB`pa(@ fB``./ BgBg??a *@`(a*@g./ BgBg??a| *@``|C|b@0@x PN NqJL0N^NuNVHBG.NM<0`20`FG0|@`8G0|@`,G0|@` .z]ad`H |y rW h`N`JLN^NuNVH~*n.NM<| gSGm`JGoB .NqJL N^NuNVRy:Ry Jy&g>&/<zuNFXO>?.?.?.?.?. /.NF> aSy N^NuNV>?.?.?.?.?. /.az>NNN^NuNVH>a*@:;n ;n +n+n NqJL N^NuNVH> aN*@:C;n;n ,`8@9/30CP/M-68K of 9/30/82 0020-?<NTO`JL N^NuNVH>.0`".aN$.&a`.?a`J@gڰ|g|gNq.UaN$JLN^NuNVH*n.Bg?<NXO.Bg?<NXO|m>ahB- .Bg?<NXOJ@g>aH&| S`fJkf>a.(k.+ޫ>d/ /<NPOddJo:.Bg?<NXO.Bg?<NXOJ@g>a` +NqJL8N^NuNVBW?<NTOJ@gBWa.a-@.]aR.zaH nNN^Nu$/` 4/`"/`2/0/HN LxNu/H/Nu/ o / 0H@0 _NuNVH. H||op`HB.GB..N #fp` y#  y#B@NqJL N^NuNVH *n(n >.0SGJ@g`JL0N^NuNVH *n(n ~  ?HH@|gJgB@`NSGJGfJ.g> ?g HH@"y)HFAgB@`TTHH@|?gB@`pNqJL0N^NuNVH*n>/. / a`POg- > / /. aPOG HNqJL N^NuNVH>.<. *n 0`TH>?<N,TO`V>Nh`PBB- B-./<N (XO`4B.N `(#`p``H |rW hNB@NqJL N^NuNVH *n(y,H- H,HArF`>0- H|4aANqJL0N^NuNVH*n>. Jng0G>ND`` 5pH|NqJL N^NuNVH*yB0.-HH-H. HBHЁ-@./.N XONqJL N^NuNVH*n-<?- R< mBR<@mp`bH-H|?Af*H- H@"y)HFA|fF B@`&GF ./<N (XO|ep`B@NqJL N^NuNVH *n~I J$fSGJGf y hcOBp"y)HAo0"y)HF- HB|ANqJL0N^NuNVH*n.a>- H@f-H|``- H@c0<``B@NqJL N^NuNVH*n y8(| - f.aJ@gp`PB- .a~- H|Abp`4.a<>?/ a\O>JGfp`- H>?aTOR- NqJL N^NuNVH*nH`-H>-H??< N XO+@`~(m&l.Y?/-NP\O>0+W?< N,TO.?.?<NXO>?< N,TO. ?< N&TO> N0``J@gj|gNqB@NqJL8N^NuNV|B.-n-n -y.N NqN^NuNV.0n/aXONqN^NuNVH *n (yBGlbL0|f<N>aJ@gp`:?0|HH@B@H@й// nN J@g0|` RG`0<NqJL0N^NuNV//?F A #NN^NuNVHN L?N^Ns@H@Y|oYFNuNVH*nJL N^NuNVH*ng0<``B@NqJL N^NuNVH*n.aJ@f`-HNqJL N^NuNVH*n. f`GJL N^NuNV`N^NuNVH9<g<f yfR,`B99g8.a8 .f.aTa ` yfR,`aJLN^NuNVH*n(M&|~JGg RTSG`JL8N^NuNVH *n-H0@"|$0H>-gB@`p<0@H(@JFgJ,g JFf J,g|FJL0N^NuNVHJ,f`>N >S,9<g<fB9>N ؼ<gB@`p` >N `JLN^NuNVB9B9 N^NuNVH *n>. J9g`B9B9(|TSGJGf>N <09@Hм @03B,B9 >N aJL0N^NuNVH>.>N <J,f:0G"|J0,g(0G"|J0f>N >N <`J,gHS,9H|g4.a>N .H. f0.n fp``B@` >N B@NqJLN^NuNVH?>.<. *n :.0Hм @ #0 @"| 0 @802A#0@330GB(>/< a0XOBW?<p?aXO6a0@Hм @BPBy0NqJL N^NuNVH J9g09,ΰy,g$>/<?9,?9,aPOJ@fp`:3,,09,@H*@(y><SGJGfB@NqJL0N^NuNVH>.*n g 5pH``0R@NqJL N^NuNVH0.H*@.* NqJL N^NuNVH. H3,H*@. f < 29,HЁ @0H3H0@B(>/<aXOBW?<rH?aXOJ@fa`ByB@`.aLaDBy..gH0@B(B@`X`H0@|H|`$+|V`(+|f`.aR``|gְ|g` NqJL N^NuNVaa N^NuNV.a.axN^NuNVHB9BG|n60@Hм @BP0G|0GB(RG`>N <B,By>N JLN^NuNVH>.,. *.0`aF`.aH`.aH` >/<aXO` >/<aXO`.aH`|By,`r > ?aTO`` 3,`V S3,`J#`BaH`:. ?aTOH`*. ?a TO`B@```|b@0@* PNJLN^NuCPM SYS Boot error. Open or Read error on Bad file format on CPM.SYS CP/M-68K(tm) Version 1.1 Copyright (c) 1982 Digital Research, Inc. "$08CP/M-68K(tm), Version 1.1, Copyright (c) 1983, Digital Research1015-0901-000019Copyright 1983, Digital Research?       v2Vv2V2f2fL *:NNbr|Invalid Disk Statuseccpif.o`jNNCOPYRIGHT (C) 1982, Digital Research B9 ON3N0< B9NBB0<B29ANBON`_main_bdos_initstack_bios1___LOAD_bdosini_submit_morecmd_autost _usercmd _ccp_patchcpmccpstartccpclearcopydskuser4ccpbdos.oD` 0/"/NBNu_bdosccpload.o`"<0<?NB###p;"<NBJ@f29p NBB"9 |"ApNB$IR yB g !gR@`/<?<N\Bp\aj/<?<N\Bp8aR y"y /)@@_?! !<N`Ns @f"< ` @f"<I` @"<fp NBpNBй @"|Bp#QNu insufficient memory or bad file header$ read error on program load$ bad relocation information bits$_tail_user_fill_fc_cmdfcb___LOADrebootprintstr setdmachuser pgmldf;gettpa?TPABlowlowadrhighhiadrLPBlderrbaspag mvtailbdonetmovfcbusrstkcmdrtnerr2lderr1 printerr3lderr2Ilderr3fmov1flags- ccp.okl`"0!NV0| .?<NTO0| .?<NTON^NuNVH *n(n JgHop`Hlp`RR`JfB@`pNqJL0N^NuNVH*n&|J9Fg(|Jg` B9FJg !g`BJL8N^NuNVH0|.?< NTO<0|.?<NTO>|Aa JFgB| e|1| 0|0@|$`0|0@|$.Y?< NTOB0.?<NTO0|>.?<NTOJLN^NuNVH*n>. |f J9fa4Jg !gHH.?<NTO`JGf0|?.?<NTO`a8JL N^NuNVH*nBG|d80 @"|./ a.XOJ@f0 @"|00`@RG`BG|d0H@B@H@м @ :gRG`|f6J9f.J9f&9H|m9H||np`޾|f&9H|m9H||op`|g0H@B@H@м @ :fp`.Bga`TOJ@cp`x|f~`BGBF|d$ |0pH"|^1`HAfp`BRF`BF|d20H@B@H@м @Jo0H@B@H@м @  lp`RF`pNqJL N^NuNVH*nJg !gR` !fJg  fR`#R`:J9g,J9Bf `B9 yRJg`B9JL N^NuNVH *n.. Sހ.?< NTOJ9g 9;ga9H|Hм @|  9;f (|  g  fR`  gFdB am zn H|`H  g  fR @  g  f``R`BJL0N^NuNVH*n !gJgR` !g  g  fR` NqJL N^NuNVH *n(|BG|hdBRG`BGJg !gz|drBF !g2  g,  g&Jg"|d0B2Ём @RFR`B02Ём @BRG  g  fR|f#Z`|JL0N^NuNVH*n  np`&H`p``H |nrW hDNB@NqJL N^NuNVH*n *fp?`.aJ@f RyJH`p NqJL N^NuNVH >.*n Bx |#b B2Ё @BRD`x| b B2Ё @ RD`J9Dg<?`< ByJ(M0мB29JЁ @Jf.BCBnB.0CJ(g0C (:gRC`0C (:f|gBW/<aXOB@`FJ94g&.&?< NTOBW/<4aXOB@` 9:f( 9Am 9PoBW/<aTXOB@`.?<aTO9H|@=@.?<NTO<|f.?< NTO8LRDBE|gVJGg0D( fJGf80D( f(J.gaRB.JEfB0..?<NTO`"=|.?<NTO<8LRD`NRF0|:.?<NTO0| .?<NTOv| b>| f0| .?<NTO |0`H|H.?<NTORFRC`0| .?<NTO.?<NTO<|gHRE8LRD|f6BEJGg0D( fJGf0D( fa<`|`Jng.a&JGg.0?< NTO`.4?< NTOJLN^NuNVHJ9f".J?< NTO>/<aXOJ94g&.&?< NTOBW/<4aXOB@`nBG0GJ(g0G (:gRG`0G (:f.|f 9Am 9PoBW/<aXOB@` .?<aXTO>JGfJ9g.?<NTO|b.?<NTOJ@fDBG|b:0H@B@H@м @ g |0pHH.?<NTO``RG``.?<NTO9HH.?<%NTO`HJ9g@JGc*| fBW/<aXO`.?< NTO`.?< NTOJLN^NuNVHBDJ9f^.\?< NTO>/<NaXOJ9NfB@`.n?< NTO>/<aXO=4`BG0G (=g0GJ(gRG`0G (=fJGc0GJ(gJ94gx` 9=4fJ95fJ9NfxJDfJ0G (=f:0GB(RGBF |0pH2F@NRGRFJ@g`=4||dBEB02-Ём @ :gB02Ём @JgRE`ʺ|cB02Ём @ :fxBG|dD0 @"|0H"|^1pHAfBW0м/aXOB@`~RG`TF`NJDfXJ9gNJ9NgD.?<aFTO>.?<a4TO<JGfJFf.H9g> 9:f 9:Og ` 9:g 9:Of y`x .m .oxJDf..?<NTO|g.?< NTO`lBE~|#b"0H@B@H@м @"N4ERERG`J9m 9oxJDf(.?<NTOJ@c.?< NTO`.?< NTOJDg.?< NTOJLN^NuNVHJ9f".J?< NTO>/<atXOJ9fB@`dJ94g&.&?< NTOBW/<4aXOB@`6BG0G (:g0GJ(gRG`0G (:f6|f 9Am 9PnJ9fBW/<aZXOB@`.?<aTO>JGcJ9fx.?< NTO0|.?<NTO4 9a4m 9z4n94H|`94H4af 9N4g 9Y4gB@`2 9N4g(.?<NTOJ@c.?< NTOJLN^NuNVHJ9f".?< NTO>/<aXOJ9fp`J94g&.&?< NTOBW/<4aXOp`~ 90m 99oB@`d9H|о| cB@`NJ9g0 >9H@|о|dJ9fB0.?< NTO`B@` 3NpNqJLN^NuNV9H|3PB09P.?<NTON^NuNVH?BEBDB9Dv`.?<aTO>JGc.?< NTOB@`l 9 fBG|d 0GB(RG`9HS@H.?<NTO?B9 .?<NTO>|gO0H@B@H@м @Jg |0pHyNfJ| | b0FH@B@H@м @RF`0GB( 6 8 K 0H@B@H@м.R/<aXOJ@f& |0pHyNf|`|`   0H@B@H@м.R/<a0XOJ@f$ |0pHyNf|`|`\S U B 0H@B@H@м.R/<aXOJ@f" |0pHyNf|`| n f .g nf .f><`.?<NTO>`H n f.BgabTO`.?<aPTOB09P.?<NTOBG nf .f~`~|d0GJ(fRG`0`p0|.?< NTO6 8 K `X0|.?< NTO`D0|.?< NTOS U B `BC`|b@0@ PN 9S f 9U f 9B f|JEfJDfJCg.?<NTO|bJ.g0|.?< NTO3LxJ9g @`>BG|$d&0H@B@H@м @2HABAHAҼ"ARG` n fB9FB9B`z`(0|.?< NTOJ@g0|.?< NTO`JEg.VaNJDf nf.?< NTOB09N.?< NTODB9<0NqJLN^NuNVH? >.<. *n 89H|e&BG.?<NTOJ@gB0`R0H@B@H@м @ 0m0H@B@H@м @ 9n |0pH6|(M Sf& Uf Bf Mf If Tf  fRC(MzCb  gJgR`  fRRE`  g.*n BFa|dv0H@B@H@м @ g^0H@B@H@м @  gH0H@B@H@м @ $fRG.Bg?aXO>` |0pHH.?<NTORG`|fP0H@B@H@м @ g:0H@B@H@м @  g$BG.?<NTOJ@g B|`J0H@B@H@м @  f*TG|e BG.?<NTOJ@gB`B|JFg0NqJL N^NuNVH *nBG:9HJ9Bf|d0H@B@H@м @  g0H@B@H@м @ !gn |0PH`D.?aNTO:`JJGc&0H@B@H@м @2HABAHAҼ"ARERG|d00H@B@H@м @  g0H@B@H@м @  fRE`ʺ|e$BE.?<NTOJ@g B```RE3H.?<?aXO:>9H`RE|e BE.?<NTOJ@gB`nB`d0H@B@H@м @2HABAHAҼ"ARERG|e BE.?<NTOJ@gB`H |rW hN`T0H@B@H@м @  g0H@B@H@м @ !f|dF0H@B@H@м @  g,0H@B@H@м @  g0H@B@H@м @ !fRE`|f$BE.?<NTOJ@g B`&` 0H@B@H@м @ fB``h3HJL0N^NuNVH*nBG|b0H@B@H@м @BRG`0|.?< NTO<B09L.?< NTO.?<NTOJ9>fJ9@gHBG|d0H@B@H@.м @BRG`.?<NTOJ@gBB9ByHJ9Bf.aBG|d`0H@B@H@м @ am(0H@B@H@м @ zn |0pH|` |0pH2HABAHAҼ"ARG`.?<NTOB0.?< NTOJL N^NuNVH*n.a`BWaD`(>a8`a`a` a`aJ@f.?< NTO`a~`|J9f.J?< NTO>/<aPXOBG0H@B@H@м @  g:0H@B@H@м @Jg&|d 0G2HABAHAҼ"AQRG`0GB(JGg F``@`B9F`| >aJ@f*|g$BW/<a>XO`| b@0@N PNJL N^NuNVHD.?<NTOJ9/ aXO`/<aPXOB9Jg#V.aJ9g .aJ9f .ar*@`J9>gBJ9Fg .a`.a*|.Va:#R.aB9>`/ aNXO`JL N^Nuvz NON-SYSTEM FILE(S) EXIST$Enter Filename: $Enter Old Name: $Enter New Name: $File already exists$No file$No wildcard filenames$Syntax: REN Newfile=Oldfile$Confirm(Y/N)? $Enter User No: $.SUB file not found$User # range is [0-15]$Too many arguments: $><.,=[];|&/()+-\&()+,-./:;<=>[\]|Bn0\p  $;|,V| l`.6>Fdl $ "DIRDIRSTYPERENERAUSERSUBMIT_submit_morecmd_subcom_subdma_usercmd_save_su_subfcb$_cmdfcb$_autost_dma_parmh_bdos___LOAD_cmd_tblL1vL2zL3L4L5L6L7_msg0_msg2J_msg3\_msg4n_msg5_msg6_msg7_msg8_msg9_msg10_msg11_msg12_msg13&_load_tr<_first_s>_chain_s@_end_of_B_dirflagD_subpromF_sub_indH_indexJ_sub_useL_userN_cur_disP_user_ptR_glb_indV_tailZ_del^_scan_cm_strcmp,_decode_delim_true_ch_fill_fc6_user_cm_cmd_fil_dollar _comment_submit__cr_lf~~cr_lfL21(~~strcmp,~s1 ~s2 L24L35L36.L33b_echo_cml~~echo_cl~cmd ~modeL38L40L39L41L42L37~~decode~i~nL45L44 L47L43ZL46L49"L48BL50~L51~L52L10002L53L54L55L56L58L57L60L59L62L61VL64RL63R_check_cd~~check_d~tcmd L67pL66~L68L70L69L71L72L73L74L75L76L65_get_cmd~~get_cm~c ~max_chaL78,L79ZL81`L10003lL80pL83pL82L10004L10005L10006L84L86L10007L85L87L77~~scan_cL90L89L92L10008L91L88_get._par~~get_pa~j~line L95L94&L96"L98(L97L100@L99xL101tL10009L102L103L93~~delim~ch L105L104L107L108L109L110L111L112L113L114L115L116L117L118L119L120L121L122L123L124L106L125nL126~~true_cL128L127,L129(~~fill_f6~k~fillch~fcb ~which_p~ptr L132JL131`L133\L135bL134zL136vL137L138L139L141L140L142L143L130VL144L145vL146tL148RL147^L149ZL150nL151tL152L154L153L155L157L156L1582L160 L1592L161.L1636L162RL165NL164N_dir_cmd`~~dir_cm`~exist~attrib~needcr_~dir_ind~file_cn~curdriv~saveL168vL167L169L166 L170L171 "L10010 L172 "L173 nL175 vL174 L10012 L10011 L176 L177 L178 L179 L181 L180 ^L182 8L183 L10014 L10013 L184 L185 L186 L187 L188 _type_cm ~~type_c L190 BL191 pL189 L193 rL192 L194 L10015 L195 L196 L198 L197 hL200 &L199 fL202 `L203 bL201 bL204 L205 L206 L207 L208 L209 _ren_cmd ~~ren_cm ~bad_cmd~new_fcbL211 VL212 (L210:L213L215 XL214 zL216 L10016 L217 L218 L10017 L219 L220L222 L221 L224L223L227L226TL228vL230xL229L232L231L225L233$L234L235`L236@L237`L238^L239`L10018pL240rL241L242L244L243L245L10019L246L247L248$L249:_era_cmdD~~era_cmDL251vL252L250L253L255L254L256L10020L257L258L10021L10022L259L260L261~~user_cL263"L2640L262L265^L10023rL266vL267L268L269L270_change_~~changeL271~~cmd_fi~ok~search_~sub_ope~submitf~openL273~L274L275L272L276L278L277L279L281L280L10024L283^L285ZL286L287L288L289L290(L291 L292&L293L294L295~L296L10026L10025L297L298L299L300L301L302L303L305L304,L307L3080L309BL306L310\L311nL312pL313L314L315L316L318L317L319L320L3218L322@L324BL323nL325jL326|L327L328/L329L330~~dollar ~p1 ~p_indexL332fL333fL331L334>L335L337L336L340L339L341L338L343L342:L344$L3458L346L347\L348nL349L350L351~~commen~doneL355L357L356RL3582L359PL360L361L362L363L364L365L366L354L353L352_transla~~translL369L368L371L372lL370L373|L374|L375L376L378L377L10027L379L380L381L382 L383,L384TL385TL386VL387`L388L389L390L391L10028L392L395L397L396BL10029>L398lL399jL393L400L401L394L367~~submitL404L403L405L10030L406^L408L4074L4090L410XL411lL413nL412L10031L10032L414L402_execute~~execut~flagL417 4L418L416 HL419"L420.L4216L422>L423FL424`L425dL426lL427 L429L428L430 L431 L432 L433 L434 L435 $L436NL415 H_main R~~main RL438 L439 L440 L441 L442!&L443!L444!&L446!&L445"&L447!JL448!^L449"L450!L451!zL452!L453!L454!L455!L456!L457!L459!L458"L460"L461"L462""L437"&\\,T\\\\\D\\TTTTTTTT<TTT    LL\LLLLLLLTTTT\TTT\/TTTTTTTTT\TTTTT<<<\\LL\<\\\\L\\<\LL\\T\TT\TTTTTTT<T<\<\LL\<\<\TT\\T\TT\TTTTTTTTTTTTTTTTTTTTTT<<TT<TT<\\<<<<\\\\T\TTT\TTTTTTTT<\\TTTTTTTTT<\\T\TTT\TTTTTTT\T\\\<<\<<\<<<\LLLL<<<L<L<<<L<L<<<L<L<\<<\\<<<\\<<<<<<<\\4<\0\d\\4\\\4\\4\4\4\4\4\4\\\\4\L\\\T\TTTL\\\ , $D$$DTT,,,$$$stack.o,`stackbdosif.o(` @>g,H @2g/??NHPOLNs A0LNC`W Ns$/` 4/`"/`2/0/HNCLxNu/H/Nu / o H@0B@H@Nu_dirscan_create_constat__bdos_bdosrw_bios1N_bios2J_bios3D_bios4>_bios58_bios6N_traphnd_swap^_udivjbiosf2setsupf>setsup2bioscall&bdone conbdos.o`NVJ9gp` >0NNqN^NuNVHB>NJ@gX>N<f >N<f<`,<fB`"<fJ9gB@`p`JfJLN^NuNVH. axH>?<NTOJ9gH>?<NTO< mRy`< fBy` <fSyJLN^NuNVH. < f> az09|f` H>abJLN^NuNVH. < f H>a`< l >^a.<@H>a JLN^NuNVH9B9JgH` >NNqJLN^NuNVHaH>a̾<fJ9gB@`pHNqJLN^NuNVH>.|fax`"` |fa``>W?<NTOJLN^NuNVH*nH9g H>a`JL N^NuNVH>.> a> aJGg > aSG`JLN^NuNVH *n>. J-gS--H|I0SEJ@g< fPG|` < lTG`RG`ھyd>a> a>a`JL0N^NuNVH *n=yJgV yH<|RH|Fd<FIJFg yH>aRSF`B`~B--H|H|Alba<fJ-f>a>N`6< g< f> a`"`<f>/ aXO`<f:J9g"J-gS--H|5`H>aj` >/ afXO`ľ<fJ9gB@`p`<f>/ a2XOJ-f`<f >a`x<f>#a>aB-`Z<f2>#a>aBF-H|@d5`H>ahRF``"H"M-H|H@>aDR-`JL0N^Nu_gbls_bios1_bios2_bios3_bios4_bios5_bios6_warmboo_constat~~constaL10000L10001L1_conbrk ~~conbrk ~ch~stopL3L68L7TL8`L9L10jL11L12L10002|L10003~L13L5L4L2_conout~~conoutL15L16L17L18L19L20L14_tabout~~taboutL220L25L24"L23.L26:L21:_cookdouD~~cookdoDL28`L29|L30rL27|_getch~~getch~tempL10004L10005L31_conin~~coninL33L10006L10007L32_rawconi~~rawcon~parmL35L344L364L37"L384_prt_lin>~~prt_li>~p L41JL40bL39b_newlinel~~newlinl~startcoL44L43L42_backsp~~backsp~i~col~bufp L46L48L47L49L50L51L52L54L53L45_readlin~~readli~stcol~j~q L56L57\L59dL58L55 L61L60 L62L63L10008L64L65L66L67L68DL694L702L71@L72L73bL10009VL10010XL74L75~L78hL77tL76zL79L80L81L82L83L84L86L85L87L88   < 1<bdosmisc.o`pNVH.?<"?<NXOB9$B9B> N>N*@ -## -й##.$NJL N^NuNV09F@yByByJngB@ ##.$N>NN^NuNV.N.mN9 H>WANN^NuNV.a>aVN^NuNVH. . a.NJg .N.NN<_.NH` >a>aJgp`&` B@` `|gڰ|Agܰ|Cgް|RgNq`~JLN^NuNVH *n(M.N~RH>WNSGf>.N~RH>WNSGf.N.NN<_.9NH`<>a >a- >/ /<NPO0. @>N``|g|Ag|CgNq`JL0N^NuNV.=N0.`J.K?<aXTO`L.Q?<aFTO`:.Xa".`Bga,TO` .ha`|b@0@ PNN^NuNVH*n>UG| g|!fp`J|m |%n|`JGm| o0<`(0G+h$0G!m$B@NqJL N^NuNVH*n-g.##-g##`+y+yJL N^Nu\ CP/M-68K(tm), Version 1.1, Copyright (c) 1983, Digital Research1015-0901-000019 error on drive $ Do you want to: Abort (A), Retry (R)$, or Continue with bad data (C)$? $ $CP/M Disk file error: $ is read-only.$ Do you want to: Change it to read/write (C), or Abort (A)? $ $ CP/M Disk $read$write$select$select$change$_log_dsk_ro_dsk_crit_ds_tpa_lt_tpa_lp_tpa_ht_tpa_hp_submit_morecmd_gbls_bios1_bios2_bios3_bios4_bios5_bios6_dirscan_traphnd_initexc_set_att_dir_rd_prt_lin__bdos_conout_conin_copyrtL1_serialL2\_bdosini~~bdosin~segp L3_warmboo~~warmbo~parmL5L4_prt_err~~prt_er~p L7mL6(_abrt_er,~~abrt_e,L8>_ext_errB~~ext_erB~ch~contL12TL13L14pL15L16L17L19L20L21L22L23L9L18L24L11L10_ro_err~~ro_err~i~dirindx ~fcbp L26L29L28L27L32 L312L306L33L36BL37L389L40L41lL42tL43|L25L39L35L34_error~~error~errnumL45=L47(L48L49KL44.y JGg,|0S@@p.H`yg >N` |B.-n-n -y.NJ@gJGg>`BWNJ@f`B@NqJLN^NuNVBW/90n/aRPONqN^NuNVH>.>/90G/a,PO< yh d0H"y")Ё/a _0NqJLN^NuNVH*yB| ޝSFJFf rހ ހ NqJL N^NuNVH?*n >.(y8<g 09R@`B@<f y0(R@@b޼lb0|f:M>al dtB0"y")Ё&@ga@`Ra8gJ y1lvB9 Hk0ygy`0F@y9 H>N`~3?0|HH@B@H@й// nN J@ggBD`0|` RF`0NqJL8N^NuNVH>. yhb,0<2|`? y (2IHABAHAЁ @_JLN^NuNVH>.JGc: yhb.0<2|`F@? y (2IHABAHAЁ @_JLN^NuNVH>.0H0@"y"i0HF2<4|aANqJLN^NuNVH>. y8(:|JGfDd&JGgSG>aJ@g<`DdRE>aJ@g<``Ҽ|g>a0NqJLN^Nu_log_dsk_ro_dsk_crit_ds_gbls_error_do_phio_seldsk_rdwrt~~rdwrt~rwpkt~secnum~dma ~parmL2DL3BL4NL6bL5L10000~L10001L1_dir_rd~~dir_rdL7_dir_wr~~dir_wr~rtnL9_dchksum L8~~dchksu ~i~p ~lsumL13L12"L11&L10>_dirscanH~~dirscaH~funcp~parms~dirsec~bitvec~dparmp ~fcbp L10002rL10003tL16vL10004L15jL17$L18L19$L20L21$L22$L23L24$L25dL26\L27dL14n_setalocx~~setalox~bitnumL29L28_clraloc~~clraloL31L30_chkaloc~~chkaloL32N_getalocX~~getaloX~rtblk~leftblk~diskmax~blkL35rL10005zL34L36L37L38L39L40L33 $,$ 42fileio.ol` NVH*n H||lV y1nBG y hd5pH>WNRG|o`0G>N>NRG|oJL N^NuNVH. 09HhF@<9 fJgxB.H@ H||o >NHr@@.N#f>NJ@g y#  y#Jg y<(>N0SFJ@f. y(HR@@? y0(R@H@B@H@/N\O<JngRFSF>NJFf>B/<NPOpH`yJLN^NuNVH *n(n >.0SGJ@g`JL0N^NuNVH *n(n ~  ?HH@|gJgB@`NSGJGfJ.g> ?g HH@"y)HFAgB@`TTHH@|?gB@`pNqJL0N^NuNVH*n>/. / a`POg0- > / /. aPOG -p9 H`yHNqJL N^NuNVH|.N>g>NJ@f`0NqJLN^NuNVH*n(n >/ / aPOJ@gGA-H y hd:~ nJgJg nHf` n` nRRSGJGf`6~ nJPgJSg n0Sf` n6` n0TTSGJGf.N<, H|EbEf"-H|,H|Ao mF m , g>/ NXO, 0.@>Np`p9 H`yB@``B@NqJL8N^NuNVav n(gB@`BW/./<NPONqN^NuNVpNqN^NuNV>/. /.aDPONqN^NuNVH*n>. ?f$9 H>a>/ /<NPO<`..N -? gB- B->/ /<NPO<>/9/9aPO0NqJL N^NuNVH*n(n >. gB@`pgPG|BSFJFf> / / aHPO0@>N yhc y1Gp9 H`yHNqJL8N^NuNVH *n(n >.BW/ / aPOgl, g >/ NXO0@>N y hd|SF4`H>WNJFf`|SF0F>N>NJFfHNqJL0N^NuNVH*n(n >.BW/ / anPOgF, g >/ NXOGA-H| H|"nRSFJFf0@>NHNqJL8N^NuNVH *n(n >.BW/ / aPOg> / R/ RaPO0@>NHNqJL0N^NuNVH*n- H|H-H|?Ht 塀NqJL N^NuNVH*n.a- H|HЁ-@n!n"n#JL N^NuNVH *n(n BW/ / a0POg*.af,H|HЁ-@n!n"n#HNqJL0N^NuNVH*nBBGB>/ /<NPO|d&m!m"m# .o-n~`n!n"n#JL N^NuNVH. H>aB y*hBFBD yhb,JFf <<0F@:0Fg y(HR@HހNRD` y JL N^Nu_log_dsk_ro_dsk_crit_ds_gbls_error_udiv_swap_clraloc_do_phio_dirscan_calcext_setaloc_tmp_sel_dir_wr_ro_err_alloc~~alloc~i~dirindx~fcbp ~dirp L2pL3RL66L5JL4PL7pL10RL9jL8pL1p_seldskz~~seldskz~j~dsknum ~selpkt~logflagL10000L12L13L16L14L15L17L20.L196L18>L21~L24~L23L22L11_move~~move~p1~p2 L27L26L25_match~~match~chk_ext~tempL31L32L28`L30L29L33\L34DL35\_openfilj~~openfij~fcb_ext~rtnL37L36_flushit~~flushi~flushpkL40L39L38_close~~close~dp~fp ~dir_extL42@L43L46HL47lL48dL49(L50jL51rL45zL44~L52L55L56L57L58L59L54L53L10001L60L61L41DL62D_close_fN~~close_NL64fL63|_alltrue~~alltruL652_matchit~~matchiL66_search~~search~p ~dsparmL68L69L70L67*_create4~~create4L10002RL10003TL72L75^L74bL73fL76L71_delete~~deleteL78HL79L80*L83L82$L81(L84HL87,L86DL85HL77N_renameX~~renameX~qL89L90L93L92L91L88_set_att~~set_atL95L94_extsize$~~extsiz$L96R_setran\~~setran\~randomL97_fsize~~fsizeL99L98_getsize~~getsiz~maxrcdL102 L101HL103DL100Z_free_spd~~free_sd~alvec ~bitmask~records~alvwordL106L105L108L109L107L104\4\$D$<,\LD$Ttl LLdLltl<4<tllLbdosrw.o|`NVH *n(y,H- H,HArF`>0- H|4aANqJL0N^NuNVH*n>. Jng0G>N`` 5pH|NqJL N^NuNVH*n>. <.-Jng M2G/?NTO _1@` M2GFJL N^NuNVH>. *yB0.-HH-H. HBHЁ,>/9/NPONqJL N^NuNVH*nJng,-!H@-"HAA-"<-#g<`-<?- R< mBR<@mp`H-H|?Af,H- H@"y)HFA|f F B@`p.N|ep`\-- GF BW/ /<NPO|e0J. g ED p`">/ /<NPO|ep`B@NqJL N^NuNVH *n~I J$fSGJGf y hcOBp"y)HAo0"y)HF- HB|ANqJL0N^NuNVH*n.3a>- H@f-H|``- H@c0<``B@NqJL N^NuNVH? *n. y6(|Jf - g y h>/ NXOJng0>H?/ a\O=@g0.`n-#H|@ `& - fBWH?/ a\OJ@gp`?/ an\O<JFgJgB@`p8`Jgp`>JEg?SW`Bg/ a8\O>N<|fp`>??/ aRPOx nfV(y#:<SE0Hй @BJEfBE y(H@n>H??aNXOxRE`#>- H??a0XO=@JnfnJnfR- 0.NqJL0N^Nu_ro_dsk_gbls_rdwrt_swap_close_f_getaloc_dirscan_openfil_create_ro_err_blkindx~~blkind~i~blkshf~dparmp ~fcbp L1B_blknumL~~blknumL~index~wrdfcbL3tL2L4_setblk~~setblk~blockL6L7L5_do_io~~do_io~lsec~rcrd ~parmL8$_new_ext.~~new_ex.~t_mod~t_ext~reading~mod~ran~extL10lL11jL12zL13L14L9.<. *n B.-MBE0`BWNN`H>N`>N`H>?<NTO`H>?<NTO`x>N`z>N`l>?<NTO`L.N`@.N`4N`80< "`0ByByBy B9 `H>N `.]aB- B-BW/ /<NPO:`.]a.N:`# .]Bg/ N\O:`*y -M.]?</ N\O:`l.]a|>/ /<NPO:`J.]aZBW?</ N\O:`,.]a/ /<NPO:`.]a>/ /<NPO:`09`9 H|`#`p9 H`y`09`.]a>/ /<NPO:`V9 H9 g9 H>N>/ /9NPO`0||b 9 H|` .]a >?</ N\O:`.]a>3Bg/ N\O:`.]a.N`.]a.N`0F@<yyy`z.]a>Bg/ N\O:`\>N`R#BWNN`F.N`<.N`2.N`p`$`|?b@0@ PNJ.g0NqJL N^NuNVH *n(mHJg H>SW` 9 H>N |JL0N^Nu$,6FTj8Nj<FV`v:Nb~_tpa_lp_tpa_lt_tpa_hp_tpa_ht_gblsl_move_close_f_bios1_bios2_bios3_readlin_bios4_bios5_bios6_dirscan_free_sp_openfil_set_tpa_rawconi_create_delete_set_att_search_warmboo_prt_lin_rename_constat_getsize_flushit_seldsk_setexc_setran_tabout_bdosrw_pgmld_conin_log_dsk_ro_dsk_crit_ds__bdos~~_bdos~infop ~rtnval~info~func~tempL3L4$L5,L1L66L2L7FL8TL9jL10L11L12L13L14L15L16L17L18L19_tmp_selL208L21NL22jL23L24L25L26L27L28L53P<DD<DT$$$t4$$t  tt$$$t$$$$,$$   |$$$$iosys.o`2lNVH*nBGH`-H>9H??< NXO+@`-H9gBW-H??< NXO(m&l.U?/-N\O>0+W?< NTO.?.?<NXO>?< NTO. ?< NTO f> N>`-H>?<NTO>`,>N>`J@g |g2|g*|gNq0NqJL8N^Nu_udiv_bios1_bios2_bios3_bios4_bios5_bios6_do_phio~~do_phiL2~dparmp ~iosect~iop ~rtn~last_ds~hdrp L4L5L3$L6DL7DL84nL9L10L11L1($$,  pgmld.oh`DH o<d y`gQG3B3@$y$$9B69Bm&a`Ha&<m" aapJAfV`Jg"90adaPJAf63B&aH$y($9Sy@f$y,$9 gBSfNupNu>GONp``"` ````` pNuJZNuJZNuf<E4NuJb,܅$Nu"90a.98<HG69BGlCRF&y0K` aJAfrQ*9$$E(93@B`SCjaXJAf>&y06<?a4SJf$y((9Sy@fNu!y0 .94޹!G"y0"""$""(""," .(,)ܙ,|$zB,bc.JQ"$hfpNBR@BNu_pgmldsecsizegethdrZlddone:setaddrrdtxtltstartcseg$noreloc2reloczsetrtnreadseq@FCBPtrsetdmaPLoAdrbadhdrzhdrgeth1rconflict~csizeconf1confbdconfgdtrymemtpHiAdrchksegschk1fndsegtempa-gB@`p<0@H(@JFgJ,g JFf J,g|FJL0N^NuNVHJf`>N>S9<g<fB9>N<gB@`p` >N`JLN^NuNVB9B9 N^NuNVH *n>. J9g`B9B9(|TSGJGf>N<09@Hм @03BB9 >NaJL0N^NuNVH>.>N<Jf:0G"|J0g(0G"|J0f>N>N<`JgHS9H|g4.a>N.H. f0.n fp``B@` >NB@NqJLN^NuNVH?>.<. *n :.0Hм @#0 @"|\ 0 @802A#0@330GB(>/<a0XOBW?<p?aXO6a0@Hм @BPBy0NqJL N^NuNVH J9g09yg$>/<?9?9aPOJ@fp`:309@H*@(y><SGJGfB@NqJL0N^NuNVH>.*n g 5pH``0R@NqJL N^NuNVH0.H*@.* NqJL N^NuNVH. H3H*@\. f <29HЁ @0H3H0@B(>/<aXOBW?<rH?aXOJ@fa`ByB@`.aLaDBy..gH0@B(B@`X`H0@|H|`$+|"`(+|2`.RaR``|gְ|g` NqJL N^NuNVaa N^NuNV.a.axN^NuNVHB9BG|n60@Hм @BP0G|0GB(RG`>N<BBy>NJLN^NuNVH>.,. *.0`aF`.aH`.aH` >/<aXO` >/<aXO`.aH`|By`r > ?aTO`` 3`V S3`J#`BaH`:. ?aTOH`*. ?a TO`B@```|b@0@ PNJLN^NuCopyright 1983, Digital Research?       B"B"22L &6FZZn~Invalid Disk Status_dirbuf_settrk_setsec_setdsk_setdma_buf1trk_bufvali_buftrk_ipcstat_actvdsk_intcoun_dskstat_setimas_dskia_copyrig_dpb0"_dpb22_xltB_dphtab\_memtab_hmpack_rwpack_cnvdsk_rcnvdsk_portini~~portin~port L2_portsta~~portstL48L3L23B~~unsolsL~ready~dev~dsp L10001zL10002|L10004L10003L28L27_waitack~~waitac~imsave~workL31L33L32L10005L34L10006L10007L29L30~~sendacL352_sendpkt6~~sendpk6~pktadr ~iopackp ~pktsizeL38FL37PL41bL40hL39lL36_dskwait~~dskwai~stcom ~stval ~dskL44L43L45jL467jL47fL42vL48j_dskxfer~~dskxfe~result~sectcnt~cmd~trk~bufp L498_readB~~readBL10008`L51L50L54L53L52_sectran~~sectra~s~xp L56L55L57_setxvec~~setxve~oldval~vloc ~vval ~vnumL58_slctdsk~~slctds~logged ~st1~st2~dphp L60XL61L59\L62L63L65JL66&L64XL670L68:L69R_biosinif~~biosinf_initprtr_initdskL70n~~initprrL71~~initdsL74L73L75L72_cbios~~cbios~d0~d1~d2L78L79L77L80&L76L816L82FL83ZL84ZL85nL86~L87L88L89L90L91L92L93L94L95DTDT\TdTdddL\DTddT\\ddTTddL\\D4< , 4 <,$L\DD\\4\\\dTDd  $22C72468000065 S1234D801012660670194E42524012C042804E7570167202243C00004E0248E7E0004E4335 S1234DA04CDF0007524158820C410018660272200C41002267EE0C41002367E80C410030F1 S1234DC06DD870124E4320404A5822182401D490263900005D4E283900005D4A7011206F90 S1234DE0000423C800005AC8B290620CB4906308B6906206B890630242904A9851C8FFEA2E S1234E004E7561000056610000526100004E6100004A6100004661000042613E8`VTNV//?F A$#NN^NuNVHNL?N^Ns@H@Y|oYFNu_biosini_dskic_cbios_bios_dskia$_setimas: 301FF5 S1234EC0610000B241F9000055B16100008A201F6100009241F9000055C46100007A42806E S1234EE04E424E732F50000A4E680C4000086D24082F000D000E664A212F0010312F000E69 S1234F004E604CDF01012F6F000200085C4F02577FFF4E73082F000D0016662E212F001871 S1234F20312F0016212F0012212F000E4E604CDF01012F6F00020010DEFC000E02577FFFED S1234F404E733F6F000E000860063F6F001600084CDF01014E7342811218670670024E424C S1234F6060F44E753F0048406102301F3F00E0486102301F3F00E8486102301F0240000F12 S1234F800C40000A6D040600000706000030320070024E424E754EF9000000004EF900007E S1234FA004F4000000000000000000000000000000000000000000000000000000000000F5 S1234FC00000000000000000000000000000000000000000000000000000000000000000CD S1234FE00000000000000000000000000000000000000000000000000000000000000000AD S123500000000000000000000000000000000000000000000000000000000000000000008C S12350200000000000000000000000000D0A696E73756666696369656E74206D656D6F720E S123504079206F72206261642066696C6520686561646572240D0A72656164206572726F93 S123506072206F6E2070726F6772616D206C6F6164240D0A6261642072656C6F6361746910 S12350806F6E20696E666F726D6174696F6E2062697473240000530A00000000530E0009AC S12350A00000531300010000531800020000531C00030000532000040000532500060000B1 S12350C0FFFF00004E4F4E2D53595354454D2046494C452853292045584953542400456E69 S12350E07465722046696C656E616D653A202400456E746572204F6C64204E616D653A206A S12351002400456E746572204E6577204E616D653A20240046696C6520616C72656164797E S1235120206578697374732400004E6F2066696C652400004E6F2077696C6463617264209F S123514066696C656E616D657324000053796E7461783A2052454E204E657766696C653D86 S12351604F6C6466696C65240000436F6E6669726D28592F4E293F202400 .text .globl _bios .globl _biosinit .globl _cbios .globl _dskia .globl _dskic .globl _setimask * * * * _bios: link a6,#0 move.l d2,-(a7) move.l d1,-(a7) move.w d0,-(a7) move #$2000,sr lea _dskia,a0 move.l a0,$3fc jsr _cbios unlk a6 rts * _dskia: link a6,#0 movem.l d0-d7/a0-a5,-(a7) jsr _dskic movem.l (a7)+,d0-d7/a0-a5 unlk a6 rte * _setimask: move sr,d0 lsr #8,d0 and.l #7,d0 move sr,d1 ror.w #8,d1 and.w #$fff8,d1 add.w 4(a7),d1 ror.w #8,d1 move d1,sr rts * .end 0BF800000BF800000BF800000C1400001C6600001C9200001CA60000EC S12352A01C5400001C8000001C94000000090000000A0000001A00000020000000240000BD S12352C0003B00000000000021A0000022500000227A000021A00000222E000021900000FE S12352E022840000253C000025520000255A000025620000256A0000258800002590000035 S123530026480000263600002546444952004449525300545950450052454E004552410044 S123532055534552005355424D4954000000534800005388000030C6000030D8000030EAC8 S1235340000030F40000310443502F4D2D36384B28746D292C2056657273696F6E20312E18 S1235360312C20436F707972696768742028632920313938332C204469676974616C2052AE S12353806573656172636800585858582D303030302D36353433323100206572726F722015 S12353A06F6E2064726976652024000A0D446F20796F752077616E7420746F3A202041624D S12353C06F7274202841292C202052657472792028522924002C206F7220436F6E74696EA1 S12353E0756520776974682062616420646174612028432924003F2024000D0A24004350C9 S12354002F4D204469736B2066696C65206572726F723A20240020697320726561642D6F85 S12354206E6C792E24000D0A446F20796F752077616E7420746F3A204368616E6765206976 S12354407420746F20726561642F7772697465202843292C206F722041626F727420284139 S1235460293F2024000D0A24000D0A43502F4D204469736B2024007265616424007772691A S12354807465240073656C656374240073656C65637424006368616E676524000000000039 S12354A00000000043800000438800004392000043A2000043B0000043C6000043DC000085 S12354C043E8000043F60000440800004414000044200000442A00008eldrif.o`2TOBNpr$<,N| O`W Ns_bios_ldcpm_startldldrstackprivexc,cpmldr.o`NVH*nJgH>?<NTO`JL N^NuNVH>.0`"."aN.0a`.Ia`J@gڰ|g|gNq._aNJLN^NuNVH*n.Bg?<NXO.Bg?<NXO|m>ahB- .Bg?<NXOJ@g>aH&| S`fJkf>a.(k.+ޫ>d/ /<NPOddJo:.Bg?<NXO.Bg?<NXOJ@g>a` +NqJL8N^NuNVBW?<NTOJ@gBWa.a-@.gaR.aH nNN^NuCPM SYS Boot error. Open or Read error on Bad file format on CPM.SYS CP/M-68K(tm) Version 1.1 Copyright (c) 1982 Digital Research, Inc. _buffer_move_bios1_startld__bdos_cpmfcb_pstring~~pstrin~p L3 L2$L1$_badload.~~badloa.~i~errtypeL6`L7>L8"L9LL100L5rL11VL12IL13_L4_load~~load~length~hp ~fcbp L15L16L10000L17L19.L18lL20^L14r_ldcpm|~~ldcpm|~gocpmL22L23gL24L21$$$$ $$$bdosif.o(`Np$/` 4/`"/`2/0/HNLxNu/H/Nu/ o / 0H@0 _Nu_bios_bios1_bios2_bios3 _bios4_bios5_swap*_udiv6fileio.o `j0NVH. H||op`HB.GB..N#fp` y#  y#B@NqJL N^NuNVH *n(n >.0SGJ@g`JL0N^NuNVH *n(n ~  ?HH@|gJgB@`NSGJGfJ.g> ?g HH@"y)HFAgB@`TTHH@|?gB@`pNqJL0N^NuNVH*n>/. / a`POg- > / /. aPOG HNqJL N^Nu_gbls_swap_do_phio_seldisk~~seldis~i~p ~dsknum~selpktL2L1fL3F_movep~~movep~p1 ~p2 L6L5L4_match~~match~chk_ext~tempL10L11L7L9L8L12L13L14_openfil"~~openfi"~fcb_ext~dirindx~rtn~fcbp ~dirp L16ZL15`bdosmain.o`NVH>.<. *n 0`TH>?<NTO`V>N`PBB- B-./<NXO`4B.N`(# `p``H |rW hNB@NqJL N^Nu8x9,6R^fCP/M-68K(tm), Version 1.1, Copyright (c) 1983, Digital Research1015-0901-000019_gbls_bios1_bios2_bios3_bios4_bios5_dirscan_seqread_openfil_seldisk_copyrtL18_serialL2x__bdos~~_bdos~infop ~info~funcL5lL6L4L7,L3L86L9RL10^L11fL12L13vLD4<bdosread.o`:NVH *n(y,H- H,HArF`>0- H|4aANqJL0N^NuNVH*n>. Jng0G>N`` 5pH|NqJL N^NuNVH*yB0.-HH-H. HBHЁ-@. /.NXONqJL N^NuNVH*n-<?- R< mBR<@mp`bH-H|?Af*H- H@"y)HFA|fF B@`&GF ./<NXO|ep`B@NqJL N^NuNVH *n~I J$fSGJGf y hcOBp"y)HAo0"y)HF- HB|ANqJL0N^NuNVH*n.a>- H@f-H|``- H@c0<``B@NqJL N^NuNVH*n y8(| - f.aJ@gp`PB- .a~- H|Abp`4.a<>?/ a\O>JGfp`- H>?aTOR- NqJL N^Nu_gbls_swap_dirscan_openfil_rdsec_blkindx~~blkind~i~blkshf~dparmp ~fcbp L1B_blknumL~~blknumL~index~wrdfcbL3tL2L4_do_io~~do_io~block~lsec~rcrd L5_new_ext~~new_ex~mod~extL7L8 L6lL9FL10FL11h_calcextv~~calcexv~p L15L13L14L16L12_get_rc~~get_rcL18 L17 L19 L20L21 _seqread*~~seqrea*~bigfile~parmL23^L24ZL22L25vL26 $iosys.o`NVH*nH`-H>-H??< NXO+@`~(m&l.Y?/-N\O>0+W?< NTO.?.?<NXO>?< NTO. ?< NTO> N``J@gj|gNqB@NqJL8N^Nu_udiv_bios1_bios2_bios3_bios4_bios5_do_phio~~do_phi~dparmp ~iopdiv~iop ~hdrp L3L4L2L58L1$, dskutil.o`^NV|B.-n-n -y.NNqN^NuNV.0n/aXONqN^NuNVH *n (yBGlbL0|f<N>aJ@gp`:?0|HH@B@H@й// nN J@g0|` RG`0<NqJL0N^Nu_gbls_do_phio_rdsec~~rdsec~rwpkt~secnu9m~dma L12_dir_rd6~~dir_rd6L2L_dirscanP~~dirscaP~funcp~i~dirsec~dparmp ~fcbp L5dL4L7L8L3L9L6 tc /****************************************************************************/ /* */ /* M A C R O S */ /* ----------- */ /* */ /* Define some stuff as macros .... */ /* */ /****************************************************************************/ #define abs(x) ((x) < 0 ? -(x) : (x)) /* Absolute value function */ #define max(x,y) (((x) > (y)) ? (x) : (y)) /* Max function */ #define min(x,y) (((x) < (y)) ? (x) : (y)) /* Min function */ /*************************** end of stdio.h *********************************/ #define LOADER 1 #define CTLTYPE 0 :pip biostype.h=loadbios.h cp68 bios.c bios.i c068 bios.i bios.ic bios.st era bios.i era bios.st c168 bios.ic bios.s -l as68 -u -l bios.s as68 -u -l ldbiosa.s pip ldbios.o=bios.o lo68 -s -t0 -uldr -o cpmldr.sys booter.o ldrlib ldbiosa.o ldbios.o :#define LOADER 0 #define CTLTYPE 0 pip biostype.h=normbios.h cp68 bios.c bios.i c068 bios.i bios.ic bios.st era bios.i era bios.st c168 bios.ic bios.s -l as68 -u -l bios.s as68 -u -l biosa.s ;`@NV nC\#BB9C  gSJg -f& HfJ9CfC$B`  f  g amP AmZ PnRH|A3C0<"9BNB @f "<.N yBB( $<|ByC 0<"NB0<"9BNBJ@fԼRyC yC n`0< 29CBNCJg @ h3C3CByC3CA|J9Cf P`f#C JyC gt29CyCo3C09CR@3CyClx0< 29CNC29C0< NC0< "9C NC0<BANCJ@f8RyCSyC C `0<NCN^Nu"<0< NB`"<`"< `"<H`"<Z`Invalid Command Line $Select Error $Write Error $Cannot Open Source File $Buffer Overflow $Too Much Data for System Tracks $********************************************************* * * * Program to Write Boot Tracks for CP/M-68K (tm) * * * * Copyright Digital Research 1982 * * * ********************************************************* * * * prntstr = 9 BDOS Functions dseldsk = 14 open = 15 readseq = 20 dsetdma = 26 * seldsk = 9 BIOS Functions settrk = 10 setsec = 11 isetdma = 12 write = 14 sectran = 16 flush = 21 * bufcnt = $80 bufsize = $80*bufcnt * .text * start: link a6,#0  move.l 8(a6),a0 base page address lea $5c(a0),a1 move.l a1,fcb clr.b hflag add #$81,a0 first character of command tail scan: cmpi.b #$20,(a0)+ skip over blanks beq scan sub.l #1,a0 scan1: tst.b (a0) beq erxit cmpi.b #$2d,(a0)+ check for -H flag bne nohyph cmpi.b #$48,(a0)+ bne erxit tst.b hflag bne erxit move.b #$ff,hflag sub.l #$24,fcb change to 2nd default fcb bra scan nohyph: cmpi.b #$20,(a0) bne scan1 scan2: cmpi.b #$20,(a0)+ beq scan2 cmpi.b #$61,-(a0) get disk letter blt upper upshift sub #$20,(a0) upper: cmpi.b #$41,(a0) compare with range A - P blt erxit cmpi.b #$50,(a0) bgt erxit move.b (a0),d0 ext.w d0 put disk letter into range 0 - 15 sub.w #$41,d0 move.w d0,dsk * * open file to copy * move.w #open,d0 move.l fcb,d1 trap #2 cmpi.w #$00ff,d0 bne openok move.l #opnfl,d1 jmp erx openok: move.l fcb,a0 clr.b 32(a0) * * read * move.l #buf,d2 clr.w count rloop: move.w #dsetdma,d0 move.l d2,d1 trap #2 move.w #readseq,d0 move.l fcb,d1 trap #2 tst.w d0 bne wrtout add.l #128,d2 add.w #1,count cmpi.w #bufcnt,count bgt bufoflx bra rloop * * write * wrtout: move.w #seldsk,d0 select the disk move.w dsk,d1 clr.b d2 trap #3 tst.l d0 check for select error beq selerx move.l d0,a0 move.l 14(a0),a0 get DPB address move.w (a0),spt get sectors per track move.w 14(a0),off get offset clr.w trk start at trk 0 move.w #1,sect start at sector 1 lea buf,a0 tst.b hflag bne wrt1 c;mpi.w #$601a,(a0) bne wrt1 add.l #28,a0 wrt1: move.l a0,bufp * wloop: tst.w count beq exit move.w sect,d1 check for end-of-track cmp.w spt,d1 ble sok move.w #1,sect advance to new track move.w trk,d0 add.w #1,d0 move.w d0,trk cmp.w off,d0 bge oflex sok: move.w #settrk,d0 set the track move.w trk,d1 trap #3 move.w sect,d1 set sector move.w #setsec,d0 trap #3 move.w #isetdma,d0 set up dma address for write move.l bufp,d1 trap #3 move.w #write,d0 and write clr.w d1 trap #3 tst.w d0 check for write error bne wrterx add #1,sect increment sector number sub #1,count add.l #128,bufp bra wloop * exit: move.w #flush,d0 exit location - flush bios buffers trap #3 unlk a6 rts and exit to CCP * erxit: move.l #erstr,d1 miscellaneous errors erx: move.w #prntstr,d0 print error message and exit trap #2 bra exit * selerx: move.l #selstr,d1 disk select error bra erx wrterx: move.l #wrtstr,d1 disk write error bra erx bufoflx: move.l #bufofl,d1 buffer overflow bra erx oflex: move.l #trkofl,d1 bra erx * * .bss * .even * buf: .ds.b bufsize+128 * fcb: .ds.l 1 fcb address spt: .ds.w 1 sectors per track sect: .ds.w 1 current sector trk: .ds.w 1 current track dsk: .ds.w 1 selected disk off: .ds.w 1 1st track of non-boot area count: .ds.w 1 bufp: .ds.l 1 hflag: .ds.b 1 * .data * erstr: .dc.b 'Invalid Command Line',13,10,'$' selstr: .dc.b 'Select Error',13,10,'$' wrtstr: .dc.b 'Write Error',13,10,'$' opnfl: .dc.b 'Cannot Open Source File',13,10,'$' bufofl: .dc.b 'Buffer Overflow',13,10,'$' trkofl: .dc.b 'Too Much Data for System Tracks',13,10,'$' * * .end reloc -b$1 cpm.rel cpm.sys <<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOO