O p   `! #@')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY]a c@e`gikmoq s@u`wy{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` `!Ao   !Aa!!#A%a')+-/1!3A5a79;=?A!CAEaGIKMOQ!SAUaWY[]_a!cAeagkmoq!sAuwy{}!Aa!OoA!aǁɡ!Aaׁ١!A!  `! #@')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY]a c@e`gikmoq s@u`wy{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` `!Ao   !Aa!!#A%a')+-/1!3A5a79;=?A!CAEaGIKMOQ!SAUaWY[]_a!cAeagkmoq!sAuwy{}!Aa!OoA!aǁɡ!Aaׁ١!A[DISK2  j;GEMDEMOS  j;READ  j;TOSDEMOS  j;GEMSUBS PAS  ;7LISTPAS PRG  ; APASCAL INF  ;%CPASCAL PRG ;&PASCAL RSC ;[ AUXSUBS PAS  ;EDIT RSC  ;EDITOR PRG  ;ERRORS TXT  ; b.  j;..  j;COMPILERPRG ;_@GEMCONSTPAS ; GEMSUBS PAS ;j$GEMTYPE PAS ;LINKER PRG ;PASGEM  ;PASLIB  ;0.  j;..  j;AESVDI DOC ;i2CUBE PAS ;vDCOS PAS ;| DIALOG PAS ;FILETESTPAS ;dGEMSHELLPAS ;KHELLO PAS ;MENU PAS ;NOSSMOUSEPAS ;>WINDDEMOPAS ;CSWINDTESTPAS ;b.  j;..  j;COMMENTS ;ERRORS  ;%.  j;..  j;DIRTEST PAS ;Y DUMP PAS ; MODULAR1PAS ;MODULAR2PAS ;SOUND PAS ;"CONST { Personal Pascal GEM library constant definitions. } No_Window = -1 ; Root = 0 ; { Index of root w/in object tree } Max_Tree = 100 ; Null_Index = -1 ; { Index of a non-existent item } Max_Depth = 8 ; { Max depth of search or draw } Max_Fn = 12 ; { Max length of individual file/path name } Max_Path = 80 ; Max_WTitle = 80 ; Desk_Title = 3 ; { The index of the "desk" item in the menu bar } { Event val]ues: } E_Keyboard = $01 ; E_Button = $02 ; E_MRect_1 = $04 ; E_MRect_2 = $08 ; E_Message = $10 ; E_Timer = $20 ; { Graphics command constants: } { Drawing modes: } Replace_Mode = 1 ; Trans_Mode = 2 ; XOR_Mode = 3 ; Rev_Trans_Mode = 4 ; { Line styles: } Solid = 1 ; LongDash = 2 ; Dotted = 3 ; DashDot = 4 ; Dashed = 5 ; DashDotDot = 6 ; { Text effects: } Normal = 0 ; Thickened = 1 ; Lightened = 2 ; Slanted = 4 ; Underlined = 8 ; Outlined = 16 ; Shadowed = 32 ; { Font types: } System_Font = 3 ; Small_Font = 5 ; { Graphic types of obs: } G_Box = 20 ; G_Text = 21 ; G_BoxText = 22 ; G_IBox = 25 ; G_Button = 26 ; G_String = 28 ; G_FText = 29 ; G_FBoxText = 30 ; { Object flags: } None = $000 ; { Also used for fill pattern and text effects. } Selectable = $001 ; Default = $002 ; Exit_Btn = $004 ; Editable = $008 ; Radio_Btn = $010 ; Last_Ob = $020 ; Touch_Exit = $040 ; Hide_Tree = $080 ; { Object states: } { Use Normal for no special state } Selected = $01 ; Crossed = $02 ; Checked = $04 ; Disabled = $08 ; { Outlined and Shadowed are defined under text effects } { Window elements: } G_Name = $001 ; G_Close = $002 ; G_Full = $004 ; G_Move = $008 ; G_Info = $010 ; G_Size = $020 ; G_UpArrow = $040 ; G_DnArrow = $080 ; G_VSlide = $100 ; G_LArrow = $200 ; G_RArrow = $400 ; G_HSlide = $800 ; G_All = $FEF ; { All elements, except info line } { Color register shorthands: } White = 0 ; Black = 1 ; Red = 2 ; Green = 3 ; Blue = 4 ; Cyan = 5 ; Yellow = 6 ; Magenta = 7 ; L_White = 8 ; L_Black = 9 ; L_Red = 10 ; L_Green = 11 ; L_Blue = 12 ; L_Cyan = 13 ; L_Yellow = 14 ; L_Magenta = 15 ; { Predefined GEM messages: } MN_Selected = 10 ; WM_Redraw = 20 ; WM_Topped = 21 ; WM_Closed = 22 ; WM_Fulled = 23 ; WM_Arrowed = 24 ; WM_HSlid = 25 ; WM_VSlid = 26 ; WM_Sized = 27 ; WM_Moved = 28 ; { Wind_Get/Set field values: } WF_PrevXYWH = 6 ; WF_FullXYWH = 7 ; WF_HSlide = 8 ; WF_VSlide = 9 ; WF_HSlSize = 15 ; WF_VSlSize = 16 ; { Desk-Accessory values: } AC_Open = 40 ; AC_Close = 41 ; { End of constants used in GEM interface } { =F } TYPE { Common GEM type definitions for Personal Pascal library. } Color_Reg = 0..15 ; Draw_Modes = Replace_Mode..Rev_Trans_Mode ; Line_Types = Solid..DashDotDot ; Mouse_Type = ( M_Arrow, M_Text_Curs, M_Bee, M_Point_Hand, M_Flat_Hand, M_Thin_Cross, M_Thick_Cross, M_Outln_Cross ) ; Dialog_Ptr = ^CHAR ; {arbitrary pointer type} Menu_Ptr = ^CHAR ; {arbitrary pointer type} Word16 = ARRAY [ 0..15 ] OF Short_Integer ; Mouse_Form = RECORD hot_x : Short_Integer ; hot_y : Short_Integer ; res : Short_Integer ; mask_color : Short_Integer ; data_color : Short_Integer ; mask : Word16 ; data : Word16 ; END ; File_Name = STRING [ Max_Fn ] ; Path_Name = STRING [ Max_Path ] ; Window_Title = STRING [ Max_WTitle ] ; Message_Buffer = ARRAY [ 0..15 ] OF Short_Integer ; Str255 = STRING [ 255 ] ; { Editable text justification: } TE_Just = ( TE_Left, TE_Right, TE_Center ) ; { Possible indices into a tree: } Tree_Range = Root..Max_Tree ; Tree_Index = Null_Index..Max_Tree ; { AES- and VDI-Types} POINTER = ^CHAR; {Arbitrary pointer type...actual type situation dependent} INT_IN_parms = ARRAY [0..15] OF Short_Integer; INT_OUT_parms = ARRAY [0..45] OF Short_Integer; Addr_IN_parms = ARRAY [0..1] OF Pointer; Addr_Out_parms = ARRAY [0..0] OF Pointer; Ctrl_Parms = ARRAY [ 0..11 ] OF Short_Integer ; Pts_In_Parms = ARRAY [ 0..11 ] OF Short_Integer ; Pts_Out_Parms = ARRAY [ 0..11 ] OF Short_Integer ; { End of TYPEs used in GEM library definitions } { =F } { EXTERNAL declarations, etc., for Personal Pascal GEM library routines. } FUNCTION Init_Gem : Short_Integer ; EXTERNAL ; PROCEDURE Exit_Gem ;  EXTERNAL ; FUNCTION Do_Alert( alert : Str255 ; def_btn : Short_Integer ) : Short_Integer ; EXTERNAL ; { dialog-oriented subprograms } FUNCTION New_Dialog( n_items, x, y, w, h : Short_Integer ) : Dialog_Ptr ; EXTERNAL ; PROCEDURE Delete_Dialog( dial : Dialog_Ptr ) ; EXTERNAL ; FUNCTION Add_DItem( dial : Dialog_Ptr ; i_type, flags : Short_Integer ; x, y, w, h : Short_Integer ; border, color : Short_Integer ) : Tree_Index ; EXTERNAL ; FUNCTION D_Color( border, text : Short_Integer ; text_mode : Boolean ; pattern, fill : Short_Integer ) : Short_Integer ; EXTERNAL ; PROCEDURE Set_DText( dial : Dialog_Ptr ; item : Tree_Index ; s : Str255 ; font : Short_Integer ; just : TE_Just ) ; EXTERNAL ; PROCEDURE Set_DEdit( dial : Dialog_Ptr ; item : Tree_Index ; template, valid, initial : Str255 ; font : Short_Integer ; just : TE_Just ) ; EXTERNAL ; PROCEDURE Obj_SetState( dial : Dialog_Ptr ; index : Tree_Index ; state : Short_Integer ; redraw : boolean ) ; EXTERNAL ; FUNCTION Obj_State( dial : Dialog_Ptr ; index : Tree_Index ) : Short_Integer ; EXTERNAL ; PROCEDURE Obj_SetFlags( dial : Dialog_Ptr ; index : Tree_Index ; flags : Short_Integer ) ; EXTERNAL ; FUNCTION Obj_Flags( dial : Dialog_Ptr ; index : Tree_Index ) : Short_Integer ; EXTERNAL ; PROCEDURE Center_Dialog( dial : Dialog_Ptr ) ; EXTERNAL ; FUNCTION Do_Dialog( dial : Dialog_Ptr ; start_obj : Short_Integer ) : Short_Integer ; EXTERNAL ; PROCEDURE Get_DEdit( dial : Dialog_Ptr ; item : Tree_Index ; VAR s : Str255 ) ; EXTERNAL ; FUNCTION Redo_Dialog( dial : Dialog_Ptr ; start_obj : Short_Integer ) : Short_Integer ; EXTERNAL ; PROCEDURE End_Dialog( dial : Dialog_Ptr ) ; EXTERNAL ; PROCEDURE Show_Dialog( dial : Dialog_Ptr ; item : Tree_Index ) ; EXTERNAL ; { predefined dialog routines } FUNCTION Get_In_File( VAR path, name : Path_Name ) : boolean ; EXTERNAL ; FUNCTION Get_Out_File( prompt : Str255 ; VAR name : Path_Name ) : boolean ; EXTERNAL ; { menu-oriented subprograms } FUNCTION New_Menu( n_items : Short_Integer ; about : Str255 ) : Menu_Ptr ; EXTERNAL ; PROCEDURE Delete_Menu( menu : Menu_Ptr ) ; EXTERNAL ; FUNCTION Add_MTitle( menu : Menu_Ptr ; item : Str255 ) : Short_Integer ; EXTERNAL ; FUNCTION Add_MItem( menu : Menu_Ptr ; title : Tree_Index ; item : Str255 ) : Short_Integer ; EXTERNAL ; PROCEDURE Draw_Menu( menu : Menu_Ptr ) ; EXTERNAL ; PROCEDURE Erase_Menu( menu : Menu_Ptr ) ; EXTERNAL ; PROCEDURE Menu_Hilight( menu : Menu_Ptr ; title : Tree_Index ) ; EXTERNAL ; PROCEDURE Menu_Normal( menu : Menu_Ptr ; title : Tree_Index ) ; EXTERNAL ; PROCEDURE Menu_Check( menu : Menu_Ptr ; item : Tree_Index ; checked : boolean ); EXTERNAL ; PROCEDURE Menu_Enable( menu : Menu_Ptr ; item : Tree_Index ) ; EXTERNAL ; PROCEDURE Menu_Disable( menu : Menu_Ptr ; item : Tree_Index ) ; EXTERNAL ; PROCEDURE Menu_Text( menu : Menu_Ptr ; item : Tree_Index ; VAR mtext : Str255 ) ; EXTERNAL ; FUNCTION Menu_Register( id : Short_Integer ; { for desk accessories, only } VAR name : Str255 ) : Short_Integer ; EXTERNAL ; { window-oriented subprograms} FUNCTION New_Window( w_type : Short_Integer ; VAR title : Window_Title ; x_max, y_max, w_max, h_max : Short_Integer ) : Short_Integer ; EXTERNAL ; PROCEDURE Open_Window( handle : Short_Integer ; x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Close_Window( handle : Short_Integer ) ; EXTERNAL ; PROCEDURE Delete_Window( handle : Short_Integer ) ; EXTERNAL ; PROCEDURE Set_WSize( handle, x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Set_WName( handle : Short_Integer ; VAR title : Window_Title ) ; EXTERNAL ; PROCEDURE Set_WInfo( handle : Short_Integer ; VAR info : Window_Title ) ; EXTERNAL ; PROCEDURE Border_Rect( wind : Short_Integer ; VAR x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Work_Rect( wind : Short_Integer ; VAR x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE First_Rect( wind : Short_Integer ; VAR x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Next_Rect( wind : Short_Integer ; VAR x, y, w, h : Short_Integer ) ; EXTERNAL ; FUNCTION Rect_IntersJect( x, y, w, h : Short_Integer ; VAR x1, y1, w1, h1 : Short_Integer ) : boolean ; EXTERNAL ; FUNCTION Front_Window : Short_Integer ; EXTERNAL ; PROCEDURE Bring_To_Front( handle : Short_Integer ) ; EXTERNAL ; PROCEDURE Set_Window( handle : Short_Integer ) ; EXTERNAL ; FUNCTION Get_Window : Short_Integer ; EXTERNAL ; { window text and graphics subprograms } PROCEDURE Set_Clip( x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Draw_Mode( mode : Draw_Modes ) ; EXTERNAL ; PROCEDURE Set_Color( reg : Color_Reg ; red, green, blue : Short_Integer ) ; EXTERNAL ; PROCEDURE Line_Color( color : Color_Reg ) ; EXTERNAL ; PROCEDURE Line_Style( style : Line_Types ) ; EXTERNAL ; PROCEDURE Paint_Color( color : Color_Reg ) ; EXTERNAL ; PROCEDURE Paint_Style( style : Short_Integer ) ; EXTERNAL ; PROCEDURE Paint_Outline( on : boolean ) ; EXTERNAL ; PROCEDURE Text_Color( color : Color_Reg ) ; EXTERNAL ; PROCEDURE Text_Style( style : Short_Integer ) ; EXTERNAL ; PROCEDURE Move_To( x, y : Short_Integer ) ; EXTERNAL ; PROCEDURE Line( x1, y1, x2, y2 : Short_Integer ) ; EXTERNAL ; PROCEDURE Line_To( newx, newy : Short_Integer ) ; EXTERNAL ; PROCEDURE Plot( x, y : Short_Integer ) ; EXTERNAL ; PROCEDURE Paint_Rect( x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Frame_Rect( x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Paint_Oval( x, y, x_rad, y_rad : Short_Integer ) ; EXTERNAL ; PROCEDURE Frame_Oval( x, y, x_rad, y_rad : Short_Integer ) ; EXTERNAL ; PROCEDURE Paint_Round_Rect( x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Frame_Round_Rect( x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Paint_Arc( x, y, x_rad, y_rad : Short_Integer ; beg_ang, end_ang : Short_Integer ) ; EXTERNAL ; PROCEDURE Frame_Arc( x, y, x_rad, y_rad : Short_Integer ; beg_ang, end_ang : Short_Integer ) ; EXTERNAL ; PROCEDURE Draw_String( x, y : Short_Integer ; s : Str255 ) ; EXTERNAL ; PROCEDURE Text_Height( height : Short_Integer ) ; EXTERNAL ; { mouse-oriented subprograms } PROCEDURE Set_MForm( VAR form : Mouse_Form ) ; EXTERNAL ; PROCEDURE Set_Mouse( m_type : Mouse_Type ) ; EXTERNAL ; PROCEDURE Hide_Mouse ; EXTERNAL ; PROCEDURE Show_Mouse ; EXTERNAL ; PROCEDURE Init_Mouse ; EXTERNAL ; PROCEDURE Begin_Mouse ; EXTERNAL ; PROCEDURE End_Mouse ; EXTERNAL ; { event management } FUNCTION Get_Event( event_mask : Short_Integer ; btn_mask : Short_Integer ; btn_state : Short_Integer ; n_clicks : Short_Integer ; ticks : Long_Integer ; r1_flag : boolean ; r1x, r1y, r1w, r1h : Short_Integer ; r2_flag : boolean ; r2x, r2y, r2w, r2h : Short_Integer ; VAR message : Message_Buffer ; VAR key : Short_Integer ; VAR bstate,bcnt : Short_Integer ; VAR mx, my : Short_Integer ; VAR kbd_state : Short_Integer ) : Short_Integer ; EXTERNAL ; PROCEDURE Begin_Update ; EXTERNAL ; PROCEDURE End_Update ; EXTERNAL ; { miscellany } PROCEDURE Wind_Get( handle, request : Short_Integer ; VAR v1, v2, v3, v4 : Short_Integer ); EXTERNAL ; PROCEDURE Wind_Set( handle, request : Short_Integer ; v1, v2, v3, v4 : Short_Integer ) ; EXTERNAL ; PROCEDURE Sys_Font_Size( VAR w_char, h_char, w_box, h_box : Short_Integer ) ; EXTERNAL ; PROCEDURE Clear_Screen ; EXTERNAL ; { resource file subprograms } FUNCTION Load_Resource( fn : Str255 ) : boolean ; EXTERNAL ; PROCEDURE Find_Menu( index : Short_Integer ; VAR menu : Menu_Ptr ) ; EXTERNAL ; PROCEDURE Find_Dialog( index : Short_Integer ; VAR dial : Dialog_Ptr ) ; EXTERNAL ; PROCEDURE Find_Alert( index : Short_Integer ; VAR alert : Str255 ) ; EXTERNAL ; PROCEDURE Free_Resource ; EXTERNAL ; { the generic VDI and AES calls ! } PROCEDURE VDI_Call( cmd, sub_cmd : Short_Integer ; nints, npts : Short_Integer ; VAR ctrl : Ctrl_Parms ; VAR int_in : Int_In_Parms ; VAR int_out : Int_Out_Parms ; VAR pts_in : Pts_In_Parms ; VAR pts_out : Pts_Out_Parms ; translate : boolean ) ; EXTERNAL ; PROCEDURE AES_CALL( op : Short_Integer ; VAR Int_In : Int_In_Parms; VAR Int_Out : Int_out_Parms; VAR Addr_In : Addr_In_Parms; VAR Addr_Out : Addr_Out_Parms); EXTERNAL; { End of gemsubs.pas } .`=Rn o"h#?&#?*#?.,Oc.N//Bg?<JNA BbBy?2N NV?<NAN^NuNV?./. ?<GNAN^ _\N/,HNVA-HN;N=@HyL@R@?N0.rAAKAt:KBv=C0.rAL?0tBg T@2.v0CK@RA=A`0.R@K@N98HyK@?Q?<N"=@r=A?<N=@0.N^,_Nu[3][I can't open that printer file!|Choose another name.][ OK ]NV?<NAN^Nu/,HNVA-HN;p=@29FAd r=A`r=At=B0.@e09F@d p=@`j09F@dHyFN0Xp=@`F0.29MBAm t=B`,R@=@HyFHnN0~X0.2."VA`v0. V@0.N^,_Nu/,HNVA-HN; V0(29MFAlHyD n0(rAW0(vCWĄDBd"n0.3@ 4. 3BN^,_ _ N/,HNVAN-HN; n0.-H0(rAW0(vCWĄDBd"h /"n / ND`N^,_ _ N/,HNVA-HN;0. H//<N<, м/HnN7p=@2. SA=A` n0.p1@Rn0.no n2. r1A$.-B .N^,_ _TN/,HNVAH-HN;p=@ n 0.rtBg R@=@`0.rAl=A0.=@0.N^,_ _XN/,HNVA4-HN;/.N@d0. Hм//.N8N^,_ _\N/,HNVA-HN;p=@0.rdA] n 0(vCVDBd0.R@=@`0.rdAlzt=BS@=@`6 n 0.-H0(`/( n/( NN? NN`"h -I/ n/ NN? NN n/(?< NN n/(?< NN np//( N8`"h -I/ n/( NNH? NN n/( n/( NN*? NN n/( n/( NN ? NNd np//( N8`0@ @ b$@0;N xxRn0.no2.H//<N<,"Ҽ//. N8N^,_ _XN _"B?*e?&UN/,HNVA-HN; n 0.-H0.1@2.1A4.1B6.1C8.1Dz01E1E|FWrAW€B@d0.tB=@0.t B1@p1@ vCW|FWAEd2.1A :. 1E`!@ 2.zEg/. ??.NN^,_ _N/,HNVA-HN;p=@ n2(tBg` n0.0(r AtBf0.R@=@` n0."n0.0)r FAA1@0.R@=@/.??.?.?.?.?.?.?.?.?. Nh0.=@0.N^,_ _N/,HNVtA>-HN;0.=@2. =A$.-Bx?<(HnHnHnxHntN'VN^,_ _PN/,HNVtA6-HN;0. =@".-Ax?<rHnHnHnxHntN'VN^,_ _\N/,HNVtA^-HN; .-@x2.=A4.=B6.=C8.=D:.=E<. =F?<*HnHnHnxHntN'VN^,_ _N/,HNVA"-HN; n0. 0( =@0.N^,_ _\N/,HNVtAp-HN; .-@x2.=At=B6.=C8.=D:.=E<.=F0.=@2. tB=A?</HnHnHnxHntN'VN^,_ _N/,HNVAN-HN;/.?.HnHnHnHnN!/.?.?.?.?.?.?.?. N$N^,_ _ N/,HNVA"-HN; n0. 0(=@0.N^,_ _\N/,HNVA"-HN; n0.0. 1@N^,_ _PN/,HNVnAV-HN; .-@r2.=A4.=B6.=C8. =D?<+HnHnzHnrHnnN'V0.z=@0.N^,_ _ N/,HNVpAL-HN;/.?. n/"n/ N"( n0.-Hp"n0(2$n 0(4N^,_ _N/,HNVtAJ-HN;0.=@".-Ax?<,HnHnHnxHntN'V n0.0"n 2.2N^,_ _N/,HNVA8-HN;p.R@rAHnN)/?. N'=@0.N^,_ _N/,HNVnAV-HN;?<MHnHnzHnrHnnN'V n0.|0"n2.~2$n4.4&n 6.68.z=D0.N^,_ _N/,HNV,A-HN;0. rAg =A.`$Hn,Hn,Hn,Hn,NT?N(pd=@.0. =@r=A`0.@rA1Rn n op=@?..Bg?< BgHnHnHn`HnHHn0BgN'0.=@0.N^,_ _TN/,HNVAX-HN(=@?.N(0. =@?<fBg?<BgHnHn n/Hn"n/ BgN'?.N(N^,_ _ N/,HNV4A-HN(=@6?. N(?. HnhHn8?<N\0.hrAg te=B4`t=B4????HnHnHnhHnPHn8?N'0. 2.6Ag?N(` BgN(N^,_ _TN/,HNV8A2-HN;?<BgBgBgHnHnHnhHnPHn8BgN'N^,_Nu/,HNVjA-HN;p=@j?< HnHnzHnrHnnN'V0.z=@lrAg?<N=@j?.jN)?.jN(?3| NAXNu/")x itg$H@//?) ?<@NA LJof _Nu _4` _t6 Bo r aSB`2aNH?M _r ar a/L?MNu _r aN _4` _t"x0HgJJjDxvCNzp cRЀ`|e W0R"f`6 _4` _t2xJAjDAxvCNp0 2H@0RJAfJg<-RBlCSBr aQSCaQN _"_v` _"_60`JfQ$ItRJf` _4v` _46"_JBjtJCkgCe4` BSCr axQSBkalQN _6kfv2_t Cc"4YBv` _6kfv"_t Cc4QBvSBkr a(QSCC" A0 9c^a JgYC`NH M"oA/ N/lL MNu(_"_/ A) g  f$)Jtf&H //?) ?<@NA LJovfNu$ix&i|fa`pRgf#Jx`H")x it#Hxg$H`//?) ?<@NA LJofLNu )f NuHy0g` Hy0@0< LN&REWRITE required prior to WRITE or PUTDisk or directory full _$_"Wp i e)H/ N3L4NH/ N3Lp)` _"WJ9Nf*J)f i e)H/ N3L i d)J)fJg i dB9NJ)fBiNz`z _$_"WptvH/ HyNaB29NXL- -fJf^p`4  fJg*`N0eH  bBԂi\(؄iV؄iRԄiNԁRCJ)f  g i e) 0e 9c~Jg&JgDJf 6Höf4N$NHy2f0<`Hzh0<N& _$_0"Wt&JRJ)f:H/ HyNar29NXL i d J)PNf RBBe`Be`N Bad digit in number encounteredOverflow during READ of number _$_"W2/RN!bp1Ro4Np `z`z _$_ptvH-N"HyNa29NL-N" -fJfBp`  fJf4J9N!g`*0e$  bԂi8(؄i2؄i.Ԅi*ԁRC`Jg&JgDJf 6Höf4N$NHy30<`HzV0<N& _$_0t&JRHN"HyNa 29NLN"J9N!f RBBe`ΰBe`NBad digit in number encounteredOverflow during READV of number(_ _/ C (g ( fXJ(fF$($IJtflH / /?( ?<?NA LJo*fJg  f"J` g  Wf NuJg Jh g J(fPNu!|NuH$hx&h|gpR@@gf!JxL`H &ht!KxJh f(aZLEJ@g *f` R@Bh` / /<?( ?<?NA LJlp!K|JfvL`rH@Hsp/Bg?<?NA LRA3 f@ AgUH@Hzp 3 dp` SAH@Hzp/?<?<@NA L` fSA` fSAH@Hzp` f H@Hzp `~ f4SA`(H@Hzp 3 dp/?<?<@NA LQ`* d,69@6HHzpp/?<?<@NA L AfH@HzFp/?<?<@NA L NuHzR0<`Hz$0< LN&  p Exit q C^AReset required prior to Read or GetAttempt to read past end-of-file ?&NuH8 _ g?*e?&d/L8NuHy8`Hy8N&t`t _"_ gR e6G8$S" geb"*f&"`&A%S"`&J`а|gb<|fP"98gH$A#8`:"98g6$A#8`("98g$$A#8` @ g"98g $A#8"`"E?&&R"$b Hy8N&Jgr"Qd2`"SjN _"_ " g?*e?&dgR m @ e@E8"fB#@B$`p&A"+ef "'I`Z"#@B$`L$K`ư| f"8#8`4|f"8#8` |f"8#8` "8#8NHeap overruns stackPointer NILPointer not in heapHN@ _0"_e /LN@NuHy;HN&/B9Nh/|NhNuHN@ _0 @f0"|N>N>p` "_J@jpENhr4@ BbBS@kQ/LN@NuHN@ _4SBkt82$_rAbd0 @f0"|N>N>p` "_J@jp6ADb6CG0IS@k$eQ/LN@NuHN@ _4k2SAk0"_p6B@bE0)CS@kQ/LN@NuHN@ _2$_r0 @f0"|N>N>p` "_J@jp@kS@kv&J$IRC4(K Vg RQBg`?/LN@NuHN@ _4kF2SAk>0 @f0"|N>N>p` "_J@jpJBg@b6B@oCENhSBkQ/LN@NuString overflow _pJ.g 0( hNVg4 ( hg( hH`0( hNVg ( hg hHfXgr"ODd2Sk "Sj` _"y?&e Hy<N&N#Op#Ol .f -|<`-|< nNнOlf yOpNStack overruns heapH?Ot _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?OtNu0NvDNHOt|` HOt| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/LOtNu09?$By?$Nu _3?"NBy?$Nu[3][4][ Abort ]Copyright 1986, CCD and OSS, Inc.    -,> * ",*",N.(.,,*.*,. &   2X 2n ,  B   4 >VP&6 6\06 ,Lb8z,Fb":,>4> @" f,tPdv`  rV"2 * R":d"F:6B.H*6 *V0b,4 "T & & (,& J           BBb42J ^ (*  l,R tbj  "D    * "FV ( *@ B @ ( V  1058 1 0 0 1 1 1 1 1 0 1 0 0 0 1 0 A:\GEMDEMOS\*.PAS A:\*.O A:\GEMDEMOS\*.PAS A:\*.PRG A:\*.* A:\*.* A:\*.* A:\*.* A:\*.PAS A:\*.PAS A:\PASCAL.INF A:\*.INF A:\PASCAL.INF A:\*.INF A:\EDITOR.PRG D:\COMPILER.PRG D:\LINKER.PRG D:\PASGEM D:\PASLIB A:\*.PAS A:\*.* A:\LISTPAS.PRG - `Ȑ o"h#d#h#l,IPc.N//Bg?<JNA BbBypN? /,HNVAH-HN09rAg/9?BgNl/9?. ?<Nl0. 3N^,_ _TN/,HNVA@-HNp=@`0.@A"pp@ZRn nFop#~N^,_Nu/,HNVA@-HNp=@` 0.@r\/AHpNPRn nFoNhN^,_Nu/,HNVA-HNA dN^,_Nu/,HNVA*-HNN"9lN#N^,_Nu/,HNVA-HNN 9#dN^,_Nu/,HNVA-HNp=@r. tBoWA=AvA 0x.DWRAv0rPAWF6.TC|00vRCW@0.V@|0pG@WBEdt=Bt. WB=Bz0 DWRBz0 tABWA2.TAz0rCAWC6.VCz00AWCFdv=C0.N^,_ _RN/,HNVA-HN n p=@r=A0.@ep0.rAl =A`Z n tv:CW n tz\EWƈFDd =A`* n tx.Df n S@=A`S@=@`N^,_ _XN/,HNVA-HN?<BgBg?<(?<NF#/9?<Bg?<?<?<&?<Bg0<@?N3/9?AO"OrQ?<?<N/9?<Bg?<?<?<?<Bg0<@?N=@/9?A&O"OrQ?<BgNN^,_Nu Please wait... /,HNVA-HN?<HyNp=@`l0.@A20Ad>0.rAn/9??<BgNd`/9??<BgNd`/9?.BgBgNdRn n oN^,_Nu/,HNVA-HNACp"QN./9N/9BgN42<A=@0.rAVvCVDBdAV°CVDBdZ@4.BA80 FD10.@40Bd/9?.?<?<Nd`/9?.Bg?<Nd/9BgN2<A=@`f/9?.BgBgNd0.rAfxt=B`L0.@//9?.N" tBWA10.@20Ad0.S@3Rn noACp"Q?<N/9NN^,_Nu/,HNVAz-HNp3r3t3v3x3z3|3p3r3t3v3x3z3|3p3r#φt#~N3rA/N|"@ޝp:ޞt=BHy4?Nfp=@0.rA30tBVr0x DVEr@A_ECd T@6.z00CޜRC=C`0.R@=@ޜAޜC@2r"Qr9@RA@t\A@NnHyޜ?vCW:9E<. rA]BDd49BdACݦ2t"QAܰC^2t"QHy^N֘NnHy^?DWŌEFd N`RzEW2NAN^ _TNNV?.?. /. ?<BNAN^ _PN/,HNVtAh-HN0.=@2.=A4.=B6.=C8.=D:.=E,.-Fx?<*HnHnHnxHntNv n 0.0N^,_ _N/,HNVtAV-HN n0=@".-Ax?<,HnHnHnxHntNv n 0.0"n2.2$n4.4N^,_ _NNV?./. ?<NNAN^ _\NNV?<ONAN^Nu/,HNVAr-HNp=@r=A n t=B`8 n 0.rt Bg2.RA=A n "n vRn0.no n 2.N^,_ _XN/,HNVA>-HN n -@ .rg @$(V-BHnN .-@`N^,_ _\N/,HNVA-HNp=@2. tBf nv` nv  nR@p  nv0.rA_vA 0xDVEBd*"nT@0.t0"nT@0.R@=@`N^,_ _N/,HNVA-HN np=@ n0.rt\BVrA^DCd S@=@`0.=@S@=@ n0.rt\BVrA^DCd S@=@`0.rAoV n/?"-A4.6.C=B .rV6.8.D_EBd n*4BW4.B\F"@<)TrAWDEd$n x4&n2z=E n20.rt\BVrA^DCd S@=@`0.rAo n6"n20t QNn?<\?*)V$` $B*)V%EV*)V-EHnN .-@ n.2SA0"n r2`$ -B$B**V-E0.R@=@`N^,_ _:NNV/./. ?.?<?NAN^ _ NNV/./. ?.?<@NAN^ _ NNV/.?<ANAN^ _XNNV/.?<HNAN^ _XNNV/.?<INAN^ _XNNV?./. ?<6NAN^ _\N/,HNVA -HN .-@r=AA dp/NЀ2HnN=@A\C-r,QA"Op?"Q?<N=@`,.HoBB?.BgN-@ .rH^6.AWDBd$.ְo -B`-@?././.N-@".ڰf?././.N-@`DAC tQA"Op?"Q?<N=@r =A$.-B .".ڰg/./.x?.?.?.?.?.?.~?.A2R"O2t"QN0.@eD/.N0.nrAf/.?.N4=@`/.?.N4=@`0.|@dTHnHnHn/.HnN„Bg?<0.29A?0.49B?? ?/.HnN0.~@dTHnHnHn/.HnN(Bg?<0.29A?0.49B?? ?/.HnNp0.nrAf/.?.N=@`/.?.N=@r=A|t=B~v3xDlz36<C=@6.nzE^2.԰A_8.D\CBFd/.?Bg?<Nd0.2.AW6.CWĄDBd0Af/.?.?Hn(Nb`/.?.?Hn(NL/.?.HnND0.nrAf/.?.Hn2ND0.2.ܰAf/.Hn?.Hn|N0.nrAW6.8.ȶDWEBd/.Hn2?.Hn~Nž0.nrAW6.8.DW<.FW@EBdp=@~/.HntHnxHnCancelF _.___OKCopy >ExitXITo: _AD:\*.*XJFrom: _B Destination Source Rename FileErase FileCopy File .*/,HNVnAT-HNp. R@rA Hn N-@r?<nHnHnzHnrHnnNv0.zrAV=B0.N^,_ _N/,HNVnAR-HN0.=@2. =A?<pHnHnzHnrHnnNv0.zrAg$.n-B`-A .N^,_ _XN/,HNVA -HN n /Bg?.Nr _ N^,_ _\N/,HNVA -HN n /Bg?.N> _ N^,_ _\N/,HNVtA&-HN?<oHnHnHnxHntNvN^,_Nu/,HNVtAB-HN0.=@2. tB=A&.-Cx?<HnHnHnxHntNvN^,_ _PN/,HNVtA<-HN0. =@r=A$.-Bx?< HnHnHnxHntNvN^,_ _\N/,HNVtA<-HN0. =@r=A$.-Bx?< HnHnHnxHntNvN^,_ _\N/,HNVA0-HN/.?. A "Op?"QBgBgNN^,_ _N/,HNVnAV-HN n pR@p2.=A n /N-@r?<#HnHnzHnrHnnNv0.z=@0.N^,_ _\N/,HNVtA4-HNp=@". -Ax?<HnHnHnxHntNvN^,_ _XN/,HNVtA4-HNp=@". -Ax?<HnHnHnxHntNvN^,_ _XN/,HNVtA<-HN0. =@r=A$.-Bx?<!HnHnHnxHntNvN^,_ _\N/,HNVtA<-HN0. =@r=A$.-Bx?<!HnHnHnxHntNvN^,_ _\N/,HNVAp-HN0.T@=@?.N-@/.? n0(rAW0(vCWĄDBd"n0.3@ 4. 3BN^,_ _ N/,HNVAN-HN n0.-H0(rAW0(vCWĄDBd"h /"n / ND`N^,_ _ N/,HNVA-HN0. H//<Nb м/HnNPp=@2. SA=A` n0.p1@Rn0.no n2. r1A$.-B .N^,_ _TN/,HNVAH-HNp=@ n 0.rtBg R@=@`0.rAl=A0.=@0.N^,_ _XN/,HNVA4-HN/.N@d0. Hм//.N6N^,_ _\N/,HNVA-HNp=@0.rdA] n 0(vCVDBd0.R@=@`0.rdAlzt=BS@=@`6 n 0.-H0(`/( n/( NN? NN`"h -I/ n/ NN? NN n/(?< NN n/(?< NN np//( N6`"h -I/ n/( NNH? NN n/( n/( NN*? NN n/( n/( NN ? NNd np//( N6`0@ @ b$@0;N xxRn0.no2.H//<Nb"Ҽ//. N6N^,_ _XN _"BhedUN/,HNVA-HN n 0.-H0.1@2.1A4.1B6.1C8.1Dz01E1E|FWrAW€B@d0.tB=@0.t B1@p1@ vCW|FWAEd2.1A :. 1E`!@ 2.zEg/. ??.NN^,_ _N/,HNVA-HNp=@ n2(tBg` n0.0(r AtBf0.R@=@` n0."n0.0)r FAA1@0.R@=@/.??.?.?.?.?.?.?.?.?. Nh0.=@0.N^,_ _N/,HNVtA>-HN0.=@2. =A$.-Bx?<(HnHnHnxHntNvN^,_ _PN/,HNVtA6-HN0. =@".-Ax?<rHnHnHnxHntNvN^,_ _\N/,HNVtA^-HN .-@x2.=A4.=B6.=C8.=D:.=E<. =F?<*HnHnHnxHntNvN^,_ _N/,HNVA"-HN n0. 0( =@0.N^,_ _\N/,HNVtAp-HN .-@x2.=At=B6.=C8.=D:.=E<.=F0.=@2. tB=A?</HnHnHnxHntNvN^,_ _N/,HNVAN-HN/.?.HnHnHnHnN/.?.?.?.?.?.?.?. N$N^,_ _ N/,HNVA"-HN n0. 0(=@0.N^,_ _\N/,HNVA"-HN n0.0. 1@N^,_ _PN/,HNVnAV-HN .-@r2.=A4.=B6.=C8. =D?<+HnHnzHnrHnnNv0.z=@0.N^,_ _ N/,HNVpAL-HN/.?. n/"n/ N n0.-Hp"n0(2$n 0(4N^,_ _N/,HNVtAJ-HN0.=@".-Ax?<,HnHnHnxHntNv n0.0"n 2.2N^,_ _N/,HNVtAV-HN0.=@2.=A4.=B6.=C8.=D:. =E?<iHnHnHnxHntNvN^,_ _ N/,HNVtA^-HN0.=@2.=A?<hHnHnHnxHntNv n0.0"n2.2$n4.4&n 6.6N^,_ _N/,HNVA0-HN?.?< n/"n/ $n/ &n / NTN^,_ _N/,HNVA0-HN?.?< n/"n/ $n/ &n / NN^,_ _N/,HNVA0-HN?.?< n/"n/ $n/ &n / NN^,_ _N/,HNVA0-HN?.?< n/"n/ $n/ &n / NN^,_ _N/,HNVAT-HN?. N0. rAfBgBgN`&?HnHnHnHnN?.?.NN^,_ _TN/,HNVA.-HNBg?< HnHnHnHnN0.=@0.N^,_Nu/,HNVA -HN?. ?< BgBgBgBgN6N^,_ _TN/,HNVtA~-HN0.rAW6. AWĄDBd?HnHnHnHn N0.=@2.=A4.=B6.=C8. =D?<eHnHnHnxHntNvN^,_ _ N/,HNVtA.-HN0. =@?<fHnHnHnxHntNvN^,_ _TN/,HNVA(-HN?.?<?.?.?.?. N$N^,_ _ N/,HNVAH-HN n pR@p n /HnHnN?.?<?.?.BgBgNN^,_ _\N/,HNVAH-HN n pR@p n /HnHnN?.?<?.?.BgBgNjN^,_ _\N/,HNVlA-HN0.rAW6. AWĄDBd?HnHnHnHn N0.=@2.=A4.=B6.=C8. =D?<dHnHnzHnrHnnNv0.z=@lrAg? n/N0.l=@0.N^,_ _N/,HNVtA.-HN0. =@?<gHnHnHnxHntNvN^,_ _TN/,HNVnA>-HN0.=@2. =A?<jHnHnzHnrHnnNv0.z=@0.N^,_ _XN/,HNVtA~-HN0.&=@2.$=A4."=B6. =C8.=D:.=E?<lHnHnHnxHntNv n0.0"n2.2$n4.4&n 6.6N^,_ _N/,HNVA8-HN .R-@ n"<//N"0"n r2N^,_ _ N/,HNV8A~-HN0.=@P2.=AR4.BS@=@T6. CSA=AVxDVŶDVFEd z=E`=D?<Bg?<?<HnHnHnhHnPHn8BgNN^,_ _PN/,HNVA&-HN0.2. An =@`=A0.N^,_ _XN/,HNVA&-HN0.2. Am =@`=A0.N^,_ _XN/,HNVA-HN0."2.A? n0"n4B? NNN=@0. 2.A? n0"n 4B? NN(=@ n/?."? NNP _0"n/ ?. ? NN:"_2 n0.$n2A0&n 0.2A60rA^0A^C=B0.N^,_ _N/,HNVtA,-HNp=@?<kHnHnHnxHntNvN^,_Nu/,HNVtA,-HNp=@?<kHnHnHnxHntNvN^,_Nu/,HNVtA6-HN0.=@". -Ax?<NHnHnHnxHntNvN^,_ _\N/,HNVA-HN?</. NN^,_ _XN/,HNVA-HN0. ?BNjN^,_ _TN/,HNVA4-HNNDrAf ?</N2NDR@?NLN^,_Nu/,HNVAB-HNNDrAo*NDS@?NLNDrAf ?</NN^,_Nu/,HNVA<-HNp?/Np=@ND=@` NxRn0.noN^,_Nu/,HNVtA,-HNp=@?<kHnHnHnxHntNvN^,_Nu/,HNVtA,-HNp=@?<kHnHnHnxHntNvN^,_Nu/,HNVA8-HNp.R@rAHnN/?. N&=@0.N^,_ _N/,HNVA-HN0.F=@2.@=A4.D=B6.B=C8.:zE=D<.8=F0.6=@2.4=A4.2=B6.0E=C8..=D <.,=F 0.*=@2.(=A4.>=B:.<=E&.$-C?<HnHnHnHnNv0.=@ n2.0"n4.2$n6.4&n 8.6(n :.8*n<.:0.N^,_ _#V0/3>| H |"|@H2H2H209> @pf 2<`2<3F"<0<NBNu _<#*#"#&#"_#:3E3_3_ 2/3y. Jg4El: y"8DSEk0 y600 y40Q?"<0<sNBJ_g6 y:( y*8DSEk0 y600 y60QNu _3.N09.Nu _30N090Nu _3634N _"_$_2644N _3:38N _"_$_2:48N _32N092Nu09NAX"_Hi ?<ANA\L|#|3| N _"_$_* g g fH/ NLH/ axLHHi Hj Bg?<VNA LC G 0<gQ|%|5| N _"_/) g g f*JtgJi ka0) k @e??<>3| NAXNu/")x itg$H@//?) ?<@NA LJof _Nu _4` _t6 Bo r aSB`2aNH? _r ar a/L?Nu _r aN _4` _t"x0HgJJjDxvCzp cRЀ`|e W0R"f`6 _4` _t2xJAjDAxvCp0 2H@0RJAfJg<-RBlCSBr aQSCaQN _"_v` _"_60`JfQ$ItRJf` _4v` _46"_JBjtJCkgCe4` BSCr axQSBkalQN _6kfv2_t Cc"4YBv` _6kfv"_t Cc4QBvSBkr a(QSCC" A0 9c^a JgYC`NH "oA/ NL Nu(_"_/ A) g  f$)Jtf&H //?) ?<@NA LJovfNu$ix&i|fa`pRgf#Jx`H")x it#Hxg$H`//?) ?<@NA LJofLNu )f NuHy` Hy0< LNREWRITE required prior to WRITE or PUTDisk or directory full _$_"Wp i e)H/ NL4NH/ NLp)` _"WJ9f*J)f i e)H/ NL i d)J)fJg i dB9J)fBiNz`z _$_"WptvH/ HyaB29XL- -fJf^p`4  fJg*`N0eH  bBԂi\(؄iV؄iRԄiNԁRCJ)f  g i e) 0e 9c~Jg&JgDJf 6Höf4N$NHy0<`Hzh0<N _$_0"Wt&JRJ)f:H/ Hyar29XL i d J)Pf RBBe`Be`N Bad digit in number encounteredOverflow during READ of number(_ _/ C (g ( fXJ(fF$($IJtflH / /?( ?<?NA LJo*fJg  f"J` g  Wf NuJg Jh g J(fPNu!|NuH$hx&h|gpR@@gf!JxL`H &ht!KxJh f(aZLEJ@g *f` R@Bh` / /<?( ?<?NA LJlp!K|JfvL`rH@Hsp/Bg?<?NA LRA3 f@ AgUH@Hzp 3 dp` SAH@Hzp/?<?<@NA L` fSA` fSAH@Hzp` f H@Hzp `~ f4SA`(H@Hzp 3 dp/?<?<@NA LQ`* d,9@HHzpp/?<?<@NA L AfH@HzFp/?<?<@NA L NuHzR0<`Hz$0< LN  p Exit q C^AReset required prior to Read or GetAttempt to read past end-of-file dNuH _ ghedd/L NuHy$`Hy0Nt`t _"_ gR e6G$S" geb"*f&"`&A%S"`&J`а|gb<|fP"9gH$A#`:"9g6$A#`("9g$$A#` @ g"9g $A#"`"Ed&R"$b HyNJgr"Qd2`"SjN _"_ " gheddgR m @ e@E"fB#@B$`p&A"+ef "'I`Z"#@B$`L$K`ư| f"#`4|f"#` |f"#` "#NHeap overruns stackPointer NILPointer not in heapH _0"_e /LNuHy~N/B9 /| NuH _0 @f0"|p` "_J@jpE r4@ BbBS@kQ/LNuH _4SBkt82$_rAbd0 @f0"|p` "_J@jp6ADb6CG0IS@k$eQ/LNuH _4k2SAk0"_p6B@bE0)CS@kQ/LNuH _2$_r0 @f0"|p` "_J@jp@kS@kv &J$IRC4(K Vg RQBg`?/LNuH _4kF2SAk>0 @f0"|p` "_J@jpJBg@b6B@oCE SBkQ/LNuString overflow _pJ.g 0( hNVg4 ( hg( hH`0( hNVg ( hg hHfXgr"ODd2Sk "Sj` _"yde HyNNN#(#$ .f -|>`-|> nNн$f y(NStack overruns heapH?, _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?,Nu0NvDNH,|` H,| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/L,Nu09`Nu09bBybNu _3`NBybNu[3][4][ Abort ]Copyright 1986, CCD and OSS, Inc.    -,   ,  (&( $D   (^ $ . 6 $* $r(*&(  .fx $  8                         2"  &,  2  H   """ ,       L:, "@  *:00 @    2b8B2  $$   N          $$      &0t 4>     P  &>l ,d " 08( x$&.  (  B  2bP6622B 2$2 `2>.R,,hR"j&&$ ,pN*  ,dn&Z::.02:**&>:&D<$F:8&6:$>B&DP>|`>.l, 0H&f@"&, "(."4> @" f,tPdv`  rV"2 * R":d"F:6B.H*6J"*JF ( B4r"" >$8$8rJ" *,JJ0r >>  * ,,  .6   *jV0b,4 "T & & (,& J                "$" BBb42J ^ (*  vbj  "D    * "FV ( *@ B @ ( V  H$ [ Desk File Options Special Personal Pascal...- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 Edit... E Compile... C Compile All A Link... L Run Program... R- Quit Undo Compile Options F1 Link Options F2- Set Source Files F3 Locate Programs F4 Load Options F5 Save Options F6 Copy... +F1 Rename... +F2 Erase... +F3 Print... +F4Link for:Additional Link Files:Link Last Compiled FileLinker OptionsGEMTOSACCLoad OptionsOKCancel_(_(X(_(_(X(EditorCompilerLinkerPASGEMPASLIBPrinterExitLocate Program:PrrЁ49>H°W=CCd 9>v3> (9>3>:91Ee*9>3>,9>3>:9I REH-E3>,.3>29KfAH-A3>$.3> 9>ЀxЄ-@093`?/.Hy> N".ްgAO"O(p'QNZ`Np=@r=A49I &<=8`0.C>A <-r=A`, < v2.tv Cf vtRn nop=@`80.@"< v4.B4&<A810.R@=@Rn no0.@"< v4(&<C830.R@=@@4( 30.R@=@@4( 30.R@=@Rn0."<ްvo4.H-B-B093`?/."<HvNt".ްgAPO"O(p'QNZ09Kf@H-@093`?/.HyIN ".ްgAO"O(p'QNZ0.@eHy3Vp/N 093`?r/Hy>N-@291Ae,Hy3Vr/N 093`?r/Hy>N~-@29I RAH-AHy3Vp/N 093`?r/HnND-@29KfAH-AHy3Vp /N 093`?r/HnN-@Hy3VN rN^,_NuWrite error on output file. (Disk full?)A#)A)C!It0B BA,DBt0B  A3VBXB BAO0B BN$N4p30v291Ad* y2B"92!A "y2>#A $y2:$*#B291AeAQ"O""?<NrA>1091@dp?1?<#N2p/?<NAQ"O""?<NrA>1?<#N2p/?<NADQ"O""?<NrA>1091@e 9OtH°gv #OH°m?<,IN2` ?<,ON2?1AQ"O""?<NrA>1091@d0??@?NA6f"O""""A66"O""""?<NAĞ"O""""?<N$N&9Oԃ#>49OBe$Hy,DNzHz?<N~NzX099J@eN~09O@eHy,DNz?90d?<NHz:?<N~NzXHy,D/9>?<NHz?<N~NzXHy,D?<$N\/9>?<NHz?<N~NzX091@dp#>` 9>#>29OAe8Hy,D?<$N\/9>?<NHzH?<N~NzXHyON HyON rHy3VN rHy,DN rBgNA bytes of data bytes of code words of heap lines of sourceNo errors found. error(s) found.@  dbugini mainexitdbugflagbasepageheap0 heap bssanf /,HNVA-H?<Njp#0lN^,_Nu/,HNVA`-HN409.rAft(/ VHhNB 90lQ#0l"<_vHð\ĄDBd VNx"V i-Hp@rAA"t9/XHԼ//NB n"PE/Xp "Qp!@ !@292R1A$90l!B"V/)N"V i rf ) `$i )%@#@N4 90l-@r#0l492R=B692T=CxDlRB32R` ?<Nj092TrAl(R@32T C2XA-Hp @` ?<NjA"O""""Hn V PN:0.32R2.32T$.#0l"V i&.!C$` ?<Nj?9.Hz?<N0@eb?<Nj?9. V P PHh?<N0@e6C$O$$$$C4$O$$$$?<NN 09.rAgN^,_Nu /,HNVA<-Hp V!@N409.rAfdt(/ VHhNB 90lQ#0l"<_vHð\ĄDBd VN"V i-Hp@rAA"t9/XHԼ//NB n"PE/Xp "Qp!@ !@292R1A$90l!B"V/)N V (rf$(!B`"h$(#B!BN4 90l-@r#0l492R=B692T=CxDlRB32R` ?<Nj092TrAl(R@32T C2XA-Hp @` ?<NjA"O""""Hn V PN:0.32R2.32T49.vCfN409.rAf|A"O"""" VHhN,"V i ( #@rg4$@t*?Hz8?<N4Be?<xNjp V!@"V i!@ N4` ?<Nj` ?<Nj .#0l"V i".!A$?9.Hz?<N0@eb?<Nj?9. V P PHh?<N0@e6C$O$$$$Cb$O$$$$?<NN 09.rAg"V i $vf $) `$i$)%B )#@N^,_Nu  /,HNVA~-H n p ?9.C$O$$$$Cž$O$$$$?<N?<N`2Ae`?<Nj"V"QA$O$$$$A$O$$$$?<NAX$O$$$$?<NN 09.r Af V4(Bd ?<wNjN4?9.Hz?<N0@eD?<Nj"V"QA$O$$$$A$O$$$$?<NN ?9.Hz?<N0@d09.rAf NN`^tBf NN`LvCfx=DN4`x=Dp-@09.rAft/HnNB n-Hp@r9/XHҼ//NB n"PE/Xp "Qp!@ !@2.A492R1B/.N .rf$.-B` n$.!B-BN4?9.Hzb?<N0@e`?<Nj?9. V PHh?<N0@e6C$O$$$$C$O$$$$?<NN 09.rAf N4` n rf . `"n .#@$.-B69.xDfN409.rAf Ah"O""""HnN, n ( -@rg*4.AW"@x)zEWFCd ?<yNj .-@2.tBW(.踂VECd" nC]$O4$NJЀ-@`v-C .rgT @$.!B &90l(.ܖ#0l*<_H\@Fd NN n 90l!@"(-A`N4` ?<Nj?9.Hz@?<N0@e`?<Nj?9. V PHh?<N0@e6C$O$$$$C$O$$$$?<NN ` ?<Nj09.rAfN4?9.Hz?<N0@e`?<Nj?9. V PHh?<N0@e6C$O$$$$C$O$$$$?<NN `09.r AfN4?9.A"O"""""V"QA$O$$$$?<N?<N`0@eD?<NjA"O"""""V"QA$O$$$$?<NN ` ?<Nj n -@r $90l-A691Cd\-A .rg@ @-Ht(vCf$.((Ԅ!B`$.((Ԅ!B$(-B`N^,_ _N   /,HNVA F-H 90l-@r-At=Bv#0l89.zEf<92T A2X/0`HnN .rg @t(vCf*"@)#8. zEWF$@|*"AWC=B`@"@t)xDf,$@*#:. |FWA&@r+"vCWD=B`=A2.Ae ?<Nj`=A0.@e0. rAft*/HnNB`t*/HnNB n-H0. rAf tB`tBtBvC"x9/XHؼ//NB n"PE/Xp "Qp!@ @#1@$292R1A!@&@ !@@!!@/.N` n (#0lN4` ?<Nj092R=@292T=AtBlR@32R` ?<Nj092TrAlBR@32T C2XA-H0.@d"n ) `p p@` ?<Nj0. rAfXAJ"O""""Hn NNd n 90l!@r#0l0.F@$vVD@d "B .#@`lA"O""""Hn NN n 90l!@rYAH#0l0.F@$vVD@d "B .#@09.xDfN409.rAf4.Bd ?<zNjAH"O""""HnN, n ( -@".tg"A#@ g>"@v)?Hz?<N6Ce?<xNj .rg @!A N4`B?<Nj"VA$O$$$$AĞ$O$$$$?<NN `:.Ee ?<{Nj09.rAf N4` ?<Nj?9.Hz"?<N0@d .rgr @-H4.Bd?<NjN4`J49.v Cf xD#"V*)!E&#@N4`x3Dfz1E$A !AN4`Hy/Xz/Hz|/N<2Hy/X/Hzdp/N<6CHy/X/HzDv/N<4BHy/X/?<Ct/N<8DAdr1AHy/X/Hz/N<8Dd8!A?HЁHC> 41=B (HЁH69>((DRCC3H!B (tH°fp@&9>!C=@8( =D` n0.@?( NRn0.no n "V#@`.N^,_Nu/,HNVA>-H 95"91f(Hy5Nx095r `@|??<NN^,_Nu/,HNVA-H 95"92f495vCg~Hy5?N;09O29>AW69589ODWEBd&49O3>"9O#>z3O`$491$BdHy5HxHxBgNO 92#5N^,_Nu/,HNVA-H"V i -HE-J&R-K+@dp5@-@`" n"hE]"O2"NJЀ-@ n/( HnHnN$095rAfd491$Bd*$95&.]*.^ƈFDd ?<.Nj n ("95$.&.//N$@&Ѓ!@` n$(&.(.//N$@(!B$.//N$@$(.//N$@(HĴV$.(.//N$@(,.//N$@,HƸV@ 95(92WƊF=E,(Hf&&(!C&.R,.//N$@,!FEd@V695CBd"Hy5?N;095@H?N2 92#5291$AdHy5/./.BgNO .rHgHy5/?.NN n0( rAf0951@4.1Bv1C `r0( tBfX/Nx n0(2.FAA295A@d095@H?N2 n0(2.A1@0(@d0<Ѐ=@` 0<@=@495B6(x cC?N2?95N n0(35`0(vCoNX/Nx0.@d0<=@` 0<=@ n2(QAt aA295A?N2`RX/Nx0.F@295A@d095@H?N2 n0(r `@Ѐ295A?N2?95N n0(35N^,_Nu/,HNVA-H n -H ( -@r=At-Bvgx(`x(Cf =C`x=Dz-E4(=B&(-Cx=D:.|Ff,r=AHnBgN;p=@r=At-Bv=C`@892V E2XC@-Ix)zEf8)=D|)Ef<")-A=C|=FHnBgN;p=@r=A n$(-B`=C"),(҆-A(@dp=@".t(҂-A`p=@`x(Cf?<Nj`Vx("zEf?<Nj`:(!De ?<gNjp=@ n2(RA=AtYBH-Bv=C` Dgd Dg Dgx?9.A6V"O""""A"O""""?<N?<N`0@eB?<;NjA6V"O""""A"O""""?<NN ?9.Hy6V?<N0@d09.r Af .rg" @t(vCg?<Njp-@N4A"O""""AҞ"O""""?<N VNդ 95rg @t(vCo ?<qNj .rg @-H n/( /92BgN@d VN n/( /95BgN/ n/( /92BgN" $95&92WDA@dL n ( rV (VEDd*095AgHy5?N; V PN> NND` ?<Nj n (-@29.tBgvCf N4` ?< Nj`tBf&.xg" Cz(|Fg?<Njp-@N409.rAf~$.޴gj B/( HnN .rf?<Njp-@`: @-H$( -B&.((ք-C(Ddx=Dz(օ-CN4` ?<Nj`&.xg C-Hz(|Ffrr3OHn?N;091 @d<0.@/?N2?090t@e ?<tNj?<p/NHy5?<NF`\` ?<tNj`>C$O$$$$C $O$$$$?<N?<Bg?<N\ V0(@d0(@d ``j09.r AW6(xDVEBd ?<~Nj 95"91V=B V6(xDWEBd ?<tNj 95-@``0(rAg ?<tNj`0.@d?<Njp=@"VA$O$$$$A$O$$$$?<N IN 95rg4.BdA5C2t"Qt35 n&( #5"Cp)xDf$C * #5N35Q@r `@ W?N2p35"<#5 n(35v#5Hn V PN8A4C""?/92/95BgN@d,0.@dAC""`AC""`/92/95BgN@d,0.@dAC""`ArC""`/92 /95BgN@dJ0.@e?=@r=A"V i$9>!B&( xg/( NN0.@d BgN0.29>AH49>6.CRBBA> 1N^,_Nu/,HNVA 2-Hp=@ V2(t'BW=CCdC$O$$$$C $O$$$$?<NN 95rg/95N@dv y5/( HnHnN$090t@e ?<tNj?</.NHy5BgNF095@B?N2Hy5?<NF`` ?<tNj`C""`A&C""`"VA$O$$$$AB$O$$$$?<N QNդ 95rg/95N6@e ?<tNj V PN0.@e ?<|NjHy5?<N;0.@dAvC""`A^C""`$.&92f`8.Dd,8.DdA"C""`A C""`(8.DdAC""`AC""`r(92f`:.Ed,:.EdAC""`AC""`(:.EdA^C""`AFC""`:.Ed6?=AN=@ V2(tBfv `@p?N20.@2.A4.v bB?N20.2<0AW6.8< DWEBd4.BH?N20.@295QAt aA2.A?N2 ."<l(4.BQ?4.69>CSBB?N`&4.BS?4.69>CBBj?NAMCKl0<"QN^,_Nu/,HNVA$-H V0(rAfC,E$$t=B`CE$$t=BC$O$$$$Cڞ$O$$$$?<NNל 95rg @t(vCfzHy5?NF095Q@r `@ ?N2091@d&BAQ"O""?<N?N`0.H/?<N?95N` ?<}NjAMCKl0<"QN^,_Nuheap basepage/,HNVA-H"VA$O$$$$AĞ$O$$$$?<N QNդ 95rg @t(vCfnHy5?N;095@#?N2091@d&BALQ"O""?<N?N`B?<N?95N` ?<}NjN^,_Nuheap /,HNVA-H"VA$O$$$$A$O$$$$?<N QNդ/95N@dNKz y5/( HnHnN$090t@d p-@` .".R-@?</N?t BfCE$$`&vCfCE$$`CE$$BAQ"O""?<N?NN35 V2(tBlv `@0?N2`v `@ ?N2 V0(rAn$92#5`~$92#5N^,_Nulround ltrunc round trunc /,HNVA-H 95rgz V PN 95"92g ?<}Nj095@??N2?09.rAf N4` ?<Nj"VA$O$$$$AԞ$O$$$$?<N QNդ V PNL 95rg,$92fHy5?<N;` ?<}Nj09.rAf N4` ?<Nj"VA$O$$$$A*$O$$$$?<N QNդ V PN 95rg,$92fHy5?<N;` ?<}Nj?0.r"VA0tAB\r0xZD_ECdr0A Rn no?U-@4<H°m?>HHR\Hfp4zR44pT`jj44t~H>`D?Hz?<N2AerA_xDWņECdDC$O$$$$CT$O$$$$?<N?<?.Bg NN8`fvCg8C$O$$$$C$O$$$$?<N VNդ0.rA]vC^ĄDBdHy5BgN;0.` NN`` NN`V NNJ`L NNd`B NNX`8 NNx`. NN<`$ NN~` NNf` NN` NN` NN˔` NN̶` NN͔` NN~` NN(`?< NN2` NN` NN` NN`091@d p=@`p =@ NN`x091@d p=@`p =@ NNƨ`RS@ @bH@0;N$$8.BLV`jt$$$0.@d$09.r Af N4` ?<Nj` NNN^,_ _N8 mainexithalt goto /,HNVA-HN=@N=@2.t aA ?N20.r `@0/??<N?<.?<N?`Z n/N6@d n "92W=B/?<N;?0<@=@`20<@=@`&0<@=@` @g @g @ g @gX/Nx0.@d0.@@=@ n 0(r `295A=@4.@?N2?95N n 0(35`0.@d09> @dXX/Nx095@L? n 0(r h@?N? @dbX/Nx095@L@?095@ n 2(t iA?N?95N0.rAf n 4(35`Hy5Nx n 0(@/?N2095@/?N2?1@?95N n ?(N0.35 n29>0` $92f0?<0.H/N??<0.H/N?!D<9>1F295AF@?N2 n09>0`xx DW//95N6,@FdH 95"92f 495BF@?N2p35`495BF?N2`?<Njp#5`>Hn VN`0 @ b(@0;N*HHR?9.Hn ?<N0@eB?<NjA "O""""A6F"O""""?<NN ` 95"92W691CBdx495xDg^Hy5?N;095@dD09>3O"9>#O495BH?N20953O29>3O 92#5N^,_ _N./,HNVA-H 95"92W V&(޶WĄDBd4$92f8(Dd8(DH?N2 92 V!@ ("92f t@=B` 4<=BC5-Iv3C() HøgTX/ "n/) (92W?NN V ("92f$ n/( HnNM@e np1@ n"V ) r1AN^,_Nu/,HNVA-HA "O""""A"O""""?<N NN09.rAfdA5C2t"Q49.=BvCV:.CVƈFDdHn?N;N4A "O""""A,"O""""?<N NNz?.Hz?<N0@dHy5BgN; .rV&95ضVDBd4.`l/.N6//95N6" A@d0.rAf`495AV//.HnNM&@CdDSBB=BzEl?<`?N`<<`FB?N2`?<`?) N n09>1@ `(` $)-B`\ .rg @-H4&9.H´f$( Hf@49Kf8<Df?<Njp3Kf` RB3Kf n09KfH!@ 0(rAf?=@29.t2Bf N4` ?<4NjAKlC0<"Q"VA $O$$$$AF$O$$$$?<N QN09.r,Af?<`BgN09>=@2.49>BH6.CR@@A> 1N4091@dNAKlC0<"QACKl0<"Q"VA $O$$$$ QN0.29>AH49>6.CRBBA> 1CE0<$Q`,4.69>CH89>:.ERDDA> 1(HyKlHnN.N^,_Nu /,HNVAV-H V0(@d*0.@2(A?N2/. ?<N`0.@@2(A? . ?NN^,_ _\N/,HNVA&-H V (-@ n "V")䰁g -@`?< "V i/( INP?=@?< n/( VN*"V i0(29>AS@@=@tBm6<C@o?N2`?AH4.AHA> 60(49>8.DBB1"V )$)谂f&)#C`,-@ n "V")谁g -@` n"V ) N^,_Nu/,HNVA -H"VA $O$$$$A ڞ$O$$$$?<N INHy5BgN; V PN+095=@HnNx?.NAKlC0<"QAC0<"Qp=@?<`BgN09>=@"95-Atg2 Av(xD^&92 WƊFEd?<Njp-@ ."92W=B69.x.Df N4` ?<Njp-@r-At-B09.r7AVv,CVDBd2"VA $O$$$$Az$O$$$$?<NHnHnNR .rg/./.BgN2.$.&92WDA@d .-@r-A .rgB @-H$(&.ִn$(f ?<Nj` .-@ n"-A`p /HnNB n-H . ".!A49>1Bv1C(.踃f *-E`"D*"` ?<Nj`lN409.rAf ?<Nj .rg?<Nj`4t /HnNB n-Hp !@29>1A1@$-B09.rAf N4`609.rAf N4` ?<Nj091@dNACKl0<"Q"VA $O$$$$Ap$O$$$$?<N QNHnHyKlN. .rg?<`?.N09>=@09.rAfN409.r+Af``Xp=@".tg A&(-C-A-B n -@". $-B-@rf6.89>DH:9><.FREEA> 18=A&.zW=BBd=Et-Bz=Ep=@(.-D-D n -@rgr$.R-B @6(8.ĶDW"@&)WFEd6.RC=C`66.zEm NN .-@ @2(=A"@$)-Bv=C`4.vCm NN .rfb .rg-@=A0.R@=@ n"(-A$-Bvg B((X^=E2.WĂDAd2.Cg(89>DH:9><.FREEA> 1=CrAll?< n/( NN n0(29>AS@@=@tBm6<C@g?N2`?=@2.A@?N20.r `@0;?0.r `\@?N?=@".$.ʒ6=@` ?.N .R-@` n0(2.A@?N n -@".R-A$.ంfz` ?<Nj`0.rAg`$.f,69>CH89>:.ERDDA> 1`(69>CH B8(:.ERDDC> 3`L$.gB B6(89>DSCC=CzEm<<FC`?N2`?<`?N090zrAf4.BdJ0.rAg>49>BHA> 60=C0.BH89>:.ED1=C`0.rAg@49>BHA> 60=C0.BH89>:.ERDD1=C`09.r+Af N4` ?< NjACKl0<"QN^,_Nu@ /,HNVA6-H09>=@AMCKl2<"Q291AdN"VA $O$$$$A$O$$$$?<N QN?9.Hy66?<N0@e09.rAf N4`09.r-Af~N4"VA $O$$$$ INNK0.29>A@=@tBl?N`.69>CH89>CHA> :0H@@1` ?<5NjN^,_Nu /,HNVA`-H09>=@291AdNAMCKl0<"Q"VA $O$$$$A$O$$$$?<N INNKBgN09>=@29.t/Bf N4` ?<6Nj"VA $O$$$$ QN?<`N20.29>A@=@tBl?N`.69>CH89>CHA> :0H@@10.29>AH49>6.CRBBA> 1CMEKl0<$QN^,_Nu /,HNVA L-Hp=@29.tBfA v"O"""" VHhN,"V i-H ( -@r=At(vCW4(:92REWFDd =C4(=B((-D|=F`?<Njp-@r-A @-Htgbv(xD^&92 WƊFEd?<Njp-@`0z(Df$:91$Ed/HnHnN$p=@N4`B?<Nj"VA $O$$$$A D$O$$$$?<NN /./92BgN=@@d p=@`p=@29.tBf~N4"VA $O$$$$A$O$$$$?<N IN6/./92BgN@d VN+ 95rg @t(vCo?<Nj`/./95BgN//./92BgN" $95&92WDA@d0.@d8095rAf*(95*.ȸ]$.̸^ÌCFd ?</NjHy5BgN;0."95$92WC695C@d095@H?N2 V PN+Hn?95NF` ?<Nj`B?<3Nj"VA $O$$$$A>$O$$$$?<NN ?9.Hz?<N0@d09.=@N4"VA $O$$$$A$O$$$$?<N INT/./92BgN@d VN+ 95rg @t(vCo?<Nj`/./95BgN//./92BgN" $95&92WDA@d095rAW=DDd(95-D`Hy5?N; V PN+0."95$92WC695C@d095@H?N2095=@A5-H". t1Bv1C 892R1D 1CBf0*90l!E<.Hچ#0l"V"Q )캀o#E`,*90l<.Hƚ#0l!E"V"Q )캀l#EHy5?.NFAMCKl0<"Q?<`BgN09>=@29.t/Bf N4` ?<6Nj091@dN0.@d\0.@d?<?./.N&t=@`?<?./.N&t=@Hn/./.?<NO?.N"VA $O$$$$ QNp=@2.Ad2AH49>6.ԔCRBBA> 1CMEKl0<$Q0.@d09>=@4.Bd4< =B` 4< @=B892RzEfB9?/.N"|`\B?/.N"|0.R@29>AHA> 400<@6< CW=DDd 4.VB=B4.J=B89>=D:.TE=E`40.2.A49>BH6.BHA> (08!Sn0.İnl29>4.B3>&9>8.Hք#>:.Edf:.TE<9>FH .tA> 1X0.V@FH*.10.T@FHzC> 30.V@FH3`::.TE<9>FH .A> 1X0.T@FHzC> 3`CMEKl0<$Q09>=@HnBgN;0.@d0<=@` 0<@=@292RtBf,@96.x cC? 90l6.HÐ/N"|`\@6.x cC?/90lN"|092RrAf$90l6.HÔ#0l`$90l6.Hԃ#0l?.N0.r0Af4DSCC=CzEl??N`BC?N2` ?<Nj`H?<7Nj"VA $O$$$$A,$O$$$$?<NN p0=@N^,_Nu  /,HNVA-H09>=@291AdNAMCKl0<"Q"VA $O$$$$A$O$$$$?<N QN?9.Hy66?<N0@e09.rAf N4`09.r*AfN409.r"AfN4"VA $O$$$$A$O$$$$?<N IN^Hy5BgN;AO-H 9>!@29>1A495BF@?N2 n09>0`B?<8Nj"VA $O$$$$Al$O$$$$?<NN NKBgN09>=@AMCKl2<"Q"VA $O$$$$A$O$$$$?<N QN?9.Hy66?<N0@e09.rAf N4`0.29>AS@@=@tBl?<`?N`6<`C@?N20.29>AH49>6.CRBBA> 1` ?<9NjAMCKl0<"Q09.r+Af N4` ?< NjN^,_Nu  /,HNVA-H092T=@"90l-A09.rAf(A"O""""HnN,N4`?<Nj 92"-@"VA $O$$$$A0$O$$$$?<N/. IN0p 95rgL @t(vCf2492TxDlRB32T E2XC -IE5-J&R$+ "tB:* AW:* 092R@WCFdA6* 3C&*#C`Hy5?NF 95-@r=At=B692R=CxDf*90l-E`*90lY-E|=FHn?95NF np@292R1A@f$90l!BX#0l`$90lY#0l!B` ?<Nj` ?<Nj09.rAf N4`092RrAf$90l V P&(촃o!B`$90l V P&(촃l!B69.x/Df N4` ?<6Nj"VA $O$$$$ QN0.32T".#0lN^,_Nu /,HNVA-Hp3529.tBf?<Nj`6`ZvCfRAMCKl8<"Q(92F-D . V P"(g"@-I4&9.H´f4)Bd?<Nj`$) xHĴg$) B*9>EI % 4) DgT n0( 29>AHC> 41H#.0( AH69>8( DRCC31B 0( tBf n09>1@ 291AdN np1@`` $)-B`?<NjN409.rAf N4` ?<Nj?9.A "O""""An"O""""?<N?<N`0@e$?<NjA "O""""N ?9.A66"O""""A"O""""?<N?<N`0@d09.`A"O""""HnN,N4 ."92"fA "O""""N `8 @t(vCf C $O$$$$/ NN` / NNآ`N4 NNZ`N4 NND`N4 NN`N4 NNߌ`N4 NN`rN4 NN|`bN4 NN`RN4 NN2`BN4 NN`2 @g@! @b@0;NRrb?9.A "O""""A66"O""""?<N$?<N`0@e$?<NjA "O""""N N^,_ _N</,HNVA-H092RrAf491Be V$(#>C5-I$y2-J3Av3C 8*3D (*#D3C(* "Hy5?NF?"<o ?<Nj091@d0?CHxC> 3(0(49>BH&(C> 3&P$k * vg"V"Q i $h G]$O4$NJrHf?< .pY@?N`L"V"Q i ( $92 f$?< .pY@?N?<2.?N"V"Q i (D/NQ VN*090zrAW699JFCCBd49>69>CRB3>`3>r3>t3Khv3Ox3ON^,_Nudbugend close /,HNVA.-H0. rAA\vZC_DBd@ =@`=@0.N^,_ _TN/,HNVA-Hp=@`f0.r. Aot A`D491,Bd&/rA 0? VNd$ A`tA 0CRn noAQ"O""?<NH V!@N^,_ _N/,HNVA-HAC0~ p Qp30|2<'=At=Bv=C0.rAg\"V i4H…=B6HÇHC06.AVĆDxDWņE=CCd6.B0E0~0RC=Ct H=@`?<NjN^,_Nu /,HNVA-H V (rgD"@-I) Be$$QG0~t &Qt30|?<uNj n (&"V#@` 90l-@r-A492RvCf891Dev89>D*9>AI !@?=@?<#N2p/?<N/92X NN* /92d NN* 091@dN` V(( zg"D-I<91Fdx=C0.r Alh491,Bd nt(vCWDtl"PzR@@\FH n"P0.R@p? NNLPF n"Pp2.A_BBB"PpA\BH( n"P0.r? NNzLHB n"Pp2.A]Bp bB?N` nt(vCWDtl"PzR@@\F"P0.R@pF"Pp:.E_FFF"PpE\F"PpHF"PpE]Fp fF?N0.T@=@` n0(rAfR091 @dF"P$Op $Q NN .C>A-H 9>r1@ 9>1@ np@ "(tH²g"(A&9>CI #"9>!A691Cd ? Bd?=@?=@?<-H?CH89>:.EDTDA> 1(49.v+Cf N4` ?< Nj 92F-@ . V"(g&"@-I4)Be NN| n (-@` .-@292RtBV891FDDCd .rg @-HC5-It3B692R3C (91"*(#E3A 3AHy5?NF?`?9.Hz?<N0@e$?<NjA"O""""N ?9.A66"O""""A"O""""?<N?<N`0@dp30x29.t6Bgv!Cf N4` ?<NjA"O""""A8"O""""?<N NNL09.2.AgX?<NjA"O""""?.?<NA̞"O""""?<N?<NN ?9.A6f"O""""?.?<NAx"O""""?<N?<N?<N`0@d` ?<NjN"9>lN#> .#)N^,_ _N@ @  /,HNVA-H <-@r=A`v0.&CKlA-Hp(rAf&0.=@tBv(9>!D``*pAf ($.l0.=@&(-CRn no ."<g44.=B&CKlA -HtBv(9>!D`"?<NjAMCKl0<"Q0.N^,_Nu/,HNVA-H <-@r=A`v0.&CKlA-Hp(rAf&0.=@tBv(9>!D``*pAf ($.l0.=@&(-CRn n o ."<g*4.=B&CKlA -HtBv`"?<NjAMCKl0<"Q0.N^,_Nu/,HNVA~-H0. rA\vC_DxD\| F_AEBdR&CKlA-HprAf` pS@pAfp(tBfA 9>!@N^,_ _TN/,HNVA-H n 0&rCKl1p@of2tBn&N&=@ n 2A t `@?N2`$N=@ n 2A @Q@t `@?N2 n ?N n 0.00&rCKrN^,_ _XN/,HNVA-Hp=@`0.&rAKr0p@fv2.&tCKm12.A\4.&EKt(2 $. WECd8v=C8.&:.&|GKl3PRF@(n8.8`Rn nodp=@0.N^,_ _ N/,HNVA-HHn?./. N@d0.=@`N=@=@&rAKr0.&$. CKt#0.&EKmpH\xHĴ_ECd"6.z cCp:<EB?N2`V6.Af(:.| eE 0.rAn4.B??N2`4.B/?N2?.N`0.rAn.$. vHôf? Dd(8.D0??<pN/. ?<N`4?</. N=@2.A0?r h@?N?.NN^,_ _\N/,HNVAv-H n /Nd _00.rAf4v bB1=B`F492RBf6x cC1=C`(?.N<=@ n 2t aA1@=A?N0.N^,_ _\N/,HNVA-HHn?./. N"@d0.=@`\?.HnN6?/. N@0.=@&rAKr0.&4.CKs0.&&. EKt%0.N^,_ _\N/,HNVA-HHn?./. N@d0.@/?N2?.N`Z0.rAf40.rAn4.B??N2`4.B/?N2?.N`0.rAf,Bg?./. Nx=@@??N2?.N`ttBf6 Dd(8.D??<pN/. ?<N`4?</. N=@2.A?r h@?N?.NlN^,_ _\N/,HNVA-H .". ЁS-@t=B`0.&rAKr0p@fx2.&EKlC-Ir=A0. nr(AnH". tH²W0(8.D]ECd `` n0.0(Dg0.R@=@` n0.T-H"np)vCf (R-@`&p)zEf (V-@` (-@*.,(\,.$(_D_º\DBAdb n0."np)TT0 np(S@@p(rAfpAf A`p@` 2.RA=A`Rn n obN^,_ _ N/,HNVAf-H0.rAf4<=B`tBf6<0=C` 6< =C4.vCf8.D=D`B892RDf:.E =E`&?.N&=@2.Q@t `@=A?.N0.2.A?/.N?././. Nh0.&CKlA-Hp(rAf`p(4.BWp(xD]ECd:p(R@@p(0.1@ np( .!@`$p@A4.B6.1C(.!D ?.NN^,_ _N/,HNVA-Hp=@` n0.&-Hp=@r("n 4.&t)Bf*r(`r("n 4.&t)BV=C`"("n 4.&$)f@r=Ap("n 4.&t)Bo"n 0.&p)@`r("n 4.&t)BV"("n 4.&$)VĆD=C`Zr("n 4.&t)Bfr=A0. nr(AnT-Hp=@r=A"n 4.&t)=B`\0. n2"n 4.&4.4)BW"("n 4.&4.$)WDC=@Rn0.no2.Ad2.RA=A`8 n2."nr)TT0 nr(SAA` np(rAW=B`SA AbA2;Nn0.@d,"n0.&0.&GME2p"QpRn n o\N^,_ _PN/,HNVAV-H n0r An/N n 0r An/N .@d" n 0Q@r `@0"n2A?N2 .-@rHgtH°nBv=C=@`& n 0Q@r `@ "n2A?N2Rn0.no`&<n?< .S/Nx=@`?</.Nd=@HnN n 0Q@r `@ "n2A?N2 ."<n4.BQ??N=@ n2(A @Q@t `@?N2 n?(N n0.1@0(@dN=@ nr1A$&91gt `@p?N2 n0(@2.t aA?/(N n?(Nz V0( @d(0.@??N2 np1@?.NL`"n0.3@`"V )rHn04) Be"49OBdN =@` N=@ V (rHfJ4( Bd"n4)B>?/)Nd`"4.v bB/"n6)C?/)N@`x4( Bd"n4)B.?/)N`T49OBd(4.QBv bB 8"n6)C?/)N`"4.v bB"n6)C?/)N n?(N$ V0( @d"np3@`"n0.3@`$(vHôg$(((HĴfFN=@ n2(A1t `@? (?N n?(Nߨ n0.1@`4X/N" n0(r `@?N2 n/(?<N V/("n?)NnN^,_Nu/,HNVA-H n-H"P-I rgp1@4(`j-A n/N nr(tBWÀC@d"n ) -@$@-J2* vCn2. Ae/ Nܴ"_3@`r3A n(@d0( rAf0<0=@` 0< =@4. Bd@=@`4)v bB=@$(&9>U-B8<HĴlRN0=@r `@ H!@`J0. @d?H!@`N6=@ n(AdQ@r `@A=@"($9>U-A6<HòlRN=@r `@ H!@ n0( H/?. NNt`` nC]$O4$NJ-@rH^=BHf =A`v=C nr(vCW"n"*92 VFDdR2. Ad?./) N`4/ ?./) N"_3@0)&rAKm0p@W3B`"(91f02. Ad?</Nޞ`/ ?<BN~"_3@`p"fhE ]&O6&?/Nn2Ad?</NT?<BNJ`2E ]&O6&E4$?<2.H/N"?</.N`^ nC]$O4$NJ-@ n2( `lr3O4. Bd ?<?( /(ND np1@`/?<?( /(N _1@`: NN^`0 NN,`& NNV` AbA2;N`4. 6(xDVE/ nC]$O4$NJ$rH_CBdZ nC]$O4$NJrHf n0(@??N2` n0(@/?N2 n?(Nٴ` Bg Bg BgT np1@p3ON^,_ _\N/,HNVA-H"V i-H$P-J )rHnz4(Bd t=B`tH°f =B`=A2(Ad r!A`rHf t!B`t!B?) ?.?( /(/(/(NP``"V i?( HnNF? n/(NLp V1@/(HhHnNZ?.Nؖ"V i?( $n/* )Ѐ/NN^,_Nu/,HNVA-H"V i-H$P-J0(@d|"V i?( $n/*NB=@ n2(t a=A4(Bd A=A"V4) BQ@v `@??N?.N V?( N n?(N`L )rHn"V i?( $n/*N=@ V"(tH²f6( C1Q@x `@?N2`6( C!Q@x `@?N2 n0(r `=@2(Ad @=@?N?.N0 V?( N& n?(N`"V i?( $n/*N=@N=@ n2(t a=A4(Bd A=A4.BAQ@v `@??N n?(N֬?.N֤p=@ V/(HnHnNH?.Nք n (rHg?( /(/(NN^,_Nu/,HNVA-H"V i-H$P-J0(rAl>N*=@ n2(A @Q@t `@?N2 n?(N n0.1@0(@d<"V0) @2(QAt aA?/(Nz n?(Nվ V?( Nմ`"V )rHnVtH°f6<0=C` 6< =C8) D:(QE| eE?/(N n?(NZ V?( NP`\$(vHôg&X/N n0(Q@@A?/(Nܰp=@ V/(Hn"nX/ N n?(N n (rHg?( /(/(NpN^,_Nu/,HNVA-H09>=@ n-H"P-I"tg nC]$O4$NJ-@ n2( `@?. ?<?( /(/(r/N`: NN`0 NN`& NN` AbA2;NN^,_ _\N/,HNVA-H n-H rgx0(`2 n/N n"Pr)tBWÀC@d<"h -I0. @d p=@` NҞQ@=@ n(Ad"($9>U-A&(8<HĶ]=EEd(NP=@r `@ H!@`0( `0. @d?( /(Np=@` n?( /(NZQ@=@`0. @d p=@` N&Q@=@ n?( HnNڔ? n/(Nٚ0. @d0.@Hh?N2`0.@A2.t aA?N2 n0(r h=@4(Bd @=@?N?.Nњ n?(Nю`0. @d p=@` NpQ@=@ n"(tH²gX/N n (JjDr Hl (tH°oB (vHðf0(@P?N2`0(@P((z dD?N2`> (vHðf0(@Q?N2`0(@Q((z dD?N2`N0(tBl0(v `@м?N2`0(Q@v `@?N2 n/(?<N0. @d, n0(@/?N2 n?(N6p=@`V n0(rAl,0(@ @4.v bB?N2 n?(N`0.P@?N n0(Q@=@` @b@0;NH8H` @g @g& np1@1@ r!A4.Al v1C`PB1BN^,_ _\N/,HNVAB-H095rAgHy5?<N4`495B/?N2?95N"N^,_Nu/,HNVA-HHy5BgNAO-H029>AW=BBd (#>4(3> 95rg$91g ?<NjAKh-H029>Af?95NΆ n0(29>AHC> 410<_@=B6.Cd6(AHB38`JvC`b4NȖ=@2.Ad2< =A` 2<0=At `@095@?N20.@d| .rHg$4.v bB?N2/.?<N0.@ ?N2 ."./?<N? 6<Hð_DBd?4Bd ?<fNj?<mNj`|/.N@d?<Nj np!@ `T n (-@"(-Ao ?<fNj .rH\&.8<HĶ_EBd n!At0N^,_ _ N/,HNVA-H?9.Hy6?<N0@eB?<NjA"O""""A6"O""""?<NN ?9.Hy6?<N0@dt09.r Af492T=B092T rA2\0p@g292TSA32T`p/HnNBp-@r=AN409.rAft/HnNB n-Hp@r9/XHҼ//NB n"PE/Xp "Q .!@ ".!A4.H!B/.N0.R@=@".-AN4` ?<Nj?9.A"O""""A"O""""?<N?<N`0@e@?<NjA"O""""AJ"O""""?<NN 09.rAg n-HT-H"nt2B#BvC (.#D :.<<Fn !B0`!C00.32T29.x Df N4` ?<Nj`tBfA"O""""HnN,N4 n-Hp(rAf/( C]$O4$ NN`f ( -@$91W89.z EWFCd@N4A"O""""A"O""""?<NHnHnN ."92f$.vHô_:<HŴ^ƈFDd?<NjpP-@ .rPHgt/HnNB n"y1$i p Q nE0 p/HnNB n"y1p Q n-H .!@ ".RH!A".RA1A` ?<Nj09.rAf N4` ?< Nj`RA"O""""A"O""""?<NHnHnNl/.A]"O2" NN$ n . ?9.Hn?<N2Ae$?<NjA"O""""N ` n p N^,_ _N@/,HNVAd-H V P0(@e:"h-Ip)rAf A` ) gp$i 4*B@$PC-I )R#@p2N^,_Nu/,HNVA2-H"V"QA-H$n-J0)".tH²WC@d06. CxDo NN< n"n )Ѐ!@p@2A24. BvCf")R#Ar2`2B2A ]"O2"NJ"<m?<Nj np!@`p0Bg NN n"n )Ѐ!@p@")H@@A ]$O4$NJLҀ#A )"<m?<Nj np!@N^,_ _ N/,HNVA -Hp-@r-At=B n v0?9.C$O$$$$C N$O$$$$?<N?<N`8De@?<NjA"O""""A "O""""?<NN 09.rAfR$.-B09.rAftt/HnNB n-Hp@r9/XHҼ//NB n"PE/Xp "Qp!@ ".!A$.-B/NN4` ?<Nj?9.Hz ,?<N0@e@?<NjA"O""""A"O""""?<NN 09.rAf N4`09.rAf N4` ?<NjA"O""""Al"O""""?<NHnNk .".gl @-H$.!B vg,"B-I$n 8:E4/G](O8( NNV`"V()!DCp=@".-A n$(-B` .-@29.tBfbN4?9.Hz?<N0@e@?<NjA"O""""A"O""""?<NN `p-@ .rg" @-H$(-B&.!C-@-B` n . 29.t#Bfvv/HnNB n-Hp@r!A !A!A0"n$"N409.rAf30pA"O""""HnN,p30p".tg A&( -Cضg~"Cx)zE_//.N,@FdJ 92 ".ذf?<mNj`/.N@d ?<nNj n .!@` ?<nNjN4`v/HnNB n-Hp9/XHм//NB n"PE/Xp "Qp!@ !@rA/.NN409.rAf N4` ?<Nj09.rAfAH"O""""HnN, n ( -@rg"@t)vC_//.N(@Dd~ 92 ".ذW&92WĄDBd?<mNj`/.N@d ?<Nj n .!@ "n"#A #@/$@G](O8( NN` ?<nNjN4`@?<NjA"O""""A8"O""""?<NN `@?<NjA"O""""A"O""""?<NN n$VCT0 09.r.Af N4` ?<Njp-@"VAE4$AE4$p-@A"O""""AZ"O""""?<NHnHnN n ( rg& n/(/.BgN@e ?<oNjp/HnNB n-Hp@".!A$.!BC0 nv0(.-D-D29.tBf N4`.09.rAf N4` ?<Nj09.r Af N4` ?< NjA"O""""A2"O""""?<NHnHn VHhN V0(@d ?<lNj n 0"V2)ԀA0 )".а^°W8):.θE^FCBd.$<m?<Njp V!@"VAE4$ .rg4 @$(-B"@&.#C$@(VGT4$$@(.%D -B`09.r AfN4?9.A"O""""A"O""""?<N?<N`0@e@?<NjA"O""""AȞ"O""""?<NN ` ?<Nj09.rAf8A$VC2"N409.r+AWv CWĄDBd``A$VC2" n .!@`.&.xg""Cz)|Ff $n$`$n$N^,_ _N@      /,HNVA-HN409.r.Af N4` ?<Nj"VA$O$$$$HiNk V/(/91BgN@d 91 V!@`p/ VHhNB V (rg "V iE]&O6&NJ V!@"h-Ip@"(#A t26(C)Dd$A(*zHŸf !B`ET-I4<xH…*(Hԅ#Bt2,) <m?<Nj np!@ V (2<Hn"n$)6<Hԃ#B$(vg""B8Dd?<lNj"V ip!@ N^,_Nu/,HNVA J-H?9.Hy6v?<N0@eB?< NjA"O""""A6v"O""""?<NN ?9.Hy6v?<N0@dp-@?9.Hy6?<N2Ad$A"O"""" n / NN`:29.tBfPv/HnNB n . "@-IrAt#B 2T-I#A2N409.rAf490rFB30pAT"O""""HnN,p30p".tW890rDCdlv/HnNB n-Hp@r9/XHҼ//NB n"PE/Xp "Q .!@ "92!A$.#2`8 A&( g,"A$i 6Cd?<lNj`$n&A&+ %C N4` ?<Nj`vCfpx=DN4?9.Hy6&?<N0@eB?< NjA"O""""A6&"O""""?<NN `x=D09.rAfN409.r Af N4` ?< Njp-@p/HnNB n-Hp@".!At!B 6.C(-DC$O$$$$CN$O$$$$?<NHn NN\ .rgj @t(vCnJ$92 f?<mNjp-@`(92f?<Njp-@ n!@ `?<qNjp-@29.tBf N4`09.rAf N4` ?< Nj09.r.Af N4` ?<NjA"O""""HnN .rg @TC2" @-Ht(vCV$(HWEDd4(H-B`=A n-H (-@".!A"A40$( vg/( HnHnN$0.@d np@".$.֒Hl?<Njp-@`".&.ږR//N$@&-C .r//N$"-At//N$$=BA]"O2"NJ"<m?<Njp-@p".//N$"-At=B` .".֐tH°] <HA]"O2"NJ(L //N$(".$.֒R_ņECd?<Njp-@`0A]"O2"NJ".$.֒R//N$@"-Ap=@ nrA nCT0 .-@".-Atf*`tBfNAN^ _TNNV/./. ?.?<?NAN^ _ N/,HNVAp-HHy,DNzX091@d,Hy,D?90d?<NHz>?<N~X`(Hy,D/9>?<NHz?<N~XN^,_Nu /,HNVA-H"V i0$i2An(&i 0p+3@2RA0r AV=B`09O@d6N@d*099J@eHy3VN ?<?9ONp=@"V i/$V"j?Hx&j / N _0$V"jp22tBn&j?Nz"V ip0r=A0.@d(N^,_Nu/,HNVAN-H NN n0rAV0.v CWDBd6 NN091@d V PNB090dR@30d n2RA0` n0rAV0.v CVDBdHt B]zEWƈFDd=B090h4<BlR@30h8.C/ NNH` n0rAf*p9N49OBdHy9NNZp3=091@dL V PNzp=@290h=A`&0.Hy,DrA/0?N\XRn0.noN^,_ _N/,HNVA0-H090j290hAl R@30jtA/03/`AfR@30jt 3/`49=Bd499RB39`499RB39490dRB30dv30hr30jp 3/899zEf<<30j`Z<9=Fd*Hy9Hy9Hy9Hy9Hy9 NN`&Hy9Hy9Hy9Hy9Hy; NN~091299HA@dNN^,_NuNV?./. ?<=NAN^ _\N/,HNVA0-H V PN09/raA\vzC_DBd @3/?Hz0?<N4Bd=@ V PNH0.rSAWvUCWĄD89/z0E\F|9F_ABdr#O 9O//< N$@ 29/HЁtЂ#O V PN09/r0A]v9C^ĄDBd4.xUDf*9OD#O:90vEd ?<Nj`0.rIAW69/x+DVEz-EVF|=FV@Bdp=@`0.r ARn n@op=@r=A09/r Af V PN `?9/Hz?<N0@d@0.R@=@29/At\Bfv=Cv.Cfx=D V PN`0.@e@0.R@r.A0.T@tP0.V@vA0.X@xS0.X@=@0.R@rA09=@d?<Nj`09/r}AW699xDW<90j0<@WAEBe VN``n09/r*AW699xDW<90j0<@WAEBe VN|` VNt09/r)AW699xDW<90j0<@WAEBd VN@0.@dN099rAf8?<Nj099J@eHy3VN ?<?9ON` t3=N^,_ _TN/,HNVA-Hp3.r3.t V1B V0(rAV69/x0DVńEBdR@1@t Bn@DC3Nz?9/Hy6?<N0@e V0(=@r#.t Bo?<Njp V1@r=A=@` 9."< ̰]°W8.D"VA:0@xD]FCBd&$9.Ђ4.B60 HЃ#.`$?<Njp#. V2(4.B=ARn0.nox"9.4<H²ov3.` v3.x V1D:9/|.FfNZ09/r.Aft:3/`t)Bfv]3/`/9.N A.0 v3.?Hy6?<N8De?<Nj`np?N~A.]"O2"Nz29/t0B?N&NrA.0 V2(SA1AN?9/Hy6?<N0@e0. V2(AS@=@09/rEAWveCWĄDBd4(xDf /9.N C.2"z3.1DN09/r+Af VN`t-Bfv V1CNp V1@?9/Hy6?<N2Ae?<Nj`< V0( 29/t0BA1@N?9/Hy6?<N0@e V0(@d0(2(A1@`0(2(A1@0(rAg64.@JBjDBv&Co?<Nj`Alt1BD@1@`1A2(Adp V0(r&Ao2C.]$O4$?N~NC.2"@1@`A.]"O2" V0(?N~NC.2"`?N~C2"?Cfx 3. NNZ` x3.`~ NNDp 3.29/t=Bfv 3. NN ` v 3.`D NN N09.rAV&9.xHĶ]ńE:<HŶ^ƄFBd ?<Njp3.`29/tA8>03.|C813. NN`?<Nj NN~`` B0m B9o BAm BZoTB" B b(B4; N l4lTB BbB4; N PtPP B!g< B#g4 B$g,BA BbTB4; N N^,_Nu~~/,HNVA|-H .rgb @"P/ t/Hy/X/N<6Cd `>`8"@$Q/ /Hy/X/N6Cd$@&*-C` $@&*-C` n . N^,_ _PN/,HNVA-H092T=@`0.32V A2X"0-A .rg @"P/ t/Hy/X/N<6CdP"@v)?Hn?<N6Cd `Z`$690pCd ?<gNj n (-@`8"@$Q/ /Hy/X/N6Cd$@&*-C` $@&*-C`NSn nl$090p@d?<hNjBgHn?<N0@d 92*-@`?<Hn?<N0@d 92"-@`?<Hn?<N0@d 926-@`\?<Hn?<N0@d 92&-@`4?<Hn?<N0@d 922-@` 92.-@ n . N^,_ _N/,HNVA-H .rg @-Ht(vCf"n$("$n $($`$92f "n (<"$n4<SBH$`\"n"$92f$n x$`>(91f $n $`($@** g&n (@*l *-&`&n &` n "n "N^,_ _ N/,HNVA(-H?9.Hn ?<N0@eN`N^,_ _N/,HNVA(-H0. rAg$.R-B` $.-B .N^,_ _\N/,HNVA-H 92J-@ .rg~ @-H4.v( CfZ6( 8.DfLv=C=D`0 n0.@0( n2.A2( Ag`Rn0.no` n -@`z0.`z0.HЀм /HnNB`v0.HЀм /HnNB`X0.HЀм /HnNB`:0.HЀм /HnNB` @b@0;Nv n-H0.@ 2.1A $92J v!CCx=D=A`& n0.@"n0.@0)1@ Rn0.no".#2J n . N^,_ _ N/,HNVA-Hp/HnNB n-Hp@"92!A t!B69/VSCH!C0T-H69/V8<Dl !B0`!@0z/HnNB n-Hp@rA$92!B&.!C xD0"B:)=E<9/V=ET-HpHŋH!E:.HŋHE0$n *.$N^,_ _XN/,HNVA-Hp=@0.".tVC&.VD@dL A-H0./ n/( "n/) ?. N( D=@ n"(-A"n$)-B`0.".$.WC=@&.xV,.VAEd C-H"( V"F") VBEd>/ n/("n/)?. N" A n"( "n$) WC=@"(-A$)-B0.".tVC&.VD@dT A-H0./ n/( "n/) /(/)?. VN( D=@ n"(-A"n$)-B`0.".$.WC=@` WA=@0.N^,_ _N/,HNVAd-H .rW&. WĄDBd =A`>/HnHnN/. HnHnN .".각W&.(.WE=B0.N^,_ _PN/,HNVA(-HN# .".f t=B`tVòVDCd @-Hv("Ax)Dfv(`v( BW$Av* BWňEDd2&92WIJWE:. FEEDd x=D`=B`&( -C&A(+ -Dz=E0.".tVC&.VD@d> A-H0."P/ x/"C$Q/ /N<:E=@*(-E$C"*-A`0.".$.WC=@` n/( "n/) ?. N=@2. A n$( &92 VD@d 0.//./. NN$ B=@0.=@`=B&92N-C-C .rg< @-H4.&("n() W&$n(* WFE=B&(-C`0.@eZp /HnNB n-H"n ) !@$n * 92N!@"#2N n/( "n/) BgN=@0.=@".#2N` n/( "n/) BgNv=@`(|$A*|DW/ n/("n/)(?N<*@=E n ("92W(@BeF/ n/( "n/) BgN*@=E/ n/( "n/) NNb*@=E`j"n/) HnHnNb n/( HnHnNN0.".$.䒂&.(.ܖWE n(|"n)|CWE=@0.=@`( |$A* |DW/ n/( "n/) /(/)( ? NN*@=E`^ n/( "n/) BgN n(|"n)|BWC=@`" CbC6;0N0*lrAV690zAWD899JFDDBdH-@-@093`?/.Hy> N".gApO"O&p%QNZp=@29>=A`,0.H2.49>BHA> &0!Rn0.nop3>N^,_NuWrite error on code file. (Disk full?)/,HNVA-H09>29>A42?<Nj`49>BH6. A> 109>BHxC> 3 9>T#>N^,_ _TN/,HNVA-H09>29>A42?<Nj`49>BH6. A> 109>BHxC> 3 9>T#>N^,_ _TN/,HNVA-H09>29>A42?<Nj`jR@3>29>AH4.A> 109>AHvC> 309>R@3>AH8. 109>AHz3 9>X#>N^,_ _XN/,HNVA-Hp=@29I =A`Hp/N<2Ad2.=A`xRn0.no29I 4<ȲBfv=Cx3I ?<Nj`>RA3I =AC>A-HC n2. 1Av1C 1C 0.N^,_ _ N/,HNVA-H09>29>A42?<Nj`R@3>29>AH$.vA> 109>AHtC> 309>R@3>AH(.10. 8<ȰDo:9>AH@8@\@3X`:9>AH@X@3X 9>X#>N^,_ _\N/,HNVAP-H091@d60. rAf*$.vԃ/A0Q"O""?<N?N` 09>29>A42?<Nj`R@3>29>AH$.vA> 109>AHtC> 309>R@3>AH(.10. `D09>AHx3`@09>AHx3`*09>AHx3` @g @g @g 9>X#>N^,_ _\Nbssanf /,HNVAL-H09=@d099=@` 099=@2<Al@~?N` ?<>=@$rAo0Hy3VN HyON r0.$rAf?<?9ON`tBfv=C`0.r ARn nPop=@29=Ad A9NP"Or"Q NN`A9P"Or"Q NNx0.R@=@?.& NN0.R@=@293TSA? NN0.R@=@?. NN0.rAC ") n "h,$QCp$Q?<?9ON093T30f290d=A&490zRB30z69OCd ?Np30|Hn(N rN^,_ _TN][Continue|Edit|Cancel]|Missing: Missing: ERRORS.TXT |of file [2][Error of file in line in file at line Error /,HNVnA-H n "PExp $Q092T C2X"1-Appf492T &# ` .p-@t @"P/ r/Hnx/N<4Bd ?<eN np (-@pr=An`B"@$Q/ /Hnx/N4Bd$@$*-Bpv=Cn`$@$*-Bpv=Cn .prfr4.nBd nt$. !B` nt$. !B n p!@!@N^,_ _XN/,HNVAL-HAT$VCpQA:CA CpQACpQAC\AClpQAC|ACpQACArCpQAXCpQA 91!@ r!A!A/.Nxp/HnNB .#2> @-HrAtԼ//NB n"PEpQ 92!@ r!A$<!B/.N p/HnNB .#2: @-HrAt Լ//NB n"PEX p Q 92!@ r!A$<!B/.Np/HnNB n-Hp@rҼ//NB n"PE 92!@ /.NFp/HnNB n-Hpм//NB np@"PErQ"91!A /.Np-@r=A`p/HnNB n-Hp@2.At$VC1HԼ//NB n"P0.@(VGE"" 91!@ ".!A4.vCf x!D`!C/.NR .-@Rn no^ y1 .!@ r=A`p/HnNB n-Hp@2.At$VC1HԼ//NB n"P0.@(VGE"" 91!@ rA!At1B&90l!C/.N0.rAf$.#2` $.#2&90l y1((؄ք#0lRn no0p=@`p/HnNB n-Hp@rA4.Bv$VCL1 Hּ//NB n"P0.@(VGLE""""p!@ !@2.A/.NRn n(ovp=@`p/HnNB n-Hp@rA4. v$VC1 Hּ//NB n"P0. (VGE""" 92!@ r!A4.B/.N,Rn nonp/HnNB n-Hp@rҼ//NB n"PE 92 !@ rA!At1B!Av/HnNB n-Hp@rҼ//NB n"PEj 91!@ rAt!B1A!B=A`p*/HnNB n-H0. r$VC1HҼ//NB n"P0. (VGE2""0.rAft!B!B&92!C `8tBf&.!C(91!D `&.!C(92 !D v!CtBvCxD"D#1D!DC 1C$D!/.N|Rn nop/HnNB n-Hp@rҼ//NB n"PE 92!@ rA$.!Bv1C!Ax*/HnNB n-Hp м//NB n"PEX p Q .!@r!At!B vCxDB"B#1B!BD 1D$B!/.NN^,_NuCMD_GETARGSTRINGALFALONG_MAXINTMAXINTNILTEXTBOOLEANCHARREALBYTELONG_INTEGERSHORT_INTEGERINTEGER/,HNVA-Hp/Hy2*NB y2*-Hp@м//NB n"PEp!@ r/Hy2&NB y2&-Hp@rҼ//NB n"PErp!@ !@!@r/Hy2"NB y2"-Hp@rҼ//NB n"PE$p!@ @!@1@!@r/Hy26NB y26-Hp@rҼ//NB n"PEp!@ !@!@r*/Hy22NB y22-Hp@rAtB"Լ//NB n"PEvp!@ @#@!!@r!A1@!@t*/Hy2.NB y2.-Hp@rAtB"Լ//NB n"PE p!@ !@@#r!A1@@!!@N^,_Nu/,HNVA -Hp3=r#>t3I v3Kfx#2z#2F|#2Jp#2Nr30xt30vv30rx30pz30z|#0lp 3/r30jt30hv30dx39z30b|30fp3>r3>$<#>v3Khx3Oz3O|3Op39Hr30|AC0~t#Ov3> x3> N^,_Nu/,HNVA-HA8C6""""AC6""""AC5""""AC6""""A6"O""""A"O""""?<NA6 A6"O""""AN"O""""?<NA6v AC6&""""AC6f""""AC6V""""AC6F""""AC66""""p=@`0.&rAMRn n opR@=@rSA=A`0.&rAMRn0.noAMCKl2<"QN^,_Nu ,  ?  /,HNVA-HADC6A0C6AC6AC6AC6AC6AC6AC6AC6AC7AjC7 ARC7A:C7A"C7(A C72AC7<AC7FAC7PAC7ZAC7dAnC7nATC7xA:C7AC7pQAC7pQAC7pQAC7pQAC7pQAC7pQAvC7pQAZC7pQA>C7pQA"C7pQAC7pQAC7pQAC8pQAC8pQAC8 pQAjC8" pQp8,r8-t8.v8/x80z81|"82p$83r&84t(85N^,_NuOTHERWISEPROCEDUREEXTERNALFUNCTIONPROGRAMFORWARDPACKEDDOWNTORECORDREPEATLABELCONSTARRAYWHILEUNTILBEGINEXITFILETYPECASELOOPGOTOWITHELSETHENNOTANDSETMODDIVVARFORENDORINTOOFDOIF/,HNVA-Hp"86r/87t.88v089x 8:z8;|+8t8?v8@x8Az8B|8Cp28Dr,8Et'8Fv)8Gx(8Hz#8I|8Jp8Kr*8Lt!8Mv-8Nx%8Oz8P|8Qp8Rr$8St8Tv18Ux8Vz 8W|48Xp8Yr38Zt8[v78\x =D`0.r5A8>Rn n~op8ir8kt8hv8mx 8fz 8g| 8{p8jr8lt 8v8x8xz8| 8p8dr8t 8zv 8|x8yz8~N^,_Nu/,HNVA-Hp=@`0.rA8Rn n'op8r8t8v8x8z =E`0.rA8Rn n~op8r8t8v8x 9z9| 9p8r9BN^,_Nu/,HNVAD-HpA=@`0.@rA01Rn nZoHzN?<N 039Jr39Lt39FHz"?<N 631Hz?<N 8FD31(Hz?<N :31Hz?<N <31Hz?<N 031$31 Hz?<N 231A1C16t "QHz^?<N 43OHzD?<N 63OHz(?<N 83OCd v#ON^,_Nu/PAUSE/GEM/UGEM/ACC/CHECK/CLEAR/LIST/NOCHECK/DEBUG/NOCODE/,HNVA-H NN NNp NN~ NNJN^,_Nu/,HNVA-HN#A ) n-Hp=@0. nr(Alr(t>BfR@=@r=A n0.r(?Hz~?<N2Ad02.tPBlRA=A nv(AR@=@`0.@rAoHy,DHn?0.=@r.AR@tP0.T@vA0.V@xS0.X@=@0.rAHnBgN839r39t39vClA`O"OxQN09O@d HnN0.r ACE9t$Q4.RBvO 4.TB=B`0.r ARn nPo099J@dHy3VHz?<NX`fHy3VHn?<PNXp=@`,0.HrA> 10.HC> 3Rn no0<`3> 2$0.R@rEA0.T@tR0.V@HyOHn?<PNX09O@e NNN^,_NuNUL:Source file not found.Usage : PASCAL filename {/option} [>listfile]@/,HNVA*-HN# NN NN NN09O@d*NrAlA"O"OpQN NNp32Rr32TA2X-Ht B NN NNt NN NN"p32T292RRA32RA2d-Ht B69OCe`Hy,DHz?<N~Hz|?<N~?<N\HzP?<N~?<N\Hz$?<N~NzX`NXN^,_Nu 1985 by OSS and CCDrg Lohse, Copyright by JCan't initialize GEM.Personal Pascal V2.00 /,HNVA-Hp=@2<'=A0.rAoN4.H…=BAV8.AVņECdRD=D n B04.H…HB=Bv H=@`0.rAg n ` n t0N^,_ _\N/,HNVA-HN-@r=A/.?.Nv/.?.NXr AtBf0.R@=@`/.BgHnHnHnHnN8/.Bg?<?.?.?.?.NN^,_Nu/,HNVA-Hp=@r=A n 0.r(tBV n r(x DVECd@ n r(v:CW n r(|\FWŠBEdR@=@0.R@=@`0.=@0.N^,_ _XN/,HNVA-HN-@ n /N>=@r=A n 0.r(tBV n r(x DVECd(2.RA=A n v(AR@=@`0.r Ao=A0.@/.?<A"Or?"Q?<BgNrN^,_ _XN/,HNVA>-HN-@/BgHnHnHnHnN8 n /NX=@r=A n 0.r(tBV n r(x DVECdr2.RA=A n v(zaE\ n v(tzB_DFd n v(CA` n v(AR@=@`b0.r Ao=A0.@/.?<A"Or?"Q?<BgNr/.?<?<?.?.?.?.NN^,_ _XN/,HNVA~-HN-@/BgHnHnHnHnN8?. HnN/.?< A"Op?"Q?<BgNr/.?< ?<?.?.?.?.NN^,_ _TN/,HNVAX-HN-@/?< BgN/.?< n"Op?"Q?<BgNr/.?< n"Op?"Q?<?<Nr/.?< HnHnHnHnN8/.?< ?<?.?.?.?.NHnHnHnHnNh?<N?<NDBgNz/.?< HnHnHnHnN80.2. SA4.A?0.2.vHA???.N$?<N n"Op?"Q?<N=@0.N^,_ _N/,HNVA-HN-@r=A?<"?<?<?<BBgBgBgBgBgBgBgBgBgBgHnHnHnHnHnHnHnNVrAtBgL/.?< ?<?.?.Nr Af*A8O"O(p'QBgNrAW=B0.=@0.N^,_Nu[2][Cancel compile operation?][ Yes |No] <%lNu _0JgN?<LNA/,HNVtAn-HN#0.=@2.=A4.=B6.=C8.=D:.=E<.=F0.=@2. =A?<3HnHnHnxHntNN^,_ _N/,HNVnAN-HN#0. rAl=A 0. =@".-Ar?<2HnHnzHnrHnnN0.z=@0.N^,_ _\N/,HNVAv-HN#/.BgHnHnHnHnN8BgBgBgBgBg?.?.?.?.N/.Bg?<?.?.?.?.N/.?. N =@0.N^,_ _\N/,HNVAf-HN#/.BgHnHnHnHnN8BgBgBgBgBg?.?.?.?.N:/.Bg?<?.?.?.?.NN^,_ _\N/,HNVAH-HN#/. BgHnHnHnHnN8?<BgBgBgBg?.?.?.?.NN^,_ _XN/,HNVtA.-HN# . -@x?<6HnHnHnxHntNN^,_ _XN/,HNVAR-HN#p=@ n0.rtBg" n R@"n0.rR@=@` n 0.N^,_ _PN/,HNVA-HN# n rf6p. tBlԼ//NB`Hм//NBp=@r. =A`$ n "P0.S@0.rE 2Rn0.no n "Pr. tN^,_ _N/,HNVA8-HN# n0.-H0(rAW0(v CWĄD0(xDWńEBd$ /A"Op?"QN`0(tBW0(|FWA0(rAWÊC0(vCWĊDEd"h -I0(AW0(CWňEp.:)E\BDd 4)SBB tfp.R@3@/ E&Op?&QN> n0(rAW0(vCWĄDBd"n0.3@ 4. 3BN^,_ _ N/,HNVAN-HN# n0.-H0(rAW0(vCWĄDBd"h /"n / ND`N^,_ _ N/,HNVtA>-HN#0.=@2. =A$.-Bx?<(HnHnHnxHntNN^,_ _PN/,HNVtA6-HN#0. =@".-Ax?<rHnHnHnxHntNN^,_ _\N/,HNVtA^-HN# .-@x2.=A4.=B6.=C8.=D:.=E<. =F?<*HnHnHnxHntNN^,_ _N/,HNVA"-HN# n0. 0( =@0.N^,_ _\N/,HNVtAp-HN# .-@x2.=At=B6.=C8.=D:.=E<.=F0.=@2. tB=A?</HnHnHnxHntNN^,_ _N/,HNVAN-HN#/.?.HnHnHnHnN8/.?.?.?.?.?.?.?. N$N^,_ _ N/,HNVA"-HN# n0. 0(=@0.N^,_ _\N/,HNVA"-HN# n0.0. 1@N^,_ _PN/,HNVnAV-HN# .-@r2.=A4.=B6.=C8. =D?<+HnHnzHnrHnnN0.z=@0.N^,_ _ N/,HNVpAL-HN#/.?. n/"n/ N n0.-Hp"n0(2$n 0(4N^,_ _N/,HNVtAJ-HN#0.=@".-Ax?<,HnHnHnxHntN n0.0"n 2.2N^,_ _N/,HNVA-HN#?.?. N|N^,_ _XN/,HNV8Ad-HN#0.=@P2.=AR4.=BT6. =CV?<BgBg?<HnHnHnhHnPHn8?<Nt?.?. N|N^,_ _PN/,HNVA<-HN#HnHnN?.?.?.?. NR?.?. N|N^,_ _XN/,HNVA -HN#?.?. ?.?. NN^,_ _XN/,HNV8A`-HN#0.=@P2.=AR4.BS@=@T6. CSA=AV?< ?<Bg?<HnHnHnhHnPHn8?<NtN^,_ _PN/,HNV8Aj-HN#0.=@2. =A4.=BP6.=CR8.=DT:.=EV?< ?.?<?<HnHnHnhHnPHn8?<NtN^,_ _N/,HNVA,-HN#?<?.?.?.?.?.?. NLN^,_ _ N/,HNVA,-HN#?<?.?.?.?.?.?. N N^,_ _ N/,HNV8AX-HN#0.=@P2.=AR4.=BT6. =CV?< ?<Bg?<HnHnHnhHnPHn8?<NtN^,_ _PN/,HNVA&-HN#?.?.?.?. Bg?<N$N^,_ _PN/,HNV8A<-HN#0. =@?.Bg?<BgHnHnHnhHnPHn8BgNtN^,_ _XN/,HNVA-HN#?< ?. NN^,_ _TN/,HNV8AT-HN#0.=@2.=A4.=B6. =C?<Bg?<BgHnHnHnhHnPHn8BgNtN^,_ _PN/,HNVA"-HN#?. N?<?. NN^,_ _TN/,HNVA-HN#?<?. NN^,_ _TN/,HNV8AB-HN#0. =@Pr=AR?<BgBg?<HnHnHnhHnPHn8BgNtN^,_ _TN/,HNV8AR-HN#?.?. N0.=@2. =A?<lBg?<BgHnHnHnhHnPHn8BgNtN^,_ _XN/,HNVA"-HN#?. N?<?. NN^,_ _TN/,HNVA.-HN#0. rA?N?<h0. rA?NN^,_ _TN/,HNVAl-HN#?. N0. =@rAo$t=BS@=@ vCox=D@=@ ?<?.N*0.rAo?<?. NN^,_ _TN/,HNV6AD-HN#0. =@2.=A?<'Bg?<BgHnHnHnhHnPHn8BgNtN^,_ _XN/,HNVA-HN#?<j?. NN^,_ _TN/,HNV8AB-HN#p=@P2. =AR?< BgBg?<HnHnHnhHnPHn8BgNtN^,_ _TN/,HNVA-HN#?<?. N N^,_ _TN/,HNV2A-HN#Hn2Hn4Hn6NBgBgNn0.=@P2.=AR4.BS@=@T=AV6.BSC=CX8. DSA=AZ:.=E\<.DSF=F^=E`0.=@b?<BgBg?<HnHnHnhHnPHn8?<Nt?.4?.6NN^,_ _PN/,HNV8A`-HN#0.=@P2.=AR4.BS@=@T6. CSA=AV?< ?< Bg?<HnHnHnhHnPHn8?<NtN^,_ _PN/,HNVAr-HN#HnHnHnNBgN?<NHnHnHnN?.Nx?.?.?.?. N*?.N?.N?.NLN^,_ _PN/,HNVA8-HN#p.R@rAHnN4/?. N=@0.N^,_ _N/,HNVA-HN#0.F=@2.@=A4.D=B6.B=C8.:zE=D<.8=F0.6=@2.4=A4.2=B6.0E=C8..=D <.,=F 0.*=@2.(=A4.>=B:.<=E&.$-C?<HnHnHnHnN0.=@ n2.0"n4.2$n6.4&n 8.6(n :.8*n<.:0.N^,_ _=@?.N40. =@?<fBg?<BgHnHn n/Hn"n/ BgNt?.N4N^,_ _ N/,HNV4A-HN>=@6?. N4?. HnhHn8?<N\0.hrAg te=B4`t=B4????HnHnHnhHnPHn8?Nt0. 2.6Ag?N4` BgN4N^,_ _TN/,HNV8A2-HN#?<BgBgBgHnHnHnhHnPHn8BgNtN^,_Nu/,HNVjA-HN#p=@j?< HnHnzHnrHnnN0.z=@lrAg?<N=@j?.jN?.jN4?/LUNuHU _0@"_24BAAc1V`t>/LUNuHU _02S@AC2YQ/LUNuHU _02S@AC2YQ/LUNuHU _02S@AC2FAYQ/LUNuB9U2`PU2By) _0g$_jp"_// HU4N rLU4BtJ@fL)J9U2f f8| i f(Bi ` f|Ji f 3| `4<gG BQB) @e *:f&Jrt `e QG 0tWJBkG H3 J9U2f fpBi `\ f3| p`J g( f*3| H@?NAX"_Hi ?<ANA\L|#|3| N _"_$_* g g fH/ N rLH/ axLHHi Hj Bg?<VNA LC G 0<gQ|%|5| N _"_/) g g f*JtgJi ka0) k @e??<>3| NAXNu/")x itg$H@//?) ?<@NA LJof _Nu(_&&_k+g  gF g fb k eZH/ N rL?<Hk ?<=NAPBt7@ | Jk@Bg?+ Bk/ +/N$@?<BNA JkNHzZp`Hzqp` Hzp`Hz LN0#U@ //aH/9U@N`#U@ //a,/9U@NFRANDOM I/O attempted to deviceNegative random access record numberRandom I/O without Reset or RewriteError during random-access _4` _t6 Bo r aSB`2aNH?UT _r ar a/L?UTNu _r aN _4` _t"x0HgJJjDxvCUzp cRЀ`|e W0R"f`6 _4` _t2xJAjDAxvCUp0 2H@0RJAfJg<-RBlCSBr aQSCaQN _"_v` _"_60`JfQ$ItRJf` _4v` _46"_JBjtJCkgCe4` BSCr axQSBkalQN _6kfv2_t Cc"4YBv` _6kfv"_t Cc4QBvSBkr a(QSCC" A0 9c^a JgYC`NH UD"oA/ NFL UDNu(_"_/ A) g  f$)Jtf&H //?) ?<@NA LJovfNu$ix&i|fa`pRgf#Jx`H")x it#Hxg$H`//?) ?<@NA LJofLNu )f NuHyA` Hy0< LN0REWRITE required prior to WRITE or PUTDisk or directory full _$_"Wp i e)H/ N`L4NH/ N`Lp)` _"WJ9Uf*J)f i e)H/ N`L i d)J)fJg i dB9UJ)fBiNz`z _$_"WptvH/ HyUaB29UXL- -fJf^p`4  fJg*`N0eH  bBԂi\(؄iV؄iRԄiNԁRCJ)f  g i e) 0e 9c~Jg&JgDJf 6Höf4N$NHy@0<`Hzh0<N0 _$_0"Wt&JRJ)f:H/ HyUar29UXL i d J)PUf RBBe`Be`N Bad digit in number encounteredOverflow during READ of number(_ _/ C (g ( fXJ(fF$($IJtflH / /?( ?<?NA LJo*fJg  f"J` g  Wf NuJg Jh g J(fPNu!|NuH$hx&h|gpR@@gf!JxL`H &ht!KxJh f(aZLEJ@g *f` R@Bh` / /<?( ?<?NA LJlp!K|JfvL`rH@Hsp/Bg?<?NA LRA3 f@ AgUH@Hzp 3 dp` SAH@Hzp/?<?<@NA L` fSA` fSAH@Hzp` f H@Hzp `~ f4SA`(H@Hzp 3 dp/?<?<@NA LQ`* d,9@HHzpp/?<?<@NA L AfH@HzFp/?<?<@NA L NuHzR0<`Hz$0< LN0  p Exit q C^AReset required prior to Read or GetAttempt to read past end-of-fileHUp`:HUp`.HUp`"HUp`HUp` HUp _/fJ/ gLJ/kJ`L/ fJkB`</jJk2`,gbJk&` Jk`"eb// ebr`r`rAV ?/LUNuHUv` HUv _ `HUv` HUv _0HJ[fBBg`,j Dj4<` 4<ЀkSB`Jf].B/BJg 2/.?o /@?A /LUNuHUv` HUv _ [2Jkp`&4<cH@j JgR@kJ@kJgD@?/LUNuHUv` HUv _ [2Jkp`$4<cd JgRkJk~JgD//LUNuJ/ goNuNuHU _?///` HU _0/2// Jv/ 8://N~/DD?DBoJgJgC|k?>BGHGv8ބdRC8ބdRC>HGvކdRC8ބdRCHGv48ބBޅB:>HG8ކkE߇SDkBg|d RdRDUJg( DbRD ME \/LUNuBBo `HU _0/2// v/ 8://~/?DD?DBo 8JgJgG|HD8H@0zr)`рe efef<څ߇QgRCgڼd RGdSCJCkD|blo/EC \/LUNuoHU _p2/g/ f/W?o `ֲ@e:f$/&e&f // d*B6//J/ k`(&// S@Q`&// `R"/?/[4JfFӃddRdRR/eJd RdRd`/AG o Jk`z0H*kS/JkFft grkRBjIHA~`( dtHAI.kRBҁjBG` BBRBӁj/e2/AG o Jk\/LUNuHU _0 @&b(CC/)?/LUNuHy`HyLUNH Hz@CPt$> nk(:C@hԥ*5 c_1ɿ1.Ź^ k:v #-xŬX&x2n)h? SYQa@%oNˏ'?9x!7I|o|@Eŭ+E75vV 9@{pvPFloating point overflowFloating point division by zero )NuH _ g)e)d/LNuHy `Hy "NHt`t _"_ gR e6G$S" geb"*f&"`&A%S"`&J`а|gb<|fP"9gH$A#`:"9g6$A#`("9g$$A#` @ g"9g $A#"`"E)&R"$b Hy NHJgr"Qd2`"SjN _"_ " g)e)dgR m @ e@E"fB#@B$`p&A"+ef "'I`Z"#@B$`L$K`ư| f"#`4|f"#` |f"#` "#NHeap overruns stackPointer NILPointer not in heapH`?<,NAT24HAI<Ёr jЂLNu&_4"_jtEU  SB*(y)/,,/  HyUUBkQBBg?<KNANHU _0"_jp&y)r+t$IS@k,RB  WfSBkBkG$I0(K Vg RQBg`?</LUNuHVh _0"_e /LVhNuHy#\NH/B9V/|VNuHVh _0 @f0"|VfVfp` "_J@jpEVr4@ BbBS@kQ/LVhNuHVh _4SBkt82$_rAbd0 @(f0"|VfVfp` "_J@jp6ADb6CG0IS@k$eQ/LVhNuHVh _4k2SAk0"_p6B@bE0)CS@kQ/LVhNuHVh _2$_r0 @f0"|VfVfp` "_J@jp@kS@kv&J$IRC4(K Vg RQBg`?/LVhNuHVh _4kF2SAk>0 @f0"|VfVfp` "_J@jpJBg@b6B@oCEVSBkQ/LVhNuString overflow _pJ.g 0( hNVg4 ( hg( hH`0( hNVg ( hg hHfXgr"ODd2Sk "Sj` _"y)e Hy$,NHN#W#W .f -|$`-|$ nNнWf yWNStack overruns heapH?W _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?WNu0NvDNHW|` HW| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/LWNu09)By)Nu _3)By)NBy)Nu P  ( 'H$'m$' & ' &  '  &'  N 'L  ',L''' ''' '''R8''LS8''LPersonal Pascal Compiler ver. 2.00Copyright 1985 CCD and OSS, Inc. Main file:Include file:Errors:Cancel 0 [3][4][ Abort ]Copyright 1986, CCD and OSS, Inc.    -,..      * : *      8                                 B  0    6<B  0    &. 6. 228 .66$<8, (66 2 2  ,8 "  82 J&<0. "   " "60,    8 XN & "     D,*:    ` "&4   , 64    " HrF* * . ."  2 2 "H,  @" >D^>P      ( *0      "   "   (  4     6    8$6N 06>lH0   0 0 ,@0`  22"&"6  "66 0:  $0 J<, d    2 (  0  "*,4"D  0   0V 4jx0 (HD20" H, 0" "N     ", 6 $  2  V"X8 <8.8$B, " 0$ p ^ , > "  $     ,  r < 0 @ < 0  4 * 0   $ , $$ > D0 (Z h h 0  h h 0  h 0  h 0 0  R&` 0  x 0 0  x  h  T$   " ,  0 L00 0  " 0 p00  N> "< .   6    0  8     T 0 z88J02 >   40 0P:4< *   4       4"    "        (l  JJ&t   2   "$ n  N(   l(      $     .  ( V :.4 "0 ": ( ,    "      2 h   &>,*$      .    F    B ( f &."   >$        .   .  ,02T   "     " .       (.$6 :   < .. $      8  6  $ $ $  &  8 @  "    0,,2,  d f D &0& 2     N V  >  & $  X \&$    2 DP&2   :  ^ F 0$R b$, $$ $  V  0   , :      <&.4, 0  0"  "   0 0"         & J  ( 6" ,$$  *0r : 0  0 :   < $4  $*   >$ & (. *   D@ B .  4   ^.d F   ƌ$*(    8     F "   N     * .      .bF.b VB06&"828"(P08"42R.f 6( $  ( N" .TH*$$D~2J&:JX6Dr" .LlPLn$PF|V0r B *x<HF<^,* $ 8, 6BJRj(:r*Z2X8L *"$@     ""(   , ( 6J  .    $0 6" V.Z*( 2P    ,. .\(> .." , B22xN$F. . &. . .F,6 "$.>..T0F .(LZ. .*  &P(   00 ( X,  0 >$N :  6B  ,Zn" . . 0.  . . .D.  . . . .   H . . .("  . .     Z  H "  2     >,$T   & 0  p $ & &   "2 6&      & 4  \<$   "   . (    (&  ".  &    L $ 8h0hp4> @" f,tPd2 * R":d"F:6B.H*6 J " 4T ^"BBL :0 ,H ,,6 8 ,2 v8 ,6 ,,T  T *jV0b,4 "T & & (,& J                "$" ,*< * * , , 0 , " BBb4>42J ^ (*  vbd z  f H F  2  "D    * "F"L  ( *@ B @ ( V  B0 u{ Personal Pascal GEM library constant definitions. } No_Window = -1 ; Root = 0 ; { Index of root w/in object tree } Max_Tree = 100 ; Null_Index = -1 ; { Index of a non-existent item } Max_Depth = 8 ; { Max depth of search or draw } Max_Fn = 12 ; { Max length of individual file/path name } Max_Path = 80 ; Max_WTitle = 80 ; Desk_Title = 3 ; { The index of the "desk" item in the menu bar } { Event values: }  E_Keyboard = $01 ; E_Button = $02 ; E_MRect_1 = $04 ; E_MRect_2 = $08 ; E_Message = $10 ; E_Timer = $20 ; { Graphics command constants: } { Drawing modes: } Replace_Mode = 1 ; Trans_Mode = 2 ; XOR_Mode = 3 ; Rev_Trans_Mode = 4 ; { Line styles: } Solid = 1 ; LongDash = 2 ; Dotted = 3 ; DashDot = 4 ; Dashed = 5 ; DashDotDot = 6 ; { Text effects: } Normal = 0 ; Thickened = 1 ; Lightened = 2 ; Slanted = 4 ; Underlined = 8 ; Outlined = 16 ; Shadowed = 32 ; { Font types: } System_Font = 3 ; Small_Font = 5 ; { Graphic types of obs: } G_Box = 20 ; G_Text = 21 ; G_BoxText = 22 ; G_IBox = 25 ; G_Button = 26 ; G_String = 28 ; G_FText = 29 ; G_FBoxText = 30 ; { Object flags: } None = $000 ; { Also used for fill pattern and text effects. } Selectable = $001 ; Default = $002 ; Exit_Btn = $004 ; Editable = $008 ; Radio_Btn = $010 ; Last_Ob = $020 ; Touch_Exit = $040 ; Hide_Tree = $080 ; { Object states: } { Use Normal for no special state } Selected = $01 ; Crossed = $02 ; Checked = $04 ; Disabled = $08 ; { Outlined and Shadowed are defined under text effects } { Window elements: } G_Name = $001 ; G_Close = $002 ; G_Full = $004 ; G_Move = $008 ; G_Info = $010 ; G_Size = $020 ; G_UpArrow = $040 ; G_DnArrow = $080 ; G_VSlide = $100 ; G_LArrow = $200 ; G_RArrow = $400 ; G_HSlide = $800 ; G_All = $FEF ; { All elements, except info line } { Color register shorthands: } White = 0 ; Black = 1 ; Red = 2 ; Green = 3 ; Blue = 4 ; Cyan = 5 ; Yellow = 6 ; Magenta = 7 ; L_White = 8 ; L_Black = 9 ; L_Red = 10 ; L_Green = 11 ; L_Blue = 12 ; L_Cyan = 13 ; L_Yellow = 14 ; L_Magenta = 15 ; { Predefined GEM messages: } MN_Selected = 10 ; WM_Redraw = 20 ; WM_Topped = 21 ; WM_Closed = 22 ; WM_Fulled = 23 ; WM_Arrowed = 24 ; WM_HSlid = 25 ; WM_VSlid = 26 ; WM_Sized = 27 ; WM_Moved = 28 ; { Wind_Get/Set field values: } WF_PrevXYWH = 6 ; WF_FullXYWH = 7 ; WF_HSlide = 8 ; WF_VSlide = 9 ; WF_HSlSize = 15 ; WF_VSlSize = 16 ; { Desk-Accessory values: } AC_Open = 40 ; AC_Close = 41 ; { End of constants used in GEM interface } { EXTERNAL declarations, etc., for Personal Pascal GEM library routines. } FUNCTION Init_Gem : Short_Integer ; EXTERNAL ; PROCEDURE Exit_Gem ; EXTERNAL ; FUNCTION Do_Alert( alert : Str255 ; def_btn : Short_Integer ) : Short_Integer ; EXTERNAL ; { dialog-oriented subprograms } FUNCTION New_Dialog( n_items, x, y, w, h : Short_Integer ) : Dialog_Ptr ; EXTERNAL ; PROCEDURE Delete_Dialog( dial : Dialog_Ptr ) ; EXTERNAL ; FUNCTION Add_DItem( dial : Dialog_Ptr ; i_type, flags : Short_Integer ; x, y, w, h : Short_Integer ; border, color : Short_Integer ) : Tree_Index ; EXTERNAL ; FUNCTION D_Color( border, text : Short_Integer ; text_mode : Boolean ; pattern, fill : Short_Integer ) : Short_Integer ; EXTERNAL ; PROCEDURE Set_DText( dial : Dialog_Ptr ; item : Tree_Index ; s : Str255 ; font : Short_Integer ; just : TE_Just ) ; EXTERNAL ; PROCEDURE Set_DEdit( dial : Dialog_Ptr ;  item : Tree_Index ; template, valid, initial : Str255 ; font : Short_Integer ; just : TE_Just ) ; EXTERNAL ; PROCEDURE Obj_SetState( dial : Dialog_Ptr ; index : Tree_Index ; state : Short_Integer ; redraw : boolean ) ; EXTERNAL ; FUNCTION Obj_State( dial : Dialog_Ptr ; index : Tree_Index ) : Short_Integer ; EXTERNAL ; PROCEDURE Obj_SetFlags( dial : Dialog_Ptr ; index : Tree_Index ; flags : Short_Integer ) ; EXTERNAL ; FUNCTION Obj_Flags( dial : Dialog_Ptr ; index : Tree_Index ) : Short_Integer ; EXTERNAL ; PROCEDURE Center_Dialog( dial : Dialog_Ptr ) ; EXTERNAL ; FUNCTION Do_Dialog( dial : Dialog_Ptr ; start_obj : Short_Integer ) : Short_Integer ; EXTERNAL ; PROCEDURE Get_DEdit( dial : Dialog_Ptr ; item : Tree_Index ; VAR s : Str255 ) ; EXTERNAL ; FUNCTION Redo_Dialog( dial : Dialog_Ptr ; start_obj : Short_Integer ) : Short_Integer ; EXTERNAL ; PROCEDURE End_Dialog( dial : Dialog_Ptr ) ; EXTERNAL ; PROCEDURE Show_Dialog( dial : Dialog_Ptr ; item : Tree_Index ) ; EXTERNAL ; { predefined dialog routines } FUNCTION Get_In_File( VAR path, name : Path_Name ) : boolean ; EXTERNAL ; FUNCTION Get_Out_File( prompt : Str255 ; VAR name : Path_Name ) : boolean ; EXTERNAL ; { menu-oriented subprograms } FUNCTION New_Menu( n_items : Short_Integer ; about : Str255 ) : Menu_Ptr ; EXTERNAL ; PROCEDURE Delete_Menu( menu : Menu_Ptr ) ; EXTERNAL ; FUNCTION Add_MTitle( menu : Menu_Ptr ; item : Str255 ) : Short_Integer ; EXTERNAL ; FUNCTION Add_MItem( menu : Menu_Ptr ; title : Tree_Index ; item : Str255 ) : Short_Integer ; EXTERNAL ; PROCEDURE Draw_Menu( menu : Menu_Ptr ) ; EXTERNAL ; PROCEDURE Erase_Menu( menu : Menu_Ptr ) ; EXTERNAL ; PROCEDURE Menu_Hilight( menu : Menu_Ptr ; title : Tree_Index ) ; EXTERNAL ; PROCEDURE Menu_Normal( menu : Menu_Ptr ; title : Tree_Index ) ; EXTERNAL ; PROCEDURE Menu_Check( menu : Menu_Ptr ; item : Tree_Index ; checked : boolean ); EXTERNAL ; PROCEDURE Menu_Enable( menu : Menu_Ptr ; item : Tree_Index ) ; EXTERNAL ; PROCEDURE Menu_Disable( menu : Menu_Ptr ; item : Tree_Index ) ; EXTERNAL ; PROCEDURE Menu_Text( menu : Menu_Ptr ; item : Tree_Index ; VAR mtext : Str255 ) ; EXTERNAL ; FUNCTION Menu_Register( id : Short_Integer ; { for desk accessories, only } VAR name : Str255 ) : Short_Integer ; EXTERNAL ; { window-oriented subprograms} FUNCTION New_Window( w_type : Short_Integer ; VAR title : Window_Title ; x_max, y_max, w_max, h_max : Short_Integer ) : Short_Integer ; EXTERNAL ; PROCEDURE Open_Window( handle : Short_Integer ; x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Close_Window( handle : Short_Integer ) ; EXTERNAL ; PROCEDURE Delete_Window( handle : Short_Integer ) ; EXTERNAL ; PROCEDURE Set_WSize( handle, x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Set_WName( handle : Short_Integer ; VAR title : Window_Title ) ; EXTERNAL ; PROCEDURE Set_WInfo( handle : Short_Integer ; VAR info : Window_Title ) ; EXTERNAL ; PROCEDURE Border_Rect( wind : Short_Integer ; VAR x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Work_Rect( wind : Short_Integer ; VAR x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE First_Rect( wind : Short_Integer ; VAR x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Next_Rect( wind : Short_Integer ; VAR x, y, w, h : Short_Integer ) ; EXTERNAL ; FUNCTION Rect_Intersect( x, y, w, h : Short_Integer ; VAR x1, y1, w1, h1 : Short_Integer ) : boolean ; EXTERNAL ; FUNCTION Front_Window : Short_Integer ; EXTERNAL ; PROCEDURE Bring_To_Front( handle : Short_Integer ) ; EXTERNAL ; PROCEDURE Set_Window( handle : Short_Integer ) ; EXTERNAL ; FUNCTION Get_Window : Short_Integer ; EXTERNAL ; { window text and graphics subprograms } PROCEDURE Set_Clip( x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Draw_Mode( mode : Draw_Modes ) ; EXTERNAL ; PROCEDURE Set_Color( reg : Color_Reg ; red, green, blue : Short_Integer ) ; EXTERNAL ; PROCEDURE Line_Color( color : Color_Reg ) ; EXTERNAL ; PROCEDURE Line_Style( style : Line_Types ) ; EXTERNAL ; PROCEDURE Paint_Color( color : Color_Reg ) ; EXTERNAL ; PROCEDURE Paint_Style( style : Short_Integer ) ; EXTERNAL ; PROCEDURE Paint_Outline( on : boolean ) ; EXTERNAL ; PROCEDURE Text_Color( color : Color_Reg ) ; EXTERNAL ; PROCEDURE Text_Style( style : Short_Integer ) ; EXTERNAL ; PROCEDURE Move_To( x, y : Short_Integer ) ; EXTERNAL ; PROCEDURE Line( x1, y1, x2, y2 : Short_Integer ) ; EXTERNAL ; PROCEDURE Line_To( newx, newy : Short_Integer ) ; EXTERNAL ; PROCEDURE Plot( x, y : Short_Integer ) ; EXTERNAL ; PROCEDURE Paint_Rect( x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Frame_Rect( x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Paint_Oval( x, y, x_rad, y_rad : Short_Integer ) ; EXTERNAL ; PROCEDURE Frame_Oval( x, y, x_rad, y_rad : Short_Integer ) ; EXTERNAL ; PROCEDURE Paint_Round_Rect( x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Frame_Round_Rect( x, y, w, h : Short_Integer ) ; EXTERNAL ; PROCEDURE Paint_Arc( x, y, x_rad, y_rad : Short_Integer ; beg_ang, end_ang : Short_Integer ) ; EXTERNAL ; PROCEDURE Frame_Arc( x, y, x_rad, y_rad : Short_Integer ; beg_ang, end_ang : Short_Integer ) ; EXTERNAL ; PROCEDURE Draw_String( x, y : Short_Integer ; s : Str255 ) ; EXTERNAL ; PROCEDURE Text_Height( height : Short_Integer ) ; EXTERNAL ; { mouse-oriented subprograms } PROCEDURE Set_MForm( VAR form : Mouse_Form ) ; EXTERNAL ; PROCEDURE Set_Mouse( m_type : Mouse_Type ) ; EXTERNAL ; PROCEDURE Hide_Mouse ; EXTERNAL ; PROCEDURE Show_Mouse ; EXTERNAL ; PROCEDURE Init_Mouse ; EXTERNAL ; PROCEDURE Begin_Mouse ; EXTERNAL ; PROCEDURE End_Mouse ; EXTERNAL ; { event management } FUNCTION Get_Event( event_mask : Short_Integer ; btn_mask : Short_Integer ; btn_state : Short_Integer ; n_clicks : Short_Integer ; ticks : Long_Integer ; r1_flag : boolean ; r1x, r1y, r1w, r1h : Short_Integer ; r2_flag : boolean ; r2x, r2y, r2w, r2h : Short_Integer ; VAR message : Message_Buffer ; VAR key : Short_Integer ; VAR bstate,bcnt : Short_Integer ; VAR mx, my : Short_Integer ; VAR kbd_state : Short_Integer ) : Short_Integer ; EXTERNAL ; PROCEDURE Begin_Update ; EXTERNAL ; PROCEDURE End_Update ; EXTERNAL ; { miscellany } PROCEDURE Wind_Get( handle, request : Short_Integer ; VAR v1, v2, v3, v4 : Short_Integer ); EXTERNAL ; PROCEDURE Wind_Set( handle, request : Short_Integer ; v1, v2, v3, v4 : Short_Integer ) ; EXTERNAL ; PROCEDURE Sys_Font_Size( VAR w_char, h_char, w_box, h_box : Short_Integer ) ; EXTERNAL ; PROCEDURE Clear_Screen ; EXTERNAL ; { resource file subprograms } FUNCTION Load_Resource( fn : Str255 ) : boolean ; EXTERNAL ; PROCEDURE Find_Menu( index : Short_Integer ; VAR menu : Menu_Ptr ) ; EXTERNAL ; PROCEDURE Find_Dialog( index : Short_Integer ; VAR dial : Dialog_Ptr ) ; EXTERNAL ; PROCEDURE Find_Alert( index : Short_Integer ; VAR alert : Str255 ) ; EXTERNAL ; PROCEDURE Free_Resource ; EXTERNAL ; { the generic VDI and AES calls ! } PROCEDURE VDI_Call( cmd, sub_cmd : Short_Integer ; nints, npts : Short_Integer ; VAR ctrl : Ctrl_Parms ; VAR int_in : Int_In_Parms ; VAR int_out : Int_Out_Parms ; VAR pts_in : Pts_In_Parms ; VAR pts_out : Pts_Out_Parms ; translate : boolean ) ; EXTERNAL ; PROCEDURE AES_CALL( op : Short_Integer ; VAR Int_In : Int_In_Parms; VAR Int_Out : Int_out_Parms; VAR Addr_In : Addr_In_Parms; VAR Addr_Out : Addr_Out_Parms); EXTERNAL; { End of gemsubs.pas } { Common GEM type definitions for Personal Pascal library. } Color_Reg = 0..15 ; Draw_Modes = Replace_Mode..Rev_Trans_Mode ; Line_Types = Solid..DashDotDot ; Mouse_Type = ( M_Arrow, M_Text_Curs, M_Bee, M_Point_Hand, M_Flat_Hand, M_Thin_Cross, M_Thick_Cross, M_Outln_Cross ) ; Dialog_Ptr = ^CHAR ; {arbitrary pointer type} Menu_Ptr = ^CHAR ; {arbitrary pointer type} Word16 = ARRAY [ 0..15 ] OF Short_Integer ; Mouse_Form = RECORD hot_x : Short_Integer ; hot_y : Short_Integer ; res : Short_Integer ; mask_color : Short_Integer ; data_color : Short_Integer ; mask : Word16 ; data : Word16 ; END ; File_Name = STRING [ Max_Fn ] ; Path_Name = STRING [ Max_Path ] ; Window_Title = STRING [ Max_WTitle ] ; Message_Buffer = ARRAY [ 0..15 ] OF Short_Integer ; Str255 = STRING [ 255 ] ; { Editable text justification: } TE_Just = ( TE_Left, TE_Right, TE_Center ) ; { Possible indices into a tree: } Tree_Range = Root..Max_Tree ; Tree_Index = Null_Index..Max_Tree ; { AES- and VDI-Types} POINTER = ^CHAR; {Arbitrary pointer type...actual type situation dependent} Int_In_parms = ARRAY [0..15] OF Short_Integer; Int_Out_parms = ARRAY [0..45] OF Short_Integer; Addr_In_parms = ARRAY [0..1] OF Pointer; Addr_Out_parms = ARRAY [0..0] OF Pointer; Ctrl_Parms = ARRAY [ 0..11 ] OF Short_Integer ; Pts_In_Parms = ARRAY [ 0..11 ] OF Short_Integer ; Pts_Out_Parms = ARRAY [ 0..11 ] OF Short_Integer ; { End of TYPEs used in GEM library definitions } ^`>l o#\ (Ш#`"O/ /Bg?<JNA y\M< g<!Wf/0< a a v,_`S/a 4,_`Klr gb*PZ 9ng @,P#nZJAg `@ ,g: =gP`J9[f JAg BKlIfP[a `B 9.lf 9.mg 9\mfd 9@lfBgHym?<=NAP lJ@k>/9`/<??<?NA J@gk y`"H$H2SA  g  f| QBT@@"#ynyZ,J#n #`??<>NAXB9Z`J9[f8P[GlIg ,.g`|.PRGBa ra VBgHyl?<=NAJjB.OBBgHyl?<=NAJj B-Aa Aa 4a \` Z3#>@#BD#FHBLBPBTByX~M>an*yZaN*y^aD 9bf #fb` @Jg P` faKJa?9NAX`b~M>a y`>fB yJLXWgJyXg A`PQa?9NAXNu ye>fP~M>a<#VhM>~a&M>JVg V`f nJLWgJnfB9aT,y`.9haM>~//?9BQ,#a,.9@Pa"BQ,#za.9DPaBQ,#~aaJ9f #d`Nua,a6 9@ѹ> 9DѹB 9HgRѹFQrQvQQzQ~JZgN yZ"y^$yb&yf(yjJg P"Q$R&S(T` r"v$z&~(`2#rZ#v^#j#zb#~fNu,y`߹``b A`"Nu,y`b A`.gNu,y~*yv` ,yz*yr,9>*9B(9F..gb0T@ @g" @g @g @g @f6A`U0T@ @fۭ` @fݭ` @f٭UfNu$y(*gz4* "*Bg(a g0(@(g $%F `B "*`4*B ga gD0(@(g0(@g PB "*`J9fNAa JB*`*g 9FѪ `&*g 9>Ѫ `*g 9BѪ Řf0Nu$9jg&"Bv$)gAfgÔfJg"Q`ޑNuhJg(//?9*ڹB. gH.+g:KM0T@ @f U0T@ @fݭ` @fۭUf&S(T`Nu~*ybIJ(*,G W g*,-g M0 fJVg Vba~TUf*U`~aBNu bSf(T*,gG` ~a.`Nu. g.-gMa*U`NuJg(//?9NAN^ _TN/,HNVA*-HN?<BgBg?<&?<N-@/.?<Bg?<?<BgBgBgBgN=@/.?A"Or?"QBgBgN n C2p"Qp.r"AoA/.?<Bg?<?<?<"?<Bg?<N=@/.?AO"O"r!QAO"O"r!QA"Or?"Q?<BgN/.?<prAtB??<?<?<???<N=@/.?A.O"OBgBgN/.?<prA??<?<?<?<?<?<N=@/.?AO"OrQBgBgN/.Np=@r=A/.?.N=@0.@e /.?.Bg?<N0.2.Agt=Bv=C`/.?.HnNp.R@rAHnN/BgNx=@rAl t=B`n?NvNHz?<!NHn? _ N^,_ _\N/,HNVtA&-HN?<oHnHnHnxHntNN^,_NuLOAD_RESstackchkSTR_POINAES_CALLFIND_RESnFIND_DIAFIND_MEN FREE_RES@     gemmenu3.o` /,HNVA-HNp=@ n0.-H0(2. Am 0(R@1@0(Am 0(R@1@0Am0R@0"n0.0)t BvCf0.R@=@`0.2. Am0 nR@"n0.p Q0.S@=@`N^,_ _\N/,HNVA-HN n 0-H0(rAfpT@=@` 0(R@=@/. ?N n 0.-Hp1@1@r. 1A4<1Bv 1Cx01D1D1@1@ !@ /. ?<?.N/. ?.N/. ?.A "Op?"QBgBgNpT@=@ n p1@ n 0.0=@rAgD n 0."n 0.0)"n 2.2)A1@0.=@` n 0."H0)2."H2)A1@D/. n ?(?<?<BgBgBgBg?<?<N=@/. ?N n 0."n 0.0)"n 2.2)A1@0.=@0.N^,_ _N/,HNVA-HNp=@2. UASA=A n4(4(=B0.rAoS@=@ n4.4=B`/.?.?<BgBgp. ??<BgBgBgN=@/.?A "Or?"QBgBgN n0.0(=@r=A0.2.Ag4.RB=B n0=@` n0.0.1@/.?.N n0.0( n2.2(Ao& n0."n0.0)1@ n0.0(=@ n2."n2.2)1A n2.1@2.=A0.N^,_ _N/,HNVA-HNp@2. A=@?.N-@/.?=@/.?.AO"OpQN=@/.?.AO"OpQN=@/.?.AnO"OpQN=@/.?.A4O"OpQN=@".-A .N^,_ _N Desk Accessory 6 Desk Accessory 5 Desk Accessory 4 Desk Accessory 3 Desk Accessory 2 Desk Accessory 1 - Desk /,HNVA-HN/. NN^,_ _XNstackchkADD_MTITOBJ_LINKOBJ_FIXSET_DTEXOBJ_ADDADD_MITENEW_MENUNEW_OBJEMENU_DISDELETE_MDELETE_O$,,$D,,,,L\gemmenu2.o` ~ /,HNVtAB-HN0.=@2. tB=A&.-Cx?<HnHnHnxHntNN^,_ _PN/,HNVtA<-HN0. =@r=A$.-Bx?< HnHnHnxHntNN^,_ _\N/,HNVtA<-HN0. =@r=A$.-Bx?< HnHnHnxHntNN^,_ _\N/,HNVA0-HN/.?. A "Op?"QBgBgNN^,_ _N/,HNVnAV-HN n pR@p2.=A n /N-@r?<#HnHnzHnrHnnN0.z=@0.N^,_ _\NMENU_CHEstackchkAES_CALLMENU_ENAVMENU_DISMENU_TEXSET_DTEXMENU_REG n0(rAW0(vCWĄDBd"n0.3@ 4. 3BN^,_ _ N/,HNVAN-HN n0.-H0(rAW0(vCWĄDBd"h /"n / ND`N^,_ _ NFORM_DIAstackchkAES_CALLREDO_DIADO_DIALOOBJ_SIZEOBJ_DRAWSHOW_DIAxEND_DIALCENTER_DNSTUFF_STnewSET_DTEXGET_DEDI   ,4 ,4 ,   \\ t gemobj4.o`" b /,HNVA-HN0. H//<N м/HnNp=@2. SA=A` n0.p1@Rn0.no n2. r1A$.-B .N^,_ _TN/,HNVAH-HNp=@ n 0.rtBg R@=@`0.rAl=A0.=@0.N^,_ _XN/,HNVA4-HN/.N@d0. Hм//.NN^,_ _\N/,HNVA-HNp=@0.rdA] n 0(vCVDBd0.R@=@`0.rdAlzt=BS@=@`6 n 0.-H0(`/( n/( NN? NN`"h -I/ n/ NN? NN n/(?< NN n/(?< NN np//( N`"h -I/ n/( NNH? NN n/( n/( NN*? NN n/( n/( NN ? NNd np//( N`0@ @ b$@0;N xxRn0.no2.H//<N"Ҽ//. NN^,_ _XNNEW_OBJEstackchkintmultnewIN_HEAPdisposeDELETE_OF   $, ,,,inheap.o` 8 _"BeUNheapheap0IN_HEAPno gemobj3.o` * /,HNVA-HN n 0.-H0.1@2.1A4.1B6.1C8.1Dz01E1E|FWrAW€B@d0.tB=@0.t B1@p1@ vCW|FWAEd2.1A :. 1E`!@ 2.zEg/. ??.NN^,_ _N/,HNVA-HNp=@ n2(tBg` n0.0(r AtBf0.R@=@` n0."n0.0)r FAA1@0.R@=@/.??.?.?.?.?.?.?.?.?. Nh0.=@0.N^,_ _NstackchkOBJ_LINKOBJ_ADD gemobj.o` /,HNVtA>-HN0.=@2. =A$.-Bx?<(HnHnHnxHntNN^,_ _PN/,HNVtA6-HN0. =@".-Ax?<rHnHnHnxHntNN^,_ _\N/,HNVtA^-HN .-@x2.=A4.=B6.=C8.=D:.=E<. =F?<*HnHnHnxHntNN^,_ _N/,HNVA"-HN n0. 0( =@0.N^,_ _\N/,HNVtAp-HN .-@x2.=At=B6.=C8.=D:.=E<.=F0.=@2. tB=A?</HnHnHnxHntNN^,_ _N/,HNVAN-HN/.?.HnHnHnHnN/.?.?.?.?.?.?.?. N$N^,_ _ N/,HNVA"-HN n0. 0(=@0.N^,_ _\N/,HNVA"-HN n0.0. 1@N^,_ _PN/,HNVnAV-HN .-@r2.=A4.=B6.=C8. =D?<+HnHnzHnrHnnN0.z=@0.N^,_ _ NOBJ_LINKstackchkAES_CALLOBJ_FIXROBJ_DRAWOBJ_STATOBJ_CHANJOBJ_SETSOBJ_SIZEOBJ_FLAG4OBJ_SETFnOBJ_FIND      D   gemobj2.o `b * /,HNVpAL-HN/.?. n/"n/ N n0.-Hp"n0(2$n 0(4N^,_ _NOBJ_SIZEstackchkOBJ_OFFS gemobj5.o`` * /,HNVtAJ-HN0.=@".-Ax?<,HnHnHnxHntN n0.0"n 2.2N^,_ _NOBJ_OFFSstackchkAES_CALL gemwind.or` B /,HNVtAV-HN0.=@2.=A4.=B6.=C8.=D:. =E?<iHnHnHnxHntNN^,_ _ N/,HNVtA^-HN0.=@2.=A?<hHnHnHnxHntN n0.0"n2.2$n4.4&n 6.6N^,_ _N/,HNVA0-HN?.?< n/"n/ $n/ &n / NTN^,_ _N/,HNVA0-HN?.?< n/"n/ $n/ &n / NN^,_ _N/,HNVA0-HN?.?< n/"n/ $n/ &n / NN^,_ _N/,HNVA0-HN?.?< n/"n/ $n/ &n / NN^,_ _N/,HNVAT-HN?. N0. rAfBgBgN`&?HnHnHnHnN?.?.NN^,_ _TN/,HNVA.-HNBg?< HnHnHnHnN0.=@0.N^,_Nu/,HNVA -HN?. ?< BgBgBgBgN6N^,_ _TN/,HNVtA~-HN0.rAW6. AWĄDBd?HnHnHnHn N0.=@2.=A4.=B6.=C8. =D?<eHnHnHnxHntNN^,_ _ N/,HNVtA.-HN0. =@?<fHnHnHnxHntNN^,_ _TN/,HNVA(-HN?.?<?.?.?.?. N$N^,_ _ N/,HNVAH-HN n pR@p n /HnHnN?.?<?.?.BgBgNN^,_ _\N/,HNVAH-HN n pR@p n /HnHnN?.?<?.?.BgBgNjN^,_ _\N/,HNVlA-HN0.rAW6. AWĄDBd?HnHnHnHn N0.=@2.=A4.=B6.=C8. =D?<dHnHnzHnrHnnN0.z=@lrAg? n/N0.l=@0.N^,_ _N/,HNVtA.-HN0. =@?<gHnHnHnxHntNN^,_ _TN/,HNVnA>-HN0.=@2. =A?<jHnHnzHnrHnnN0.z=@0.N^,_ _XN/,HNVtA~-HN0.&=@2.$=A4."=B6. =C8.=D:.=E?<lHnHnHnxHntN n0.0"n2.2$n4.4&n 6.6N^,_ _NWIND_SETstackchkAES_CALLWIND_GETlWORK_RECBORDER_R&FIRST_RElNEXT_RECSET_WINDG_SET_WIG_SET_ORFRONT_WI`BRING_TOOPEN_WINCLOSE_WIjSET_WSIZSET_WNAMSPLIT_ADSET_WINFFNEW_WINDDELETE_W^FIND_WINCALC_WIN       LTT          z gemwind2.o`N * /,HNVA8-HN .R-@ n"<//N"0"n r2N^,_ _ NSPLIT_ADstackchkintdiv gemtext.o` * /,HNVRA-HN0.=@p2. =Art. 6<Co =CT`=BTv=CV8.T=DR`"0.V@2.VtA 0C3RnV0.VnRo?<Bg?.T?<HnHnHnHnpHnX?<NN^,_ _NDRAW_STRstackchkVDI_CALL gemdraw.ob`H /,HNVA-HN?.?. NN^,_ _XN/,HNV8Ad-HN0.=@P2.=AR4.=BT6. =CV?<BgBg?<HnHnHnhHnPHn8?<N?.?. NN^,_ _PN/,HNVA<-HNHnHnN?.?.?.?. NR?.?. NN^,_ _XN/,HNVA -HN?.?. ?.?. NN^,_ _XN/,HNV8A`-HN0.=@P2.=AR4.BS@=@T6. CSA=AV?< ?<Bg?<HnHnHnhHnPHn8?<NN^,_ _PN/,HNV8Aj-HN0.=@2. =A4.=BP6.=CR8.=DT:.=EV?< ?.?<?<HnHnHnhHnPHn8?<NN^,_ _N/,HNVA,-HN?<?.?.?.?.?.?. NLN^,_ _ N/,HNVA,-HN?<?.?.?.?.?.?. N N^,_ _ N/,HNV8AX-HN0.=@P2.=AR4.=BT6. =CV?< ?<Bg?<HnHnHnhHnPHn8?<NN^,_ _PN/,HNVA&-HN?.?.?.?. Bg?<N$N^,_ _PNMOVE_TOstackchkG_SET_XYLINE.VDI_CALLLINE_TOG_GET_XYPLOTPAINT_RE*PAINT_ARFRAME_AR`PAINT_OVFRAME_OV  $ 4  $ $   $ gemdraw2.o.`X b /,HNV8A~-HN0.=@P2.=AR4.BS@=@T6. CSA=AVxDVŶDVFEd z=E`=D?<Bg?<?<HnHnHnhHnPHn8BgNN^,_ _PN/,HNVA&-HN0.2. An =@`=A0.N^,_ _XN/,HNVA&-HN0.2. Am =@`=A0.N^,_ _XN/,HNVA-HN0."2.A? n0"n4B? NNN=@0. 2.A? n0"n 4B? NN(=@ n/?."? NNP _0"n/ ?. ? NN:"_2 n0.$n2A0&n 0.2A60rA^0A^C=B0.N^,_ _N/,HNVtA,-HNp=@?<kHnHnHnxHntNN^,_Nu/,HNVtA,-HNp=@?<kHnHnHnxHntNN^,_NuSET_CLIPstackchkVDI_CALLRECT_INTBEGIN_UPAES_CALLEND_UPDA     , ,gemdraw3.o ` ^ /,HNV8A<-HN0. =@?.Bg?<BgHnHnHnhHnPHn8BgNN^,_ _XN/,HNVA-HN?< ?. NN^,_ _TN/,HNV8AT-HN0.=@2.=A4.=B6. =C?<Bg?<BgHnHnHnhHnPHn8BgNN^,_ _PN/,HNVA"-HN?. N?<?. NN^,_ _TN/,HNVA-HN?<?. NN^,_ _TN/,HNV8AB-HN0. =@Pr=AR?<BgBg?<HnHnHnhHnPHn8BgNN^,_ _TN/,HNV8AR-HN?.?. N0.=@2. =A?<lBg?<BgHnHnHnhHnPHn8BgNN^,_ _XN/,HNVA"-HN?. N?<?. NN^,_ _TN/,HNVA.-HN0. rA?N?<h0. rA?NN^,_ _TN/,HNVAl-HN?. N0. =@rAo$t=BS@=@ vCox=D@=@ ?<?.N*0.rAo?<?. NN^,_ _TN/,HNV6AD-HN0. =@2.=A?<'Bg?<BgHnHnHnhHnPHn8BgNN^,_ _XN/,HNVA-HN?<j?. NN^,_ _TN/,HNV8AB-HNp=@P2. =AR?< BgBg?<HnHnHnhHnPHn8BgNN^,_ _TN/,HNVA-HN?<?. N N^,_ _TN/,HNV2A-HNHn2Hn4Hn6NBgBgNn0.=@P2.=AR4.BS@=@T=AV6.BSC=CX8. DSA=AZ:.=E\<.DSF=F^=E`0.=@b?<BgBg?<HnHnHnhHnPHn8?<N?.4?.6NN^,_ _PN/,HNV8A`-HN0.=@P2.=AR4.BS@=@T6. CSA=AV?< ?< Bg?<HnHnHnhHnPHn8?<NN^,_ _PN/,HNVAr-HNHnHnHnNBgN?<NHnHnHnN?.Nx?.?.?.?. N*?.N?.N?.NLN^,_ _PNstackchkVDI_CALLDRAW_MODPSET_COLO|LINE_COLG_LCOLORLINE_STYLINE_WIDFLINE_ENDG_LENDSPAINT_COG_PCOLORPAINT_OU8G_POUTLIPAINT_STzG_PSTYLETEXT_ALITEXT_STYRTEXT_HEI~TEXT_COLFRAME_REG_GETLSTPAINT_ROFRAME_RO=B:.<=E&.$-C?<HnHnHnHnN0.=@ n2.0"n4.2$n6.4&n 8.6(n :.8*n<.:0.N^,_ _?<N0@Bd0.R@=@`0.n^=B0.N^,_ _XN@NUL:AXO:AXI:PRN:LST:CON:basepagecmd_args>cmd_getanfilenamestrukteqsetin0$$$$$$,,8cursor.o ` B NV?.?. ?<NMN^ _XN/,HNVA-HN?<?. NN^,_ _TN/,HNVA-HN?<N0. ?NN^,_ _TN/,HNVA-HN?<KNN^,_Nu/,HNVA-HN?<ENN^,_Nu/,HNVA-HNNN^,_Nu/,HNVA-HN?<vNJN^,_Nu/,HNVA-HN?<wN&N^,_Nu/,HNVA-HN?<MNN^,_Nu/,HNVA-HN?<LNN^,_Nu/,HNVA0-HN?<YN0.@?N0. @?NrN^,_ _XN/,HNVA-HN?<pNvN^,_Nu/,HNVA-HN?<qNRN^,_Nu/,HNVA-HN?<bN.?. NN^,_ _TN/,HNVA-HN?<cN?. NN^,_ _TN/,HNVA-HN?<ANN^,_Nu/,HNVA-HN?<BNN^,_Nu/,HNVA-HN?<CNN^,_Nu/,HNVA-HN?<DNbN^,_Nu/,HNVA-HN?<HN>N^,_Nu/,HNVA-HN?<INN^,_Nu/,HNVA-HN?<JNN^,_Nu/,HNVA-HNNN^,_Nu/,HNVA-HN?<eNN^,_Nu/,HNVA-HN?<fNN^,_NustackchkCLREOLxCLRSCRCLRSCRNCRTINITCRTEXITDELLINE(INSLINELGOTOXYpINVERSEVNORMVIDETEXTCOLOTEXTBACK,CURS_UP\CURS_DOWCURS_RIGCURS_LEFCURS_HOMCURS_UP_CLREOS4CLR_EOSXCURS_ONxCURS_OFFpeekpoke.o `0 b /,HNVA-HN . -@ @r-A .N^,_ _XN/,HNVA-HN . -@ @2H-A .N^,_ _XN/,HNVA-HN . -@ @"-A .N^,_ _XN/,HNVA-HN .-@ @2. N^,_ _\N/,HNVA-HN .-@ @2. 0N^,_ _\N/,HNVA-HN .-@ @". N^,_ _PNPEEKstackchkWPEEK6LPEEKlPOKEWPOKELPOKE      memutil.o b`H (_  _"_JgSfN(_  _"_Jg0SfN(_  _"_Jg SfN(_ NMOVE_BYTMOVE_WORMOVE_LON,ADDRBADDR_BYTBADDR_CHABADDR_INTBADDR_LONBPTRBPTR_BYTEBPTR_CHARBPTR_INTEBPTR_LONGBsuper.o  `h (_0J@f(Jykf/<?< NA\3Na&J@f/<?< NA\#3N/<?< NA\NuSUPERIN_SUPERXconvert.o ` * /,HNVAZ-HNp=@r.=A`" n 0.S@0.rC1Rn0.no n r.tN^,_ _VN/,HNVAN-HNp=@0.rA0tBg"n R@0.r0R@=@` n 0.N^,_ _NP_TO_CSTstackchkC_TO_PSTp  degas.o `d NV?<NNN^NuNV?<NNN^NuNV?./. /.?<NNN^ _ NNV/.?<NNN^ _XNNV?.?. ?<NNN^ _XN/,HNVRA-HNATBXB }"BN=@RBgNHnTHn?/LNuH _0@"_24BAAc1V`t>/LNuH _02S@AC2YQ/LNuH _02S@AC2YQ/LNuH _02S@AC2FAYQ/LNudbugflagPASERRsetgensetin~setin0setunisetintsetdifBseteqsetnesetgesetleHsetranged #rewrite.o  `Pb B9`PBy _0g$_jp"_// HNLBtJ@fL)J9f f8| i f(Bi ` f|Ji f 3| `4<gG BQB) @e *:f&Jrt `e QGtWJBkG3 J9f fpBi `\ f3| p`J g( f*3| H@?NAX"_Hi ?<ANA\L|#|3| N _"_$_* g g fH/ NLH/ axLHHi Hj Bg?<VNA LC G 0<gQ|%|5| NcloseeraserenameTclose.o (`~  _"_/) g g f*JtgJi ka0) k @e??<>3| NAXNu/")x itg$H@//?) ?<@NA LJof _Nuclosesqrt.o` /,HNVA-HA ]"O2"BBgN0@d8HyNHz?<!NNXN yN`LA ]"O2"BBgN0@d.BnA ]"O2"?</<N0@dVA ]"O2"?</<NA 0 0.S@=@A ]"O2"?</<N0@d`VA ]"O2"?</<N0@d2A ]"O2"?<{/<NA 0 0.R@=@`A ]"O2"A0 A ]"O2"A0 A ]"O2"A]"O2"A ]"O2"NN?</<NA 0 A ]"O2"A]"O2"NN?A]"O2"t&?NND@@?NNA0 `&A]"O2"D@?NNA0 A]"O2"p?NN4Bdl0. rAg4.BR@=@`4.QBTB=B0.t Bo8A]"O2"?</< ?NNNA0 `:Am4A]"O2"?</< ?NNNA0 A]"O2"v?NN8Dd.8.RD=DA]"O2"?NNA0 =C n nfA]"O2"N0=@2.@0AC]$O4$0.?NNt?NNC2"Rn`0. rAf4.Bd?<- NN` ?< NNp.? NN?<. NNp=@2.QARA=A0.nnR@? NNRn`?<E NNx0.rAm?<+ NNb`?<- NNT0.D@=@0.r H@0? NN40.r HH@@0? NN`4.RB=B6.Am =B`x=D8.@RD=D:.EdRD=DRD=D:.=E0.nn?< NNRn`0.@d ?<- NN0.rAn?<0 NN`&t=B=@0.nn? NNRn`?<. NNTp=@2. =A0.nn2.A? NNnRn`N^,_ _Nwrsrealfloatrealltrealnegpwrof10realgerealdivrealnerealmultrealaddtruncrealsub $,$,$4$4$4 <$D$D$D$,$4L$4L$,$4T \$Dlput.ox` 8 (_"_/ A) g  f$)Jtf&H //?) ?<@NA LJovfNu$ix&i|fa`pRgf#Jx`H")x it#Hxg$H`//?) ?<@NA LJofLNu )f NuHy` Hy0< LNREWRITE required prior to WRITE or PUTDisk or directory fullIOERRdbugflagputflushbr>read.o`p _$_"Wp i e)H/ NL4NH/ NLp)` _"WJ9f*J)f i e)H/ NL i d)J)fJg i dB9J)fBiNz`z _$_"WptvH/ HyaB29XL- -fJf^p`4  fJg*`N0eH  bBԂi\(؄iV؄iRԄiNԁRCJ)f  g i e) 0e 9c~Jg&JgDJf 6Höf4N$NHy0<`Hzh0<N _$_0"Wt&JRJ)f:H/ Hyar29XL i d J)Pf RBBe`Be`N Bad digit in number encounteredOverflow during READ of numberIOERRdbugflaggetreadintreadlintreadcharreadln@readstrlBreadv.o 4`b T _$_"W2/Rbp1Ro4Np `z`z _$_ptvH-Hya29L- -fJfBp`  fJf4J9g`*0e$  bԂi8(؄i2؄i.Ԅi*ԁRC`Jg&JgDJf 6Höf4N$NHyB0<`HzV0<N _$_0t&JRHHya 29LJ9f RBBe`ΰBe`NBad digit in number encounteredOverflow during READV of numberIOERRdbugflagreasint*reaslint&reascharreasstr@get.o` * (_ _/ C (g ( fXJ(fF$($IJtflH / /?( ?<?NA LJo*fJg  f"J` g  Wf NuJg Jh g J(fPNu!|NuH$hx&h|gpR@@gf!JxL`H &ht!KxJh f(aZLEJ@g *f` R@Bh` / /<?( ?<?NA LJlp!K|JfvL`rH@Hsp/Bg?<?NA LRA3 f@ AgUH@Hzp 3 dp` SAH@Hzp/?<?<@NA L` fSA` fSAH@Hzp` f H@Hzp `~ f4SA`(H@Hzp 3 dp/?<?<@NA LQ`* d,9@HHzpp/?<?<@NA L AfH@HzFp/?<?<@NA L NuHzR0<`Hz$0< LN  p Exit q C^AReset required prior to Read or GetAttempt to read past end-of-fileIOERRdbugflagget^transcen.o ` /,HNVA-HNA ]"O2"A0 p.@=@0.J@nBgNA0 `0.r(AmA]"O2"A0 `|0.rH=@0.2.tA02<v8.zHĉHDDiAA0.rAl0.R@=@0.rA`A]"O2"A0 .2.N^,_ _\N/,HNVA-HNA ]"O2"BBgN0@dBBgA0 `fA ]"O2"?</<N0@d0p=@?</<A ]"O2"NA 0 `A ]"O2"?</<N0@d6p=@?</<A ]"O2"NNA 0 `HA ]"O2"BBgN0@d&p=@A ]"O2"NA 0 `BnA ]"O2"?BGHGv8ބdRC8ބdRC>HGvކdRC8ބdRCHGv48ބBޅB:>HG8ކkE߇SDkBg|d RdRDUJg( DbRD ME \/LNuBBo `H _0/2// v/ 8://~/?DD?DBo 8JgJgG|HD8H@0zr)`рe efef<څ߇QgRCgڼd RGdSCJCkD|blo/EC \/LNuoH _p2/g/ f/W?o `ֲ@e:f$/&e&f // d*B6//J/ k`(&// S@Q`&// `R"/?/[4JfFӃddRdRR/eJd RdRd`/AG o Jk`z0H*kS/JkFft grkRBjIHA~`( dtHAI.kRBҁjBG` BBRBӁj/e2/AG o Jk\/LNuH _0 @&b(CC/)?/LNuHy`HyxLN Hz@CPt$> nk(:C@hԥ*5 c_1ɿ1.Ź^ k:v #-xŬX&x2n)h? SYQa@%oNˏ'?9x!7I|o|@Eŭ+E75vV 9@{pvPFloating point overflowFloating point division by zerodbugflagPASERRrealmult0 @f0"|p` "_J@jpJBg@b6B@oCE*SBkQ/LNuString overflowdbugflagPASERRstrngchkstrbuf*concatHy<`HyM?< NA\Hyb?< NA\ oa.Hy?< NA\ o /Hy?< NA\ _p "f/Hy ?NA\ _`^"nH .gHy<`JkHy`Hy?NA\L/ .fjXt AH ??<NAXLQ/Hy"?< NA\t&<'HǏf CgJfr `t20/??<NAX$HG fHy3?< NA\ _a6 gz .f >. n` n,n/Hy?< NA\ _`/?<$?<NAX _tv"0 :e^H ??<NAXLYCQNuX`h *** Bus error *** Address error - attempt to reference address *** Attempt to divide by zero *** Value out of range *** Integer overflow *** Error in Called by PROCEDURE FUNCTION MAIN PROGRAM  at source line at PC function or procedure compiled w/o DEBUG dbuginidbugend8*halt.oX`  Jyg _9BgNAdbugflaghaltstack.o ` T _pJ.g 0( hNVg4 ( hg( hH`0( hNVg ( hg hHfXgr"ODd2Sk "Sj` _"ye HyNN## .f -|`-| nNнf yNStack overruns heapheapdbugflagPASERRstackchkfstackclrgotolongint.o T` * H? _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?Nu0NvDNH|` H| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/LNuintmultintdivvintmodjlinea.o |` y f##Bh6Nu&_a"h $h43_2NH&_a"h 3_2?/ LNu&_a1_$1_"1_1_1_1_1_,1_*1_(1_&1| N&_aj1_2!_.1_$1_1_1_1_1_*1_(1_&Bh4N&_a41_2!_.1_$1_1_1_1_1_,1_*1_(1_&Bh4N&_a1_2!_.1_$1_1_1_1_1_("h3_$_0)gk"h (JS@"Q"Bh4N&_a1_h1_Z01_N1_L2 @b"y@$qBh$1|jBhr!jLT1jPXj$"jHA1qHBhJTA01hH1@P1jRRBhf1|B1|D1j>\1j@^1j:`([g1j6d1j8b`BhbBhd1|F1|@!|l1|@pNa"hBQ$hB5| NuaĠ Nu&_a$h\BZ4"_p$Q"_p$Q N&_a$_ N&_a$_ _20/ ,_N&_an1_>1_<1_:1_81_6h6N## ,_,y yNput_pixeget_pixe6line\hlineset_clipfill_recfill_polput_charRshow_mouhide_mou:new_mousBdraw_sprxundraw_slbitbltpaserr.o `j2b _(N _0/Ho |3JyfXNX/#"|a "_a"|aJyg y9BgNA/ ?< NA\Nu *** *** Copyright 1986, CCD and OSS, Inc.dbugflagio_flagio_codePASERR0PASERR1,IOERRIOERR1  4iotrap.o `(T 09Nu09ByNu _3NByNuIO_STATEio_flagIO_RESULio_codeIO_CHECKIO_CLEAR { -M !NOTICE: THESE MATERIALS are UNSUPPORTED by OSS! If you do not understand how to use them do not contact OSS for help! We will not teach you how to program in Pascal. If you find an error in these materials, feel free to SEND US A LETTER explaining the error, and how to fix it. THE BOTTOM LINE: Use it, enjoy it, but you are on your own when using these materials! DISCLAIMER: OSS makes no representations or warranties with respect to the contents hereof and specifically disclaim all warranties of merchantability or fitness for any particular purpose. This document is subject to change without notice.  OSS provides these materials for use with Personal Pascal. Use them in any way you wish. -=- } MAKING GENERIC AES AND VDI CALLS FROM PERSONAL PASCAL -5 As some of you have discovered, because of prior experience with the Atari ST developer's package, there are a number of calls within the GEM system (AES and VDI) which are not yet supported by Personal Pascal. Luckily, within the PASGEM library there are two routines which already support additional calls to GEM. This document gives you the information you need in order to call these two generic GEM routines. AES CALLS - First of all, we are going to tackle AES calls. In the process of explaining how to call the generalized AES routine, we will be implementing a new call which is not supported by Pascal. This routine, which is called "graf_mkstate" in the C bindings, returns the current state of the mouse buttons and the key- board modifier keys (i.e., alternate, left and right shift keys, and control). This routine takes four parameters which are the addresses of four two-byte variables in which to put the mouse and keyboard state information. Since passing an address in Pascal is equivalent to passing a variable as a VAR parameter, the declaration of the routine we're going to construct is going to start like this: { Mouse_Key_State - Return the current mouse position and the state of both the mouse buttons and the keyboard modifier keys. } PROCEDURE Mouse_Key_State( VAR x, y, buttons, keys : integer ) ; Before we start filling in the rest of the procedure, we have to look at how parameters are passed to the AES. There are four separate areas in which values are passed to and returned from AES. The first area is the "global parameter area", where AES stores various parameters it needs to keep around between calls. Since the application program should not modify these values, there is no way to access the "global" array from Pascal. The second area is the "integer input array", in which various integer values may be passed to AES. Similarly, there is an "integer output array" in which AES passes values back to the calling program. The fourth and fifth arrays are the "address input array" and the "address output array". These two areas will contain address parameters passed to or from AES. The Pascal library keeps track of the global parameter area, since it must remain intact, but the other arrays must be declared in your GEM program if you want to make calls to the AES handler. In order to declare the arrays easily, we will set up their types first: TYPE Pointer = ^char ; { Just a filler declaration! } Int_In_Parms = ARRAY [ 0..15 ] OF integer ; Int_Out_Parms = ARRAY [ 0..45 ] OF integer ; Addr_In_Parms = ARRAY [ 0..1 ] OF Pointer ; Addr_Out_Parms = ARRAY [ 0..0 ] OF Pointer ; The declaration of "Pointer" is just used to emphasize that the address in and out parameters are ADDRESSES, and not just numeric values. Notice that the integer arrays only have lengths 16 and 46, respectively. This is sufficient for most calls, but if you want to make a call to VDI (see below) which needs more slots in these arrays, increase the size accordingly. Now that we know the TYPEs of the local variables we need, we can declare them: VAR int_in : Int_In_Parms ; int_out : Int_Out_Parms ; addr_in : Addr_In_Parms ; addr_out : Addr_Out_Parms ; OK, we're ready to look into the actual routine which we will be calling to interface to GEM. It takes five parameters. The first is the AES call number, which is 79 for out "graf_mkstate" call. The next four parameters are just the arrays which we just declared, passed as VAR parameters. The routine should be declared EXTERNAL as follows: PROCEDURE AES_Call( op : integer ; VAR int_in : Int_In_Parms ; VAR int_out : Int_Out_Parms ; VAR addr_in : Addr_In_Parms ; VAR addr_out : Addr_Out_Parms ) ; EXTERNAL ; Now that we know all of our variables and parameters, and everything the AES_Call routine is expecting, we can look at what we need to do to actually perform the GEM call. According to the AES documentation, the "graf_mkstate" call doesn't expect any parameters, and it returns the results in the "integer output array" as follows: int_out[0] -- error code (0 if no error occurred) int_out[1] -- current mouse x position int_out[2] -- mouse y position int_out[3] -- mouse button state int_out[4] -- keyboard modifier state We should never get an error with this call, since no parameters are passed in, so we're going to ignore the error code. This isn't a good idea in general, but it simplifies our presentation somewhat. The complete code required to perform the call and return the result values in the proper parameters is as follows: BEGIN AES_Call( 79, int_in, int_out, addr_in, addr_out ) ; x := int_out[1] ; y := int_out[2] ; buttons := int_out[3] ; keys := int_out[4] ; END ; To summarize this section on making AES calls, here is a complete listing of the Mouse_Key_State routine, without the intervening text: { Mouse_Key_State - Return the current mouse position and the state of both the mouse buttons and the keyboard modifier keys. } PROCEDURE Mouse_Key_State( VAR x, y, buttons, keys : integer ) ; TYPE Pointer = ^char ; { Just a filler declaration! } Int_In_Parms = ARRAY [ 0..15 ] OF integer ; Int_Out_Parms = ARRAY [ 0..45 ] OF integer ; Addr_In_Parms = ARRAY [ 0..1 ] OF Pointer ; Addr_Out_Parms = ARRAY [ 0..0 ] OF Pointer ; VAR int_in : Int_In_Parms ; int_out : Int_Out_Parms ; addr_in : Addr_In_Parms ; addr_out : Addr_Out_Parms ; PROCEDURE AES_Call( op : integer ; VAR int_in : Int_In_Parms ; VAR int_out : Int_Out_Parms ; VAR addr_in : Addr_In_Parms ; VAR addr_out : Addr_Out_Parms ) ; EXTERNAL ; BEGIN AES_Call( 79, int_in, int_out, addr_in, addr_out ) ; x := int_out[1] ; y := int_out[2] ; buttons := int_out[3] ; keys := int_out[4] ; END ; VDI CALLS - Accessing the VDI system is very similar to the discussion of AES calls above. The only main difference is that, although there is a "global parameter array", it doesn't need to stay intact. Also, sometimes you need to get return values in this array. Also, no address parameters are ever passed, but a new type of value is passed and returned, points. So the TYPE declarations for the various arrays we need are slightly different: TYPE Ctrl_Parms = ARRAY [ 0..11 ] OF integer ; Int_In_Parms = ARRAY [ 0..15 ] OF integer ; Int_Out_Parms = ARRAY [ 0..45 ] OF integer ; Pts_In_Parms = ARRAY [ 0..11 ] OF integer ; Pts_Out_Parms = ARRAY [ 0..11 ] OF integer ; For our VDI calling example, we're going to implement the call which allows you to control the height of text that is drawn using the "Draw_String" call. This call is known in the VDI documentation as "vst_height", but we're going to declare it like this: { Text_Height - Set the height in pixels of text, when it is drawn using the Draw_String library call. } PROCEDURE Text_Height( height : integer ) ; Again, we need to declare the variables which we are going to pass to VDI: VAR control : Ctrl_Parms ; int_in : Int_In_Parms ; int_out : Int_Out_Parms ; pts_in : Pts_In_Parms ; pts_out : Pts_Out_Parms ; The actual generic routine we are going to call to perform VDI operations is very similar to the AES_Call routine described above. One difference is that we pass two command numbers instead of one. The second number is only used when we call the GSX graphics primitives; it is the GSX primitive number which we want to use. For all non-GSX calls (i.e., most of the time), this second number will be zero (as it is in this case). Also, there is one additional parameter, called "translate" in the declaration below, which specifies whether to translate the points in the "pts_in" and "pts_out" array RELATIVE to the current origin. What this means is that if you use the Set_Window call to make a window current, all points passed to or from VDI will be translated to screen coordinates such that (0,0) is equivalent to the upper left of that window, PROVIDED the value of "translate" is true. If you don't want such translation to occur (we don't, in this case, since the "point" we are passing is actually the height we want!), pass in "false" for this parameter. The declaration of the generic VDI call is as follows: PROCEDURE VDI_Call( cmd, sub_cmd : integer ; nints, npts : integer ; VAR ctrl : Ctrl_Parms ; VAR int_in : Int_In_Parms ; VAR int_out : Int_Out_Parms ; VAR pts_in : Pts_In_Parms ; VAR pts_out : Pts_Out_Parms ; translate : boolean ) ; EXTERNAL ; Notice that we must tell VDI the { -M !NOTICE: THESE MATERIALS are UNSUPPORTED by OSS! If you do not understand how to use them do not contact OSS for help! We will not teach you how to program in Pascal. If you find an error in these materials, feel free to SEND US A LETTER explaining the error, and how to fix it. THE BOTTOM LINE: Use it, enjoy it, but you are on your own when using these materials! DISCLAIMER: OSS makes no representations or warranties with respect to the contents hereof and specifically disclaim all warranties of merchantability or fitness for any particular purpose. This document is subject to change without notice.  OSS provides these materials for use with Personal Pascal. Use them in any way you wish. -J } PROGRAM copy_pas ; CONST chunk_size = 4096 ; fn_length = 64 ; TYPE buffer_type = PACKED ARRAY [ 1..chunk_size ] OF byte ; file_name_type = PACKED ARRAY [ 1..fn_length ] OF char ; VAR fname : STRING ; buf : buffer_type ; i, in_file, out_file : integer ; name : file_name_type ; FUNCTION gem_create( VAR fname : file_name_type ; mode : integer ) : integer; GEMDOS( $3C ) ; FUNCTION gem_open( VAR fname : file_name_type ; mode : integer ) : integer; GEMDOS( $3D ) ; PROCEDURE gem_close( handle : integer ) ; GEMDOS( $3E ) ; FUNCTION gem_read( handle : integer ; nbytes : long_integer ; VAR buf : buffer_type ) : long_integer ; GEMDOS( $3F ) ; FUNCTION gem_write( handle : integer ; nbytes : long_integer ; VAR buf : buffer_type ) : long_integer ; GEMDOS( $40 ) ; PROCEDURE gem_seek( nbytes : long_integer ; handle, mode : integer ) ; GEMDOS( $42 ) ; PROCEDURE copy_file( in_file, out_file : integer ) ; VAR n : long_integer ; BEGIN REPEAT gem_close( out_file ) ; { Close down the output! } out_file := gem_open( name, 1 ) ; gem_seek( 0, out_file, 2 ) ; { Seek end-of-file } n := gem_read( in_file, chunk_size, buf ) ; writeln( 'read chunk of ', n, ' bytes' ) ; IF n < 0 THEN BEGIN writeln( 'error ', n, ' on input file' ) ; halt ; END ELSE IF n > 0 THEN IF gem_write( out_file, n, buf ) = n THEN writeln( 'wrote chunk properly' ) ELSE BEGIN writeln( 'error writing output f!PROGRAM Cube; { Author: William P. Smith } { Mitchellville, Md } { This is a real time graphics demo of a cube tumbling in } { 3-space. The 8088 processor is just too slow to do } { effectively demonstrate real time graphics, but this } { program can be used as a bench mark for graphics } { performance of future generation PCs. } { 05/20/86 Converted form Turbo Pascal For I.B.M. PCs to O.S.S. Personal Pascal By Jerry LaPeer of LaPeer Systems Inc. Uses 2 screens of memory and swaps them for smooth animation Well the 8088 on the PCs may be slow but the ST is at the least fast enough } {$I A:\GEMSUBS.PAS } CONST Pi = 3.1415927; TYPE Screendef = ^Screendata; Screendata = PACKED ARRAY[1..32766] OF CHAR; VAR A,B,Ax,Bx,Ay,By,Az,Bz,Th,Thx,Thy,Thz: REAL; T: ARRAY[1..3,1..3] OF REAL; Scale: REAL; Incrs: REAL; Xp,Yp: ARRAY[1..3] OF INTEGER; X,Y: ARRAY[1..7] OF INTEGER; J: INTEGER; Offsetx,Offsety,Hoffsetx,Hoffsety: INTEGER; Incrx,Incry: INTEGER; Color_Off,Color_On: INTEGER; Reply: Str255; Curlogbase: Screendef; Curphybase: Screendef; Visible_Screen:Screendef; Build_Screen: Screendef; Screen1: Screendef; Screen2: Screendef; FUNCTION Getphybase : Screendef; Xbios(2); FUNCTION Getlogbase : Screendef; Xbrios(3); PROCEDURE Setscreen(Logloc,Phyloc : Screendef; Rez : INTEGER); Xbios(5); PROCEDURE Draw(X1,Y1,X2,Y2,Lc : INTEGER); BEGIN Line_Color(Lc); Line(X1,Y1,X2,Y2); END; PROCEDURE Drawcube(Thx,Thy,Thz: REAL); VAR I,J: INTEGER; Tempscreen: Screendef; BEGIN Az:=COS(Thz) / Scale; Ax:=COS(Thx) / Scale; Ay:=COS(Thy) / Scale; Bz:=SIN(Thz) / Scale; Bx:=SIN(Thx) / Scale; By:=SIN(Thy) / Scale; T[1,1]:=Az*Ay-Bx*By*Bz; T[1,2]:=-Bz*Ax; T[1,3]:=Az*By+Ay*Bz*Bx; T[2,1]:=Bz*Ay+Az*Bx*By; T[2,2]:=Az*Ax; T[2,3]:=Bz*By-Az*Ay*Bx; T[3,1]:=-Ax*By; T[3,2]:=Bx; T[3,3]:=Ax*Ay; FOR J:=1 TO 3 DO BEGIN Xp[J]:=ROUND(60*(T[2,J]-T[1,J]*B)); Yp[J]:=ROUND(30*(T[3,J]-T[1,J]*A)); END; X[1]:=Offsetx+Xp[1]; Y[1]:=Offsety-Yp[1]; X[2]:=X[1]+Xp[2]; Y[2]:=Y[1]-Yp[2]; X[3]:=Offsetx+Xp[2]; Y[3]:=Offsety-Yp[2]; X[4]:=X[3]+Xp[3]; Y[4]:=Y[3]-Yp[3]; X[5]:=Offsetx+Xp[3]; Y[5]:=Offsety-Yp[3]; X[6]:=X[1]+Xp[3]; Y[6]:=Y[1]-Yp[3]; X[7]:=X[2]+Xp[3]; Y[7]:=Y[2]-Yp[3]; Draw(Offsetx,Offsety,X[1],Y[1],Color_On); Draw(X[1],Y[1],X[2],Y[2],Color_On); Draw(X[2],Y[2],X[3],Y[3],Color_On); Draw(X[3],Y[3],X[4],Y[4],Color_On); Draw(X[4],Y[4],X[5],Y[5],Color_On); Draw(X[5],Y[5],X[6],Y[6],Color_On); Draw(X[6],Y[6],X[7],Y[7],Color_On); Draw(X[7],Y[7],X[4],Y[4],Color_On); Draw(X[3],Y[3],Offsetx,Offsety,Color_On); Draw(Offsetx,Offsety,X[5],Y[5],Color_On); Draw(X[6],Y[6],X[1],Y[1],Color_On); Draw(X[7],Y[7],X[2],Y[2],Color_On); Tempscreen := Visible_Screen; Visible_Screen := Build_Screen; Build_Screen := Tempscreen; Setscreen(Build_Screen,Visible_Screen,-1); Clear_Screen; END; PROCEDURE Beep; BEGIN WRITE(CHR($07)); Color_On := Color_On + 1; IF NOT (Color_On IN [1..3]) THEN Color_On := 1; END; PROCEDURE Do_Main; VAR Delay_Count: INTEGER; I: INTEGER; Creply: CHAR; BEGIN Th:=Pi/4; A:=COS(Th); B:=SIN(Th); Offsetx:=300; Offsety:=100; Scale := 1.0; Incrx:=5; Incry:=3; Incrs := 0.02; Thx:=0.0; Thy:=0.0; Thz:=0.0; Color_Off := 0; Color_On := 1; Drawcube(Thx,Thy,Thz); REPEAT Thz:=Thz+0.1; Thx:=Thx-0.1; Thy:=Thy+0.1; Drawcube(Thx,Thy,Thz); IF (Offsetx >= 500) OR (Offsetx <= 40) THEN BEGIN Incrx:=-Incrx; Beep; END; IF (Offsety <= 50) OR (Offsety >= 150) THEN BEGIN Incry:=-Incry; Beep; END; Scale := Scale + Incrs; IF Scale >= 3.0 THEN Incrs := -Incrs ELSE IF Scale <= 0.5 THEN Incrs := -Incrs; Offsetx:=Offsetx+Incrx; Offsety:=Offsety+Incry; UNTIL Keypress; READ(Creply); END; FUNCTION Alloc_Screen : Screendef; CONST Scraddrresolution = 256; VAR Scrjunk: RECORD CASE Byte OF 0 : (Sali: Long_Integer); 1 : (Sa: Screendef); END; BEGIN WITH Scrjunk DO BEGIN NEW(Sa); IF Sali MOD Scraddrresolution <> 0 THEN Sali := Sali + (Scraddrresolution - (Sali MOD Scraddrresolution)); END; Alloc_Screen := Scrjunk.Sa; END; BEGIN IF Init_Gem >= 0 THEN BEGIN Curlogbase := Getlogbase; Curphybase := Getphybase; Screen1 := Alloc_Screen; Screen2 := Alloc_Screen; Setscreen(Screen1,Curphybase,-1); Clear_Screen; Setscreen(Screen2,Curphybase,-1); Clear_Screen; Visible_Screen := Screen2; Build_Screen := Screen1; Setscreen(Build_Screen,Visible_Screen,-1); Set_Clip(0,0,640,200); Do_Main; Setscreen(Curlogbase,Curphybase,-1); Exit_Gem; END; END. QQ  { Just a "pretty" demo program...draws curved shapes by drawing a series of straight lines. Kind of a "classic". } PROGRAM dcos ; { Graphics Example - derived from dcos.c --- J. Lohse 20.8.1985 } { Modified for new Pascal GEM libraries --- 01 Sept 1987 MER } {$I A:\gemsubs.pas} VAR which, dummy, handle, min_width, min_height : integer ; msg : Message_Buffer ; wind_type : integer ; title : Window_Title ; PROCEDURE draw_sample ; TYPE zerototwo = ARRAY [ 0..2 ] OF integer; VAR number, y1, y2 : real ; iter, lloop : integer ; amp, per : zerototwo ; x, y, w, h : integer ; FUNCTION random: integer; XBIOS(17); BEGIN { draw_sample } Work_Rect( handle, x, y, w, h ) ; Set_Clip( x, y, w, h ) ; Paint_Style( Solid ) ; Paint_Color( White ) ; Paint_Rect( x, y, w, h ) ; amp[0] := 3 ; amp[1] := 2 + random & 7 ; amp[2] := 3 + random & 3 ; per[0] := 40 + random & 31 ; per[1] := 50 ; per[2] := 20 + random & 63 ; FOR lloop := 0 TO 2 DO BEGIN Line_Color( lloop+2 ) ; iter := 0; WHILE iter < w DO BEGIN number := iter; y1 := sin(number / per[lloop]) ; y1 := y1 * (h / amp[lloop]) ; y1 := y + y1 + h / 2 ; y2 := cos(number / per[lloop]) ; y2 := y2 * (h / amp[lloop]) ; y2 := y + y2 + h / 2 ; Line( x+iter, round(y1), x+w-iter-1, round(y2) ) ; iter := iter + 3 END END END { draw_sample }; BEGIN { dcos } IF Init_Gem >= 0 THEN BEGIN Sys_Font_Size( dummy, dummy, min_width, min_height ) ; min_width := min_width * 4 ; min_height := min_height * 4 ; Set_Mouse( M_Arrow ) ; wind_type := G_Size|G_Move|G_Close|G_Name ; title := ' Pascal Cosine Color Show ' ; handle := New_Window( wind_type, title, 0, 0, 0, 0 ) ; Open_Window( handle, 0, 0, 0, 0 ) ; msg[0] := 0; REPEAT IF NOT ((msg[0] = WM_Redraw) AND (which = E_Message)) THEN BEGIN Hide_Mouse ; Begin_Update ; draw_sample; End_Update ; Show_Mouse ; END; which := Get_Event( E_Message|E_Timer, 0, 0, 0, 10, false, 0, 0, 0, 0, false, 0, 0, 0, 0, msg, dummy, dummy, dummy, dummy, dummy, dummy ) ; IF which & E_Message <> 0 THEN IF (msg[0] = WM_Sized) OR (msg[0] = WM_Moved) THEN BEGIN IF msg[6] < min_width THEN msg[6] := min_width ; IF msg[7] < min_height THEN msg[7] := min_height ; Set_WSize( handle, msg[4], msg[5], msg[6], msg[7] ) ; END UNTIL msg[0] = WM_Closed ; Close_Window( handle ) ; Delete_Window( handle ) ; Exit_Gem ; END END. |{ A "do nothing" program...just demonstrates how to set up a dialog box and use it, including the use of an editable text field. Caution: some versions of GEM crash if you enter an underline in response to a numeric field in an editable text field! } PROGRAM name ; {$I A:\gemsubs} VAR dialog : Dialog_Ptr ; button, ok_btn, cancel_btn, prompt_item, date_item : integer ; BEGIN IF Init_Gem >= 0 THEN BEGIN dialog := Ne Yw_Dialog( 4, 0, 0, 26, 8 ) ; prompt_item := Add_DItem( dialog, G_String, None, 2, 1, 0, 0, 0, 0 ) ; Set_DText( dialog, prompt_item, 'Please enter the date:', System_Font, TE_Left ) ; date_item := Add_DItem( dialog, G_FText, None, 2, 3, 10, 1, 0, $1180 ); Set_DEdit( dialog, date_item, '__/__/__', '9', '090187', System_Font, TE_Center ) ; ok_btn := Add_DItem( dialog, G_Button, Selectable|Exit_Btn|Default, 2, 5, 8, 2, 2, $1180 ) ; Set_DText( dialog, ok_btn, 'OK', System_Font, TE_Center ) ; cancel_btn := Add_DItem( dialog, G_Button, Selectable|Exit_Btn, 16, 5, 8, 2, 2, $1180 ) ; Set_DText( dialog, cancel_btn, 'Cancel', System_Font, TE_Center ) ; Center_Dialog( dialog ) ; button := Do_Dialog( dialog, date_item ) ; Exit_Gem ; END ; END. B{ This program doesn't really do anything... it just demonstrates the use of Get_Out_File, the predefined dialog box } PROGRAM File_Test ; {$I gemsubs.pas} VAR name : Path_Name ; alert : Str255 ; junk : integer ; BEGIN IF Init_Gem >= 0 THEN BEGIN name := '' ; IF Get_Out_File( 'What file to save?', name ) THEN alert := concat( '[0][You chose file|', name, '][ OK ]' ) ELSE alert := '[2][You didn''t choose anything!][ OK ]' ; junk := Do_Alert( alert, 0 ) ; Exit_Gem ; END ; END. { This file is ONLY a sample of what a Personal Pascal GEM program will look like. You must first insert your declarations, as shown below, before you can compile this file properly. If you compile it with no changes, you will get syntax errors! } PROGRAM name ; {$I A:\gemsubs} { and that ".PAS" is default } CONST { ONLY code this line if you have some constants to declare! } (* ... your CONSTants ... *) TYPE { ONLY code this line if you have some types to declare! } (* ... your TYPEs ... *) VAR { ONLY code this line if you have some variables to declare! } (* ... your VARiables ... *) (* ... your PROCEDUREs, FUNCTIONs, etc. ... *) BEGIN IF Init_Gem >= 0 THEN BEGIN (* ... your main program ... *) Exit_Gem ; END ; END. { The Personal Pascal version of the classic C "hello" program. If you have ever seen the C version, you will know how much snazzier this version is. To use this: Point the mouse somewhere on the screen and click its button. Or "drag" the mouse pointer while holding down the button. To exit: Just push the SHIFT key on the keyboard at the same time you click on the mouse. } PROGRAM Hello ; {$I gemsubs} PROCEDURE Event_Loop ; VAR which, dummy, key_state, x, y : integer ; msg : Message_Buffer ; BEGIN REPEAT { Get a mouse button event. } which := Get_Event( E_Button, 1, 1, 1, 0, false, 0, 0, 0, 0, false, 0, 0, 0, 0, msg, dummy, dummy, dummy, x, y, key_state ) ; { We don't test "which" to tell what event occurred, since we only asked for button events! } Hide_Mouse ; Draw_ String( x, y, 'hello, world' ) ; Show_Mouse ; UNTIL key_state & $03 <> 0 ; END ; BEGIN IF Init_Gem >= 0 THEN BEGIN Hide_Mouse ; Clear_Screen ; Draw_String( 0, 15, ' "hello, world" demo-- press mouse button, SHIFT-button exits.' ) ; Text_Style( Slanted ) ; Set_Mouse( M_Arrow ) ; Show_Mouse ; Draw_Mode( Trans_Mode ) ; Event_Loop ; Exit_Gem ; END ; END. { Another do-nothing program. This one demonstrates the use of menus. } PROGRAM Menu_Example ; {$I A:\gemsubs} VAR menu : Menu_Ptr ; dummy, file_title, edit_title, open_item, close_item, cut_item, paste_item : integer ; PROCEDURE Do_Menu( title, item : integer ) ; VAR alert : Str255 ; BEGIN IF title = Desk_Title THEN alert := '[1][You chose the "Desk" menu.][ OK ]' ELSE IF title = file_title THEN alert := '[1][You chose the "File" menu.][ OK ]' ELSE IF title = edit_title THEN alert := '[1][You chose the "Edit" menu.][ OK ]' ; dummy := Do_Alert( alert, 1 ) ; Menu_Normal( menu, title ) ; END ; PROCEDURE Event_Loop ; VAR which : integer ; msg : Message_Buffer ; BEGIN REPEAT which := Get_Event( E_Message, 0, 0, 0, 0, false, 0, 0, 0, 0, false, 0, 0, 0, 0, msg, dummy, dummy, dummy, dummy, dummy, dummy ) ; { Since we only asked for message events, we don't need to check that we did, indeed, get a message event. } Do_Menu( msg[3], msg[4] ) ; UNTIL msg[3] = Desk_Title ; END ; BEGIN IF Init_Gem >= 0 THEN BEGIN menu := New_Menu( 6, ' Simple Menu Test' ) ; file_title := Add_MTitle( menu, ' File ' ) ; edit_title := Add_MTitle( menu, ' Edit ' ) ; open_item := Add_MItem( menu, file_title, ' Open ' ) ; close_item := Add_MItem( menu, file_title, ' Close ' ) ; cut_item := Add_MItem( menu, edit_title, ' Cut ' ) ; paste_item := Add_MItem( menu, edit_title, ' Paste ' ) ; Draw_Menu( menu ) ; Event_Loop ; Erase_Menu( menu ) ; Exit_Gem ; END ; END. { This program demonstrates the ability to define your own mouse form, as discussed in the Personal Pascal manual. } PROGRAM Oss_Mouse ; {$I A:\gemsubs.pas} VAR m : Mouse_Form ; PROCEDURE New_Mouse ; VAR word : integer ; BEGIN m.hot_x := 2 ; m.hot_y := 3 ; m.res := 1 ; m.mask_color := White ; m.data_color := Black ; FOR word := 0 TO 15 DO BEGIN m.mask[word] := 0 ; m.data[word] := 0 ; END ; FOR word := 0 TO 8 DO m.mask[word] := $F ; m.data[1] := $70e7 ; { -***-***--*** } m.data[2] := $8908 ; { *---*--*-*--- } m.data[3] := $8908 ; { *---*--*-*--- } m.data[4] := $89ef ; { *---*--*-* } m.data[5] := $8821 ; { *---*-*-* } m.data[6] := $8821 ; { *---*-*-* } m.data[7] := $71ce ; { -***---***--***- } Set_MForm( m ) ; END ; PROCEDURE Wait_For_Button ; VAR msg : Message_Buffer ; dummy : integer ; BEGIN dummy := Get_Event( E_Button, 1, 1, 1, 0, false, 0, 0, 0, 0, false, 0, 0, 0, 0, msg, dummy, dummy, dummy, dummy, dummy, dummy ) ; END ; BEGIN IF Init_Gem >= 0 THEN BEGIN New_Mouse ; Wait_For_Button ; Set\_Mouse( M_Arrow ) ; Exit_Gem ; END ; END. { This is a fairly complex example of handling window events. It shows the way "drawing" programs (as opposed to paint programs) maintain shapes, etc., in a multiple window scrolling environment. This is just the bare beginnings of such a program, though, so feel free to improve on it! } PROGRAM Window_Demo; {$I A:\GEMSUBS.PAS } { all the GEM declarations } CONST { We're going to give names to a few special numbers here so we can use the names from now on, instead of just pulling numbers out of a hat. } max_windows = 7; { The maximum number of windows we can have open } max_objects = 10; { The maximum number of objects drawn in each window } TYPE { We need to record several pieces of information about each object so we can properly draw it within a window. We'll hold this information in a record of type 'object_info'. } shape_kinds = ( square, circle, wedge ); object_info = RECORD shape: shape_kinds; { The 'x' and 'y' fields hold the position of the object "relative" to the upper left corner of the window's workspace area. } x, y, size, pattern, color: integer; END; { Since each window can hold several objects, we need some suitable data structure to hold information on multiple objects. For simplicity in this demo, we have chosen a simple array. For more complex applications, a linked list structure would probably be more appropriate. } obj_range = 0..max_objects; object_list = ARRAY[ 1..max_objects ] OF object_info; { Now we come to the definition of the record which will hold all the information about a window. We need to hold the "handle" returned by GEM, the name of the window, and the objects that were drawn in it. } window_range = No_Window..max_windows; window_info = RECORD handle: integer; { GEM's window handle } name: Window_Title; { Name of our window } obj_count: obj_range; { Count of objects in the window } objects: object_list; { And the array that holds them } END; VAR { Now we get to our global variable definitions. We really only need a few pieces of information globally. } { Variables needed to draw or keep track of our menu: } { The pointer used to refer to the entire menu for drawing or erasing } menu: Menu_Ptr; { Menu title indices } size_title, shape_title, pattern_title: integer; { menu subtitle indices } size_small, size_medium, size_large, shape_square, shape_circle, shape_wedge, pattern_solid, pattern_checked, pattern_open: integer; { Variables used to hold information about the windows we have open: } { The array that holds all of the window information records } windows: ARRAY[ 1..max_windows ] OF window_info; { and the count of how many windows we have open } window_count: window_range; { We also need to keep track of the current choices the user has made about the next object to be drawn. These choices are stored as the menu item indices which the user selected. When a new object is added, these values will be converted to the values actually stored in every 'object_info' record. } cur_size, cur_shape, cur_pattern: integer; { = begin subprogram declarations = } { init_windows - This routine performs all the initialization of the window information variables. We need to set the count of windows to zero, since we don't have any windows open yet. We also set the 'handle' field of each record to the value 'No_Window', an illegal window handle value defined in the GEMCONST.PAS file, as an indication that the record is free to be used when a new window is opened. We will also set up the name of each window here. In a real program, you would probably want to allow the user to specify a name for a window, so you'd want to set up the name sometime later, perhaps when a window is actually opened. } PROCEDURE init_windows; VAR index: window_range; BEGIN window_count := 0; { We start out with no windows. } FOR index := 1 TO max_windows DO WITH windows[index] DO BEGIN handle := No_Window; { Each window name is ' Window # ', where the '#' is replaced by the index of the window in the 'windows' array. } name := concat( ' Window ', chr(ord('0')+index), ' ' ) END END; { which_window - At various times we will need to convert from a window handle which was returned by GEM into the index of the window in our 'windows' array. The following routine searches the array for a window whose handle matches, and returns the index into 'windows' if a matching window is found. Otherwise, the value 'No_Window' is returned to show that no matching window was found. This routine can also be called with the value 'No_Window' as the 'wind_handle' parameter. In this case it will look for a record in 'windows' with 'No_Window' as a handle (i.e., a free entry), so we can also use this routine to search for free entries in 'windows'. } FUNCTION which_window( wind_handle: integer ): window_range; VAR i: integer; { Used to index through the 'windows' array } found: boolean; { Used to indicate when we find a matching window } BEGIN i := 1; found := false; WHILE (i <= max_windows) AND NOT found DO { If we find a matching window, then set our exit flag } IF windows[i].handle = wind_handle THEN found := true ELSE i := i + 1; IF found THEN which_window := i ELSE which_window := No_Window END; { draw_object - Draw a single object in a window. The parameter 'obj' is the record that holds all of the relevant information. We also receive the two parameters 'x0', and 'y0', which are the coordinates of the upper left of the window in which we are drawing. Since the coordinates in 'obj' are "relative" to the origin of the window, we need to add in these upper left values. } PROCEDURE draw_object( VAR obj: object_info; x0, y0: integer ); BEGIN WITH obj DO BEGIN Paint_Style( pattern ); { Set the style and color of our object } Paint_Color( color ); { Now we draw the correct object. } CASE shape OF square: Paint_Rect( x0+x, y0+y, size, size ); circle: Paint_Oval( x0+x+(size DIV 2), y0+y+(size DIV 2), size DIV 2, size DIV 2 ); wedge: Paint_Arc( x0+x, y0+y, size, size, 2250, 3150 ) END END END; { draw_list - Draw the entire object list for a window. Since new objects are added at the end of the 'objects' array, and since objects drawn later should be "on top of" previous objects, we will go forward through the 'objects' array, calling 'draw_object' for each element. Before we start drawing, we need to determine the upper left corner of the window, so we do a 'Work_Rect' call, which returns the coordinates of the window workspace area. Notice that this routine does not set the clipping rectangle, since it is designed to be called from the redraw routine. It assumes the proper clipping has already been set up. } PROCEDURE draw_list( index: window_range ); VAR work_x, work_y, work_w, work_h: integer; i: obj_range; BEGIN WITH windows[index] DO BEGIN (* Work_Rect( handle, work_x, work_y, work_w, work_h );*) Set_Window( handle ); FOR i := 1 TO obj_count DO draw_object( objects[i], 0 (*work_x*), 0 (*work_y*) ); Set_Window( No_Window ); END END; { do_redraw - Redraw a portion of a window. This routine is called when GEM has sent us a redraw message. The parameters 'x0', 'y0', 'w0', and 'h0' are the rectangular area of the screen which needs to be redrawn. We will intersect that rectangle with the area our window occupies and draw any graphical objects which occupy those areas. 2The 'do_redraw' routine doesn't actually put any new data onto the screen itself; it just finds out the index of the window in our 'windows' array and calls 'draw_list' to draw the window's objects after setting the proper clipping values. } PROCEDURE do_redraw( window, x0, y0, w0, h0: integer ); VAR x, y, w, h: integer; index: window_range; BEGIN index := which_window( window ); { Find out the window's index } { The next code is copied almost verbatim out of the Personal Pascal manual. The only real difference is the call to 'draw_list'. } Hide_Mouse; First_Rect( window, x, y, w, h ); WHILE (w <> 0) OR (h <> 0) DO BEGIN IF Rect_Intersect( x0, y0, w0, h0, x, y, w, h ) THEN BEGIN { At this point, x, y, w, and h hold the coordinates of a rectangle we need to redraw. We first set the clipping to these values, paint the area white, and then call 'draw_list' to redraw any objects that occupy this area. } Set_Clip( x, y, w, h ); Paint_Style( Solid ); Paint_Color( White ); Paint_Rect( x, y, w, h ); draw_list( index ) END; Next_Rect( window, x, y, w, h ); { Move to the next rectangle } END; Show_Mouse END; { add_object - Add a new object to the list in window 'index' using the currently selected drawing attributes (size, shape, and pattern). The coordinates where the user wanted the object are passed in the variables 'mx' and 'my' (for "mouse x" and "mouse y"). Since we want to store the position of the object "relative" to the upper left corner of the window, we need to subtract the upper left coordinates from these values (the upper left position is added back in whenever the window is redrawn). The drawing attributes are stored as menu item indices, so we have three IF statements to convert to values to store in the 'object_info' record. The color of the objects just cycles through the range 1 to 3. } PROCEDURE add_object( index: window_range; mx, my: integer ); VAR wx, wy, ww, wh: integer; BEGIN WITH windows[index] DO BEGIN obj_count := obj_count + 1; Work_Rect( handle, wx, wy, ww, wh ); WITH objects[obj_count] DO BEGIN x := mx-wx; y := my-wy; { Determine the object's size... } IF cur_size = size_small THEN size := 15 ELSE IF cur_size = size_medium THEN size := 45 ELSE size := 70; { and the object's shape... } IF cur_shape = shape_square THEN shape := square ELSE IF cur_shape = shape_circle THEN shape := circle ELSE shape := wedge; { the fill pattern as well... } IF cur_pattern = pattern_solid THEN pattern := 1 ELSE IF cur_pattern = pattern_checked THEN pattern := 23 ELSE pattern := 0; { and finally set the color (we just cycle through colors 1 to 3 in order to get a pleasing result). } color := (obj_count MOD 3) + 1 END; { Now we need to draw the new object onto the screen. We first set the clipping rectangle to our window's workspace area, and then just call 'draw_object'. } Set_Clip( wx, wy, ww, wh ); Hide_Mouse; Set_Window( handle ); draw_object( objects[obj_count], 0 (*wx*), 0 (*wy*) ); Set_Window( No_Window ); Show_Mouse END END; { do_close - Close a window specified by 'wind_handle'. We need to find the index of the window in our 'windows' array, ask GEM to close and delete the window, and then remove the window from our records, also. } PROCEDURE do_close( wind_handle: integer ); VAR index: window_range; BEGIN index := which_window( wind_handle ); Close_Window( wind_handle ); Delete_Window( wind_handle ); window_count := window_count - 1; windows[index].handle := No_Window; END; { do_open - Try to open a new window with no objects. We can successfully create a new window only if both 1) We haven't already opened the maximum number of windows, and 2) GEM returns uos a valid window handle. If we are successful, we open the window to the maximum size available. Note that no drawing operations are performed in this routine! The first event we will receive after opening a new window will be a request from GEM to redraw our new window, so we don't need to do anything here. } PROCEDURE do_open; VAR junk: integer; new_index: window_range; BEGIN IF window_count = max_windows THEN junk := Do_Alert( '[1][There are no more windows available][ OK ]', 1 ) ELSE BEGIN new_index := which_window( No_Window ); WITH windows[ new_index ] DO BEGIN handle := New_Window( G_Name|G_Size|G_Close|G_Move, name, (0, 0, 0, 0 ); IF handle = No_Window THEN junk := Do_Alert( '[3][GEM is out of windows!][ OK ]', 1 ) ELSE BEGIN obj_count := 0; Open_Window( handle, 0, 0, 0, 0 ); window_count := window_count + 1; END END END END; { adjust_menu - Put check marks beside the menu items corresponding to the current drawing attributes. } PROCEDURE adjust_menu; BEGIN Menu_Check( menu, cur_size, true ); Menu_Check( menu, cur_shape, true ); Menu_Check( menu, cur_pattern, true ) END; { do_menu - Perform a menu option. Except for the desk title, all of the menus just change the current attributes for drawing objects (size, shape, etc.), so we'll just erase the check mark by the old attribute, and remember the new attribute. At the end of the routine, we call 'adjust_menu' to put a check mark beside the new attribute. If the menu selected is the desk title, we call the routine 'do_open' to try opening a new window. } PROCEDURE do_menu( title, item: integer ); BEGIN IF title = size_title THEN BEGIN Menu_Check( menu, cur_size, false ); cur_size := item END ELSE IF title = shape_title THEN BEGIN Menu_Check( menu, cur_shape, false ); cur_shape := item END ELSE IF title = pattern_title THEN BEGIN Menu_Check( menu, cur_pattern, false ); cur_pattern := item END ELSE { title must be the desk title } do_open; adjust_menu; Menu_Normal( menu, title ) END; { do_message - Handle a message event from GEM. } PROCEDURE do_message( msg: Message_Buffer ); BEGIN CASE msg[0] OF MN_Selected: do_menu( msg[3], msg[4] ); WM_Topped: Bring_To_Front( msg[3] ); WM_Redraw: do_redraw( msg[3], msg[4], msg[5], msg[6], msg[7] ); WM_Sized, WM_Moved: Set_WSize( msg[3], msg[4], msg[5], msg[6], msg[7] ); WM_Closed: do_close( msg[3] ) END END; { in_window - Test to see if a point is within the working area of a window. Return true, if the point is within the workspace, and false otherwise. } FUNCTION in_window( px, py, wind_handle: integer ): boolean; VAR x, y, w, h: integer; BEGIN Work_Rect( wind_handle, x, y, w, h ); in_window := (px >= x) AND (py >= y) AND (px < x+w) AND (py < y+h) END; { do_button - Handle a mouse button event. This routine is called when the main event loop gets a "mouse button down" event. The position of the mouse when that event occurred is passed in the parameters 'mouse_x' and 'mouse_y'. We first need to wait for the mouse button to be released, then check to see that 1) the mouse position is in the top window, and 2) the top window is one of our windows. If these two conditions are true, and the window doesn't already contain the maximum number of objects, we call 'add_object' to insert the new object. If we already have the maximum number of objects, we just inform the user with an alert box. } PROCEDURE do_button( mouse_x, mouse_y: integer ); VAR junk, index: integer; msg: Message_Buffer; BEGIN junk := Get_Event( E_Button, 1, 0, 1, 0, false, 0, 0, 0, 0, false, 0, 0, 0, 0, msg, junk, junk, junk, junk, junk, junk ); index := which_window(Front_Window); IF in_winmdow( mouse_x, mouse_y, Front_Window ) AND (index <> No_Window) THEN IF windows[index].obj_count < max_objects THEN add_object( index, mouse_x, mouse_y ) ELSE junk := Do_Alert( '[1][You''ve already added the|maximum number of objects!][ OK ]',1) END; { event_loop - The "heart" of the program. Here we loop forever, waiting for user events, and go to subordinate routines to process them. If we just got a "close window" message, and closing the window left us with no open windows, then we are finished and we return to our caller. Note that the event processing is bracketed by 'Begin_Update' and 'End_Update'. The first call disables the menu at the top of the screen so we won't be interfered with while processing our event. } PROCEDURE event_loop; VAR event, junk, mouse_x, mouse_y: integer; msg: Message_Buffer; BEGIN REPEAT event := Get_Event( E_Message|E_Button, 1, 1, 1, 0, false, 0, 0, 0, 0, false, 0, 0, 0, 0, msg, junk, junk, junk, mouse_x, mouse_y, junk ); Begin_Update; { Make sure no new menu selections occur } IF event&E_Message <> 0 THEN do_message( msg ) ELSE do_button( mouse_x, mouse_y ); End_Update { Allow menu selections again } UNTIL (event&E_Message <> 0) AND (msg[0] = WM_Closed) AND (window_count = 0); END; { make_menu - Create a new menu and add all of our titles and items. The pointer to the newly created menu is stored in the variable 'menu'. } PROCEDURE make_menu; BEGIN { We need a menu with room for 12 titles and items } menu := New_Menu( 12, ' New window!' ); { Set up window titles } size_title := Add_MTitle( menu, ' Sizes ' ); shape_title := Add_MTitle( menu, ' Shapes ' ); pattern_title := Add_MTitle( menu, ' Patterns ' ); { Then the individual items } size_small := Add_MItem( menu, size_title, ' Small ' ); size_medium := Add_MItem( menu, size_title, ' Medium ' ); size_large := Add_MItem( menu, size_title, ' Large ' ); shape_square := Add_MItem( menu, shape_title, ' Square ' ); shape_circle := Add_MItem( menu, shape_title, ' Circle ' ); shape_wedge := Add_MItem( menu, shape_title, ' Wedge ' ); pattern_solid := Add_MItem( menu, pattern_title, ' Solid ' ); pattern_checked := Add_MItem( menu, pattern_title, ' Checkered ' ); pattern_open := Add_MItem( menu, pattern_title, ' Open ' ); { Set the indices of our initial drawing attributes } cur_size := size_small; cur_shape := shape_square; cur_pattern := pattern_solid END; { Finally! The main program code. We just want to initialize GEM, then initialize ourselves. We draw the menu, and go to 'event_loop' for the duration of the program. When it returns, we just clean up and finish. } BEGIN IF Init_Gem >= 0 THEN BEGIN init_windows; make_menu; Draw_Menu( menu ); adjust_menu; Set_Mouse( M_Arrow ); event_loop; Erase_Menu( menu ); Exit_Gem END END. { This is a simpler window-redraw program. "WINDDEMO" was derived from this. But this program dramatically shows how and when redraws are needed, as requested by GEM to your program via redraw messages. Every time you click on the "NEW WINDOW" item in the DESK menu, a new window is created. Use the mouse to Ochange the size of the window, move it around, etc. Every time a redraw event is requested via a GEM message, an "X" is drawn in the redraw rectangle. Look and when and how various "X" shapes appear. Fascinating!! } PROGRAM wind_test ; {$I A:\gemsubs.pas} VAR menu : Menu_Ptr ; wind_name : Window_Title ; { Do_Redraw - Redraw an area of a single window by drawing a rectangle with an X through it in the area GEM wants us to redraw (not very useful, but kind of interesting). } PROCEDURE Do_Redraw( window, x0, y0, w0, h0 : integer ) ; VAR x, y, w, h : integer ; BEGIN Paint_Color( White ) ; Begin_Update ; Hide_Mouse ; First_Rect( window, x, y, w, h ) ; WHILE (w <> 0) OR (h <> 0) DO BEGIN IF Rect_Intersect( x0, y0, w0, h0, x, y, w, h ) THEN BEGIN Set_Clip( x, y, w, h ) ; Paint_Rect( x, y, w, h ) ; { First blank the area... } Frame_Rect( x, y, w, h ) ; { The frame it with a box. } Line( x, y, x+w-1, y+h-1 ) ; { Now draw an X in the box. } Line( x+w-1, y, x, y+h-1 ) ; END ; Next_Rect( window, x, y, w, h ) ; END ; Show_Mouse ; End_Update ; END ; { Get events and open windows, redraw them, and move them around, until the last one is closed by the user. Because GEM only lets us have seven windows, that's our maximum number! } PROCEDURE Event_Loop ; VAR wind_count, window, event, junk : integer ; msg : Message_Buffer ; BEGIN wind_count := 0 ; { We start our with no windows. } wind_name := ' Window Sample ' ; REPEAT event := Get_Event( E_Message, 0, 0, 0, 0, false, 0, 0, 0, 0, false, 0, 0, 0, 0, msg, junk, junk, junk, junk, junk, junk ) ; CASE msg[0] OF MN_Selected: BEGIN window := New_Window( G_Name|G_Size|G_Close|G_Move, wind_name, (0, 0, 0, 0 ) ; IF window = No_Window THEN junk := Do_Alert( '[3][Out of windows!][ OK ]', 0 ) ELSE BEGIN Open_Window( window, 0, 0, 0, 0 ) ; wind_count := wind_count + 1 ; END ; Menu_Normal( menu, msg[3] ) ; END ; WM_Topped: Bring_To_Front( msg[3] ) ; WM_Redraw: Do_Redraw( msg[3], msg[4], msg[5], msg[6], msg[7] ) ; WM_Sized, WM_Moved: Set_WSize( msg[3], msg[4], msg[5], msg[6], msg[7] ) ; WM_Closed: BEGIN Close_Window( msg[3] ) ; Delete_Window( msg[3] ) ; wind_count := wind_count - 1 ; END ; END ; UNTIL (msg[0] = WM_Closed) AND (wind_count = 0) ; END ; BEGIN IF Init_Gem >= 0 THEN BEGIN { We only have a "Desk" menu. The first item will cause us to open a new window. } menu := New_Menu( 0, ' New window!' ) ; Draw_Menu( menu ) ; Event_Loop ; Erase_Menu( menu ) ; Exit_Gem ; END ; END. { The GEMDEMOS and TOSDEMOS folders on this disk contain several programs you can print (or display, or edit, if you do not have a printer) and examine. Some of the programs are not particulary useful: They are designed strictly as tutorial demonstrations. For many more program examples and help, call the OSS BBS at (408) 446-3451 or order the OSS BBS disk, which contains 310K of the best of the BBS. We charge only $10, including shipping, so it may be significantly cheaper than the phone company charges. These disks are set up for use on a floppy-only system with one or two drives. PLEASE make backup copies of BOTH disks as soon as you get them! Do NOT write to your master disks! We charge $10 to restore a master disk set, and you lose the time sending the disk to us, waiting for us to copy it, and waiting for the US Mail to return it to you. CAUTION!!! Disk A (the diskette that is NOT labelled "DISK B", obviously) is so full that some of the demo programs are too big to be compiled unless you change the contents of the disk(s). For the most possible space, after you are done looking at the demos you should remove both the TOSDEMOS and GEMDEMOS folders. If you are still desperate for room, move PASLIB, PASGEM, and PASAUX to the "DISK B" copy (not the master! remember!). On a two drive system, this will not affect compile times at all. On a one drive system, you will have to swap disks one more time during the link process, but that is a reasonable price to pay to obtain the power of the resultant system. Be sure and read the ERRORS file in this folder. Good computing-- OSS TSeptember 1, 1987 - The following problems or errors are known to exist in this version of Personal Pascal: I. USING VERSION 2 ON 520ST SYSTEMS -$ If you have not upgraded your system to a megabyte or more, then you may find that memory is "tight" using Personal Pascal version 2. You may need to remove some or all desk accessories, depending on how much memory they use. We realize that this restrictive environment is not the best of all worlds, bit we made a trade off: The compiler is much faster than that of version 1, and you do NOT need any temporary compiler files. The resultant system really is much easier to use in a minimal (520ST, single drive) environment. II. COMPILER DOES NOT USE TEMPORARY FILES -) Despite the presence of an option in the manager that allows you to select a drive or directory for compiler temporary files, the compiler neither needs nor uses such files. You should ignore any mention of such files. The compiler is much faster as a result of getting rid of these files, by the way. III. LINKER FORMAT FILES - Again, because we got rid of temporary compiler files, the output of the version 2 compiler is NOT compatible with Atari standard link files. However, the Personal Pascal linker handles both OSS link files AND Atari standard files. If you have a need to use the standard Atari linker (or librarian), we do have a conversion program available. You may obtain it from the OSS BBS (408-446-3451) or from Compuserve. IV. Show_Dialog PARAMETERS - The documentation in the Personal Pascal manual for Show_Dialog is wrong. The documentation shows that a single parameter is needed. In actuality, two parameters are necessary: A dialog pointer (obtained by a call to NEW_DIALOG) and an object number (obtained by a call to ADD_DITEM). If you wish to display the entire dialog tree, use a zero (or the predefined constant ROOT) as the second argument. V. EDITOR MUST BE IN SAME DIRECTORY AS MANAGER -. The files "EDITOR.PRG" and "EDIT.RSC" must be in the same directory as the Personal Pascal version 2 manager ("PASCAL.PRG"). The system WILL crash if you move the editor to another directory. We expect to fix this problem in the future. VI. COMPILING VERSION 1.xx PERSONAL PASCAL GEM PROGRAMS -7 Because Version 2 now allows a mixing of CONST, TYPE, etc., declarations, you need only one INCLUDE file: "GEMSUBS.PAS". However, if you have any version 1 programs where you have already counted on the separate files, you may use "GEMCONST.PAS", "GEMTYPES.PAS", and "GEMSUBS.PAS" as found on "DISK B". These files perform exactly the same functions as the unified file on disk A. They are provided for convenience. =K If you find bugs: PLEASE, it is almost impossible for us to track down a bug unless you send us a program demonstrating the problem. The best of all possible worlds occurs when you send us a disk showing the existence of the bug in as small a program as possible. If you find a legitimate, fixable bug, we will provide you with the version that fixes the bug...free. If you cannot send a disk, then consider uploading the problem to the OSS BBS. AFTER you have uploaded the file showing the bug, leave a message to the SYSOP (EMAIL) describing the problem and giving the file name you used for the upload. Call 408-446-3451, 24 hours a day. PLEASE ask for a permanent password or we can NOT respond to you. Be sure to leave your registration number in the message or file. f{ -M !NOTICE: THESE MATERIALS are UNSUPPORTED by OSS! If you do not understand how to use them do not contact OSS for help! We will not teach you how to program in Pascal. If you find an error in these materials, feel free to SEND US A LETTER explaining the error, and how to fix it. THE BOTTOM LINE: Use it, enjoy it, but you are on your own when using these materials! DISCLAIMER: OSS makes no representations or warranties with respect to the contents hereof and specifically disclaim all warranties of merchantability or fitness for any particular purpose. This document is subject to change without notice. OSS provides these materials for use with Personal Pascal. Use them in any way you wish. -J } PROGRAM dir_test ; TYPE fn_range = 1..14 ; fname = PACKED ARRAY [ fn_range ] OF char ; frec = PACKED RECORD reserved : PACKED ARRAY [ 0..19 ] OF byte ; resvd2 : byte ; attrib : byte ; time_stamp : integer ; date_stamp : integer ; size : long_integer ; name : fname ; END ; path_name = PACKED ARRAY [ 1..80 ] OF char ; VAR r : frec ; i : fn_range ; path_string : STRING ; path : path_name ; PROCEDURE set_dta( VAR buf : frec ) ; GEMDOS( $1a ) ; FUNCTION get_first( VAR path : path_name ; search_attrib :integer ):integer ; GEMDOS( $4e ) ; FUNCTION get_next : integer ; GEMDOS( $4f ) ; PROCEDURE show_file( VAR r : frec ) ; VAR i : fn_range ; BEGIN WITH r DO BEGIN write( attrib:2, ' ', time_stamp:4, ' ', date_stamp:4, ' ', size:8, ' ' ) ; i := 1 ; WHILE (i <= 14) AND (name[i] <> chr(0)) DO BEGIN write( name[i] ) ; i := i + 1 END ; writeln ; END ; END ; BEGIN write( 'search path: ' ) ; readln( path_string ) ; FOR i := 1 TO length( path_string ) DO path[i] := path_string[i] ; path[ length(path_string)+1 ] := chr(0) ; set_dta( r ) ; IF get_first( path, 0 ) < 0 THEN writeln( 'no files match specification!' ) ELSE REPEAT show_file( r ) ; UNTIL get_next < 0 ; END. { DUMP - Show the contents of a file in hexadecimal and ASCII. This is not a very sophisticated dump program, but it does further illustrate file access with Pascal, and it also demonstrates columnar output. Possible extensions are: GEM interface, ability to divert output to a file or the printer, starting position within file, dump in ASCII or hex only, etc. If you make significant improvements to this program, please upload the new version to the OSS BBS. } PROGRAM dump; CONST chunk_size = 16; { Number of bytes to display per line. 16 is almost } { maximum for 80 character lines, since we need 3 } { characters for the hexadecimal value (with a space) } { and one character for the ASCII. 16*3+16 = 64, and } { 8 characters for the file position gives 72. } TYPE { For each line we display, we have to hold all the bytes in a buffer, so we can print out the hex and then the ASCII. } chunk_range = 1..chunk_size; chunk_buf = PACKED ARRAY[ chunk_range ] OF byte; VAR chunk : chunk_buf; { Buffer for bytes of current display line } offset : long_integer; { Current file offset position } n : 0..chunk_size; { Number of bytes in current chunk } f : PACKED FILE OF byte; { Our input file-- it's binary! } name : STRING; { Finally, the name of our input file } { dump_chunk - Read a chunk from the input file and display it on the current line. 'chunk_size' bytes are always read, except possibly for the last chunk, which may be shorter if end-of-file is encountered. } PROCEDURE dump_chunk; VAR i : chunk_range; { Used to index into the current chunk } BEGIN { While we don't yet have a full chunk, and we haven't reached the end of the file, read one byte and add it to the chunk. The variable 'n' is used to keep track of how many bytes we have added. } n := 0; WHILE (n < chunk_size) AND NOT eof(f) DO BEGIN n := n + 1; chunk[n] := f^; get( f ); END; { OK, we have a chunk of 'n' bytes. Write the current file offset and the hexadecimal byte values. } write( offset:6:h, ': ' ); FOR i := 1 TO n DO write( chunk[i]:2:h, ' ' ); { If we have fewer than 'chunk_size' bytes in this chunk, we must put out some spaces so the ASCII data lines up with that of the previous line } FOR i := n+1 TO chunk_size DO write( ' ' ); { Now put out the ASCII data. If the character we are putting out isn't printable, use a period, instead. We aren't checking for characters over 127, since they print OK on the console screen, but if you modify this program to go to a printer, you might want to change those to periods, also. } write( '"' ); FOR i := 1 TO n DO IF ord(chunk[i]) < ord(' ') THEN write( '.' ) ELSE write( chr(chunk[i]) ); writeln( '"' ); offset := offset + n; END; { main routine - Ask the user for the name of the file to dump, open it, and dump chunks until end-of-file is reached. } BEGIN write( 'File to dump: ' ); readln( name ); reset( f, name ); offset := 0; WHILE NOT eof(f) DO dump_chunk; END. { This file demonstrates the modular compilation discussed in section 8 of the Personal Pascal version 2 manual. } PROGRAM main_file; VAR i: integer; { The next declaration tells the Pascal compiler that the "print_message" routine will be inserted at link time. That is, the EXTERNAL declaration just tells Pascal what the routine looks like, but does not produce any code just yet. } PROCEDURE print_message( n: integer ); EXTERNAL; { Then the main routine is just like before: } BEGIN FOR i := 1 TO 10 DO print_message( i ); { But we call print_message instead of writeln } END. a{ This is the second part of the modular compilation demonstration, the module that is referred to as external in the main file, MODULAR1 } {$M+,E+} { This is a module, and we want its procedures to be visible } PROGRAM module; PROCEDURE print_message( n: integer ); BEGIN writeln( 'In the module with parameter ', n ); END; BEGIN END. { This main routine MUST be empty! } S){ -M !NOTICE: THESE MATERIALS are UNSUPPORTED by OSS! If you do not understand how to use them do not contact OSS for help! We will not teach you how to program in Pascal. If you find an error in these materials, feel free to SEND US A LETTER explaining the error, and how to fix it. THE BOTTOM LINE: Use it, enjoy it, but you are on your own when using these materials! DISCLAIMER: OSS makes no representations or warranties with respect to the contents hereof and specifically disclaim all warranties of merchantability or fitness for any particular purpose. This document is subject to change without notice.  OSS provides these materials for use with Personal Pascal. Use them in any way you wish. -J } (* sound_demo - A simple Personal Pascal sound demo program. You must turn off key-clicks using the control panel before running this program, as the key-click routine in the OS will mess up your sound! We hope soon to add to this demo an XBIOS call to turn off the keyclicks. *) PROGRAM sound_demo ; CONST cmd_write = 128 ; cmd_read = 0 ; chana_lo = 0 ; chana_hi = 1 ; chana_vol = 8 ; chan_enable = 7 ; enable_sound = 7 ; TYPE channel = 0..2 ; VAR volume, note : integer ; (* Two XBIOS functions (actually one call with two definitions!) needed to access the General Instruments sound chip. *) FUNCTION gia_read( data, register : integer ) : integer ; XBIOS( 28 ) ; PROCEDURE gia_write( data, register : integer ) ; XBIOS( 28 ) ; (* Call this routine to enable sound to be generated. *) PROCEDURE Sound_Init ; VAR port_state : integer ; BEGIN port_state := gia_read( 0, chan_enable+cmd_read ) ; gia_write( port_state&(~enable_sound), chan_enable+cmd_write ) ; END ; (* This routine turns on a particular note on one of the three channels. *) PROCEDURE Sound( ch : channel ; pitch : integer ; vol : integer ) ; BEGIN gia_write( vol, chana_vol+ch+cmd_write ) ; gia_write( pitch&$FF, chana_lo+ch*2+cmd_write ) ; gia_write( shr(pitch,8), chana_hi+ch*2+cmd_write ) ; END ; (* Call this routine to turn off sound after you're finished. *) PROCEDURE Sound_Off ; VAR port_state : integer ; BEGIN Sound( 0, 0, 0 ) ; (* First, make sure all volumes are zero. *) Sound( 1, 0, 0 ) ; Sound( 2, 0, 0 ) ; (* Now disable sound production on all three channels. *) port_state := gia_read( 0, chan_enable+cmd_read ) ; gia_write( port_state|enable_sound, chan_enable+cmd_write ) ; END ; BEGIN (* Main program loop-- ask user for a volume to use... should be 0-15. *) LOOP write( 'volume: ' ) ; readln( volume ) ; EXIT IF volume = 0 ; sound_init ; (* Enable sound. *) (* Sub-loop-- keep generating notes until user enters 0 as a pitch. *) LOOP write( 'note: ' ) ; readln( note ) ; EXIT IF note = 0 ; sound( 0, note, volume ) ; END ; sound_off ; (* Disable the sound. *) END ; END. #{*J * * AUXSUBS.PAS - Declarations for PASAUX library * *K} { Constants used by the auxilliary library } CONST SCRLEN_B = 32000 ; { size of ST screen in bytes } SCRLEN_W = 16000 ; { size of ST screen in words } SCRLEN_L = 8000 ; { size of ST screen in long words } { the various error codes } NO_ERROR = 0; SYS_ERROR = -1; DRIVE_ERROR = -92; UNKNOWN_ERROR = -3; CRC_ERROR = -4; BAD_REQUEST = -5; SEEK_ERROR = -6; UNKNOWN_MEDIA = -7; SECTOR_NOT_FOUND = -8; NO_PAPER = -9; WRITE_FAULT = -10; READ_FAULT = -11; GENERAL_ERROR = -12; WRITE_PROTECT = -13; MEDIA_CHANGE = -14; UNKNOWN_DEVICE = -15; BAD_SECTOR = -16; DISK_CHANGE = -17; INVALID_FUNCTION = -32; FILE_NOT_FOUND = -33; PATH_NOT_FOUND = -34; TOO_MANY_FILES = -35; ACCESS_DENIED = -36; INSUFFICIENT_MEM = -39; INVALID_MEM_ADDR = -40; INVALID_DRIVE = -46; { end of constants used by AUXPAS } TYPE { types used by AUXPAS } C_String = PACKED ARRAY [ 0..255 ] OF CHAR ; { c-style string } Err_Code = Short_Integer ; { tos error code } { the ST screen in 3 representations } Screen_B = PACKED ARRAY [ 0..31999 ] OF BYTE ; Screen_I = PACKED ARRAY [ 0..15999 ] OF Short_Integer ; Screen_L = PACKED ARRAY [ 0..7999 ] OF Long_Integer ; B_Ptr = ^BYTE ; C_Ptr = ^CHAR ; I_Ptr = ^Short_Integer ; L_Ptr = ^Long_Integer ; Ptr_Screen = ^Screen_L ; { pointer to the screen array } Palette = PACKED ARRAY [ 0..15 ] OF Short_Integer ; Resolution = Short_Integer ; Screen_Type = PACKED RECORD Res : Resolution ; Pal : Palette ; Pic : Screen_L ; END ; { end of type used by PASAUX } { now the various external and other declarations } {*I * * Peek/poke routines * *I} FUNCTION Peek( Address : Long_Integer ) : BYTE ; EXTERNAL; FUNCTION Wpeek( Address : Long_Integer ) : Short_Integer ; EXTERNAL; FUNCTION Lpeek( Address : Long_Integer ) : Long_Integer ; EXTERNAL; PROCEDURE Poke( Address: Long_Integer ; Value : BYTE ) ; EXTERNAL; PROCEDURE Wpoke( Address: Long_Integer ; Value : Short_Integer ) ; EXTERNAL; PROCEDURE Lpoke( Address: Long_Integer ; Value: Long_Integer ); EXTERNAL; {*I * * Supervisor status goodies. * *I} FUNCTION In_Super : Boolean; EXTERNAL; PROCEDURE Super( YesNo : Boolean ); EXTERNAL; {*I * * Block memory move routines * *I} PROCEDURE Move_Long( Source, Dest, Count : Long_Integer ); EXTERNAL; PROCEDURE Move_Word( Source, Dest, Count : Long_Integer ); EXTERNAL; PROCEDURE Move_Byte( Source, Dest, Count : Long_Integer ); EXTERNAL; {*I * * Pascal to C routine interface routines * *I} PROCEDURE C_to_Pstr( Cstr : C_String ; VAR Pstr : STRING ); EXTERNAL; PROCEDURE P_to_Cstr( Pstr : STRING ; VAR Cstr : C_String ); EXTERNAL; {*I * * date stuff * *I} PROCEDURE Set_Date( Mon, Day, Yr : Short_Integer ); EXTERNAL; PROCEDURE Set_Time( Hour, Min, Sec : Short_Integer ); EXTERNAL; PROCEDURE Get_Date( VAR Mon, Day, Yr : Short_Integer ); EXTERNAL; PROCEDURE Get_Time( VAR Hour, Min, Sec : Short_Integer ); EXTERNAL; {*I * * Screen functions * *I} PROCEDURE Save_Scrn( VAR Buf : Screen_Type ); EXTERNAL; PROCEDURE Restr_Scrn( VAR Buf : Screen_Type ); EXTERNAL; FUNCTION Read_Scrn( Name : String ; VAR Buf : Screen_Type ) : Err_Code ; EXTERNAL; FUNCTION Write_Scrn( Name : String ; VAR Buf : Screen_Type ) : Err_Code; EXTERNAL; {*I * * Ptr/Adr routines * *I} FUNCTION Ptr_Byte( Addr : Long_Integer ) : B_Ptr ; EXTERNAL ; FUNCTION Ptr_Char( Addr : Long_Integer ) : C_Ptr; EXTERNAL; FUNCTION Ptr_Integer( Addr : Long_Integer ) : I_Ptr; EXTERNAL; FUNCTION Ptr_Long_Integer( Addr : Long_Integer ) : L_Ptr; EXTERNAL; FUNCTION Addr_Byte( VAR Bvar : BYTE ) : Long_Integer; EXTERNAL; FUNCTION Addr_Char( VAR Cvar : CHAR ) : Long_Integer; EXTERNAL; FUNCTION Addr_Integer( VAR Ivar : Short_Integer ) : Long_Integer; EXTERNAL; FUNCTION Addr_Long_Integer( VAR Lvar : Long_Integer ) : Long_Integer; EXTERNAL; FUNCTION IO_State : Boolean ; EXTERNAL ; FUNCTION IO_Result : Short_Integer ; EXTERNAL ; PROCEDURE IO_Check( YesNo : Boolean ) ; EXTERNAL ; {*I * * vt52 functions - use with write,writeln in non-gem programs * *J} { Clear from the cursor to the end of the current line } PROCEDURE ClrEol; EXTERNAL; { Clear the screen and move the cursor to the upper left position } (* This is Turbo-Pascal compatible: *) PROCEDURE ClrScr; EXTERNAL; (* But the manual incorrectly gives this: *) PROCEDURE ClrScrn; EXTERNAL; (* Either one will work since it's in the library both ways! *) { Initialize the console device } PROCEDURE CrtInit; EXTERNAL; { Reset the console device } PROCEDURE CrtExit; EXTERNAL; { Delete the current line, moving all lines below up by one line } PROCEDURE DelLine; EXTERNAL; { Insert a blank line at the current position, moving the current line and all lines below down by one line. The bottom line on the screen is lost } PROCEDURE InsLine; EXTERNAL; { Move to a specific screen coordinate. Home is (1,1). } PROCEDURE GotoXY( x, y : Short_Integer ); EXTERNAL; { Reverse foreground and background colors for text display } PROCEDURE InverseVideo; EXTERNAL; { Restore normal colors } PROCEDURE NormVideo; EXTERNAL; { Choose a foreground color index for text display } PROCEDURE TextColor( color : Short_Integer ); EXTERNAL; { Choose a background color index for text display } PROCEDURE TextBackground( color : Short_Integer ); EXTERNAL; { -K The following procedures and functions are not in the Turbo Pascal library: -K } { Move the cursor up one line } PROCEDURE Curs_Up; EXTERNAL; { Move the cursor down one line } PROCEDURE Curs_Down; EXTERNAL; { Move the cursor right one column } PROCEDURE Curs_Right; EXTERNAL; { Move the cursor left one column } PROCEDURE Curs_Left; EXTERNAL; { Move the cursor to the upper left corner of the screen } PROCEDURE Curs_Home; EXTERNAL; { Same as CursUp, but inserts a blank line at the top of the screen } PROCEDURE Curs_Up_2; EXTERNAL; { Clear from cursor to end of the screen } (* This matches ClrScr: *) PROCEDURE ClrEos; EXTERNAL; (* The manual disagrees-- In the library it's both ways! *) PROCEDURE Clr_Eos; EXTERNAL; { Turn on the flashing cursor } PROCEDURE Curs_On; EXTERNAL; { Turn off the flashing cursor (i.e., no cursor is displayed) } PROCEDURE Curs_Off; EXTERNAL; { end of AUXSUBS.PAS } f>zzzz$zzvParts by Hans-Jrgen Reissby M.WernerState of the art programmingOK Copyright by DMC Walluf 1987Portions (c) 1987 OSS, Inc.DMC Editor Version 2.0  File Block Find Mark Options About the Editor- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 N NewO Open... Close- S Save Save As...- Compile Link- Q QuitM Mark Block-C Cut BlockP Paste BlockH Hide Block- Load Block Save Block Print BlockF Find What...-U Find PreviousD Find Next-R Replace Next Replace AllF1 Go To Mark 1F2 Go To Mark 2F3 Go To Mark 3F4 Go To Mark 4- Set Mark 1 Set Mark 2 Set Mark 3 Set Mark 4-T Top of FileB Bottom of FileG Goto Line- Tab Size Statistics- Insert Typeover Auto Ident- Print FileStatisticsFree Space:Bytes000BytesBytesLength:000---1.2.3.Filename:Free Memory:_Free Space:_KByte On Drive:KByteC: OK Find:_(_(X(Replace With:_(_(X XExact MatchIgnore Case OK Go To Line__9Cancel OK New tabsize is____99Cancel OK $%m 5^))))8>Dehk&z $ &Mj A    $   P P (         > P   ,AVk             ) ( !"# $,%:&H'W(es1*0+,-./0)>2= 345 67+8=9J:W;d<q = 1  ?H! @ABCDEFGH>  84" ')0-   9( ?  F  M  T(Z(`hov}  0  !@&@(@+ ;,   ~  _  ~( (~  _  ~'( ~  _  ~   - "-  'QJ,"Vn"'u.>V6r` 8N Ny*O*m - ЭЭм!"ҍ¼.A// Bg?<JNA m"m -So Q m -SBQ(m)M*mN lHhNlX/,?,N\?<Ni?<A?<NAXNuNV/.Ns0X=@Sn0. nH|\g nl .6.HЃR/0. AA/NrP nmH nB/.0. @AA/NrPHl0. @AЈ @A/Nr|P0. A0?. N TN^NuNV?<NNT9@F lFf9|&9|9|9|g` lFf9|9|9|9|gNb SlFHlX n /NrlX=@X n /NrXX=@0.R@??.N;XN!BNvN>0,g?,?<LNoXN^NuNV?<NoT=@Bn`BnHl0.@AA/NpPBg0.@AA T/?<GNoP0.Rn2.@A҈ AfHl 0.@AA 6.HЃS/NoP0.AB0.@AHn2.@A0.ABP0.AF0Rn nm9|-|`~ n)P-|A n)P?<NnT)@BBBlBlB9|0,Fg@)l9|9|9|9|9|(9|(BlBl9|9|`>)l9|9|9|9|9|(9|(BlBl9|9|N^NuNV9lLPBn`0.RnAH0 n m9|\Hl`HlPHlHNp N^NuNV?,PNqTNc@N^rN^NuNVHlNcX @fHl?<N`\0<`HHlBBgBgNcPHl>?<BgNcPHl:?<BgNbPHl6?<BgNbPHl2?<BgNbPHl.?<BgNbP l: (T @)P* l6 ( @)P& l6 ( @)P" l2 (l @)P l.)h l.)ht l.)h l.)h l.)h l.)h l.)h l.)h l.)h l.)hd l.)h l.)h l6h l*B l&B l"B l8 ,R @B9|0<N^NuNV?</,BN]\N^NuNVBn`Bg0.A?/,BN]PRn0.A0fNBg?<#/,BN]PBg?<'/,BN]PN^NuNVBn` ?<0.A?/,BN]dPRn0.A0fN@0,lgBg?</,BN]2PN^NuNVBn`Bg0.A?/,BN] PRn0.A0fN^NuNVBn` ?<0.A?/,BN\PRn0.A0fN^NuNV lgJ?<N`4T?,D?,B?,@?,>N P0.f?,0,AA/N \BgN_TN^NuNV?=|N?HnHnHnHnHnHnBg?<dHl6BgBgBgBgBg0<2,FRA??<00< 2,FRA??<0Bg?<?<?<?<7NZ<>HnHnHnHn?< ?.N^ lg0.lFg0.lHg 0.lJfBn`=|0|g0|g0.f?.?.N X0|gb0,6| g`x0.fXNSJ@f0,>|g`NGJ@g`8BnN `,`|g`N8J@g`N\``|g` N ``| g`Bg?</,>N P=@``|P`n`| g` N5>`\`|"g` N5`J`|$g` N7F`8`|#g`?,N4TN7``|*g` N;` `|,g`N;=@0.gNN``|-g`N<=@0.gN.``|/g`:N=:=@0.g&?,PNiTHl?,TNJ\N!?,PNiZT``|0g`N>`v`|Ag`N?`f`|&g`N8F`V`|'g`N9`F`|(g`?,/,ND\`,`|Bg`N?``|Hg`N?,/,NND\?<?,|g`,N"Bn`Rn n}m`N"NONTN0.fH0|g> lg4NJ@g*0.| g|Mg` N .``|g|Kg` N ``|g|Hg` N!``|-g|Pg`?,VN"\T``|g|H8g` N$``|.g|P2g` N$``|"g|Sg`0?g`0,g ?,N,T`*`|g`N?J@g`BnN``|g|2g`?< NTJ@fN/``|.g`?<"NTJ@fN0``|g`B?</NTJ@f.N7J@g&?,PNdLTHl?,TN\N^?,PNdT`x`|#g`?<$NdTJ@fN1$`X`|/g|Rg`^ lf*9|Bg?<D/,BNQP?<?<E/,BNQP`&Bl?<?<D/,BNQPBg?<E/,BNQzP``|m1g|xg`0< 2,FRA??<0NX``|n2g|yg`0< 2,FRA??<@NX``|o3g|zg`0< 2,FRA??<PNX`h`|1g`N-|`X`|Gg`0.fN `B`|G7g`60.fN `,0.|Ag?,N-T?.N!DT```0.fT lgL0|gD0.lm:0.ln00.lm&0.ln?.?.NX0.|gN-D0.f G f lgN0.f>N^NuNV=| lB0(R|gBn lB0(j|gBn lB0(|gBn lB0(|gBn lB0(|gBn lB0(|gBn0.N^NuNV0. lB0( |N^NuNV=|0.H=@0< 2,FRA=@0. nod0<2,FRA=@0. nlJ nFfBn nHf=| nJf=| ng0.A0g ?.N TN^NuNVHl&Hl(Hl*Hl,/.NP,?,&?,(?,*?,,BgBgBgBgBgNO?,&?,(?,*?,,?<c?. /.NN?./.NOR\=@BgBg?,&?,(?,*?,,Bg?./.NN?,&?,(?,*?,,BgBgBgBg?<NO$0.N^NuNVBn`b0.A0g(0.A/N0<`6?<NL&TBg0.AA/?<=NXP=@0.A//.?.?<?NW ?.?<>NWX0.A 0.A/0.A/NP2.A00.A0f,Hl?<NJb\9@>0.A/N7X0<`\0.A ,2.A"R2.A 0.A 2.A BgNKT0<N^NuNV0.A P0.A R @0.A 0.A00.A R2.A 0.A 2.A N^NuNV0,g ?,N T=|0,"f=|0, f=|0,fBn?.NTHlN0.AA/NVfP0.ABP?.NTJ@g?.NT?.NTN^NuNV`0,A0gNN0,fN^NuNV0,A0gN`NN^NuNV`=lB.0,@AA/HnNUP0,AA/HnNUP0,@AA/Hn`NUPHnHnHnNI6 0.gX.H|gLHn0,@AA/NUDPHn0,AA/NU(P0,A0NN^NuNVBn0,@AH|@?N@T-@ ,n@?,NT0,lfN%NQX0.A/0.A/NP0.ABP0<N^NuNVH0 .Ю $@)@ ` S @S nBG .R$@-n` .R&@B. .o0<``8|| g*|| g|| @ m nRR.R|| g.||m.|T@ nRRRG ml .S)@0L N^NuNVH&n`&| |HЇS @ |H m&n` R @R m n  LN^NuNV n(H|:f nH|A??<NPFXT/.HnNPPHnNPX=@`Sn0.gAH|\f0.gABHn?<;NO\N^NuNV=|Bn`P?,.?,0?,2?,4?.ND 2.AF0BgBgHlx?<0.AF?ND Rn nmN^NuNV0.lg?,NT9nBgBgBgBg?< 0,AF?NDV 0,A?0,AA/Nt\?,NT0,lf?<?</,BN@P`Bg?</,BN@PN^NuNV=l-l0,Tg2Bn`" .".S A|HÐ-@SnRn0.lTm/.?.N\N^NuNV0.A9PV0.A9PTAPR0.A9P0.A9P=l0.A)P-l0.A)P0.A)P0.A9P0.A)PN0.A)PJ/,NXBlBlBlNN^NuNV?<%NMxTBn`Rn nm?,PNQ:TN5F?<HlnN6\?<HlvN(\?<)/.N\Hl?. N7@\?< HlN\?<CHldN\0,f?<?<0<u2<FA?N-\0, f?<?<0<w2<FA?N-\0,"f?<?<0<y2<FA?N-\0,|g`?<0<u2<FA?N1 X`J`|g`?<0<w2<FA?N0X`$`|g`?<0<y2<FA?N0X?,PNOTN^NuNVBn`: .6.HЃ @H??<0.n |02<FA?N,\Rn .6.HЃ @f?< ?<0.n |02<FA?N,\N^NuNVNz0.A0V0.A0TAR0.A N0.A J0.A 0.A00.A00.A00.A 0.A N^NuNV?,PNNTBn`<0.Rnln /. ?.NH\ n |HѮ ` ?.N1TRn nm?,T?,VN/X?,PNN&TN^NuNVBn . m . n0,аlf=| . fA-H ?./. ?.N+PN^NuNV=n=n 0. nS@=@0.n S@=@/<}N*FX)@R)lR ,Rg2-l)lRN)n?,PNMTHn?<?,PNMPHnHnHnHn?< 0,AF?N>j`=n=n0.nS@=@0.nS@=@=n=n0.nS@=@0.nS@=@HlHlHn?<?,PNMHnHnHnHn?< 0,AF?N=0.fd0.f\HnBg?,PNL6P?<?,PNL`X/,RN)X`NN^NuNV0,A0A 6.HЃ6. HЃ/A ,X|HЃS/A 6.HЃ/N( 0. ,XlX,X|AXN^NuNV-l n,X||Ag,X n||C=@ ,6.HЃJlx .,X|HЃ/ ,NЬS/ . n|HЃ/N(" 0.HѬ0.HѬ ,̰o0,аlf0.HѬ0.HѬ`"Hl?<N:P\9@>/,NJX0<`N^NuNVH&nBnBlV><`2 HЇ @|| f0,2,VHHAAlV`RlVRG0. |Am0,lVo0,D@2,VHA=@0,V2,|LAm0,VHl|9=@0,nlV0.LN^NuNVH&nSBF><`, HЇ @|| f0,2HHAA@`RFRG0.|SAAl0n m0LN^NuNV0N^NuNV nP=|`Rn .6.HЃ @|| g .6.HЃ @|| f0..|SAAf0.N^NuNV,R||o NNn`b lgX,X",S A||C @n80,A0,X l||CU@=@ , l|HЃ-@ .6.HЃ/ ,NЬS//.N 0.HѬ0.HѬ ,̰o&0,аlf0.HѬ0.HѬSlSl ,S @|H l|=@=|`2A", l|H҃U6.H҃ A|Rn0.,X|AmSlSl l|,X|CU@ l l", l|H҃S A|/,NfX?,PN:(T?,T?,VNX0,Tg lTg0<lT?NpTSlT-l0<lTS@=@0,nln:Bn` . n|HЃ-@Rn0.nm/.?<NV\` ?<NTN/,?,TN8\0.S@@RN?<?,PN9:XN^NuNV?,PN9PT lfT,X||lF?<,R|?NX,R|A Hl?,TN\?,T?,VNXNZ lfH0,2,VlHHAA=@0,Vln?HlN\@R?,T?,VNbXN?<?,PN8nXN^NuNV?<?</,:N׀P=@ nf2/,*N6X=@0.g0.2,AbNX?<?.N4XN^NuNV0.lnN4?<?.NXNNtN^NuNV)lN0.S@?/,N\)@0,lT=@0.nm$0.2.|Al0,T2,nA9@T` 0.HH@S@9@T lTl9|T9n/,NX l|n n l|S@=@ 0. @R,R|?HlN\=@0.g0.l?,PN7TN^NuNV0,A00,lg lfB|||X|R?,PN6T?,TN6T?<?,PN6XN`( lP/, ,NЬS/ , l|HЃ/N> .|H.|HSl/,NX?,PN6XT lTg-l0,TR@?NT0<lTS@@0,.|Cln@Bn` . n|HЃ-@Rn0..|Am/.?<N\` ?<N.T`/,?,TNx\?,VHlN\@RN?<?,PN5rXN^NuNV?,PN5T?,T?,VN4XBlNNNN9|N?,T?,VNX?<?,PN5 XN^NuNV0.lm0.ln0,аlfN2N^NuNV ,g ,g ,gN)l9l9l`0,аlf )l9l ,gR ,gL0,ưlo$=l9l9n-l)l)nNNŞN?<?<#/,BN"xPN^NuNV0,A0=l0,g0,g lg ?,N T lfN0,İlfD9| lN ,NR @ ,NR ,NR)@?<?<NX` lBЈ-@/, ,NЬS/ , l|HЃ/N` . .0,İlf(0,ĐlR@l,R|?0,S@?NdX`T0,ĐlR@l0,ln0,lm,R|??,N,X0,lo,R|??,NXN(?,PN3 TNh?,PN2T?.NߺTN^NuNV=l lg2?,NߚTBBBlBlNÌN$9|?.NrTN^NuNV ,g /,N.X lBЈ)@/,NX)@ ,fHl?<N!\9@>B`40,ĐlR@9@/, , l|HЃS//,N N^NuNV ,Ь򼰬Jl0,A0N ,Ь/ ,NЬS//,N ,Ѭ ,Ѭ0,l ,̰o*0,аlf ,Ѭ ,Ѭ0,l0,l/, ,ЬS//,N /,NX,R,X|UA|Ao,X|S@@R,R|?/,N\Nގ`Hl?<N @\9@>N^NuNV|-l| ,g /,N X0,@AA/HnN-rPB.HnHnHnN! Hn?<N,\HnNvXBgHn?<NN,P=@0.f/.N X)@ ,fHl?<N\9@>0<``?<N TBgHn?<=N,|P=@/,/.?.?<?N,b ?.?<>N,RX/./,NچP9@ lR)H)n|0,f"Hl?<N\9@>/,N hX0<`BBgNT?<?<#/,BNP?<?<'/,BNP?<?<(/,BNPNN^NuNV|-l|0,@AA/HnN+PB.HnHnHnN Hn?<N+r\HnNXBgHn?<N+XBg?<#/,BNPN^NuNV l&H|V|=@?.?<,/,BNP?.?<-/,BNzP?.?<//,BNhP?.?<0/,BNVPN^NuNV?<?</,6NFP=@/,&N*X9@/,"N*X9@ l6 hf9|`9|NHN^NuNVN-l=lBn,R|S@?/.N4\=@fV .S @|H` .S @|H0.Sn @o n|U@?/.N\=@g0.g40.@R,R|?/.N\,R|??.N6XN0.N^NuNVN8-l=lBn,R|R@?/.N\=@fD n|HѮ` n|HѮ0.Rnll?</.N\=@g0.g40.@R,R|?/.N\,R|??.N|XN0.N^NuNV?,A ,R|HЃ//,&N =@g0,A0,R|=@0,l=@ no?.?.NߜX nl?.0.n?N߀XBn`$ ,"6.HЃ @2.nARn ,"6.HЃ @f0<``0<N^NuNV=nBn`> .6.HЃ @|l". 6.H҃ A|lAg=nRn0.nm0.nf0<``0<N^NuNV?,A ,R|HЃ//,&Nl J@g0<`/,NXJ@g0<`0<N^NuNVHl?<N\=@=l,R|=@ nf ?<NTN޲?<?<NX nfN` nfrNHl?<N\9@> l>f$N=@0,,R,R|?/,N߲\ l>f0,,R,R|?/,Nߎ\ l>f```0,,RNJ@fNJ@fl nf ?.?.NXNBN6BgN T`N0N^NuNV?<?</,2NȰP=@ nf/,N'X9@N^NuNV?< N%T-@-l-l -l lg0,A 0,g2Hl/,N%P/,/.NP/, ,/NP`*Hlz/,N%PHl/,N%PHl/,N%P0, g2Hl/,N%xP/, /.NFP/, ,/N2P`*Hl/,N%FPHl/, N%8PHl/,N%*P0,"g2Hl/,N%P/,/.NP/, ,/NP`*Hl/,N$PHl/,N$PHl/,N$P0,@AH|A=@0<An l-nBn .Jg n`Sn/||NGJnf0jj8jjpj jjD`0jjj:jjrjjjFR@RA`8"l 0.AVS0<AhACL H C$L H C$L H C$L H C$"hC AQL N^NuNV0,FgfJlNg^0.R@2. l @<(P(((@(((0((б( (p(((`(`rJlNgl0.R@2||HA2. l @<((((@(B((((( ("((±(`(bN^NuNV0,FgT2. l n0<Jg4HS@H LH`LH`1((AQL`t2. l n0<JgVHS@H hLH`LH`LH`LH`!(hhAQLN^NuNV0,Fg^2. l AfRA0R0<AHS@H@XLHLH1XPAQL`2. l AfRA0R0<AHS@H@PhALHLHLHLH!XPhA QLN^NuNV0,FgLH 2.RA0< l rtvxz|~"A$AB H`H`B`B AQL`XH 2.RA0< l rtvxz|~"A$AB H`H`H`H`BB(B(AQLN^NuNV0,Fg lA0<BB(PB(B(|@B(|B(0|B(| B(p|B(B(`B(B(RBBPBB!|@B!|B0!|B!| Bp!|BB`BBXQBB(PB(B(|@B(|B(0|B(| B(p|B(B(`B(B(` l0<BB(B(B(|@|BB(B(||B( B("||B(`B(bB(B(VBBBB!|@!|DBB!|!|B B$!|!|B`BdBBPQBB(B(B(|@|BB(B(||B( B("||B(`B(bB(B(N^NuNV n B2.0< QZ  2H@@0JAfN^NuNV n B".0< Q\  2¼H@@0JAfN^NuNV08&N^NuNVB n0. J@gk S@Q`D@S@(Q N^NuNV n"l&0. Bl@oJ0llfNR@`z6,@4RBBg0 l1PlfRBRE`NuXO`0<N^NuNV n"l&0. BlAo0|oJ0llfNS@`z6,@4RBBg0 l1PlfRBRE`NuXO`0<N^NuNV0. 2. AA=@0.|g: nH| @f n(H|f0<`@`0<`8`6 nH|f n(H| @f0<``0<N^NuNV0. =@ nH|f n(H|f0<``0<N^NuNVSn nm nm <`?.?<N*X-@ f <` n Po <` n0(|g n0H=@A>-H` n0T@H=@A-HBn n=h n0( nh=@?.?.?<HlBg?<Nz l <`` n0( nh=@0.ng8Bn` 0. nPAARn0. nPmBn`=|Rn0. nh lN X9@g0<`0<N^NuNVHl/.N PJ@g`Hl/.N PJ@gNHl/.N PJ@gj `hH|afB0<n?/.N\> @f?./.N\>?<B?NPj `0.n?/.N\>j Gf Bj <`05G Bj <$%@?<B?* NP%@5lh L N^NuNV)n/.NLX/. /.NLPN^NuNV`H0BnBnBB9| nRH|=@ .&@$@BG`TH| g(H| gH| gH| g H| f0.f0.gBnB` `H|"f< nfBn`*0.f 0.f=|0,RlA` `"`H|'f: nfBn`*0.f 0.f=|0,RlA` `'`r0.fj0.fd=|H|f. R @H|>f T-@=|` R-@Bn`0,RlA`  R0RG0nmB .g,Aj H1| Aj H1|HljHl/.N .g2A~ H1| Hl~0.gA `A //.N 0,R@H/?<HN\)@><`0A` 2 l RG0lm l 0, lBL N^NuNVH$.f BB`J". BnJlVnDJlRnDvd`Bbd nmDdD-@-A LN^NuNV/BnJlRnDJ lRnD 0. -@0.n0. nngD -n N^.JNuN^NuNV nl <`?.?./. ?<BN -@ m .`?<?.B?<BN -@?<?.B?<BN -@ nf .Ю -@ `$ nf .Ю -@ `0.g <`b . oHn . /?.?<@N Bg?./. ?<BN ]|9@g <` `Bl . N^NuNV/.?<IN\N^NuNVBn`60.A0f"0.A00.A0 ` Rn nLmN^NuNVBn`&0.A0nf0.ABPRn nLmN^NuNV?>.=|0A"HPgXHf0(>N^NuNVHl/.NPJ@f =|`Hl/.NPJ@f =|`Hl/.NPJ@f=|`f0. |g0/.NXJ@g0<``Bg/.?<NX0. |?/.?<=NlP=@9@ @l0<`0. | ??.N~X0.N^Nu)I)J)_NM"l$l/,Nu)I)J)_NN"l$l/,Nu)I)J)_NA"l$l/,NuNVH0&n$n `RRgHHAgHHC`L N^NuNV n "n fN^NuNVH0&n$K`Rf `L N^NuNV n R @H=@` n R @H=@ n g n g n g0.N^NuNV=| nxg nXf n f0<`f n0m n9n0.|0=@`2 nam0.|a| =@` nAm0.|A| =@0.n o0<``0.N^NuNVBnBHnNX=@ n-f0<=@ nRH=@`0 ./0.H/N 6.HЃ-@ nRH=@?.?.NX=@ @f g n 0.g .D` .N^NuNV?< /</.N@ HN^NuNV/.?<AN\9@g0<``0<N^NuNV .9@ .9@N^NuNV .9@ .9@N^Nu)I)JHl)_Hl" <sNB"l$lNuNV)n)n .мZ)@9|dBl9| n 9PN n 0A)HA)HA)HA)HN^NuNV9|eBlBl9nNXN^NuNV)n 9n 9|9|9|9nN(A)HN^NuNV9n 9|zBl9|9nNN^NuNV9|{BlBl9nNN^NuNV9n /.N~X/.NX)n 9|m9|9|9nNA)HN^NuNV`4 nH| f?< ?<NX nRH??<NX0. Sn J@fN^NuNV` nRH??<NnX0. Sn J@fN^NuNV` nRH??<N@X0. Sn J@fN^NuNVH0&n $KA-H nf?./ N4\=n`L nf?./ N`\=n`. nf?./ Np\=n`-KBn?.NpTJ@f`H| f |o@ H-@/./.?.?<@Nj 9@Hg0<`0,n/./<?.?<@N4 9@ @g0<`tRnR -@`R ned` 6.ƼЃ$@ H-@/./.?.?<@N 9@Hg0<`0,nBl0.L N^Nu9|N9|9|9|9|9|C222222&2 2<2=2?2*2,2-2A2/202728292:2B2H2C2"2$2(2'2Cv Filename: Cn Line: Cd |1|2|3|C2[3][Not enough space|on this disk!][Retry|Cancel]C[3][Not enough memory |to create Filebuffer!][  OK  ]C[3][Improper File format!][  OK  ]C[3][Filebuffer full!][ Hmmm.. ]C[3][Not enough memory |to copy block!][ Hmmm.. ]Cb[3][Printer malfunction!][ Hmmm.. ]C0[1][Please switch to medium|resolution.][ Exit ]C[1][Confirm before replacing?][ Yes |No]C[1][Please select          ][Replace|Ignore|Exit]CCj"2"2 2"2"2"22"2"2"22"2x9|h)|Nu\*.PASA:\*.PASedit.rsc[3][Can't find EDIT.RSC!|Fatal error.][ Exit ]Untitled[3][Discard Changes?][ Yes |No] Unused 0 0Unused 0 0Unused 0 0-[3][Ready to Print ?][ Yes |No]CON:AUX:PRT:rawCON:AUX:PRT:  1 Error in simple type 2 Identifier expected 3 'PROGRAM' expected 4 ')' expected 5 ':' expected 6 Illegal symbol (possibly missing ';' on line above) 7 Error in parameter list 8 'OF' expected 9 '(' expected 10 Error in type 11 '[' expected 12 ']' expected 13 'END' expected 14 ';' expected (possibly on line above) 15 Integer expected 16 '=' expected 17 'BEGIN' expected 18 Error in declaration part 19 error in 20 '.' expected 21 '*' expected 50 Error in constant 51 ':=' expected 52 'THEN' expected 53 'UNTIL' expected 54 'DO' expected 55 'TO' or 'DOWNTO' expected in for statement 56 'IF' expected 57 'EXIT' expected 58 Error in (bad expression) 59 Error in variable 101 Identifier declared twice 102 Low bound exceeds high bound 103 Identifier is not of the appropriate class 104 Undeclared identifier 105 Sign not allowed 106 Number expected 107 Incompatible subrange types 108 File not allowed here 109 Type must not be REAL or LONG_INTEGER 110 type must be scalar or subrange 111 Incompatible with part 112 Index type must not be REAL or LONG_INTEGER 113 Index type must be a scalar or a subrange 114 Base type must not be REAL or LONG_INTEGER 115 Base type must be a scalar or a subrange 116 Error in type of standard procedure parameter 117 Unsatisfied forward reference 118 Forward reference type identifier in variable declaration 119 Re-specified params not OK for a forward declared procedure 120 Function result type must be scalar, subrange or pointer 121 File value parameter not allowed 122 A forward declared function's result type can't be re-specified 123 Missing result type in function declaration 124 F-format for reals only 125 Error in type of standard procedure parameter 126 Number of parameters does not agree with declaration 127 Illegal parameter substitution 128 Result type does not agree with declaration 129 Type conflict of operands 130 Expression is not of set type 1 31 Tests on equality allowed only 132 Strict inclusion not allowed 133 File comparison not allowed 134 Illegal type of operand(s) 135 Type of operand must be boolean 136 Set element type must be scalar or subrange 137 Set element types must be compatible 138 Type of variable is not array 139 Index type is not compatible with the declaration 140 Type of variable is not record 141 Type of variable must be file or pointer 142 Illegal parameter solution 143 Illegal type of loop control variable 144 Illegal type of expression 145 Type conflict 146 Assignment of files not allowed 147 Label type incompatible with selecting expression 148 Subrange bounds must be scalar 149 Index type must not be integer 150 Assignment to standard function is not allowed 151 Assignment to formal function is not allowed 152 No such field in this record 153 Type error in read 154 Actual parameter must be a variable 155 Control variable cannot be formal or non-local 156 Multidefined case label 157 Too many cases in case statement 158 No such variant in this record 159 Real or string tagfields not allowed 160 Previous declaration was not forward 161 Again forward declared 162 Parameter size must be constant 163 Missing variant in declaration 164 Substitution of standard proc/func not allowed 165 Multidefined label 166 Multideclared label 167 Undeclared label 168 Undefined label 169 Error in base set 170 Value parameter expected 171 Standard file was re-declared 172 Undeclared external file 174 Pascal function or procedure expected 175 Actual parameter max string length < formal max length 176 Source string length > destination max length 177 Actual parameter string length > formal max length 178 Input of string variables with READLN only 179 String variable must be last variable 183 External declaration not allowed at this nesting level 194 Comment must appear at top of program 201 Error in real number - digit expected 202 String constant must not exceed source line 203 Integer constant exceeds range 250 Too many scopes of nested identifiers 251 Too many nested procedures or functions 252 Too many forward references of procedure entries 253 Procedure too long 254 Too many long constants in this procedure 256 Too many external references 257 Too many externals 258 Too many local files 259 Expression too complicated 300 Division by zero 301 No case provided for this value 302 Index expression out of bounds 303 Value to be assigned is out of bounds 304 Element expression out of range 390 Too much space allocated for global variables 391 Too much space allocated for local variables 392 Type requires >= 32 kbytes of space 393 Too much space allocated for parameters 394 GEMDOS, BIOS, XBIOS, C, EXTERNAL or FORWARD expected 395 Numbers < 0 or > 127 not allowed 396 Parameter occupies more than 2 words 398 Implementation restriction 399 Implementation restriction 400 Illegal character in text 401 Unexpected end of input 403 Error in reading include file 406 Include file not legal