O4N5p N ON O`  @! #@o'+-/1 3@5`79;=A C@E`GIKMOQ U`Y[]a c@e`gikmq s@u`y{} @` @ ` @ ` @ ` @ ` ɠ @ ` ׀ ٠  @` @o!Aa  !Aa!!%')+-/1!35a79)O`  @! #@o'+-/1 3@5`79;=A C@E`GIKMOQ U`Y[]a c@e`gikmq s@u`y{} @` @ ` @ ` @ ` @ ` ɠ @ ` ׀ ٠  @` @o!Aa  !Aa!!%')+-/1!35a79)FSEL  qOLDGEM  q AESLIB S q%AMONST2 PRG q)WC LNK q?UCHECKST PRG q@HDEMO S qSDESKACC S qT GEMLIB BIN qWGEMLIB LNK q_GEMMACROS q`8GEMTEST S qoGENST2 PRG qwVGENST2 TTP qrLINKST TTP qсMAKEGEM S j PHGJyJg0:ra@ByJ|g*A CfJf`aƾ|f 0ra`Hz|g||g| gX|gZ| g| gľ|g|*g2|g*|g"| e|e|e|)eNu0: R@``0:S@`V0ra|~` 0rap~X333333@ 3B 3D3Fp3ad/: ?<NA\JGg2C E pg< gQJg .fSBE An0NuaV2gpS@gjA 0\fCAfApa2`@3# .p4aS@g&3# .p4aU@g a p~`p*r`LpOa6:#8.3 p,ax0: zhl@@ `#8.3 p,aJ&:<#8.3 p,a.(: # N### " pGa0:Cg2: A 0: z 0`h`<0aJ9Hg09Jgrax~`Nu8z @ z mB9HNu к &@J+ gFB9HaC A Qp / K< gQ\ _fBA pa`0ra3J KC pt< fJf$ QR  fJg"B`p< gQBpA `Ba0C 0@:\J@gRf`*.*BA Xpa`?a0H@0<H a,LNu8"@"i 2)"QUAgQBNu##@#D#8.p*`P3 |8#.00 @ABy# :# 63 3p/`3 *R3 VJ@g < `pNu8r ?:  Һ &A?/?<NNAP:`p  QGA p"Kg <.gQJ@jJgpCgQ 9yf&A .fJg( .fJgG PRyR`JDf G QRyR0: bz ffz` ?<ONAT:0gb6: D0@gNCgH к :$@SCk: J4xp "HG nfQ` Ip P A QA QJf0NuA &Jf g S@ \WR@NuAC f Apa` :f4R: \g\fAA@3Xk|eByX`f0:lgra0:jg@3NraByR3pNaaPAtCJ@gQ*.*BpAa|g|fA>pa|g|g3R3pNaaG@gRf °|d # Apap80:@ @o8JDjxGd(zv0 S  0CyRmp _Q|.`p QJg| BRC| m <a3V y RnByT3P`,p 3P0:z2:A 3Tp`v#8.3praRC|+f3LNuHiSoft Extended GEM File SelectorAbout... FILENAME.111 FILENAME.222 FILENAME.333 FILENAME.444 FILENAME.555 FILENAME.666 FILENAME.777 FILENAME.888 FILENAME.999 OKCancelDirectory:DrivesA:\*.*[1][Brought to you from HiSoft,| suppliers of powerful| Atari ST software][OK| More o][1][Copyright HiSoft 1988|The Old School, Greenfield,|Bedford, MK45 5DE England|Phone: (0525) 718181][Deinstall|OK]x''J&_&P FILENAMEXXX_.___F(5 FILENAMEXXX_.___F*( \& @@ @  @ @ @  @ @ @ @ @ @ @ @ '@ 7@ G@ W  g j  q*)  ABCDEF  G!H"I#J$K%L &M'N(O)P |%  /:l?<"?<NMPA0NqNugV fLJ9g! 8"/ k!NsJ k&/ /LeP#/|pN4Vx#b!N4Vx|f/ A P PZ _g/:NuH:OJ9f z#jPa0<af00<af( z^ h B`j3Z /?<HNA\#\Nu z6#j h$h PaT/:>?<INA\JGg"z "i&if&Qf"z"i 22LNsHz?< NA\Hz?<&NN\Bg/<X?<1NA#l!NuRPN  b,"8&N" ~&R$ ^("Hd0T0 .* &x The HiSoft Extended File Selector =! This is a replacement for the GEM File Selector, used by most HiSoft products and many other GEM applications, offering many advantages. This product is supplied as a service to HiSoft customers. It is *not* public domain, but is supplied with most of our products. Installation = The file HFSEL.PRG should be copied into an AUTO folder on your boot disk. When you re-boot your machine, the new file selector will be available. It uses less than 6k bytes. Improvements = The Selector looks fairly similar to the standard one and has been designed to be used in a similar way, but without the annoying features. There are sixteen Drive buttons, allowing easy changing of drives. When you change the Directory string from the keyboard you can press the Return key to re-display the filename list, without forcing a Cancel. By default up to 150 files are displayed (the norm is 100) but, if memory allows, up to 600 files will be shown. While a disk directory is being read, the keyboard is being read so you can type-ahead into the Filename box. No ESC will be needed if you type- ahead. The Undo key may be pressed to Cancel the Selector whilst the disk is being read. Similar Features = The bug in pre-blitter ROMs to do with pressing the Underline key when in the Directory string still affects the HiSoft Selector. Compatibility = It should be compatible with all GEM programs that use the normal File Selector. If you encounter any problems please write to us, stating the serial number of the HiSoft product you obtained this from. The selector may be de-installed if required by selecting the relevant option from the About.. alert box. HiSoft, The Old School, Greenfield, Bedford, MK45 5DE, England Phone: (0525) 718181 q.  q ..  qGEMDEMO S q 7$GEMINC S q'GEMDOS S q %b * a sample GEM program supplied with DevpacST version 2 * Source code Copyright (C) 1988 HiSoft. All rights reserved. * No part of this source may be reproduced, transmitted, * transcribed, or stored in a retrieval system, or translated * in any form or by any means without the prior written * permission of HiSoft. * HiSoft makes no representations or warranties with respect * to the contents hereof and specifically disclaims any * implied warranties or merchantability or fitness for any * particular purpose. * feel free to use any or all of the object code * if you find any bugs in the GEMINC file, please tell us. * we cannot guarantee that this program itself is free of bugs!! * If you cannot assemble this exactly as supplied, tell us. * If the object doesn't run after you have made any changes, * please do not tell us, as you're on your own once you * start messing with it! * this is mainly to show the calling sequence for GEM * from assembler - the program itself doesn't do much * last changed:21.3.88 opt x+ dump long labels for debugging * the important include file bra main shouldn't execute it include geminc.s * the program proper main do_start set up stack and memory bsr initvdipars and the VDI arrays bsr initgempars and the AES arrays gem APPL_INIT move.w d0,ap_id(a6) store the application id gem GRAF_HANDLE move.w int_out(a6),d2 Desktop VDI handle * start by opening a virtual workstation move.l #$00010001,d0 move.l d0,intin(a6) most parameters are 1 move.l d0,intin+4(a6) move.l d0,intin+8(a6) move.l d0,intin+12(a6) move.l d0,intin+16(a6) move.w #2,intin+20(a6) use the RC system clr.w contrl+2(a6) move.w #11,contrl+6(a6) move.w d2,contrl+12(a6) vdi V_OPNVWK open one move.w contrl+12(a6),d0 the handle move.w d0,ws_handle(a6) save it * set the mouse to an arrow clr.w int_in(a6) arrow please clr.l addr_in(a6) gem GRAF_MOUSE * we want to open a window, so find the size of the workstation clr.w int_in(a6) the desktop handle move.w #4,int_in+2(a6) work area wanted gem WIND_GET get the size * the type of the window wtype equ %0101 title, close, full, move, size * the size lies in int_out(1..4), so calculate the window size move.w #1,int_in(a6) work area wanted move.w #wtype,int_in+2(a6) full feature window movem.w int_out+2(a6),d0-d3 movem.w d0-d3,int_in+4(a6) the size gem WIND_CALC * now get its offsets move.w int_out+2(a6),xstart(a6) move.w int_out+4(a6),ystart(a6) move.w int_out+6(a6),xwidth(a6) move.w int_out+8(a6),ywidth(a6) * and create the window move.w #wtype,int_in(a6) full feature movem.w int_out+2(a6),d0-d3 movem.w d0-d3,int_in+2(a6) the size gem WIND_CREATE create it move.w d0,w_handle(a6) save the handle * now set its title move.w d0,int_in(a6) move.w #2,int_in+2(a6) title string lea windowname(pc),a0 move.l a0,int_in+4(a6) the address gem WIND_SET * now actually show it by opening move.w w_handle(a6),int_in(a6) movem.w xstart(a6),d0-d3 add.w #10,d0 x start add.w #10,d1 y start sub.w #20,d2 width sub.w #20,d3 height movem.w d0-d3,int_in+2(a6) the size gem WIND_OPEN open it bsr recalcwindow bsr setupmode * the main loop of the application * the only interesting events are messages waitforevent lea messagebuf(a6),a0 move.l a0,addr_in(a6) gem EVNT_MESAG get the message lea messagebuf(a6),a0 move.w (a0),d0 message type cmp.w #20,d0 beq updateit if Redraw cmp.w #22,d0 beq quit if Close button cmp.w #23,d0 beq fullit if Full button cmp.w #27,d0 beq sizeit if re-size required cmp.w #28,d0 beq moveit if window moved * nothing I'm interested in so try again bra waitforevent * move the window around the screen moveit move.w 6(a0),d0 cmp.w w_handle(a6),d0 bne waitforevent if not my window then don't changedwindow move.w d0,int_in(a6) move.w #5,int_in+2(a6) move.w 8(a0),int_in+4(a6) new x pos move.w 10(a0),int_in+6(a6) new y pos move.w 12(a0),d0 cmp.w #40,d0 bcc.s widok moveq #40,d0 cant be too narrow widok move.w d0,int_in+8(a6) width move.w 14(a0),d0 cmp.w #50,d0 bcc.s hiteok moveq #50,d0 cant be too thin either hiteok move.w d0,int_in+10(a6) height gem WIND_SET move it movem.w xwidth(a6),d4-d5 old size bsr recalcwindow cmp.w xwidth(a6),d4 bcs waitforevent cmp.w ywidth(a6),d5 bcs waitforevent bne.s forceupdate cmp.w xwidth(a6),d4 beq waitforevent not if exactly the same * if the new size is smaller in both dimensions than the old size * then an update event will not be posted, so the re-draw will * have to be done manually forceupdate bsr drawwindow draw it bra waitforevent and carry on * re-size the window sizeit move.w 6(a0),d0 cmp.w w_handle(a6),d0 bne waitforevent if not my window bra.s changedwindow * there's an update updateit move.w 6(a0),d0 cmp.w w_handle(a6),d0 bne waitforevent if not my window * there are two ways of doing updates: * (a) to support overlapping windows * this takes a lot of code, and is very slow and tricky * (b) to ignore the possibility of overlapping windows * this takes little code and is easy * Here method (b) is used! (method (a) is described in the * window chapter of the DR GEM manual, and used in EdST) * start by clipping the rectangle movem.w 8(a0),d0-d3 the rectangle add.w d0,d2 add.w d1,d3 movem.w d0-d3,ptsin(a6) move.w #2,contrl+2(a6) move.w #1,contrl+6(a6) move.w ws_handle(a6),contrl+12(a6) st intin(a6) clipping on vdi VS_CLIP clip it bsr drawwindow draw the window bra waitforevent * the full button has been clicked * this puts up an alert box fullit move.w #1,int_in(a6) default=1st button lea myalert(pc),a0 move.l a0,addr_in(a6) the alert definition gem FORM_ALERT bra waitforevent * to go away various things have to be tidied up * starting with closing the window quit move.w w_handle(a6),int_in(a6) gem WIND_CLOSE close it gem WIND_DELETE and delete it * then closing the virtual workstation clr.w contrl+2(a6) clr.w contrl+6(a6) move.w ws_handle(a6),contrl+12(a6) vdi V_CLSVWK close it gem APPL_EXIT tell GEM I've finished * now quit to the desktop clr.w -(a7) status code move.w #$4c,-(a7) P_TERM trap #1 and go away * calculate the work area of the window recalcwindow move.w w_handle(a6),int_in(a6) move.w #4,int_in+2(a6) work area required gem WIND_GET movem.w int_out+2(a6),d0-d3 movem.w d0-d3,xstart(a6) rts * this draws the picture in the window * which is an oval on top of a rectangle * before drawing anywhere you have to hide the mouse drawwindow clr.l contrl+2(a6) move.w ws_handle(a6),contrl+12(a6) vdi V_HIDE_C hide the mouse clr.w contrl+2(a6) move.w #1,contrl+6(a6) move.w #2,intin(a6) pattern please vdi VSF_INTERIOR move.w #2,contrl+2(a6) clr.w contrl+6(a6) move.w ws_handle(a6),contrl+12(a6) movem.w xstart(a6),d0-d3 add.w d0,d2 subq.w #1,d2 add.w d1,d3 subq.w #1,d3 movem.w d0-d3,ptsin(a6) the rectangle vdi VR_RECFL filled rectangle * the oval has to be drawn in the user defined pattern clr.w contrl+2(a6) move.w #1,contrl+6(a6) move.w #4,intin(a6) vdi VSF_INTERIOR set fill style move.w #2,contrl+2(a6) clr.w contrl+6(a6) move.w #5,contrl+10(a6) move.w ws_handle(a6),contrl+12(a6) movem.w xstart(a6),d0-d3 asr.w #1,d2 half width asr.w #1,d3 half height add.w d2,d0 x centre add.w d3,d1 y centre movem.w d0-d3,ptsin(a6) vdi V_GDP GDP ellipse * we have finished drawing so get the mouse back clr.w contrl+2(a6) move.w #1,contrl+6(a6) clr.w intin(a6) vdi V_SHOW_C show the mouse rts * this prepares the drawing mode etc setupmode clr.w contrl+2(a6) move.w #16,contrl+6(a6) move.w ws_handle(a6),contrl+12(a6) move.w #%01001010,intin(a6) move.w #%01001010,intin+2(a6) move.w #%01010,intin+4(a6) move.w #%01001010,intin+6(a6) move.w #%01001010,intin+8( a6) move.w #%0,intin+10(a6) move.w #%0110010011011100,intin+12(a6) move.w #%1000101010001000,intin+14(a6) move.w #%1100101011001000,intin+16(a6) move.w #%0010101010001000,intin+18(a6) move.w #%1100010010001000,intin+20(a6) clr.l intin+22(a6) clr.l intin+26(a6) clr.w intin+30(a6) vdi VSF_UDPAT set user defined fill style clr.w contrl+2(a6) move.w #1,contrl+6(a6) move.w #1,intin(a6) vdi VSF_COLOR use colour/color 1 rts * all C strings must end in a null windowname dc.b ' An Example GEM Program by HiSoft ',0 myalert dc.b "[1][This is written in 68000|assembler using HiSoft's|" dc.b 'DevpacST development system][ OK ]',0 * global constants, referenced off A6 * these have to remain together xstart rs.w 1 ystart rs.w 1 xwidth rs.w 1 ywidth rs.w 1 w_handle rs.w 1 ws_handle rs.w 1 ap_id rs.w 1 messagebuf rs.b 16 rs.l 100 stack space mystack rs.w 1 (stacks go backwards) datalength rs.w 0 this is the total required * data lies in the BSS section section BSS ds.b datalength  * * GEM INCLUDE FILE * * * Source code Copyright (C) 1985 HiSoft. All rights reserved. * No part of this source may be reproduced, transmitted, * transcribed, or stored in a retrieval system, or translated * in any form or by any means without the prior written * permission of HiSoft. * HiSoft makes no representations or warranties with respect * to the contents hereof and specifically disclaims any * implied warranties or merchantability or fitness for any * particular purpose. * feel free to use any or all of the object code * last changed: 21.3.88 * * MACRO DEFINITIONS * * * a macro to initialise a program do_start MACRO move.l 4(a7),a5 base page move.l $18(a5),a6 data=in BSS segment lea mystack(a6),a7 my stack pointer move.l $c(a5),d0 text size add.l $14(a5),d0 +data add.l $1c(a5),d0 +bss add.l #$100,d0 +base page length * firstly we have to give back the memory not required move.l d0,-(a7) length to keep move.l a5,-(a7) start address clr.w -(a7) filler move.w #$4a,-(a7) trap #1 M_SHRINK lea 12(a7),a7 ENDM * a macro to call a VDI function given as a parameter vdi macro move.w #\1,d0 can't be Quick as some are>127 bsr call_vdi endm * a macro to call GEM function given as a parameter gem macro moveq #\1,d0 can be Quick as all are<128 bsr call_gem endm *! * VDI SUBROUTINES AND CONSTANTS * *! * initialise the VDI parameter block initvdipars lea vdipar(a6),a1 lea contrl(a6),a0 move.l a0,(a1)+ lea intin(a6),a0 move.l a0,(a1)+ lea ptsin(a6),a0 move.l a0,(a1)+ lea intout(a6),a0 move.l a0,(a1)+ lea ptsout(a6),a0 move.l a0,(a1)+ rts * call the vdi, with parameter in d0 * all other parameters have to be set by caller call_vdi move.w d0,contrl(a6) store the op-code lea vdipar(a6),a0 move.l a0,d1 the parameter block moveq #115,d0 the function code trap #2 rts * VDI function constants V_OPENWK equ 1 open workstation V_CLSWK equ 2 close workstation V_CLRWK equ 3 clear workstation V_UPDWK equ 4 update workstation V_ESCAPES equ 5 various V_PLINE equ 6 polyline V_PMARKER equ 7 polymarker V_GTEXT equ 8 text V_FILLAREA equ 9 filled area V_CALLARRAY equ 10 call array V_GDP equ 11 bar,arc,pie,circle,ellipse,round rects, etc VST_HEIGHT equ 12 set character height VST_ROTATION equ 13 set character baseline vector VS_COLOR equ 14 set colour representation VSL_TYPE equ 15 set polyline type VSL_WIDTH equ 16 set polyline width VSL_COLOR equ 17 set ployline colour VSM_TYPE equ 18 set polymarker type VSM_HEIGHT equ 19 set polymarker height VSM_COLOR equ 20 set ploymarker colour VST_FONT equ 21 set text face VST_COLOR equ 22 set text colour VSF_INTERIOR equ 23 set fill interior style VSF_STYLE equ 24 set fill style index VSF_COLOR equ 25 set fill colour index VQ_COLOR equ 26 inquire colour representation VQ_CELLARRAY equ 27 inquire cell array VI_LOCATOR equ 28 input locator, request/sample VI_VALUATOR equ 29 input valuator, request/sample VI_CHOICE equ 30 input choice, request/sample VI_STRING equ 31 input string, request/sample VSWR_MODE equ 32 set writing mode VSIN_MODE equ 33 set input mode VQL_ATTRIBUTES equ 35 inquire polyline attributes VQM_ATTRIBUTES equ 36 inquire plymarker attributes VQF_ATTRIBUTES equ 37 inquire fill area attributes VQT_ATTRIBUTES equ 38 inquire graphic text VST_ALIGNMENT equ 39 set text alignment V_OPNVWK equ 100 open virtual workstation V_CLSVWK equ 101 close virtual workstation VQ_EXTND equ 102 extended inquire V_CONTOURFILL equ 103 contour fill VSF_PERIMETER equ 104 set fill perimeter V_GET_PIXEL equ 105 get pixel VST_EFFECTS equ 106 set text effects VST_POINT equ 107 set character cell height VSL_ENDS equ 108 set polyline end markers VRO_CPYFM equ 109 copy rastor VR_TRN_FM equ 110 transform form VSC_FORM equ 111 set mouse form VSF_UDPAT equ 112 set user-defined fill pattern VSL_UDSTY equ 113 user defined line pattern VR_RECFL equ 114 fill rectangle VQIN_MODE equ 115 inquire input mode VQT_EXTENT equ 116 inquire text extent VQT_WIDTH equ 117 inquire char cell width VEX_TIMV equ 118 exchange timer interrupt vector VST_LOAD_FONTS equ 119 load fonts VST_UNLOAD_FONTS equ 120 unload fonts VRT_CPYFM equ 121 copy rastor transparent V_SHOW_C equ 122 show cursor V_HIDE_C equ 123 hide cursor VQ_MOUSE equ 124 sample mouse button VEX_BUTV equ 125 exchange button change vector VEX_MOTV equ 126 exchange movement vector VEX_CURV equ 127 exchange cursor change vector VQ_KEY_S equ 128 sample keyboard state VS_CLIP equ 129 set clipping rectangle VQT_NAME equ 130 inquire face name and index VQT_FONT_INFO equ 131 inquire current face information *" * GEM AES ROUTINES AND CONSTANTS * *" * the AES functions APPL_INIT equ 10 APPL_READ equ 11 APPL_WRITE equ 12 APPL_FIND equ 13 APPL_TPLAY equ 14 APPL_TRECORD equ 15 APPL_EXIT equ 19 EVNT_KEYBD equ 20 EVNT_BUTTON equ 21 EVNT_MOUSE equ 22 EVNT_MESAG equ 23 EVNT_TIMER equ 24 EVNT_MULTI equ 25 EVNT_DCLICK equ 26 MENU_BAR equ 30 MENU_ICHECK equ 31 MENU_IENABLE equ 32 MENU_TNORMAL equ 33 MENU_TEXT equ 34 MENU_REGISTER equ 35 OBJC_ADD equ 40 OBJC_DELETE equ 41 OBJC_DRAW equ 42 OBJC_FIND equ 43 OBJC_OFFSET equ 44 OBJC_ORDER equ 45 OBJC_EDIT equ 46 OBJC_CHANGE equ 47 FORM_DO equ 50 FORM_DIAL equ 51 FORM_ALERT equ 52 FORM_ERROR equ 53 FORM_CENTER equ 54 GRAF_RUBBERBOX equ 70 GRAF_DRAGBOX equ 71 GRAF_MOVEBOX equ 72 GRAF_GROWBOX equ 73 GRAF_SHRINKBOX equ 74 GRAF_WATCHBOX equ 75 GRAF_SLIDEBOX equ 76 GRAF_HANDLE equ 77 GRAF_MOUSE equ 78 GRAF_MKSTATE equ 79 SCRP_READ equ 80 SCRP_WRITE equ 81 FSEL_INPUT equ 90 WIND_CREATE equ 100 WIND_OPEN equ 101 WIND_CLOSE equ 102 WIND_DELETE equ 103 WIND_GET equ 104 WIND_SET equ 105 WIND_FIND equ 106 WIND_UPDATE equ 107 WIND_CALC equ 108 RSRC_LOAD equ 110 RSRC_FREE equ 111 RSRC_GADDR equ 112 RSRC_SADDR equ 113 RSRC_OBFIX equ 114 SHEL_READ equ 120 SHEL_WRITE equ 121 SHEL_FIND equ 124 SHEL_ENVRN equ 125 * initialise the GEM array params[0..5] initgempars lea params(a6),a1 lea control(a6),a0 move.l a0,(a1)+ lea global(a6),a0 clr.l 10(a0) ap_ptree clr.l 14(a0) clr.l 18(a0) clr.l 22(a0) clr.l 26(a0) move.l a0,(a1)+ lea int_in(a6),a0 move.l a0,(a1)+ lea int_out(a6),a0 move.l a0,(a1)+ lea addr_in(a6),a0 move.l a0,(a1)+ lea addr_out(a6),a0 move.l a0,(a1)+ rts * call GEM function D0.W - all elements in control[1..4] are set call_gem move.w d0,control(a6) store the op code sub.w #10,d0 mulu #3,d0 multiply by 3 lea gem_ctrl_list(pc),a0 add.w d0,a0 points to the entry moveq #0,d0 move.b (a0)+,d0 move.w d0,control+2(a6) do control(1) move.b (a0)+,d0 move.w d0,control+4(a6) and control(2) move.b (a0)+,d0 move.w d0,control+6(a6) and control(3) clr.w control+8(a6) 4 control(4)=0 cmp.w #RSRC_GADDR,control(a6) bne.s c6is0 * this is a special case which has control(4) as 1 move.w #1,control+8(a6) c6is0 lea params(a6),a0 move.l a0,d1 the pointer move.w #200,d0 function number trap #2 move.w int_out(a6),d0 usually a returned value rts * this is the list of Control parameters for the AES calls * contains control(1..3), comment is the function number * (an asterisk indicates it is not defined) gem_ctrl_list dc.b 0,1,0 10 dc.b 2,1,1 11 dc.b 2,1,1 12 dc.b 0,1,1 13 dc.b 2,1,1 14 dc.b 1,1,1 15 dc.b 0,0,0 16* dc.b 0,0,0 17* dc.b 0,0,0 18* dc.b 0,1,0 19 dc.b 0,1,0 20 dc.b 3,5,0 21 dc.b 5,5,0 22 dc.b 0,1,1 23 dc.b 2,1,0 24 dc.b 16,7,1 25 dc.b 2,1,0 26 dc.b 0,0,0 27* dc.b 0,0,0 28* dc.b 0,0,0 29* dc.b 1,1,1 30 dc.b 2,1,1 31 dc.b 2,1,1 32 dc.b 2,1,1 33 dc.b 1,1,2 34 dc.b 1,1,1 35 dc.b 0,0,0 36* dc.b 0,0,0 37* dc.b 0,0,0 38* dc.b 0,0,0 39* dc.b 2,1,1 40 dc.b 1,1,1 41 dc.b 6,1,1 42 dc.b 4,1,1 43 dc.b 1,3,1 44 dc.b 2,1,1 45 dc.b 4,2,1 46 dc.b 8,1,1 47 dc.b 0,0,0 48* dc.b 0,0,0 49* dc.b 1,1,1 50 dc.b 9,1,0 51 dc.b 1,1,1 52 dc.b 1,1,0 53 dc.b 0,5,1 54 dc.b 0,0,0 55* dc.b 0,0,0 56* dc.b 0,0,0 57* dc.b 0,0,0 58* dc.b 0,0,0 59* dc.b 0,0,0 60* dc.b 0,0,0 61* dc.b 0,0,0 62* dc.b 0,0,0 63* dc.b 0,0,0 64* dc.b 0,0,0 65* dc.b 0,0,0 66* dc.b 0,0,0 67* dc.b 0,0,0 68* dc.b 0,0,0 69* dc.b 4,3,0 70 dc.b 8,3,0 71 dc.b 6,1,0 72 dc.b 8,1,0 73 dc.b 8,1,0 74 dc.b 4,1,1 75 dc.b 3,1,1 76 dc.b 0,5,0 77 dc.b 1,1,1 78 dc.b 0,5,0 79 dc.b 0,1,1 80 dc.b 0,1,1 81 dc.b 0,0,0 82* dc.b 0,0,0 83* dc.b 0,0,0 84* dc.b 0,0,0 85* dc.b 0,0,0 86* dc.b 0,0,0 87* dc.b 0,0,0 88* dc.b 0,0,0 89* dc.b 0,2,2 90 dc.b 0,0,0 91* dc.b 0,0,0 92* dc.b 0,0,0 93* dc.b 0,0,0 94* dc.b 0,0,0 95* dc.b 0,0,0 96* dc.b 0,0,0 97* dc.b 0,0,0 98* dc.b 0,0,0 99* dc.b 5,1,0 100 dc.b 5,1,0 101 dc.b 1,1,0 102 dc.b 1,1,0 103 dc.b 2,5,0 104 dc.b 6,1,0 105 dc.b 2,1,0 106 dc.b 1,1,0 107 dc.b 6,5,0 108 dc.b 0,0,0 109* dc.b 0,1,1 110 dc.b 0,1,0 111 dc.b 2,1,0 112 ** Control(4)=1 ** dc.b 2,1,1 113 dc.b 1,1,1 114 dc.b 0,0,0 115 dc.b 0,0,0 116 dc.b 0,0,0 117 dc.b 0,0,0 118 dc.b 0,0,0 119 dc.b 0,1,2 120 dc.b 3,1,2 121 dc.b 0,0,0 122* dc.b 0,0,0 123* dc.b 0,1,1 124 dc.b 0,1,3 125 * * WORKSPACE * * always addressed off A6 * * * this is the array of pointers to the rest of the AES arrays params rs.l 6 * these are the arrays for AES control rs.w 5 global rs.b 30 int_in rs.w 16 int_out rs.w 7 addr_in rs.l 2 addr_out rs.l 1 * these are the VDI arrays, starting with the parameter block vdipar rs.l 5 * now the arrays themselves contrl rs.w 12 intin rs.w 30 ptsin rs.w 30 intout rs.w 45 ptsout rs.w 12 n* * Constants for Atari ST * * * this source code (C) Copyright HiSoft 1985 * * File with equates and macros for GEMDOS/TOS calls * * For use in conjunction with the following documentation: * GEMDOS Spec DR * CPM 68K Manual DR * A Hitchhikers Guide to the BIOS Atari * * this file is based on version 13 of GEMDOS spec, * and Sept 85 version of Hitchhikers. * * last changed: 20.1.87 * equates for BDOS calls (ie Trap #1) P_TERM0 EQU 0 (should use $4C really) C_CONIN EQU 1 C_CONOUT EQU 2 C_AUXIN EQU 3 C_AUXOUT EQU 4 C_PRNOUT EQU 5 C_RAWIO EQU 6 C_RAWCIN EQU 7 C_NECIN EQU 8 C_CONWS EQU 9 C_CONRS EQU $0A C_CONIS EQU $0B D_SETDRV EQU $0E C_CONOS EQU $10 C_PRNOS EQU $11 C_AUXIS EQU $12 C_AUXOS EQU $13 D_GETDRV EQU $19 F_SETDTA EQU $1A _SUPER EQU $20 T_GETDATE EQU $2A T_SETDATE EQU $2B T_GETTIME EQU $2C T_SETTIME EQU $2D F_GETDTA EQU $2F S_VERSION EQU $30 P_TERMRES EQU $31 D_FREE EQU $36 D_CREATE EQU $39 D_DELETE EQU $3A D_SETPATH EQU $3B F_CREATE EQU $3C F_OPEN EQU $3D F_CLOSE EQU $3E F_READ EQU $3F F_WRITE EQU $40 F_DELETE EQU $41 F_SEEK EQU $42 F_ATTRIB EQU $43 F_DUP EQU $45 F_FORCE EQU $46 D_GETPATH EQU $47 M_ALLOC EQU $48 M_FREE EQU $49 M_SHRINK EQU $4A P_EXEC EQU $4B P_TERM EQU $4C F_SFIRST EQU $4E F_SNEXT EQU $4F F_RENAME EQU $56 F_DATIME EQU $57 * Base Page Offsets P_LOWTPA EQU 0 P_HITPA EQU 4 P_TBASE EQU 8 P_TLEN EQU $0C P_DBASE EQU $10 P_DLEN EQU $14 P_BBASE EQU $18 P_BLEN EQU $1C P_ENV EQU $2C P_CMDLIN EQU $80 * Error codes E_OK EQU 0 ERROR EQU -1 EDRVNR EQU -2 EUNCMD EQU -3 E_CRC EQU -4 EBADRQ EQU -5 E_SEEK EQU -6 EMEDIA EQU -7 ESECNF EQU -8 EPAPER EQU -9 EWRITF EQU -10 EREADF EQU -11 EGENRL EQU -12 EWRPRO EQU -13 E_CHNG EQU -14 EUNDEV EQU -15 EBADSF EQU -16 EOTHER EQU -17 EINVFN EQU -32 EFILNF EQU -33 EPTHNF EQU -34 ENHNDL EQU -35 EACCDN EQU -36 EIHNDL EQU -37 ENSMEM EQU -39 EIMBA EQU -40 EDRIVE EQU -46 ENMFIL EQU -49 ERANGE EQU -64 EINTRN EQU -65 EPLFMT EQU -66 EGSBF EQU -67 * BIOS calls (Trap #13) - Atari names are lower case getmpb equ 0 bconstat equ 1 bconin equ 2 bconout equ 3 rwabs equ 4 setexc equ 5 tickcal equ 6 getbpb equ 7 bcostat equ 8 mediach equ 9 drvmap equ 10 kbshift equ 11 * Extended BIOS calls (Trap #14) initmous equ 0 ssbrk equ 1 _physbase equ 2 _logbase equ 3 _getRez equ 4 _setScreen equ 5 _setPallete equ 6 _setColor equ 7 _floprd equ 8 _flopwr equ 9 _flopfmt equ 10 midiws equ 12 _mfprint equ 13 iorec equ 14 rsconf equ 15 keytbl equ 16 _random equ 17 _protobt equ 18 _flopver equ 19 scrdmp equ 20 cursconf equ 21 settime equ 22 gettime equ 23 bioskeys equ 24 ikbdws equ 25 jdisint equ 26 jenabint equ 27 giaccess equ 28 offgibit equ 29 ongibit equ 30 xbtimer equ 31 dosound equ 32 setprt equ 33 kbdvbase equ 34 kbrate equ 35 _prtblk equ 36 vsync equ 37 supexec equ 38 puntaes equ 39 blitmode equ 64 * System Variables proc_lives equ $380 proc_dregs equ $384 proc_aregs equ $3a4 proc_enum equ $3c4 proc_usp equ $3c8 proc_stk equ $3cc etv_timer equ $400 etv_critic equ $404 etv_term equ $408 etv_xtra equ $40c memvalid equ $420 memcntlr equ $424 resvalid equ $426 resvector equ $42a phystop equ $42e _membot equ $432 _memtop equ $436 memval2 equ $43a flock equ $43e seekrate equ $440 _timr_ms equ $442 _fverify equ $444 _bootdev equ $446 palmode equ $448 defshiftmd equ $44a sshiftmd equ $44c _v_bas_ad equ $44e vblsem equ $452 nvbls equ $454 _vblqueue equ $456 colorptr equ $45a screenpt equ $45e _vbclock equ $462 _frclock equ $466 hdv_init equ $46a swv_vec equ $46e hdv_bpb equ $472 hdv_rw equ $476 hdv_boot equ $47a hdv_mediach equ $47e _cmdload equ $482 conterm equ $484 themd equ $48e savptr equ $4a2 _nflops equ $4a6 sav_context equ $4ae _bufl equ $4b2 _hz_200 equ $4ba the_env equ $4be _drvbits equ $4c2 _dskbufp equ $4c6 _prt_cnt equ $4ee _sysbase equ $4f2 _shell_p equ $4f6 end_os equ $4fa exec_os equ $4fe * * Macros * * * call the BDOS - requires 1 parameter: * the function number call_bdos macro move.w #\1,-(sp) trap #1 endm * call the BIOS - requires 1 parameter: * the function number call_bios macro move.w #\1,-(sp) trap #13 endm * call the extended BIOS - requires 1 parameter: * the function number call_ebios macro move.w #\1,-(sp) trap #14 endm *** End of GEMDOS file ***  * AES Library Copyright (C) HiSoft 1988 * this MUST be assembled to either executable or GST linkable, NOT DRI code * sets section order to TEXT,DATA,BSS * 27.7.88 adjusted table and addr_in for TOS 1.04 calls * 3.10.88 control made 5 words instead of 4! * the actual calling of the AES MODULE LowLevelAES XDEF CALL_AES,control,global,int_in,int_out XDEF addr_in,addr_out,aes_params SECTION TEXT * call an AES routine * in: d0.w=AES function number * out d0.w=int_out value * uses d0-d2/a0-a2 * (assumes control4 needs to be zero) CALL_AES lea control,a1 move.w d0,(a1)+ store the op code sub.w #10,d0 mulu #3,d0 size is the priority, not speed lea gem_ctrl_list,a0 add.w d0,a0 points to the entry moveq #0,d0 move.b (a0)+,d0 move.w d0,(a1)+ do control1 move.b (a0)+,d0 move.w d0,(a1)+ and control2 move.b (a0)+,d0 move.w d0,(a1)+ and control3 clr.w (a1) assumes control4=0 (all except RSRC_GADDR) move.l #aes_params,d1 move.w #200,d0 function number trap #2 move.w int_out,d0 usually a returned value rts SECTION DATA * this is a table of pointers to all the AES arrays aes_params dc.l control,global,int_in,int_out,addr_in,addr_out * this is the list of Control parameters for the AES calls * contains control(1..3), comment is the function number * (an asterisk indicates it is not defined) gem_ctrl_list dc.b 0,1,0 10 dc.b 2,1,1 11 dc.b 2,1,1 12 dc.b 0,1,1 13 dc.b 2,1,1 14 dc.b 1,1,1 15 dc.b 0,0,0 16* dc.b 0,0,0 17* dc.b 0,0,0 18* dc.b 0,1,0 19 dc.b 0,1,0 20 dc.b 3,5,0 21 dc.b 5,5,0 22 dc.b 0,1,1 23 dc.b 2,1,0 24 dc.b 16,7,1 25 dc.b 2,1,0 26 dc.b 0,0,0 27* dc.b 0,0,0 28* dc.b 0,0,0 29* dc.b 1,1,1 30 dc.b 2,1,1 31 dc.b 2,1,1 32 dc.b 2,1,1 33 dc.b 1,1,2 34 dc.b 1,1,1 35 dc.b 0,0,0 36* dc.b 0,0,0 37* dc.b 0,0,0 38* dc.b 0,0,0 39* dc.b 2,1,1 40 dc.b 1,1,1 41 dc.b 6,1,1 42 dc.b 4,1,1 43 dc.b 1,3,1 44 dc.b 2,1,1 45 dc.b 4,2,1 46 dc.b 8,1,1 47 dc.b 0,0,0 48* dc.b 0,0,0 49* dc.b 1,1,1 50 dc.b 9,1,0 51 dc.b 1,1,1 52 dc.b 1,1,0 53 dc.b 0,5,1 54 dc.b 0,0,0 55* dc.b 0,0,0 56* dc.b 0,0,0 57* dc.b 0,0,0 58* dc.b 0,0,0 59* dc.b 0,0,0 60* dc.b 0,0,0 61* dc.b 0,0,0 62* dc.b 0,0,0 63* dc.b 0,0,0 64* dc.b 0,0,0 65* dc.b 0,0,0 66* dc.b 0,0,0 67* dc.b 0,0,0 68* dc.b 0,0,0 69* dc.b 4,3,0 70 dc.b 8,3,0 71 dc.b 6,1,0 72 dc.b 8,1,0 73 dc.b 8,1,0 74 dc.b 4,1,1 75 dc.b 3,1,1 76 dc.b 0,5,0 77 dc.b 1,1,1 78 dc.b 0,5,0 79 dc.b 0,1,1 80 dc.b 0,1,1 81 dc.b 0,0,0 82* dc.b 0,0,0 83* dc.b 0,0,0 84* dc.b 0,0,0 85* dc.b 0,0,0 86* dc.b 0,0,0 87* dc.b 0,0,0 88* dc.b 0,0,0 89* dc.b 0,2,2 90 dc.b 0,2,3 91 dc.b 0,0,0 92* dc.b 0,0,0 93* dc.b 0,0,0 94* dc.b 0,0,0 95* dc.b 0,0,0 96* dc.b 0,0,0 97* dc.b 0,0,0 98* dc.b 0,0,0 99* dc.b 5,1,0 100 dc.b 5,1,0 101 dc.b 1,1,0 102 dc.b 1,1,0 103 dc.b 2,5,0 104 dc.b 6,1,0 105 dc.b 2,1,0 106 dc.b 1,1,0 107 dc.b 6,5,0 108 dc.b 0,0,0 109 dc.b 0,1,1 110 dc.b 0,1,0 111 dc.b 2,1,0 112 ** Control(4)=1 ** dc.b 2,1,1 113 dc.b 1,1,1 114 dc.b 0,0,0 115 dc.b 0,0,0 116 dc.b 0,0,0 117 dc.b 0,0,0 118 dc.b 0,0,0 119 dc.b 0,1,2 120 dc.b 3,1,2 121 dc.b 1,1,1 122 dc.b 1,1,1 123 dc.b 0,1,1 124 dc.b 0,1,3 125 even SECTION BSS * these don't need initialising so can go in the BSS section control ds.w 5 global ds.w 14 int_in ds.w 16 int_out ds.w 7 addr_in ds.l 3 addr_out ds.l 1 * END OF AES * `V` APMONST2 (C) HiSoft 1988 o,hO(HCV" ( Аd2 N0<BQ-LPtAXmX!X"=Xf ` ?B+F`0GdLE5|>|Fa0`3xGLE5|>DFa0'nLB`3GxLE5|>DFBBa0`3/ Ga-vGLn$_a0tPP`0 f@eeepNupNuHLfe dNu<NuJ.kgH@Ga,BQkLNua|k^aز< gP<g̲|bgR|qg<AeA4ggTH`&nN` .g&@ag`a2(`az .g&@<Zg<:ea`~0a2.`r/ Ga,JGL nta'$_A C p0QPPa/la2Bajak<gag`a1`<Zgal`HzT kH|H8g4|Hg2|Pg0|P2g|Kg(|Mg&Jng< gXrNuNNNN N NkNuB kHNrNu<AgH<Bg<Egl<FgT<Lgb<Og<Pg6<Rg²<Sg<TgNu +>g +>gA3YaIf'BB`la+a+VJnf +>ga1&`Na*p :+7@@a"GaJ.gGa Gda`apP .g@őkk0+H7@PQa-`/ vA35aIa,ffNJgJ$Lg<=fC$ SBa!fH(JaLf /a04$a|Jnfa@&_Nua0&_Nu/ GJkfa$&_Nua`&_Nu+><gr<gb<gNu + ?a)`2/ vA3aH`a+fdJg`aNg aII`*tJg.<,f<?gB<*gN<=gT<-fJgZafJf,a/n$v"EaEFfaJ&_Nua/V&_Nuaf/ a/F(_v`Jfa/8v`Jf|a/*vt`a/ "EaEffaE`a)fA2`GP a^Q NuJnfp +>gh +>g`/ vA2raGpa*fHpJg LJf$"LSBa (f ?a.0&_P?an4gaJnf/ a&_`a.&_NuJnfJ.gz+><g& +Fg<fbIKn#fTxE`IKNn#fr<gr<grJgr'nBA>BkLa-,a a&`NNuQQa*>A  C.+><gC.<gC.f| BPP`*A BDvGHCI L|MbNOP R <SUPV:W  :t n<aEa`E +>f"kBHz:aBdgBtv`ANua@.Of$nLafaE`@NuA/tYaEfaBH` A0tYaEgFNuJDg4.Of,$nLahf"NuJDfJ.hfa2aEJ`JXA.g`DxaJaE"nLaAfI hfI`IaJa`"JvtaA*faEN`INuaraB-JLtLaz` DJDgvA.:aCa' fg ag I``*/a*"_tva@gg@vL a$a^k<g߲<Bg<Wg<Lg <Tg<IfA a&8a IBxa&jfjK <IgD<Tg>B-af <Bg<Wg*`:`Jg<,gaDJI`A ` Lf SB.@ a*`Bn `)Gra n$hB(><g G vg<ga<If2``ReedNuʲNu$|NuSz` af(J`(REgaf(JJg Kag fSf`$L` n(FYd -L-LB`-L .g-LaB` J`: Tfag J< gfHRSCg gL `L &n'JB`(J` ga "JE aIʳ gE aa6g*J/ a/ p. SCA g< f`JgHS@VLg $_aa`(_`.<g GaBBaAa&Ha'` `Nuv Lg a#QJ, gv Aga#QNuJ$gbE+a(n$|g>Rg$, aaaaJ, gRFkfap<g|a!B`aZa'Nu/?<INA\NuJgJ.n naBA)af-K-KnhJ.g#g GNa&`LGa&IKNEx`LE)U|>DFa$D'nB`'PA)xva?a#f'Jg'Atg<,f(H/an _g Ia"`B a.f-K-K-KBS-K`Nuva?Ra"f^JgZt/a&a@Ka _f./a f/?<HNA\Jg&@ @aaa@*pNup?aa@0a?lpNua&NpNuv A*a>A* J.la:gZlA*J.ma*gZmA*J.!agZ!A*J."a gvZ"`nVarNJgrYa!Ska4ak<gD< g6߲<Yg<Nf?a!ra2<ONuvL arNuaa`X`%A)a&aI\r2.fE>atBIaIa!RfZafe洼d=BfaFA)aaa:I".a*vBIaa! fagI`-B`$a$a>`>vA) a=a ftg ahgI`=Br`$a f&aRf"<,f*aDf<,f,a6fJfNua>I`vA(a=Iaf(m$B"F EgRdSf` REh!Sf`$NvA(aB.xIafJga:" Laga9`a9a*nJ.gBn4a|f(* gSg Xm`Tm`Rm`a&.`P*nJnfatfQ QaA#a8`P a Ta6Q Qa|Jnf^NuE * gm lpNuE `pNuoNuJ. jafz/ I(DC.BS* g@S@gL x"a$n,\`:W x2a$H,\`B xa$,\| (_` Ha%.L( a+$kBa aa")a+@fa`a&arAaar:a$i$ a+?aaR<8fra4.JaNqa8.Ja+@+@ araz$.Da$nD+?aara\$.Laax$nLQtatgFra6$.xan$nxp.v;8a`J.ug ra6$.|aH$n|p.v;a:Pta`$A4arS frUataQNug`R`TXNZVC`` ````NqrNu$kB<+J+?ft a f $ at`$ aa +?a ga Barr Lfrana/ a@at$_SfNuaPU'JBpNuaDT``` ``L`B``0+@HBpNu +BR$@<+ajSf'JBrNu +BR$@NuaaJ`aa,d`HQQaLA JfJkLgWS7@Lg>|e$|Dd@HrAQ@drDP@0 `C PYf ! BP` tLata XB|HfNuApJhg:2(LAf2|Lf (>g."6 Bg!ABH/AB4a _LANQNuH"nL (BR$@m<(WFe/ aJgQ"_" LM`"_LM`$kB<+SFaWfJFk aaQNug " fg " fRpNupNu``(`8``N``$kBag/ aDaJ$_'JBanpNu$kB4+SBaW`$kB4+SBa-_$$ML8NuTJNu R$@aff6E a\Ef(H*Ja$M$ BL8Aa4QNur*`(Ag^t<:d<0dd~af0CtRBa|gaf$`/ a"_gx(It`~`"~ g <>f~ ` ~`~ f~ R _L`NutS~`<0e޲<:dԂ ЀЀԀ0ԁ<:d<0d~`DHtpGN`v`,`N``p< gfg`Se`0ef<d`Ԃej0eJ<e`B0eB< dld8H`tr n$Jg g g J( g`(f LNuJ.fNue dH@J.k( n"g fLpNuJgl!@B` n"gܰfAB( LH"a HBA LNu @pg&a4SWgJ(gp \pg aSWNuNu/J$gBB Opnfo4.fJ."f~S|epQ(& n$gZRgFfBf0 gS@BQ`<ae <{dNu n$8|oxSD6C g`RgD0/C (aIJf2Q0j J(f$Jf `0J(g\afQnfgJg _J(g` _2`*2`@Bg/?<NAXNuH HBp@@"npJDN0+7@`N` ``aA'H Nu  !()0189@AHIPQXY`ahipqxy  !$%(),-014589<=@ADEHILMPQTUXY\]`adehilmpqtuxy|}j"Qp`"ip7@'iLC'I&A'H Nu``@`h`` ``l|gp"i`p"Q'iL7@r2+7ANu/ $k r"J4+SBQQ$IAQ$_Nu"k k1p2<QNu"k SAkCrpQpNuk$k p2 4+SB|g*0<2<Jf QNuFQNuHA0@A2IIA8z-|JVg~D/4+SB0<2<+)+ QLJg 0+FS@fNu2<k"k p1 `/6+SCSC4+SB2<$k J@j Sx8AQ6Q(Nu0+S@S@ Sx8A`Q6Q(Nu"ip`k"ip7@'iLC'IP&Nu`t`>``` ``D|g p"i` p"i'iL7@Nu4+SB"H2QQAPQNuP4+FAPSBfNuP4+SB0<rPJf QNuFQNuPp2<PQNuPp@QpNu6+SCSC4+SBrP"SJ@j$IA0QCPQNu0+S@A$HC0QAQNu$k6+SC SN$k S"kAN$k SN SSC$kN SSC$kN B"np0+$kN$kNpa0+S@7@BkNupaBNuJ. fH :+4+2+RA6+AoSCgx?a4RBSEfL0Nu?.?<aTXJ@Nu=CA (-HNua46.`< far a`A "nf?a 2`-INu .A (g Hn (/?.?<@NAO g `J. jBa&f `4JnfA??.?<a o \f?< ?.?<a\LNuHJ. g 0< dr `HJ. f< g 0+kgL Rk~a@LNuNqBk0+k`x LJf*SEaa6+tDP4@aaϊk< g<g<g\<gt|Gg|Kg4|Mg8Jgƺn g0REDg AP`S@fal@RDB4Pax`JDgaXSD`DgaNRD`JDgaD0Dg A@XS@fSDSE`0DgdA@XS@fSE`a< Nua8Bxz`.?tD6+Q4@a,2Nu?+ Lar a7_Nu?+4. a7_Nu/ ntn8.a`$_A p W| BA 'HHBkL~P/ (KG4,6,nr Jg J,Fgr0,FH0aL RBA gH1Jfr azLRB`2,SA4,6,H0azL 2,lajLSB6,af2,4,l6,aR&L(_Nu-Ip nt0<?BQ<ng 4<(6<x`4<P6<x` 4<P6<2xprG ntaB0+R@=@pABhNQBL&<nL(gL.H=E =F Nu N;N;&uNN 2 5 25NN X2 5X 25&& X&&B.#Iz<n IgIa̮aapLQabaLHLHGJg/ &nJkgQPa&_-KPP`6<8 .g&t|8f6<CNJv0fQNuG0`GdtJkg+FgNQNuHHz*aQQaJBkGJkgPPa2`4LNur2+p+>@|(NNu``&`D`h A|erA?A'HHNuAn'HHtv |(dtvB@C?NuA&dr<dr<erA?A'HHNu|?Ab'HHNuPC:SR:A7'Divide by zeroCHK exceptionTRAPV exceptionPrivilege violationTraceBad interruptInvalid TRAPIllegal exceptionBreakpointD:A:Searching...Address errorBus error ; , Text: Data: BSS : Current Breakpoints: Data start,end<,size>Cross-reference listFilenameDisassemblyMemoryAMonST 2.02 HiSoft 1988RegistersSource code ESC to abort Window start address?[Return] Filename to loadSource file to loadExecutable file to loadCommand lineProgram terminatedRegister=valueTOS error: 12345Cannot runIn ROM!It's odd!Cannot write!Too many breakpoints!Run until PC=Kill all breakpoints Y/N?Breakpoint address<,param>HistorySearch for B/W/L/T/I? Printer not respondingRegister to lockEnter expressionSymbolsPREFERENCESScreen timer Y/N? Follow traps Y/N? Relative offsets Y/N? Ignore case Y/N? Symbol lengthTop of RAMBDOS BreakpointCopy start,end,toFill start,end,withSet current drive/directorySave binary, filenamestart address,endRun: Go,Until,Instruction,Slow Watch Y/N? HelpDisassemble start,endRe-install exceptionsSave preferences Y/N? MONST2.INFJj-D`JAj-DA` a^fB d0Nu$p/t?fJgP²< o^02Q$NuH@ @pgQJ(g\p gQLNuA0g NuTFHILSCCCSNEEQVCVSPLMIGELTGTLEAH.P NuBWL?AH NuTST CHG CLR SET 0NuH@00NBSQNu>B.uA BR4XXfBA Sg`IUeQa BNuA:EMaNuXFB0@P&Fb,|XX0`a#Jf2a"`<g"a.`2a,?<a8B#2aJ,x=0fxe`: < mE;P`?xa>.t-nx|Qt?,2< iA4JBx?a0J.tgJgPuLxAHxNu@tNu2`0Nua,#2`aA`,USP G< e1 0Nu$<.gRa4`z.xd<Jg:<Pg2x=`,zxa$,`Dzxa,`@ a?xla|v<,pVQQ6[<DaJgJg/6<AJg$pg@|7JgSg*Jf -7NuSf-|6/` Jg`/SdSNu RaJ<48< f2ar,x4aD|vNuaR`zxa.OO0,DNuzxda< 2i,A`&2IaD0," 4H҂Ү $`2IAanBx=`a#2IIAfra,x?`0@2II<@g<Hg&<g2??NuDa,D`Aax,A`Daf,A`2Ig <ga`S(BRA `S(BSR g|.S HHҍҮ $` 2HU`a,D2II`p 4Xfa4JJg$-(AaA(aa)NuDa,D`),-(AaP<fI`02(AazAa2IIah)+Nu)+,(AA:M`R:::ZZZ R(CMPAaxa,A2II` Aaaxa,D`CMPAaaDa,x=`EOR0@|@g |Hg|fI(EXG `<gNaT0@fxa^,D2II`xD2IIaj,0@x?|g*8<<`":MRaxa,A2II`(2<g< aHa2IIf#Afra,D`D`Ia  zx<`AAв<fXrLpfrRNuASLSRORO2`CagNuI>(/a| [ _"(0(|g4|g*|g?C pgQ..`*`=aJ]NuNu2A4J<A` 2zjgD`gJgA`gtf(a -@xEv`0@@|f .Jgp 6$Nu(Aa)Nugla+Nug^-.tfaEp;PxNug62Htf aЁ-@xEvJ$gV . "g&TeJ\dD0H/Ra~Lgal`.J.!g$<g0H/tJж $$a`gaB`a`6H0X@<|<f/A f _` aEf 1Q2J QJEf !B1CpNu JapNupAf JhgpNuHQpNupAa HQNuJhgBh"P QJf2Nu-I|=Q2JNuA-HhpBFJQNu nhCp Q D0J LChfA-HhNuExa|?aA'HHaja|`Ja2<YNux}x~ .|tg4-@x=x@=xBx`1@1B`uvNu=|pa6`=|pa,`yz1@1BNu 8ffgNu..fNuJ.lg=|(pNuaFx@aFx@Nu-_-xA!NM!/.Nu-_-xA!NN`AG0gHh/??<NMP& _`QiPjzl=|r=|p@|Hz?<E?<NMP-@F-xA*!=|rHz\?<!?<NM-@PNuG~0gHk/ ??<NMP&_`A!Hz ?<!?<NMPNuAFG0gHh/??<NMP _`/.?<E?<NMP!/.?<!?<NMPNu\^  #$%&'()*+,//p`/p/,zPjH?-_<-_\6=_J-_L-ODO?.Of($nLEafE afTpbWf-JL0`\/p `,/p`&/p` /p`/p`/p`/p`/p U/,zPjH?-_<-_=_J-_L-ODONh-H@/.8"nL< g8<g<||BB.n"nL?aˀaaXGa@2aͼPk-_`LaJf.ngAhLgp nx (@<gn<gJ.og(a gl nx (@||aaaa nx (@J.mg.J<gJ`B.nJ`I hafJfJg nx (@x ` Sfr` nB"P2J0.J@n=@JjJ.ng`Hnvgp|gzPabfZHaL0(|g>|g(|gI Ha~LfTJfPJgL`R`DSg`<2Bhx ``x `Z-nxLafx`J2p-@| n"P2JaH.Of$nLa2f "JagJnJjh.Of`$nLafV0@J.mg.|N@gD@|f: nD! 1.JJ-y(L-HD`|N@g@|g|gQj.nD n@N`/.L?.JLNs0(@|N@g0.J@=@-H2J`J2-HaBJ`|NuB//,zJ.ig@/AeAe _QiJ.ngB.n` _QiJ.ngB.n`o 0.pkS@fap=@p/n,_ Nuada2CnJ`H` z/< !xA!NMX zt!LgPiNu hNBH瀀 zN0(rk:J(jf4/ f&/NhP _f"U z(1|rB(nLX`og/hLNuAMP* modified control file for linking Lattice C 3.04 modules. INPUT startup.bin INPUT * * Comment out this line if your program does not use floats LIBRARY fplib.bin LIBRARY clib.bin * GEM graphics library - uncomment if required *LIBRARY gemlib.bin * order the sections and specify BSS areas SECTION TEXT SECTION DATA BSS UDATA `HZ&|x`Nqz8< 6< ><4<|(o*lNNH~N+| <5Nv&??JanFebMarAprMayJunJulAugSepOctNovDec2< NNv$ HiSoft CheckST Program version 1.2 2< N~=A .NN,N>-.<FN$N^-N,N>-.<FN$N^ G>=~DG^ ^0~=~=~Nd~DGNN>~NNv;This program is for use when reporting any bugs or problemsNXNN>~NNv;with HiSoft products. It reveals internal information whichNXNN>~ NNv8will enable us to identify any problems more accurately.NXN~=~=~NdBm Nd~NpNnNv5[0][ Compiled with | HiSoft BASIC| ][Quit| Print ]rNn~?A ./NrNO;G m g`XNqNPNNPNNPNNP~NA .NXN;| NdNPNNPNNPN~DGN`fNqNTJm f`.NqNP~N., NX~-N.,NXN`(NqN>~N., NX~-N.,NXNN\Nu`NqNTpNnA.-|.<@NN ^ A.-.,-~Hޞ G>NdNA.-A.-~H-A.Nv-~HDޞN-Nv.NҊ-A.-~NNNpNnNvDOS version number:-NbNNrNnNvROM version number: -A.NrNnA./A ./NNO A.-NvROM created on : -.,-~Hޞ G~NdN-Nv NNA.-.,-~Hޞ G~NdN6N8 ^0A.-A.-A .-~=>,=~NN-Nv NNA.-A.-.,-~Hޞ G>NdNNpNnNvMagic number : $-.,-~ Hޞ G.NjNrNnA./A ./NNOA.-~DGH/.-~DGH/.-~DGH/.-NO ^ A.-.,-~Hޞ G. ^ A.-.,-~Hޞ G~ ^0>, G#g`$NqA.-NvAmericanN`Nq>, Gg`$NqA.-NvBritishN`|Nq>, Gg`$NqA.-NvDeutschN`JNq>, G3g`$NqA.-NvFrancaisN`NqA.-Nv?NA.-NvNationality : -A.NNpNnNvMemory :-N-><H&NNN-NvkNrNnA./A ./NNOA.-NvBlitter : N~DG?NTO=~^JGf`,NqA.-A.-NvYesNN`&NqA.-A.-NvNo NNA.-NvGDOS : NNJGf`,NqA.-A.-NvYesNN`$NqA.-A.-NvNoNNA./A./NPOA.-NvColourNN Gg`NqA.-NvMonoNpNnNvMonitor : -A.NrNnNvrNnA./A ./NNO NN\Nu~N O/0C0<HЈ",Іd䒆 Ь `H`// Bg?<JNAO JfLEA@,A0,Hp!!!.HA 0D"MBQ;@+F +LfSE;ED;D CaHNHz+_>?F?F"/FN<+g <-fPN<.g<0e <:dBo?|Bo <:d<0eaG0ajNRo`Jf /k WeR<.f6Bo N<:d<0eanG0a$RoSo ` ooR߰<Dg <EfZ`N<+g <-f?|N<:d"<0e2/A0AA@GA0?AN` g oo8/o gadAC$Ia9`ھ<&fN߰<HfBN<:d <0e2G0`"<Gd <Ae G7`<gd<aeGWaa&``H<BfN<2d:<0e4G0aaN`<OfN<8d<0eG0azaN`Jf0 /k eRdS|"` |"Ag ggfN/"g,Sf f" /H/@` e /a5VHPz./gLJ/gv?a3f:p`J/"f Jj a5`J/gDJ$Nu%&!#HJf߯eNua a4AC$IHa7"`7 / a4H PNuJf /Ѐe"ЀeЀe Ёe/@NuaAC$I`7Jf /ЀeЀeЀe Ѐe/@NuaXoNuJf /ЀeЀe Ѐe/@Nua|VoNuJf /Ѐe/@Nua`RoNuJfaR HGJD[jDD<AB!zVB.T/zTBNd A"O$Ha6JFg O"O$Oa6` JgCA$Ia7HHGPNu A ,0-JgPQa gBNu?a0@`  Nu !INu("hNu _x8aSr//Q/-+O/N m( SrPf Ha LQ m((+P`H+H+HY+I(+I$` - A䐈∓+I c+@LNuJk*"mg ɉRɉAH d+HNua`a $Ha JaNu/-BHa a`lG^pv.<"m AF"A$m $ QN m*g $ N E P`A"+I, U+@0NuNuSBeg"‡gf"`f$P(*SJg "‡g"`Qd`Nu$m X&m,Qd,m$(/ / / K R,I` (*X"Tb"eee$*ICʹd o( o- Y- XE` o oX- Y- E`d&^$^`*_& _"X$"X dG(H$S) $ce) $dNu m X.-0S,-"F*<& $X,ReV(*gȅe2؎e,$`8ȅ e^&ր*gR"&F܄ge@$SQdQd+FL+_/ح d(Nuafa,Memory exhaustedH/Gpvaar _a`SBe g"`Nu*<(I m ٭ ٭$$-0gRňX$`,Rd2Ho8 ^("ha@SoRgSe(`x"Dp!a*.NuaH ^Jk ga4c R--`.Nua`a G("hapψa h`HE`" Ga.Nu("hNu/ a _` H@g(Jg$HAJ@gJAfHA`JAgH@HAJAf ށeNu~NuDNu$JnDJnDai JkJjDNuJgF //JjDJjDp"~ҁU@D@އeRQ jD jDNuNu Ga4)k2BHҁC. Nuv!`:FBH*6HÖk&n"UDk>HǞkn"aևQ"`L` GaJgH<fZxCiff4)C k2BCHUDk0BAҀQ8. NuHxCSDt =QaL`a3a a a a FBH*&k趙nUDk.k־n"aFևQ"` GaJgV<fxCift4)C kJ^f2BCHUDkJ^fx0BAҀQ8. NuHxCSDt -QaL` GJf.4-4/ x$Nr6ASAHDJDfHD0BkR@Q/ pgaFC2 AA ?H؁a 222"8B2HR2 UAk0B22R@Q2prHASCd2`"Qd&_Nu2 4BSAA M BC p0 !Q&_ GJfb4-4/ H/~$Nz6ESE"kJRaQ( pga~C2 AA?H؁aD222FY"."R: UEk"""RapQ(*`0 Ga<f()aLB`&,<@Jj<a)h*Nuai 0GgDNu H@GA6a G@VGa GUU|vGa"D`$((*`A"a" Jvg mvNJga!`A a!"a"JUgAa!r2a"NuSe<dAa!AJg!JfS`LIBRARYSTARTUPOPENPEEK/POKEBLOAD/SAVESOUNDLOCATEINKEY$GEMDOSDIMARRAYBLITREDIMCVsMID$==MID$RIGHT$ASCINSTRPALETTEMALLOCMENUSCREENSQRTWINDOWJOYSTICKTIMEDATEMOUSELOG Y8 Runtime error at line in module on #A+HvNuA g<PdJfSfNuRETURN without GOSUBOut of DATAIllegal function callArithmetic overflowOut of memorySubscript out of rangeRedimensioned arrayDivision by zeroType mismatchString formula too complexRESUME without errorLine buffer overflowWrong number of dimensionsFIELD overflowInternal errorBad channel numberFile not foundBad file modeDevice I/O errorDisk fullInput past endBad record numberBad file nameToo many filesDevice unavailableDisk write protectedPath/file access errorPath not foundBREAK pressedFatal bus errorFatal address errorApa+@0Apa+@(Apa+@,NuaHm|9|rPJ-6fr(A|a>ra(rwa"Q"B,#`H Lpa#L (IL)HNu l p`&_|dVA``&FLLn0kN0SN0kNp*JgHP0SNL fS`NuzpgH P0SNL f < gR`"NupJgH P0kNL fS``<daTa@pNupDNu`aHz<d̰<g a"Ra`-5f -5fNuH?<?<NMXJ@gN/<NMX-5g<g,-5g*<f$/<NMX<g-5g<faM+@LNuJ,"gHrazrfatLNuHradrf,"aZLJNu<dA`HL.6H>HHHHd Q"aapNuP"pNuQ"pNur,#pNupDNuB,B,#rarE`pNu|dp,@dAB#A B H`rarYaL8a`/ Jikrarba"W2)a2A av"WJikrahrcab"_2)aA `RXpNuAAJ-6g -6gA0Nu    H @rareaLx*&I/ at&_< gT< gN<g <g< eںgHR/ a|&_`JgSJ,gS,/ rar ara&_`r ar a"p@Nu?,?<NMX<f lf -5frpNu?r aFr ax2< gp< g4R,,g,e lf< d<g<d<dp`0,<f< f ,#dR,#A???<NM\Jlg pNuB,`Rgp9Nu0,??<NMXrJfrpNuSgSgUg|SgpDNu&fvRBg/?<=NAJkb8>N?|NAJfPP0(<(؃Aa:)mV)C)C$)C |||9@p)@@)@NuPH`t9+@8lAgf LNuF5LCKKBg/?<NAXapNu`8,<d$ gA @N.T@(eа|dA``tp<gJf",gaBf atrpNur)ApNuHl(/, ??<?NAO Jk)@gB$Nup>Nua ,$e agp>)@NuA(r0R<gR$pNua",g$S)AS$dBg?/?<BNAO JkavpNua|pDNuat?(,$gA($e(٬a^8)l$Jg$/ /??<?NA"/O Jk$ѬfLpNua$< g4< g2R,,g(,d"B O | ApB,aXNuB,I? OpaTNuJg&//??<@NA$/O "Jkpgp=Nup"Nua  IJ,f6,Sev H x ggRQdAL0`r`Jg, I,< g< gReSf C`Zv`SH @vapAaBLgNu fXp6Nufp6XNuaB$BSt QdBg?/?<BNA"/O f Hl(/,??<?NAO Jkgr)ApNuaB$Bg?/?<BNA"/O Jl |fZ/?<?B?<BNAO "Jk@g(*HEJEgpH@ @ajf(SE`HE  |aVf ,B$A(aDfNu` f$Jj", R $,Ga"GA( ,NuXp6Nu?<?B?<BNAO /?<?B?<BNAO "&Bg?/?<BNAff$, `$/`$,"O pNua Tp6Nu< g,< gR,,g,e&,$d 8(R$pNuB,`?r ar a2`p2Nu",pNuPRT:AUX:MID:KBD:LST:H@b0HCAag (IpLNuLp4Nu8<0DaQNuH@af Hp0a L LJNu lN -f ?+mj+mnNuBm;| Ap 0Q0BmpNBT@g$pMa;@p-6T@;@0<da0-f:pMa;@;|0<da0-faCannot open workstation;@;@BX+m^\BmBmp&at;mTpm;@VBm;|Bm;|p'aJBm;|;|pa4Bm;|Bmpa NuQ7a -gBm+@paBBm;|pzaa0BmBmpeapa`6pD`p4ONu/ H0@a~0/|bCHI o f"+|phaADC1111/HC2"X"\pda|k(<6Aa9@;@&|B,B,#9m "o B2B.Jo g& IaRa" R/ a b)H."_HaB"l.;l;|+IpiaRmA+HpiaL 8A0P0000pea;|phaL@ASBSCHHJJ-7faxp0,T@C$"V#zV3zTapNu;|;|A+H+H;|A"    A"Nu0,2,l4,6mVA`6420ll@AH";|Bm;|p a\pNup;|;|;@LCBllH" H@+@p a pNup fpBm`0j 0,(RBg0,&/aLL a$0,(Bm;|;@papNuLCBBm;|llllH"papNu;|;|;|llH"pgaxpNup,@d$ATRBV0lld HpNupNuA$C p2!k0TQC$/ (IBm;|;\0<a;\0<a;\0<a;\0<a;\0<a(_pNu;l;|A1111pia;|phaL@ASBSCHJ-7fa2lfLHJajpNu0a:8ABX0 BL\R@RAHplafCFA33330Dp!`ahpa2)NuHJ-7f"A<+H+|;|0pagLNu40. a "N nM4vaf;H.Nuv`|d@0@Nua`0a`v0.at* E2 GaPpa"4|. ^Ta@p`0aP* E. Ga,pA$E00 pia|Nu0a(* E2 Gap`JgH RaLBala< RH`azL$HaئB"RNuJGk|dV;GpNa|4`B-4`|d4BmBmԾ|gp|aG0;p>5Nu0<a>-^Nu^aV/?<HNA\Jgf @Nu/?<INA\Jga*3a$a0|JgD0A4</va`. Compiled with HiSoft BASIC 0<rtvaf;H$;H.A0<rtvafNuaޮDLST:JGo |d0GNu0Gp4`x;m.$Nua;G$Nu;|$Nu Ga$0m$pat G`p0m$adHA86HBrBDHAJAgHAJCgAcVB8SDpr a4QNuJGo8SD0m$`JGkg.p0m$agJBgHGJGgHBRBBdBSGHzCt0m$p` g./ m fAN _`??<?<NM\Nu/<NMXNuCDjDG@AB|Ab DSGkUĆQ(k(j2xc 0D@`fc 0D@`D@@`D@@ԆӅdf UĆR@(fJk0<NuJkJkxAS@J[NuJkV`t"g pJk S@ҁ`0<vNuMC68341 FLOATING POINT FIRMWARE (C) COPYRIGHT 1981 BY MOTOROLA INC.,GgT klknf`@,k^g>k^g2k8<d,&B<ރeNuRid~S<Nu.NuJNu<oD&B<ރeNukgvgPk<<d&B꫞kBSbHGއ[kgNu~Nu<oD&.<`DgjD`k gBAkjDNu<Nu~NuBkjDDNufDJjNuHz_Jg0jzDi&SbHGއ[Jj dRNuMC68343 FLOATING POINT FIRMWARE (C) COPYRIGHT 1981 BY MOTOROLA INC.rtvx2(4(6(8( |o864BA@`J@gHCv6BBHANuH0)hlH0)h|?ovx`J@ga`LL*jfcCD@` ԄӃdR@HLNuJfJgJk S@jHNu0<5@NuJfJg JfJfBBB|XONua/ 04R0(iR@5@&Oz////zL81P֣7CBCSHCԃ6BBHB҂ң7ABAQHAЁ'@\KUEjLJkSjjH&_NuaL/04R0(i5@LL xzJk SjjJk Rjj|?Eg҃тQJk SjjH0,NuHz ?<&NN\.:Nu Aj |On8@ &{8|<ACe CLdV>378 sf78@@@8A .|4VyNu ?<0NATH@>Nu;o oaa p4a>NuA<+HSe`BNupNBT@VHNu//// //?<NNO.Nu?<NNT.Nu?/?<@NNX.Nu8H(x * a simple test program for DevpacST version 2 * prints a simple message, waits for a key, then quits * two deliberate mistakes c_conws equ 9 c_conin equ 1 opt d+ long labels for debugging * firstly print the string move.l #string,-(sp) move.w #c_conws,-(sp) trap #1 addq.l #6,a7 restore stack * now wait for a key mov.w c_conin,-(sp) trap #1 addq.l #2,a7 * and quit clr.w -(sp) trap #1 quick exit string dc.b "A simple GEMDOS program",13,10 dc.b "Press any key to Quit...",0  * a sample desk accessory supplied with DevpacST version 2 * Source code Copyright (C) 1988 HiSoft. All rights reserved. * No part of this source may be reproduced, transmitted, * transcribed, or stored in a retrieval system, or translated * in any form or by any means without the prior written * permission of HiSoft. * HiSoft makes no representations or warranties with respect * to the contents hereof and specifically disclaims any * implied warranties or merchantability or fitness for any * particular purpose. * feel free to use any or all of the object code * If you cannot assemble this exactly as supplied, tell us. * If the object doesn't run after you have made any changes, * please do not tell us, as you're on your own once you * start messing with it! * last changed:20.4.88 * this is a conditional so that a program may be assembled as * an accessory or as stand-alone to debug RUNNER equ 0 1 for .PRG, 0 for .ACC * NOTE: with this particular program assembled stand-alone there is no way * to exit from the program! IFEQ RUNNER OUTPUT .ACC ELSEIF opt x+ dump long labels for debugging OUTPUT .PRG ENDC include gemmacro.s * the program proper IFEQ RUNNER start move.l #mystack,a7 must have a stack! ELSEIF start move.l 4(a7),a3 base page move.l #mystack,a7 move.l $c(a3),d0 text len add.l $14(a3),d0 data len add.l $1c(a3),d0 BSS len add.l #$100,d0 basepage move.l d0,-(sp) move.l a3,-(sp) clr.w -(sp) move.w #$4a,-(sp) trap #1 shrink memory lea 12(sp),sp ENDC appl_init move.w d0,ap_id store the application id IFEQ RUNNER * start by installing me in the Desk menu menu_register ap_id,#mymenu ELSEIF * set the mouse to an arrow graf_mouse #0 bra open_acc then pretend an Open ENDC * the main loop of the application * the only interesting events are messages waitforevent evnt_mesag #messagebuf move.l #messagebuf,a0 move.w (a0),d0 message type cmp.w #40,d0 beq open_acc * check others here bra.s waitforevent * here when I have to Open open_acc form_alert #1,#myalert bra waitforevent SECTION DATA * all C strings must end in a null mymenu dc.b ' HiSoft Demo',0 myalert dc.b '[1][This is a Desk Accessory|' dc.b 'written with DevpacST v2][ OK ]',0 * global constants SECTION BSS ap_id ds.w 1 messagebuf ds.b 16 ds.l 100 stack space mystack ds.w 1 (stacks go backwards) * if not linking then include the run-times IFEQ __LK include aeslib.s ENDC  LOWLEVELAESTEXTDATABSSCALL_AEScontrolglobal int_in&int_outFaddr_inTaddr_out` aes_paramsCT+2@ AT+p222BQ"<T+0<NB09FT+NuT+ T+&T+FT+TT+`T+    (fd WORKSTATIONSTEXTintinptsincontrl intout ptsoutLOW_VDIcontrl1contrl3contrl6CALL_VDI vdi_params current_handlev_opnwkpByT+3 T+a*+3T+T+ Nuv_clswk ByT+ByT+p`*+v_opnvwk2pd3T+ T+`v_clsvwk@ByT+ByT+pe`*+v_clrwkRpByT+ByT+`*+v_updwkdp`vst_load_fontshpwByT+3T+ByT+a*+09T+ Nuvst_unload_fontspx`vs_clip3T+3T+0<`*+OUTPUTFUNCTIONSTEXTintinptsincontrl intout ptsoutLOW_VDIcontrl1contrl3contrl6CALL_VDI vdi_params current_handlev_plinepByT+`*+ v_pmarker p` v_fillareap `v_gtextprCT+g2Rj3T+3T+p`*+ v_contourfill<3T+3T+pg`*+vr_recflR3T+ByT+pr`*+ v_pieslicefp`v_arcjp3T+3T+BT+BT+ByT+`|v_bar3T+ByT+p`hv_circle3T+ByT+pBT+By T+`Jv_ellarc3T+3T+p`6v_ellpie3T+3T+p`" v_ellipse3T+ByT+p`v_rboxp3T+ByT+3 T+p `*+v_rfboxp` v_justifiedprCT+g2Rj3T+3T+p `ATTRIBUTEFUNCTIONSTEXTintinptsincontrl intout ptsoutLOW_VDIcontrl1contrl3contrl6CALL_VDI vdi_params current_handle vswr_modeByT+3T+p `*+vs_colorByT+3T+p`*+vsl_type(ByT+3T+p`*+ vsl_udstyByT+3T+pj`*+ vst_alignmentRByT+3T+p'`*+ vsf_interiorfByT+3T+p`*+ vsf_stylezByT+3T+p`*+ vsf_colorByT+3T+p`*+ vsf_perimeterByT+3T+ph`*+ vsf_updatByT+pp`*+ RASTOROPSTEXTintinptsincontrl intout ptsoutLOW_VDIcontrl1contrl3contrl6CALL_VDI vdi_params current_handle vro_cpyfm3T+3T+pm`*+ vrt_cpyfm3T+3T+py`*+vr_trnfm,ByT+ByT+pn`*+ v_get_pixel>3T+ByT+pi`*+INPUTFUNCTIONSTEXTintinptsincontrl intout ptsoutLOW_VDIcontrl1contrl3contrl6CALL_VDI vdi_params current_handlevex_timvByT+ByT+pv`*+v_show_cByT+3T+pz`*+v_hide_c&ByT+ByT+p{`*+vq_mouse8ByT+ByT+p|`*+vex_butvJByT+ByT+p}`*+vex_motv\ByT+ByT+p~`*+vex_curvnByT+ByT+p`*+vq_key_svByT+ByT+0<`*+INQUIREFUNCTIONSTEXTintinptsincontrl intout ptsoutLOW_VDIcontrl1contrl3contrl6CALL_VDI vdi_params current_handlevq_extndByT+3T+pf`*+vq_colorByT+3T+p`*+vql_attributes(ByT+ByT+p#`*+vqm_attributes:ByT+ByT+p$`*+vqf_attributesLByT+ByT+p%`*+vqt_attributes^ByT+ByT+p&`*+ vqt_extentpprCT+g2Rj3T+ByT+pt`*+ vqt_widthByT+3T+pu`*+vqt_nameByT+3T+0<`*+ vqt_fontinfoByT+ByT+0<`*+ LOWLEVELVDITEXTDATABSSCALL_VDILOW_VDI contrlcontrl1contrl3contrl6intinintoutptsinptsoutcurrent_handle vdi_params3T+T+3T+"<T+0<sNBNuT+T+T+T+T+* control file to use GEMLIB * to link file test.bin use command line of * test -wgemlib input * section text section data bss bss library gemlib f * Macro library to call AES & VDI * Copyright (c) HiSoft 1988 * 31.5.88 fixed appl_read,appl_write,graf_slidebox * 2.6.88 fixed evnt_multi * 11.9.88 v_contour_fill corrected (to v_contourfill) * AES Macros* * macro to call a given AES routine aes macro aes_number XREF CALL_AES,int_in,addr_in,int_out,addr_out,current_handle moveq #\1,d0 bsr CALL_AES endm * may need to change BSR CALL_AES to JSR for large programs appl_init macro aes 10 endm appl_read macro id,length,buff move.w \1,int_in move.w \2,int_in+2 move.l \3,addr_in aes 11 endm appl_write macro id,length,buffer move.w \1,int_in move.w \2,int_in+2 move.l \3,addr_in aes 12 endm appl_find macro name move.l \1,addr_in aes 13 endm appl_tplay macro mem,num,scale move.l \1,addr_in move.w \2,int_in move.w \3,int_in+2 aes 14 endm appl_trecord macro mem,count move.l \1,addr_in move.w \2,int_in aes 15 endm appl_exit macro aes 19 endm evnt_keybd macro aes 20 endm evnt_button macro clicks,mask,state move.w \1,int_in move.w \2,int_in+2 move.w \3,int_in+4 aes 21 endm evnt_mouse macro flags,x,y,w,h move.w \1,int_in move.w \2,int_in+2 move.w \3,int_in+4 move.w \4,int_in+6 move.w \5,int_in+8 aes 22 endm evnt_mesag macro buffer move.l \1,addr_in aes 23 endm evnt_timer macro longcount move.l \1,d0 swap d0 move.l d0,int_in aes 24 endm evnt_multi macro flags[,lots] move.w \1,int_in IFNC '\2','' move.w \2,int_in+2 ENDC IFNC '\3','' move.w \3,int_in+4 ENDC IFNC '\4','' move.w \4,int_in+6 ENDC IFNC '\5','' move.w \5,int_in+8 ENDC IFNC '\6','' move.w \6,int_in+10 ENDC IFNC '\7','' move.w \7,int_in+12 ENDC IFNC '\8','' move.w \8,int_in+14 ENDC IFNC '\9','' move.w \9,int_in+16 ENDC IFNC '\A','' move.w \A,int_in+18 ENDC IFNC '\B','' move.w \B,int_in+20 ENDC IFNC '\C','' move.w \C,int_in+22 ENDC IFNC '\D','' move.w \D,int_in+24 ENDC IFNC '\E','' move.w \E,int_in+26 ENDC IFNC '\F','' move.l \F,addr_in ENDC IFNC '\G','' move.l \G,d0 swap d0 move.l d0,int_in+28 ENDC aes 25 endm evnt_dclick macro new,getset move.w \1,int_in move.w \2,int_in+2 aes 26 endm menu_bar macro tree,show move.l \1,addr_in move.w \2,int_in aes 30 endm menu_icheck macro tree,item,check move.l \1,addr_in move.w \2,int_in move.w \3,int_in+2 aes 31 endm menu_ienable macro tree,item,enable move.l \1,addr_in move.w \2,int_in move.w \3,int_in+2 aes 32 endm menu_tnormal macro tree,title,normal move.l \1,addr_in move.w \2,int_in move.w \3,int_in+2 aes 33 endm menu_text macro tree,item,text move.l \1,addr_in move.w \2,int_in move.l \3,addr_in+4 aes 34 endm menu_register macro id,string move.w \1,int_in move.l \2,addr_in aes 35 endm objc_add macro tree,parent,child move.l \1,addr_in move.w \2,int_in move.w \3,int_in+2 aes 40 endm objc_delete macro tree,object move.l \1,addr_in move.w \2,int_in aes 41 endm objc_draw macro tree,startob,depth,x,y,w,h move.l \1,addr_in move.w \2,int_in move.w \3,int_in+2 move.w \4,int_in+4 move.w \5,int_in+6 move.w \6,int_in+8 move.w \7,int_in+10 aes 42 endm objc_find macro tree,startob,depth,x,y move.l \1,addr_in move.w \2,int_in move.w \3,int_in+2 move.w \4,int_in+4 move.w \5,int_in+6 aes 43 endm objc_offset macro tree,object move.l \1,addr_in move.w \2,int_in aes 44 endm objc_order macro tree,object,newpos move.l \1,addr_in move.w \2,int_in move.w \3,int_in+2 aes 45 endm objc_edit macro tree,object,char,idx,kind move.l \1,addr_in move.w \2,int_in move.w \3,int_in+2 move.w \4,int_in+4 move.w \5,int_in+6 aes 46 endm objc_change macro tree,object,x,y,w,h,new,redraw move.l \1,addr_in move.w \2,int_in clr.w int_in+2 move.w \3,int_in+4 move.w \4,int_in+6 move.w \5,int_in+8 move.w \6,int_in+10 move.w \7,int_in+12 move.w \8,int_in+14 aes 47 endm form_do macro tree,startob move.l \1,addr_in move.w \2,int_in aes 50 endm form_dial macro flag,x,y,w,h,x2,y2,w2,h2 move.w \1,int_in move.w \2,int_in+2 move.w \3,int_in+4 move.w \4,int_in+6 move.w \5,int_in+8 move.w \6,int_in+10 move.w \7,int_in+12 move.w \8,int_in+14 move.w \9,int_in+16 aes 51 endm form_alert macro button,string move.w \1,int_in move.l \2,addr_in aes 52 endm form_error macro errnum move.w \1,int_in aes 53 endm form_center macro tree move.l \1,addr_in aes 54 endm graf_rubberbox macro x,y,w,h move.w \1,int_in move.w \2,int_in+2 move.w \3,int_in+4 move.w \4,int_in+6 aes 70 endm graf_dragbox macro w,h,x,y,bx,bh,bw,bh move.w \1,int_in move.w \2,int_in+2 move.w \3,int_in+4 move.w \4,int_in+6 move.w \5,int_in+8 move.w \6,int_in+10 move.w \7,int_in+12 move.w \8,int_in+14 aes 71 endm graf_movebox macro w,h,x,y,dx,dy move.w \1,int_in move.w \2,int_in+2 move.w \3,int_in+4 move.w \4,int_in+6 move.w \5,int_in+8 move.w \6,int_in+10 aes 72 endm graf_growbox macro x,y,w,h,fx,fy,fw,fh move.w \1,int_in move.w \2,int_in+2 move.w \3,int_in+4 move.w \4,int_in+6 move.w \5,int_in+8 move.w \6,int_in+10 move.w \7,int_in+12 move.w \8,int_in+14 aes 73 endm graf_shrinkbox macro x,y,w,h,sx,sy,sw,sh move.w \1,int_in move.w \2,int_in+2 move.w \3,int_in+4 move.w \4,int_in+6 move.w \5,int_in+8 move.w \6,int_in+10 move.w \7,int_in+12 move.w \8,int_in+14 aes 74 endm graf_watchbox macro tree,object,instate,outstate clr.w int_in move.l \1,addr_in move.w \2,int_in+2 move.w \3,int_in+4 move.w \4,int_in+6 aes 75 endm graf_slidebox macro tree,parent,obj,vh move.l \1,addr_in move.w \2,int_in move.w \3,int_in+2 move.w \4,int_in+4 aes 76 endm graf_handle macro aes 77 endm graf_mouse macro num<,addr> move.w \1,int_in IFNC '\2','' move.l \2,addr_in ENDC aes 78 endm graf_mkstate macro aes 79 endm scrp_read macro scrap move.l \1,addr_in aes 80 endm scrp_write macro scrap move.l \1,addr_in aes 81 endm fsel_input macro path,filename move.l \1,addr_in move.l \2,addr_in+4 aes 90 endm wind_create macro kind,x,y,w,h move.w \1,int_in move.w \2,int_in+2 move.w \3,int_in+4 move.w \4,int_in+6 move.w \5,int_in+8 aes 100 endm wind_open macro handle,x,y,w,h move.w \1,int_in move.w \2,int_in+2 move.w \3,int_in+4 move.w \4,int_in+6 move.w \5,int_in+8 aes 101 endm wind_close macro handle move.w \1,int_in aes 102 endm wind_delete macro handle move.w \1,int_in aes 103 endm wind_get macro handle,field move.w \1,int_in move.w \2,int_in+2 aes 104 endm wind_set macro handle,field move.w \1,int_in move.w \2,int_in+2 aes 105 endm wind_find macro x,y move.w \1,int_in move.w \2,int_in+2 aes 106 endm wind_update macro begend move.w \1,int_in aes 107 endm wind_calc macro type,kind,inx,iny,inw,inh move.w \1,int_in move.w \2,int_in+2 move.w \3,int_in+4 move.w \4,int_in+6 move.w \5,int_in+8 move.w \6,int_in+10 aes 108 endm rsrc_load macro name move.l \1,addr_in aes 110 endm rsrc_free macro aes 111 endm rsrc_gaddr macro type,index move.w \1,int_in move.w \2,int_in+2 move.l #112<<16+2,control move.l #1<<16,control+4 move.w #1,control+8 unique! move.l #aes_params,d1 move.w #200,d0 trap #2 move.w int_out,d0 endm rsrc_saddr macro type,index,saddr move.w \1,int_in move.w \2,int_in+2 move.l \3,addr_in aes 113 endm rsrc_obfix macro tree,object move.l \1,addr_in move.w \2,int_in aes 114 endm shel_read macro command,shell move.l \1,addr_in move.l \2,addr_in+4 aes 120 endm shel_write macro doex,sgr,scr,cmd,shell move.w \1,int_in move.w \2,int_in+2 move.w \3,int_in+4 move.l \4,addr_in move.l \5,addr_in+4 aes 121 endm shel_find macro buffer move.l \1,addr_in aes 124 endm shel_envrn macro value,string move.l \1,addr_in move.l \2,addr_in+4 aes 125 endm * END OF AES * * VDI MACROS * * conditional macro definition(!) to call vdi routine IFGT __LK callvdi macro vdiname XREF \1,contrl,contrl1,contrl3 XREF intin,ptsin,intout,ptsout,vdi_params BSR \1 endm ELSEIF callvdi macro vdiname BSR \1 endm ENDC * may need to change BSR above to JSR for large progs v_opnwk macro callvdi v_opnwk endm v_clswk macro callvdi v_clswk endm v_opnvwk macro callvdi v_opnvwk endm v_clsvwk macro callvdi v_clsvwk endm v_clrwk macro callvdi v_clrwk endm v_updwk macro callvdi v_updwk endm vst_load_fonts macro callvdi vst_load_fonts endm vst_unload_fonts macro callvdi vst_unload_fonts endm vs_clip macro flag,x1,y1,x2,y2 move.w \1,intin move.w \2,ptsin move.w \3,ptsin+2 move.w \4,ptsin+4 move.w \5,ptsin+6 callvdi vs_clip endm v_pline macro count move.w \1,contrl1 callvdi v_pline endm v_pmarker macro count move.w \1,contrl1 callvdi v_pmarker endm v_gtext macro x,y,string move.w \1,ptsin move.w \2,ptsin+2 move.l \3,a0 callvdi v_gtext endm v_fillarea macro count move.w \1,contrl1 callvdi v_fillarea endm v_contourfill macro x,y,index move.w \1,ptsin move.w \2,ptsin+2 move.w \3,intin callvdi v_contourfill endm vr_recfl macro x1,y1,x2,y2 move.w \1,ptsin move.w \2,ptsin+2 move.w \3,ptsin+4 move.w \4,ptsin+6 callvdi vr_recfl endm v_bar macro x1,y1,x2,y2 move.w \1,ptsin move.w \2,ptsin+2 move.w \3,ptsin+4 move.w \4,ptsin+6 callvdi v_bar endm v_arc macro x,y,rad,start,end move.w \1,ptsin move.w \2,ptsin+2 move.w \3,ptsin+12 moev.w \4,intin move.w \5,intin+2 callvdi v_arc endm v_pieslice macro x,y,rad,start,end move.w \1,ptsin move.w \2,ptsin+2 move.w \3,ptsin+12 moev.w \4,intin move.w \5,intin+2 callvdi v_pieslice endm v_circle macro x,y,rad move.w \1,ptsin move.w \2,ptsin+2 move.w \3,ptsin+8 callvdi v_circle endm v_ellarc macro x,y,xr,yr,start,end move.w \1,ptsin move.w \2,ptsin+2 move.w \3,ptsin+4 move.w \4,ptsin+6 move.w \5,intin move.w \6,intin+2 callvdi v_ellarc endm v_ellpie macro x,y,xr,yr,start,end move.w \1,ptsin move.w \2,ptsin+2 move.w \3,ptsin+4 move.w \4,ptsin+6 move.w \5,intin move.w \6,intin+2 callvdi v_ellpie endm v_ellipse macro x,y,xr,yr move.w \1,ptsin move.w \2,ptsin+2 move.w \3,ptsin+4 move.w \4,ptsin+6 callvdi v_ellipse endm v_rbox macro x1,y1,x2,y2 move.w \1,ptsin move.w \2,ptsin+2 move.w \3,ptsin+4 move.w \4,ptsin+6 callvdi v_rbox endm v_rfbox macro x1,y1,x2,y2 move.w \1,ptsin move.w \2,ptsin+2 move.w \3,ptsin+4 move.w \4,ptsin+6 callvdi v_rfbox endm v_justified macro x,y,string,length,ws,cs move.w \1,ptsin move.w \2,ptsin+2 move.w \4,ptsin+4 move.w \5,intin move.w \6,intin+2 move.l \3,a0 callvdi v_justified endm vswr_mode macro mode move.w \1,intint callvdi vswr_mode endm vs_color macro index,read,green,blue move.w \1,intin move.w \2,intin+2 move.w \3,intin+4 move.w \4,intin+6 callvdi vs_color endm vsl_type macro style move.w \1,intin callvdi vsl_type endm vsl_udsty macro pattern move.w \1,intin callvdi vsl_udsty endm vsl_width macro width move.w \1,ptsin callvdi vsl_width endm vsl_color macro index move.w \1,intin callvdi vsl_color endm vsl_ends macro beg,end move.w \1,intin move.w \2,intin+2 callvdi vsl_ends endm vsm_type macro symbol move.w \1,intin callvdi vsm_type endm vsm_height macro height move.w \1,ptsin+2 callvdi vsm_height endm vsm_color macro index move.w \1,intin callvdi vsm_color endm vst_height macro height move.w \1,ptsin+2 callvdi vst_height endm vst_point macro point move.w \1,intin callvdi vst_point endm vst_rotation macro angle move.w \1,intin callvdi vst_rotation endm vst_font macro font move.w \1,intin callvdi vst_font endm vst_color macro index move.w \1,intin callvdi vst_color endm vst_effects macro effect move.w \1,intin callvdi vst_effects endm vst_alignment macro hor,vert move.w \1,intin move.w \2,intin+2 callvdi vst_alignment endm vsf_interior macro style move.w \1,intin callvdi vsf_interior endm vsf_style macro index move.w \1,intin callvdi vsf_style endm vsf_color macro index move.w \1,intin callvdi vsf_color endm vsf_perimeter macro vis move.w \1,intin callvdi vsf_perimeter endm vsf_updat macro callvdi vsf_updat endm vro_cpyfm macro mode,sourceMFDB,destMFDB move.w \1,intin move.l \2,contrl+14 move.l \3,contrl+18 callvdi vro_cpyfm endm vrt_cpyfm macro mode,sourceMFDB,destMFDB,index1,index2 move.w \1,intin move.l \2,contrl+14 move.l \3,contrl+18 move.w \4,intin+2 move.w \5,intin+4 callvdi vrt_cpyfm endm vr_trnfm macro source,dest move.l \1,contrl+14 move.l \2,contrl+18 callvdi vr_trnfm endm v_get_pixel macro x,y move.w \1,ptsin move.w \2,ptsin+2 callvdi v_get_pixel endm vex_timv macro newtimer move.l \1,contrl+14 callvdi vex_timv endm v_show_c macro reset move.w \1,intin callvdi v_show_c endm v_hide_c macro callvdi v_hide_c endm vq_mouse macro callvdi vq_mouse endm vex_butv macro newxbut move.l \1,contrl+14 callvdi vex_butv endm vex_motv macro newmov move.l \1,contrl+14 callvdi vex_motv endm vex_curv macro newcursor move.l \1,contrl+14 callvdi vex_curv endm vq_key_s macro callvdi vq_key_s endm vq_extnd macro flag move.w \1,intin callvdi vq_extnd vq_color macro index,flag move.w \1,intin move.w \2,intin+2 callvdi vq_color endm vql_attributes macro callvdi vql_attributes endm vqm_attributes macro callvdi vqm_attributes endm vqf_attributes macro callvdi vqf_attributes endm vqt_attributes macro callvdi vqt_attributes endm vqt_extent macro string move.l \1,a0 callvdi vqt_extent endm vqt_width macro char move.w \1,intin callvdi vqt_width endm vqt_name macro number move.w \1,intin callvdi vqt_name endm vqt_fontinfo macro callvdi vqt_fontinfo endm * END OF VDI *  * a sample GEM program supplied with DevpacST version 2 * Source code Copyright (C) 1988 HiSoft. All rights reserved. * No part of this source may be reproduced, transmitted, * transcribed, or stored in a retrieval system, or translated * in any form or by any means without the prior written * permission of HiSoft. * HiSoft makes no representations or warranties with respect * to the contents hereof and specifically disclaims any * implied warranties or merchantability or fitness for any * particular purpose. * feel free to use any or all of the object code * If you cannot assemble this exactly as supplied, tell us. * If the object doesn't run after you have made any changes, * please do not tell us, as you're on your own once you * start messing with it! * this is mainly to show the calling sequence for GEM * from assembler - the program itself doesn't do much * last changed:31.5.88 opt x+ dump long labels for debugging opt a+ automatic PC mode to save bytes include gemmacro.s * the program proper start move.l 4(a7),a3 base page move.l #mystack,a7 move.l $c(a3),d0 text len add.l $14(a3),d0 data len add.l $1c(a3),d0 BSS len add.l #$100,d0 basepage move.l d0,-(sp) move.l a3,-(sp) clr.w -(sp) move.w #$4a,-(sp) trap #1 shrink memory lea 12(sp),sp appl_init move.w d0,ap_id store the application id graf_handle move.w d0,current_handle Desktop's VDI handle * start by opening a virtual workstation lea intin,a0 moveq #10-1,d0 -1 for DBF .fill move.w #1,(a0)+ most params are 1 dbf d0,.fill move.w #2,(a0)+ use RC system v_opnvwk open it * set the mouse to an arrow graf_mouse #0 arrow please * we want to open a window, so find the usable size of the screen wind_get #0,#4 work area of Desktop * the type of the window wtype equ %0101 title, close, full, move, size * the size lies in int_out(1..4), so calculate the window size movem.w int_out+2,d0-d3 wind_calc #wtype,#1,d0,d1,d2,d3 want work area * now remember its offsets move.w int_out+2,xstart move.w int_out+4,ystart move.w int_out+6,xwidth move.w int_out+8,ywidth * and create the window movem.w int_out+2,d0-d3 wind_create #wtype,d0,d1,d2,d3 move.w d0,w_handle save the handle (error checks?) * now set its title move.l #windowname,int_in+4 wind_set w_handle,#2 title string * now actually show it by opening movem.w xstart,d0-d3 add.w #10,d0 x start add.w #10,d1 y start sub.w #20,d2 width sub.w #20,d3 height wind_open w_handle,d0,d1,d2,d3 bsr recalcwindow bsr setupmode * the main loop of the application * the only interesting events are messages waitforevent evnt_mesag #messagebuf lea messagebuf,a0 move.w (a0),d0 message type cmp.w #20,d0 beq updateit if Redraw cmp.w #22,d0 beq quit if Close button cmp.w #23,d0 beq fullit if Full button cmp.w #27,d0 beq sizeit if re-size required cmp.w #28,d0 beq moveit if window moved * nothing I'm interested in so try again bra waitforevent * move the window around the screen moveit move.w 6(a0),d0 cmp.w w_handle,d0 bne waitforevent if not my window then don't changedwindow move.w 8(a0),int_in+4 new x pos move.w 10(a0),int_in+6 new y pos move.w 12(a0),d0 cmp.w #40,d0 bcc.s .wok moveq #40,d0 can't be too narrow .wok move.w d0,int_in+8 width move.w 14(a0),d0 cmp.w #50,d0 bcc.s .hok moveq #50,d0 can't be too thin either .hok move.w d0,int_in+10 height wind_set w_handle,#5 movem.w xwidth,d4-d5 old size bsr recalcwindow cmp.w xwidth,d4 bcs waitforevent cmp.w ywidth,d5 bcs waitforevent bne.s forceupdate cmp.w xwidth,d4 beq waitforevent not if exactly the same * if the new size is smaller in both dimensions than the old size * then an update event will not be posted, so the re-draw will * have to be done manually forceupdate bsr drawwindow draw it bra waitforevent and carry on * re-size the window sizeit move.w 6(a0),d0 cmp.w w_handle,d0 bne waitforevent if not my window bra changedwindow * there's an update updateit move.w 6(a0),d0 cmp.w w_handle,d0 bne waitforevent if not my window * there are two ways of doing updates: * (a) to support overlapping windows * this takes a lot of code, and is very slow and tricky * (b) to ignore the possibility of overlapping windows * this takes little code and is easy * Here method (b) is used! (method (a) is needed if you have a Desk * menu or multi-windows in your program - this doesn't have either * -that's my excuse and I'm sticking to it!) * start by clipping the rectangle movem.w 8(a0),d0-d3 the rectangle add.w d0,d2 add.w d1,d3 vs_clip #1,d0,d1,d2,d3 clipping on bsr drawwindow draw the window bra waitforevent * the full button has been clicked * this puts up an alert box fullit form_alert #1,#myalert bra waitforevent * to go away various things have to be tidied up * starting with closing the window quit wind_close w_handle close it wind_delete w_handle and delete it * then closing the virtual workstation v_clsvwk close it appl_exit tell GEM I've finished * now quit to the desktop clr.w -(a7) status code move.w #$4c,-(a7) P_TERM trap #1 and go away * calculate the work area of the window recalcwindow wind_get w_handle,#4 get work area movem.w int_out+2,d0-d3 movem.w d0-d3,xstart rts * this draws the picture in the window * which is an oval on top of a rectangle * before drawing anywhere you have to hide the mouse drawwindow v_hide_c hide the mouse vsf_interior #2 pattern movem.w xstart,d0-d3 AES rectangle add.w d0,d2 subq.w #1,d2 add.w d1,d3 subq.w #1,d3 convert to VDI vr_recfl d0,d1,d2,d3 filled rectangle * the oval has to be drawn in the user defined pattern vsf_interior #4 movem.w xstart,d0-d3 asr.w #1,d2 half width asr.w #1,d3 half height add.w d2,d0 x centre add.w d3,d1 y centre v_ellipse d0,d1,d2,d3 * we have finished drawing so get the mouse back v_show_c #0 show the mouse rts * this prepares the drawing mode etc setupmode move.l #intin,a0 move.w #%01001010,(a0)+ move.w #%01001010,(a0)+ move.w #%01010,(a0)+ move.w #%01001010,(a0)+ move.w #%01001010,(a0)+ move.w #%0,(a0)+ move.w #%0110010011011100,(a0)+ move.w #%1000101010001000,(a0)+ move.w #%1100101011001000,(a0)+ move.w #%0010101010001000,(a0)+ move.w #%1100010010001000,(a0)+ REPT 16-11 clr.w (a0)+ ENDR move.w #16,contrl3 single plane vsf_updat set user defined fill style vsf_color #1 rts SECTION DATA * all C strings must end in a null windowname dc.b ' An Example GEM Program by HiSoft ',0 myalert dc.b "[1][This is written in 68000|assembler using HiSoft's|" dc.b 'DevpacST Version 2][ OK ]',0 * global constants SECTION BSS * these have to remain together xstart ds.w 1 ystart ds.w 1 xwidth ds.w 1 ywidth ds.w 1 w_handle ds.w 1 ws_handle ds.w 1 ap_id ds.w 1 messagebuf ds.b 16 ds.l 100 stack space mystack ds.w 1 (stacks go backwards) * if not linking then include the run-times IFEQ __LK include aeslib.s include vdilib.s ENDC 7o``J2.00`S*O*m,mO - ЭЭ// ??<JNA-MfJ-Vja"L` CzA"A"A"A"AB"Nu=n=@Az"psNBNuCDA"A\B BBBB"A"A"A"AB"Nu=@@ Ap=@0=@N-@-@=@@s-@ =@l=@-@a;ba0LHz>-OlCvAp2QQqPrBna1(n-La0a4a*z nZg nZg nZga-`a4< g < g<g<g<g%*<g *<d< dز<g<gҲ<g<g><g8:<g<g<g<g<<gd<g<g²<g<gH<g<g<gB<g<gJ<g``JFg SFa/`J.tgJGg SGa h`Jng@Sna6a7`J.tg*?a hL@k  fn$g"a a4a5 H:>.$a-n$gREagLa,` a4`|a,a ?aL@kr&IR  fJgaa4`a-I .g".gd Psa3`.sQsJf`aj-I` .gJgdNuC Xa1l` What blocks!aa,/ &n".a6fZaDB&.ցBQsa+2"_egd"K`(Ia?a <a+`alBnpa:Pf&n".g.q?pa.0@qBnp`aaX&I".a f nSe`a*`J gah&I". a f n `a".&na5`aڳedC`Nu Invalid block .g a/ (na&L(naa4(_Nu/ (na&L(n`0.\|f.0.^nf=@=| =@piaa.t=|d`|fF2.^|g(|4g|8gԲ|g| fa`HzJ.gza`|fj0.`2.bn&dpn4n"dbn$bZn<Gg dDASASGaQ`SAafRGQa*$`(|g|fT0.nfLPa=n=|Hpiaaa*a5Ba)a=|d(n`Ȱ|f@J.f LP`p2.a7LHQp2.a7L`~|f20.nfp0.fpSx8kVfRDa`J|gT|f0.nfp0.fpS@ሀ|e0<@ng=@<gFHa.La(` tn"2.YnfBeBdr|0``0ee`/ CnPqPrxRD ) fIn`a,La" nZgr< g <gz<g4<dL< eD|d??ag jE/ a("_82A0A`QRDRFa'< f ?aa'8?a/8`jJFgL?ak,8SA@ S@AXQaSD?a/8`0S8|f|a'x`&WgtRB  f&W L(Wa.L0R@  f|dS2SAa Sn(Wa"_JGfSada/8Sn-L`TSGa'"SaH`?ak8  g`:`8`?"otRB  f&o2a(oa.2(_<f a#`ar&IJ.og Ld< g< fR`af Sg SA LQ/ Rna.|n$gRGa-a<"_aa.b`Rn/ (na -L(_a-`Sg $ fRNu d  fNu(@JNuCxzREfNu< g RE< fn 0Ee:Ee`R<Nu8:DpNuH xzf <a%L0Nu< g< fn 0Ec:`RE`.\AJAe<dAA00g Hp _N`C a*v`Command not recognised X 6Jf$ p TRZ~N Rx< g0e< d AAhpNuxag2Nu`F.oNuafJ.jgQj`a3$fa3fzaa% .ЁeBna)Ra%`'/QqPra/(n-LBnBna*`"g&nSaf'Ra%QqBnҮ-A A aaa#TBn|`* nt ` pgRggf`|?` Nua:a2\faa$&n".Rpa&NuHEApaLNuHACB.pJgVg<\fE`B f B.p\`Ap"J/ g <.f$H`"_*. fB`fLNur2.lg8&Latf0CnSA LQRnJGfa*`SGa#a*RGa#a+`8HAlp< gR@<f 0LNu what errors!no more errorsAJXgJXkY6<tC` BnNuCAJPg4nRB6<0gTHBcCd6"H`|gb/ x8aa&>a'a/"_AJ.EL2(0!j @2(E@S@gJfS@fga-`ga-`a/z=|dNuC8`'Error: Warning: af>a,dQqPra"BnBn(n-La'BnpBnBna"=|a!NuNuCDa2f,JDg((nvCgRCaZgSCJkC a&`$Nu End of fileGoto:x|`x|`e0.R@G4@e 0Gn$dB`!,SC=C~-La' `!$L(nvgRCa`(J`ag6.0g~a8nRDA2UC  gRNvdL< fRDNvfJCk H 4Nv@NvVLfS(IaN6/ a4"_`C`%<ae <{d Nu Not found6.0ga48nRDA2UCNv!cNv< fSDfJCkH R4Nv@NvVLf`bA04SBe0 Nv@1 NvVNuafafaaa'`NuANEn2&ISAe Q2.N4.0aXPqPrCNur2.0a"KNuJn0gFaTxSRd< fa&f`a\faRD`JDgH a%$La,a(NuBnpa-fFa.2f@ .Ёe`f&La2f"b/a ,$agҌ&A"aaVPqa$BnpNu .Ёe / C a#"_pNuOut of memory!aPqPr . nH@@RCRa LӮpNu"@@D@@ N                QNuAg*e?A2a>2`?BaFgTONu2SAe AnQNuAaXJgdӐNuPqPrDaD .g KH@@CRaL ne-H Nu"@@D@@ NQNu//p`//pHA`//p/< o^0a)"Q" Nu"LAxz|er < fPRENu< fn 0EcS@r PREQ`PRE`H2ta4r a(LNuHr a(2ta`H/r a(|"taB`&<'pfJgJk f<`P0a(FHA QNuHA>(prRdؘJf Jkfr`P0a(Q"L&<p`;B@' Line: Col: Mem: B.pACa*XfApa/?<ANA\J@ga8`/AAfxdJ.BjA4aSDfHA?`A-aSDf6A? C i/ g<%fgSESfS` "_Sp _NuAC.gC< g`NuAn-Hfp|a>gBgHnn?<=NAP6kpNupNu[1][Could not find MonST2][ OK ]MONST2.PRGCafHnnHx??<?NAO f .pag|-@ //.p??<?NAO pfT??<>NAX n hAPf:PBgHzR?<=NAP&k$ n Hh/<d??<?NAO ??<>NAXpNu/. ?<INA\apNuC r` FMONST2.INFafgJ g nf!|AMPM!@` nf!|AMPCnBQ/ . g((@J.fa`a'Lafa?N0ja((_ nfB`'>a'$PPQtaHaRB B J.gaJg0a'Cjra -|3A2-Hp an=|2p aba&pNuF.=|4J.V@=@A2-Hp`4[1][No program in memory][ Cancel ]XaHg8J.fa`a&daf nfBH(n CnBQa$LN`Cra ` . g @JPNuB/ B/<KNAOJk&@"<ҬҬҬ ғdA И И kC ,ЬSe0Qd , Ser Qd k$r gհg<f`Ё` kC*!IB/ B/<KNAO/+, Ka _aNuBgNAXA-xda |ga:/=g0C8a8|dxz:r aLf pa`-@ BPE ix AJfABfD-QTp0. < e 0H@0:-fL:-f2:-fC:.=gD:.IgX:.mgB`:.gOA9f| -:/ygM:.fBP:/f2A:.fH`/<!NNXLVgV: *-fUA i B"nfC"AMP"$n "E$"" ""HA=fNJNONAME.CONPRNAUX/ (Haf a?N0(_Hz |gJ@kHaHaF`Xa xf nfBhAag"A*BB.pA=Ma$f\ApaaCpPRGfBQa6` afa4f$nf/*,/ /Bg?<KNAO?N0j |ga`bHGLtHBnpda0=@ k`a=n pea=|pNaBnBn=|pa=|pkaBnpkararva`?/<NM\NupLNua=|pka=|pkaBnBn=|pa@a&=n pfapga~=|pNara!`-nBnp`ZHpGaBn=|=|=n0<aLt6UCrH=|Bnpraa=n=|pha-n-npfaBnpkapaLpNua-|BBnpiap a=@a>=|pka=n-n-npeaa a -n=|p`l=|3p=@=@=@=@=@BnA~-Hpa>gNu?<NNTr.BRfr?/./?<NNO Nu . g @aB  . g @aB Nu/ parA"_eT nf/(,/ B?<?<KNAOJk6 @!LC!IB/B?<?<K(HNAO(/,, Laz _av HJNuEoCtJfAf<.`NONAMEg <.gRB`AnNuag/pae  @Nu _apNu/?<HNA\ @JNu/?<INA\NupMapAr 0Q0Bn=| =npdaކ0.f x=@0.R@=@H=@0.R@=@?<NNTS@@BBn=|phaގLHtA=C|Nuz G. KBn-H/pra`Rn _( AgQNu !#$%P&&'***aݸaap a$=@aaZ=|pka aaa*aJg"a`aBgHn ?<NAX0k |gp` QAC -Ifp|aJgBgHn ?<=NAP6kHnnHx??<?NAO ftAn :zfh=X C@"XC>XoXC*"CNa(Ca"CaC aC >aXXXtX`pg  Nu??<>NAXNuGENST2.INFA"z8"QBxd/ aaa"_SDfxg 0AA`NuAC nNuvgH1| 3| AxdaC0|fBQNu0F0gn|g =n@`^2.0HJgA4tXWf2( `B|G7gJ.g4<ge.<pd(|jg|lg;g`r`r` <g<g< d <,zga8a=|ZLNu<;e&<ud <bg;@AZ0`|H\`:<e<3d@ n<0<Eg|<Sf v.f.@\=|ZaLNuK4M6H8P2)(_'gb0.~| gB|g0|g|g|g|g|g|g|g=|ZLNu=|*~`g/.azLf2H@n*exn.dpn,ehn0d`=|Z=|\=@`=Ab`J.pgj?Ca"Qp2NuH?.da=_dLQpNuHpp 2.a0.LnNu nZgNuH0.~|gT|*f,A:a,jA;a$k=@=|A~-H0(p aϜLNu-Hp `όSAVED! SAVED 0.nf=|pkadH?.d=|dp 2.a0.ngH=|=|=nPLSBSCAajf@AH0<aθ<.ap `Bnpkaa dafa|a=_dLa`40.nf0.; fp`|Q\`L=n=|-np!aΆaf6.A00gD< e@\``t CLSWIQFNPREGTBAXDMKJHC6<HC-C\=|Z`=|Z=n^=@\`lAMP!Nup nR@  feng=@PNu=|Bn=|=|B.0.$R@|e0<ng=@=n=|=@pia͆0.R@ng=@=n=| =@piaXNu4SBa QNuHa <LNu?<?<NMXJ@g /<NMXNu0."Q@4.2Be6JBg|e,@dj0`0nn&=@0n(=@ Nunneng&n"dabL4TB0.aXaza 2n`n@@d0.Bg&n"d4a6L0U@4. aa4a 2n`TH=|=|=nP0<aNuHaLNu|>`HCJfC@=n=|-IpiaLNua J*K/ /?.r?<?NAO M"HrJg0kJ 0f v x ff(gRSf/?.r?<>NAXa Pr"pNu ar`/Sp$< K  fRQd(Юe"Nu"X/AS&(K < f HSHQꒂd( K ЄUav L"/S$<< gQd k`Ha :F:gjApEaCaf8??<>NAXAa Af I|.BAKBHn?<ANA\ApaHn/Bg?<VNAO JApadBg/?<NAXNuJ@fp/D@=@p5aɒ Nu///?.r?<@NAO "JkfpNupNua =n& =|dC0aBn&Bn(B*P.a Ha j?.d=|d8RDnn(g Qr=D(ax8RDn&gr=D&af(.*g:rn&=A -D*"taV *dr ax '*dr ah0.n.g=@.a=_daLNun&=A `ތR@|e0<A000pi`brC`f[1][There is not enough memory|in the edit buffer to load|that file][Cancel]a`zHp ?.d/ aa*"_aa8Pp=_dLNu0. n&=@ apa=n 0..n=@ 0.T@=@ n=@=|Bnpra:=|da`PpJ.BjpT.p`NuHa(=|=|=|=|paFaLNu?<?<NAXJfNua?annn aa2`"0.8R@=@ n=@-|praNu< gT0.dI=|=|A=ABn<f 0.l`=l=l pa:0.lLNu`a`0.n =n&NuAa< fr aLNu??=|Bn0.=@n=@ 0. n:=@ n=@Sn prapa`4Bn=|=@p aNuBn`HBnBnp{afLNu=|HBn=|pzaF`Hp=@pNaLNuHp` =@=AphahNuCLraj=|dahBpea=npfa(XK XPXT XX( Xe Xo  X( X{ X X X (X{X XX T Vr (X (X{X X X Yh (Yq Yv  &X;XY#W&  PP & R R R  R  R  /   R R RRRRR R RRSSS+SS<SMSS^ S Sl ( ' !S}"S#S$S%S&S'SS/).*S+S,T-T%.S(T808 1TK2T^3Tq4T5T6T7T8T/ T Desk File Search Options Program About GenST2...- Clear C Load... L- Save S Save As... S Print Block W Insert file I Delete file Quit Q Find F- Find Next N Find Previous P Replace R Replace All Goto line... G- Goto Top T Goto Bottom B Preferences...^T Assemble A Run X Debug D MonST M Run with GEM K- Jump to error J Run Other... OUUU  10Max:___k9U,U/U?12Tab setting: __9U^UeUy10Text buffer: _9UUU%OHNJOHNJOHNJOHNJOHNJOHNJOHNFind :_XUVV:%ARYMARYMARYMARYJOHNJOHNJOHNReplace:_XVXV^Vo2345Goto line: _9VVVOHNJOHNJOHNJOHNJOHN123456789_XVWW*Written by Andy Pennell in 100% assemblerW1WlW::!8_9XWWX%%!#_$XAssembleCancel Assembly OptionsYesNoOKProgram typeExecGSTDRISymbols caseDependentIndependentNoneDebug infoNormalExtended Output toMemoryDisk:stuffListDiskScreenPrinter Editor PreferencesNumeric padNumbersCursorBackupsAuto indentSaveCursorFlashStillLoad MonSTNextPreviousUPPER & lower caseSameDifferentAssemblyFastSlowEnd of lineStopWrapCommand line: JOHNJOHN.PRG HiSoft GenST Editor/Assembler Cursor Blocks^R Page Up F1 Block Start^C Page Down F2 Block End^A Word Left F3 Block Save^F Word Right F4 Block Copy^Y Delete Line F4 Block Remember F5 Block PasteF5 Block DeleteCopyright HiSoft 1988HiSoft, The Old School, Greenfield Bedford, MK45 5DE, EnglandTOS Free memory: 9000Load a fileSave a fileInsert a fileSave a blockRun Other ProgramWarning - DELETE a file`UpCKGenST (C) HiSoft 1985,88ajaRDpaOAhjCp?"QA0<\BXQQQaQCB-I\CB-ITa/a5BB.FBnQBn|ajfdQ-n .g2 @aLg*p aO, np(B0AaS2aO$|`"a8A&-HpaNn+P+Qa"f aa`J. flaQ+QpaNn+P+QamPaJ.+PgQPJg naKhfIzaf aaD`aZaAaAaW4J.gaOTQ+QaQDaW:aLaNlr. aNp . fRaN@r2.aNpaN0".aNp aN"aTpJ.gpaNpaN r2.gaNp aMp2.aNxpaMal&.gaoBaP>`mp=@=@-n-@-@-@D-@L-@=@=@-@@@@ P@ -@=@=@-@-@p-@PP=|aLfQQQQQQ|.| a?TABP`kzJnfNup0`Haa@ a@*aK:a aT BNutJ.gJnW&n\&SCda,AhaAtaAa .pѮ|Nu(gRRNuJg/ &Sa&_ + f$kaJg / &ka&_NuJg/ $Ra$_BJg / $ja$_NuJf J.f>JfT nڱlNupNuJ.g 0.nb"n nf i`$n"j jf"i i`"n$i jd  gS`pD`FJinclude_longmacjNupN`FJ.fRnJ.f-Jf1"J.fr 4<RnJf((nڹl L-Lf  gS-HpNupNu"n i(hd  fR`pt -L$LgSfb(<*| !JpNub  gS!JpNu"(EfP$(g&H @S"LE!JQL"(aH`E!J"(Ef aHgJ`E=h Bh $)g / al("_B-i`PJ.g<+g<-g r PNur NuS.`R.ZNuPr J.gQPNuJ.f:J.fJ.g `,J.gJ.fJ.gJ.fJ.fQB.QNuQaN*`Nu-O*n-MBB.< g< g8< g0PAB(a9f<<:f<:fP< g< g< g:HAaJ0g<=g7<;g<*g`DEC&#< #< H6~t< g,H6~<Ae<[dQ`<.g < g< fa7L(JAa8fC$n\( H a:zL8g)`(D,<:fCCJfCBa IB(`hJ.f "hNu(E"\HSfNuB`a9fC@ fC2. ) fC&fC&).gA-HDNu(.AJf,Nu.fPNuAJg(.g aPzA(.J.fa9hgB. (.g HzEL` EDJgB"j n8d HaJ>L$n*""Jp%@%@%DC 5@@ n6%@( PSf Rn8Ѯ*Nun8e HaIL /a*n8 n8Ѯ*NuABPABPa:xHajLJnfJnfNup`B(+-*/()~= & ! ^$%@'"(>bfjVZ^A0TX1za<f<e<d<fA0PX!!`Ⱦ<g<eξ<dƺ<fR<gF<gD<g <f.`6$.v. <gR. J.fJ.gp.6Ad԰`~`~EA0<02`2plTX1`az`z`,a A0PX!!JCjp)a@޾<gp`@zREa`<g(H,EA0Jpga`UnAQP0$0&0Nu`ZAQPe0$0&0?CUQ221<dQ`e0,0 0BCCXA21N20 PX!!NuԀF<g <g<NuJ. fJ.gpa@ PvNup`0F@JFk<fU. g<ga<@Nua8`aarvNuCk<fNua/aLfNuJ.f`Ā`؄`Ա```ȴWHH¼fdCkvvNu]`洀^`F|fDNuD`,JnDJnD&HCH@JCgH@`J@gHCH@ԀJjDNuJgJ,//JjDJjD|.pއUFDFЀeRQ,jD,jDBNup;Nu LNu~< g< g< g<,gH`/ ~<Ae<[e8<ae<{e,Ahg fJk~`<<gt<:d<0d,Aa3^g~`~ <|__f6H@|RSg(|G2g|LKgf tJ.g4.RB`$<*pNu$.`NutJ.g"n4)`~<#Wf J.V (f atfv`LJ.fa2gtPvJ(g2`0$)v) ) f&<g<g<<fvHC6)HC,`PHC6)a4hHC,J.gC`J.fJ)g.6)gP`a1V,<#fJf) g ) g$)v) J.f<f^p)Ad԰`) fh<f:.6)fR. `CPa3`"HAE Q @SSf~`pvPa:`p`aJ.gJCkNuPp`:a<gJ. g:Nu WT` WT:0?gax0`a|0 nP<0e*<:e<<gf(gNugNuJj Nu gNup`:TE4ZBg _Np$`:8afJfNuaf Jfpa:$Nu LH6~<Ag(<Dg"<RgH<SfxH6~<Pfhpt`<7bZ0eT<AWrCXJ1g<(HNu<9b.<0e(<1f<5d <0e R0<T`AH(,a.:f:$nTHPa/L8 f( ) f ) ) J.g) g L$HNuL,pNuJ.gP`QafzJg .g8Nu$L<(g<-g0<#gJH6~<CgB<Sg(<UfXH6~<SfJH6~<Pfz<.g(Sg>Sg J.gJ.gJCkE<faE*NuJ.gJ.gJCkEa.4:NuJ.gJ.gJCk a. B:Nu`E/afa<)fL. g$Jf Jfz$a;Vfp `8/z($J.gJCkE:J.f-Nu<,f6z0af6HC$<.g<\fH6~<Wg <Lf6f<)fHCJ.gJCkDJ.f-PNuH6~<Pf6$H6~<Cf6$<)f>z:J.g0J.gJCkD8<f :`-J. fp a5:Nu<,f5z;/af5<.g<\fH6~<Wg <Lf5$J.g6J.gJCk J. f<f Ra,p` aC`p a5l²<)fNurCTJ1gNua`aa@xg < fEE<,f4?a@x_fE]E:NuTaƲ<,f4?a8 nx<gL<a]E:Nua0x<fENua<,f1*a gkl<,f'a fx n1DNuxagHAH@af4$nTHPaDL8 f" ) f()J.g) gPpNupLNu<-gIJ</gpNuaVgp7`'h?aFf6eRRf`a<,f'a n.g<g <f&Nu.ǰ<g&а<f@afJJfBZB<,f&t<(gaaʲ<(fX6a쐌<)fH::Nut<(gaa<(f*6ab<)f<,f&^a@BZB`p.`&j<#f&HaJ.g4apJ.gJCkBHHgea&` .gpa&<,f%appNu/<,f%app$`4LaRa*=Nu< g< f`t< g<*g <;ga/a$C-I2#BB)-BA&-H| ,Nua/a4&Lf-BA3-H,PNupC`%X< gʲ< g< gH6~Ae<dHA0;gN<,gNup8`%Nn"|p>`$A<+g<-fJNua&f|e|dRB=BaVNuaW@NuaV NuaWNuaWNuaWNuaWNuaWNuaWNut_agt.BNu nfjJ.fJ<+g(<-g1eH|bP=@`Q`PBn"n2 n.Ba,NuC <-g4<+g2H6~<Wg,1e<dagNuNuQ`PNuaWNu<0e.<9b(t0<0e<:d 0AA`pNuAFtJgr Nu< g< g< gR<Rfr BNuaaxdNuJ.gaGr PNuat ed =B-`PNupI`"a$afxt4$nTAH J.faTL8g"xva,Nuaf>?a 2<,gNu(.gJ.galf) f  g+lNup+`aAaf(.g0v .fv??a Lg "nPxaa2<,gNup*`) f2) f*) f").g f n.Rh3hNu0<*`lp.nj;Nu@@p5`R<"g<'f$L< gfg( SD<,f<'g<"fSDe gNup AfRpNuaW`aV`aga4fJ.g) g@<@NuAafaW`pAafaV`^aDJ.gJCk <fJfNup<`~a|=-BNup1`j0<2`Pa^`a\`a]`a_` aW`aVRnJgr Nua>.ajfapghJgELSEf\IFfTng`LENDCgENDMf"J.g6 nhc,`0.Sn@f`HA|IFfHAA`0g@fRna|`< g< g.< g(<*g<;gx< gp< g < g<:f< gV< g< g<*gD<;g>A&BBp`< g"< g< g<.gH6~QpNuLpNuJngSnr Nup/``"<=A>a#2-H:Nup4`J.fJfa $n\H aRVL0J.fJgjvBaHi n: n>da"_"BC !I!H -I:n>&Ha:afa0ag첼ENDMfJf k !n:r .=gSn>R:Nu n>d4 k !n:a("k #H'H C BBp Ѯ:n> n:"Lr f-H:$ n>NuJf ) f f|aՈafRagENDMfJfr Nu"<@=Aa!-HNupL`x nDeH@@a(LJ.g ) g4pW< g< g< g <.fp nQ -H1n "i!I!Q1nCBQAfS< g< g < g`B< g|<*gv<;gp< g< f`RQ<,gF< g@<f<>f"`g< g< g < g<,fB<,f < f`$ R/.-@nPPRnNuHaLfΰ<&fHaapLf<&gpDa< g< g`60.nbat L$nCt`jJf$n"j jf "i%I Qp (Ht\gf`Jg 0.nc%H-LpNuC$SBg"0 LS@f A< g~<@g<fJ.fPSn$n n-J0*nn=@ -@fQr Nup3`p9`Jf6a-Bn0ataf>agJf겼REPTg ENDRfr NupE` n: n>dav-H?.>BC !I!H -I:n>&HaBaςf-Kaa~gⲼENDRfJfaP k !n:.=gSn>R:J.g=nSe8-KC-Ia frHa Lg ENDRfJgPa`04.>Jgp@n>Hծ:BA#B-Hr NupF`"n nf "i-I Q(Hp f-H-LpNu"<e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶eCNuAV2< Ct2Q8<Ct&a.Jq0j30B QNup`VNEEQCNCDNDGTGLLTLELEA AƀRTS Nu^BRA `>BSR a4TST JbJMP N脀JSR NzEQU \ADDQP&SUBQQADD SUB CMP ᮀAND rOR hEOR ^CLR BNOT FDBF QDBRAQ؀TRAPN@BEQ g߀BNE fvBCC dlBCS ebBPL jXBMI kNBHI bDBLS c:DC xEXG 匀EXT H؀NEG DJADDISUBI؀CMPI ΀ADDAޖSUBAތCMPAނANDIORI EORI LINKNPPUNLKNX6BTST߸BCLRBSETBCHG@ASL ASR LSL zLSR pROXLfROXR\ROL RROR HSWAPH@DBEQW\DBNEVRDBCCTHDBCSU>DBPLZ4DBMI[*DBHIR DBLSSADDX~SUBXtNEGX@BVC hݪBVS iݠBGE lݖBLT m݌BGT n݂BLE oxDBVCXಀDBVSY਀DBGE\DBLT]DBGT^DBLE_DBT PvSTOPNrST PZSF QPSNE VFSEQ W<SCC T2SCS U(SPL ZSMI [SVC X SVS YSGE \SLT ]SGT ^SLE _؀SHI R΀SLS SĀCHK A0MULU&MULSDIVUDIVSABCDSBCDNBCDHNNOP NqDRTE Ns:CMPMިRTR Nw&PEA H@΀TAS JENDMIFEQIFNEENDCIFD IFND DS RS LIST@END @EQUR|SET OPT "@EVENȀIFGTIFGEIFLTIFLEIFC @IFNC>SPC @PLEN@LLEN"@TTL P@FAIL@CNOPݺXDEF@XREF@PAGE@ORG JIDNT2DCB LREG RORGbREPTԀENDRBHS dڊBLO eڀDBHSTݺDBLOUݰSHS T잀SLO U씀IIF zTEXTDATABSS AMP!亀MOVEQ p笀MOVEM H圀MACRO MOVEA @栀MOVEP ȀINCLUDE @RESET NpڀTRAPV Nv̀NOLIST P@MEXIT MODULE SECTION LISTCHARR@RSRESET @RSSET ~@INCBIN ILLEGAL JNELSEIF "@OFFSET >OUTPUT @COMMENT @SUBTTL ~@FORMAT @INCDIR @NuA`4<e&.AMOVEg(aNA000kAHfXJ.g J.ga,p<.fNH6~p<Bg.p<Wg&p<Lgp<Sg< g< f f pS< g< f < g< g< g@<6HzZHp04?gaȼ` gaȖ2Nu:r NuLAt vg Q`fX`( nBNв< g< g< g<*g <;gpa JfJg".BӮӮBNu" -Ag$.ӮӮJ.gJ.fNup,` :a6f"P(t.R`gSf("LpNu"L((H,pNuAE)J2g(jhH6~<Wg<Lf,J2or.`Fr.`H<:dBC$L<$g <:d(<0d(J @E SSfpNuBp(NuJ.f.AC rJ2o ne0.S@pNuC tH6~rJ2nRjtJ2oBpNup<"g <'gtS< g<g8< g< fJg(<,f g-L`fH6~Rjp~CR Nu?RA?rl??????H .Dg $@a&g-IH$nLag-IP$nTag-IXpL8Nu g>"@(*P)ebG(M ebSfNu g"@` )g"@`XIpNu"JpNu gDg>`* H@J@g4R@g0`<gH`<g0HfNup`pJ. gNu<gNu LI/a"Ivah(_NuANON_MODULE TEXT BDAv a~$n\HaVL8J.fJgxv aŒ-I.C-ILNuJfa`p `HC BDABa$$n.EHaVL8J.f2Jgxa6 n.S( ( a8@-I2-ii6`Jg`"n2#n`fJ.f&NuJ.g nfD)")<g<gp apNuBSSfpNu)pTEXTg DATAfp NuA*BP-H*Q Nu/ n*0++0-H*BP _Nu/) n*0++P`/ n*1|-- _Nuline malformedout of memoryundefined symboladditional symbol on pass 2symbol defined twicephasing errorlocal not allowedINTERNAL:invalid hashinginstruction not recognisedinvalid sizeduplicate MODULE nameforward referenceinvalid section name, TEXT assumedgarbage following instructionaddressing mode not recognisedaddress register expectedaddressing mode not allowedexpression mismatchmissing close bracketimported label not allowedillegal type combinationinvalid numbernumber too largemisuse of labelinclude file read errorfile not foundrepeated include filedata too largerelative not allowedcomma expected.W or .L expected as index sizeabsolute not allowedwrong processorodd addressimmediate data expecteddata register expectedBSS or OFFSET section cannot contain dataduring writing binary filecannot create binary filesymbol expectedXREFs not allowed within bracketscannot import symbolcannot export symbolnot yet implementedregister expectedinvalid MOVEP addressing modespurious ENDCmissing ENDCinvalid IF expression, ignoredsource expired prematurelyspurious ENDM or MEXITcannot nest MACRO definitions or define in REPTsmissing quoteuser errorinvalid register listinvalid optionfatally bad conditionalrelocation not alloweddivision by zeroabsolute expression MUST evaluateillegal BSR.Soption must be at startINTERNAL:invalid optimisationexecutable code onlyprogram buffer fulllinker format restrictionORG not allowedINTERNAL:invalid multi-line macro callcannot nest repeat loopsspurious ENDRinvalid numeric expansionduring listing outputinvalid printer parameterinvalid FORMAT parameterINTERNAL:bad sectionINTERNAL:macro memoryinvalid INCDIRassembly interruptedp'`PpA`La'fNua8p&`p `:p `6p `2p `.p`*p%`&p`p`p`p#`Q+Q| a `Nu.nJ.fP .d|Hp?paAR. t0J@g"Jf"n@2JYgSAf` 3n2YBQS@ap ar2.a&Jg p a"nt)UCaQaPLNuJ.gJ.g .d|Hp?paBA 4<`\short branch converted to NOPsign extended operandrelative cannot be relocatedinvalid LINK displacement68010 instruction, converted to MOVE SRsize should be .Wdirective ignoredbranch made shortoffset removedJ.g?@;HnRn0J.fNu$n\HaVL8J.fJf/ iJh _f.`txv <vЀajB/ a$ "_fV$<a%X#D#n-I/ &a"W#HC!C!I 1n Bn"_P``Jf#n-IJ)g&/ a#"_f#D i1n BnE `$ i1n BnE pNu  J` "(A$)H@a#Lf,Eg * f * g i!JR)pNupNupNupNuv E`$(gBHa#DLNu .\g @ g @Jg/ Pa _Jg( fNJg / ha _NuJg""iJg/ "Qa"_NJg / "ia"_Nu/ &JEa"nTJg"Qa&_Nu) gNNuJg""iJg/ "Qa"_aJg / "ia"_Nu) gNNuJ.f"<a -H+D-H+HBBPNu n+H0(A-H+L n+D-H+HpJhgBh (-@+@Nu ЮJ.fD/ n+HX0|g!!P@1pNuH``"<a"n+H"-H+HBBXpL`̰+@f2 n+HX0g ?p?a60P@|g1@+Lg-P+@pNu n+HJg P-H+H\Hp`p-@+@pNuABJ@gJfS@`r `ar HaLNu?HAa2?Ia2?Ia2A;`0123456789ABCDEFvt/AfJgP;N"QA;NEA2tpve RdҘ`Jj P0ANAQ0N;B@'d pa$nTI$abv E"I`F + f+`a`H/paJ.g WAaSnaa _EaLNu gp gl$@A` ~NuJ.gJ.gDJng V` hJ.g0Jng ` N . gJ.gJ.gtJng ` &p%`0 . gJ.gJng `NuJ.gJng 0` . gJ.gJng $`rOa`JfjJfH`AFafP-BLNu$.rBӮӮJ.gJ.g abga4*n-MNuA&-H". . gJ.gJng`BNuJ.gJng`J.gJ.gJng `` Nu$.gaBNu/ <32dЁr N/"a"f$NuJng >` Jng 8` j<gPJng ` Jng ` 8Jng ` ,Jng ` Jng ` J.gp:`H`P ЮHzJ.gJng` LNup.6"J.gJng<` .NuJfj"<Үh$<a-A.&-A.*aL-H."-H..-H"<Үt$<ax-A.:-A.>a -H.6-H.Bp-@.Jp-@.2Юh-@.FNurҮ-A."-A..-A$.h-A.&-A.*҂-nt.:-nt.>-A.6-A.BrҮhҮtd"nBY"h"t"BBNu .6Nu.6g<< f& Ё.>o4H`ahC.6"..FaLЁ.Jo-@.JӮ.F`> Ё.*n ӮSfNuH`a(C.""..2aLЁ.Jo-@.JӮ.2gR`np.6g < g2` .*dӮNuJfaC.""..2a4Ӯ.*Nu .>dӮNuJfaC.6"..FaӮ.>Nu g%a n-HNuJf/ .Jo/.JӮ.Ja""W#A$a"_ Q" -Hө/)/a" .Jo-@.JNuAdp.6$.Δ.Rհ! NuJ.g.6g< gNu-A..Nu-A.BNu-n.RNuJ.g.6g< g Nu-n..Nu-n.BNuJf,aC.""..2*n..a&C.6"..F*n.Ba..Mg rA&BaB.NJ.fJ.g(n."(..&E"n.aa`) <f2<)g2<<g2<)AJ.j@< e:tlaXtQ<H8( HI/ BBBBdQ(_NutlatSWSBkBQ8(NuJfH"..&gӮ.N n."(HaL(..&Nu&n."(..&B`&n."(..&a` .lxfBNuvQClJf CxP&.h"QA t2i Ѓ&YSBg$"҃*o/ra4rҁҟ`a* `Jg"QA t2i`JfPCx&.hJfrSgNuJf>H n."" &Ha0(..&LNuataA&0` h t  .NBBBXA&r`t(.htJ.g4(nIht/E"n.a$g nTUe!B&nGhta n0`Nu$"n2p)<gLJ.fNu/ Cl$QJf(a$H%H`0H`"<aL"B1|2Nu jJhf"Ha%Hp2h@@Sh! $_NuJ.gJ.g<g< gӮ.*`Ӯ.><fpNupNurTJg rD< grBa<`HA NuANuexecutable.PRGfSNu"<@$<a~-A.V-A.^a&-H.Z-H.bNu$n.braASa-J.bEvxS-O iaNO) f"nL"Q$n.b ga-J.bNuJg/ "Qa"_) gaJg / "ia"_Nura.2)a:A`D$n.braAa02)a2) a )H ) fra-J.bNu(gNuH$n.bra(HaASa-J.bL.n`,$n.b"..V.^fJf-n.Z.b-n.V.^Nurat-J.bNuJ.g$n.bra^.6Hah-J.bNuNuC.n-I.fBC.-I.jNuJ.gD n.f .j0-H.fB n.j/"OT+P6-H.jXNupNu$n.bra Ia-J.bNuJ.g$J.g$n.bra"HAaHAa-J.bpNu$n.b&..^Sea<fa `-C.^-J.bNuSeNuR-C.^a&..^`$n.b"n&..^tJ.nfVSe gSf-C.^-J.bNuSfa`R-C.^ad&..^`R.^aVS.^eNuT.^aDU.^eNuT.^a0U.^e?TNuaHH.^l.^S.^SfNuHa n.Z"..V.^ax$n.Z-n.V.^LNu`p<f.pT`*p`p `p`p ` p)S`p*`<f ?pa60 n.f 6 .j0-H.fB n.j/"OC*J. g +P60g >`-H.jXNu/A.n(g@aLHP"X&n.j0Jg&h( o -C.^a &..^SfL H`(a -C.^(-J.bNuJg AaHDNuar.`A NuANuGST linkable.BIN".hҁda-H."-H..-H".ha".tҁda-H.6-H.B".tSep0QdNuJ.g .htJ.6g .tt;;NuӮSfNuӮNuNupNu|fAH6~fSBfPNuPASCALXpB`J.g*$.hJ.6g$.tA*0|++f0jNuS@@@@NuXNu*ak;(;(Nu;(a&;(Nu:ak;(Nu:ak;(NuJg < gpNupNupNug*J.g$H@ҁavL/ E00Sf _ҁNuaBA&0` h t BBBpJ.g0?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~.  LFA??<NAXNu///??<@NAO "NuJCk|d ??<>NAXNu&_*o -eFCe>,m-M2O~A-H3*A32-H3&B3"// Bg?<JNAO JfQ2N??< NA\`Hz ?<&NN\Nu 8Nu bytes used out of , took secondsEnter command line: Press a key to exitInvalid command line - see manual J.2g,Hz?< NA\/<NAXJ@f>NA< g< e.H??<LNAp///?<NNO @ h (#WH??<*NAT2A4JBJgAaN/2aF/2YAAPa4  ?<,NAT2YAa:2IA?a :2AAHABAHA 0HA0NuR Ю3&3*d n3&-H3"Ӯ3&pNupNu3"f-H3&B3"NuApCB/ /a _g "n2$fA2(Bg/?<=NAP"_ (k(?<?B?<BNAO /Bg?B?<BNAO "pNu??<>NAXNu//??<?NAO "`Bg/?<=NAPJk*6?<?B?<BNAO /Bg?B?<BNAO $pNu??<>NAXNu//??<?NAO NuCg<.f&$ JfSDJfa亴<RgRfABg/?<`mp=@=@-n-@-@-@D-@L-@=@=@-@@@@ P@ -@=@=@-@-@p-@PP=|aLfQQQQQQ|.| a?TABP`kzJnfNup0`Haa@ a@*aK:a aT BNutJ.gJnW&n\&SCda,AhaAtaAa .pѮ|Nu(gRRNuJg/ &Sa&_ + f$kaJg / &ka&_NuJg/ $Ra$_BJg / $ja$_NuJf J.f>JfT nڱlNupNuJ.g 0.nb"n nf i`$n"j jf"i i`"n$i jd  gS`pD`FJinclude_longmacjNupN`FJ.fRnJ.f-Jf1"J.fr 4<RnJf((nڹl L-Lf  gS-HpNupNu"n i(hd  fR`pt -L$LgSfb(<*| !JpNub  gS!JpNu"(EfP$(g&H @S"LE!JQL"(aH`E!J"(Ef aHgJ`E=h Bh $)g / al("_B-i`PJ.g<+g<-g r PNur NuS.`R.ZNuPr J.gQPNuJ.f:J.fJ.g `,J.gJ.fJ.gJ.fJ.fQB.QNuQaN*`Nu-O*n-MBB.< g< g8< g0PAB(a9f<<:f<:fP< g< g< g:HAaJ0g<=g7<;g<*g`DEC&#< #< H6~t< g,H6~<Ae<[dQ`<.g < g< fa7L(JAa8fC$n\( H a:zL8g)`(D,<:fCCJfCBa IB(`hJ.f "hNu(E"\HSfNuB`a9fC@ fC2. ) fC&fC&).gA-HDNu(.AJf,Nu.fPNuAJg(.g aPzA(.J.fa9hgB. (.g HzEL` EDJgB"j n8d HaJ>L$n*""Jp%@%@%DC 5@@ n6%@( PSf Rn8Ѯ*Nun8e HaIL /a*n8 n8Ѯ*NuABPABPa:xHajLJnfJnfNup`B(+-*/()~= & ! ^$%@'"(>bfjVZ^A0TX1za<f<e<d<fA0PX!!`Ⱦ<g<eξ<dƺ<fR<gF<gD<g <f.`6$.v. <gR. J.fJ.gp.6Ad԰`~`~EA0<02`2plTX1`az`z`,a A0PX!!JCjp)a@޾<gp`@zREa`<g(H,EA0Jpga`UnAQP0$0&0Nu`ZAQPe0$0&0?CUQ221<dQ`e0,0 0BCCXA21N20 PX!!NuԀF<g <g<NuJ. fJ.gpa@ PvNup`0F@JFk<fU. g<ga<@Nua8`aarvNuCk<fNua/aLfNuJ.f`Ā`؄`Ա```ȴWHH¼fdCkvvNu]`洀^`F|fDNuD`,JnDJnD&HCH@JCgH@`J@gHCH@ԀJjDNuJgJ,//JjDJjD|.pއUFDFЀeRQ,jD,jDBNup;Nu LNu~< g< g< g<,gH`/ ~<Ae<[e8<ae<{e,Ahg fJk~`<<gt<:d<0d,Aa3^g~`~ <|__f6H@|RSg(|G2g|LKgf tJ.g4.RB`$<*pNu$.`NutJ.g"n4)`~<#Wf J.V (f atfv`LJ.fa2gtPvJ(g2`0$)v) ) f&<g<g<<fvHC6)HC,`PHC6)a4hHC,J.gC`J.fJ)g.6)gP`a1V,<#fJf) g ) g$)v) J.f<f^p)Ad԰`) fh<f:.6)fR. `CPa3`"HAE Q @SSf~`pvPa:`p`aJ.gJCkNuPp`:a<gJ. g:Nu WT` WT:0?gax0`a|0 nP<0e*<:e<z<.g(Sg>Sg J.gJ.gJCkE<faE*NuJ.gJ.gJCkEa.4:NuJ.gJ.gJCk a. B:Nu`E/afa<)fL. g$Jf Jfz$a;Vfp `8/z($J.gJCkE:J.f-Nu<,f6z0af6HC$<.g<\fH6~<Wg <Lf6f<)fHCJ.gJCkDJ.f-PNuH6~<Pf6$H6~<Cf6$<)f>z:J.g0J.gJCkD8<f :`-J. fp a5:Nu<,f5z;/af5<.g<\fH6~<Wg <Lf5$J.g6J.gJCk J. f<f Ra,p` aC`p a5l²<)fNurCTJ1gNua`aa@xg < fEE<,f4?a@x_fE]E:NuTaƲ<,f4?a8 nx<gL<a]E:Nua0x<fENua<,f1*a gkl<,f'a fx n1DNuxagHAH@af4$nTHPaDL8 f" ) f()J.g) gPpNupLNu<-gIJ</gpNuaVgp7`'h?aFf6eRRf`a<,f'a n.g<g <f&Nu.ǰ<g&а<f@afJJfBZB<,f&t<(gaaʲ<(fX6a쐌<)fH::Nut<(gaa<(f*6ab<)f<,f&^a@BZB`p.`&j<#f&HaJ.g4apJ.gJCkBHHgea&` .gpa&<,f%appNu/<,f%app$`4LaRa*=Nu< g< f`t< g<*g <;ga/a$C-I2#BB)-BA&-H| ,Nua/a4&Lf-BA3-H,PNupC`%X< gʲ< g< gH6~Ae<dHA0;gN<,gNup8`%Nn"|p>`$A<+g<-fJNua&f|e|dRB=BaVNuaW@NuaV NuaWNuaWNuaWNuaWNuaWNuaWNut_agt.BNu nfjJ.fJ<+g(<-g1eH|bP=@`Q`PBn"n2 n.Ba,NuC <-g4<+g2H6~<Wg,1e<dagNuNuQ`PNuaWNu<0e.<9b(t0<0e<:d 0AA`pNuAFtJgr Nu< g< g< gR<Rfr BNuaaxdNuJ.gaGr PNuat ed =B-`PNupI`"a$afxt4$nTAH J.faTL8g"xva,Nuaf>?a 2<,gNu(.gJ.galf) f  g+lNup+`aAaf(.g0v .fv??a Lg "nPxaa2<,gNup*`) f2) f*) f").g f n.Rh3hNu0<*`lp.nj;Nu@@p5`R<"g<'f$L< gfg( SD<,f<'g<"fSDe gNup AfRpNuaW`aV`aga4fJ.g) g@<@NuAafaW`pAafaV`^aDJ.gJCk <fJfNup<`~a|=-BNup1`j0<2`Pa^`a\`a]`a_` aW`aVRnJgr Nua>.ajfapghJgELSEf\IFfTng`LENDCgENDMf"J.g6 nhc,`0.Sn@f`HA|IFfHAA`0g@fRna|`< g< g.< g(<*g<;gx< gp< g < g<:f< gV< g< g<*gD<;g>A&BBp`< g"< g< g<.gH6~QpNuLpNuJngSnr Nup/``"<=A>a#2-H:Nup4`J.fJfa $n\H aRVL0J.fJgjvBaHi n: n>da"_"BC !I!H -I:n>&Ha:afa0ag첼ENDMfJf k !n:r .=gSn>R:Nu n>d4 k !n:a("k #H'H C BBp Ѯ:n> n:"Lr f-H:$ n>NuJf ) f f|aՈafRagENDMfJfr Nu"<@=Aa!-HNupL`x nDeH@@a(LJ.g ) g4pW< g< g< g <.fp nQ -H1n "i!I!Q1nCBQAfS< g< g < g`B< g|<*gv<;gp< g< f`RQ<,gF< g@<f<>f"`g< g< g < g<,fB<,f < f`$ R/.-@nPPRnNuHaLfΰ<&fHaapLf<&gpDa< g< g`60.nbat L$nCt`jJf$n"j jf "i%I Qp (Ht\gf`Jg 0.nc%H-LpNuC$SBg"0 LS@f A< g~<@g<fJ.fPSn$n n-J0*nn=@ -@fQr Nup3`p9`Jf6a-Bn0ataf>agJf겼REPTg ENDRfr NupE` n: n>dav-H?.>BC !I!H -I:n>&HaBaςf-Kaa~gⲼENDRfJfaP k !n:.=gSn>R:J.g=nSe8-KC-Ia frHa Lg ENDRfJgPa`04.>Jgp@n>Hծ:BA#B-Hr NupF`"n nf "i-I Q(Hp f-H-LpNu"<e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶e≶eCNuAV2< Ct2Q8<Ct&a.Jq0j30B QNup`VNEEQCNCDNDGTGLLTLELEA AƀRTS Nu^BRA `>BSR a4TST JbJMP N脀JSR NzEQU \ADDQP&SUBQQADD SUB CMP ᮀAND rOR hEOR ^CLR BNOT FDBF QDBRAQ؀TRAPN@BEQ g߀BNE fvBCC dlBCS ebBPL jXBMI kNBHI bDBLS c:DC xEXG 匀EXT H؀NEG DJADDISUBI؀CMPI ΀ADDAޖSUBAތCMPAނANDIORI EORI LINKNPPUNLKNX6BTST߸BCLRBSETBCHG@ASL ASR LSL zLSR pROXLfROXR\ROL RROR HSWAPH@DBEQW\DBNEVRDBCCTHDBCSU>DBPLZ4DBMI[*DBHIR DBLSSADDX~SUBXtNEGX@BVC hݪBVS iݠBGE lݖBLT m݌BGT n݂BLE oxDBVCXಀDBVSY਀DBGE\DBLT]DBGT^DBLE_DBT PvSTOPNrST PZSF QPSNE VFSEQ W<SCC T2SCS U(SPL ZSMI [SVC X SVS YSGE \SLT ]SGT ^SLE _؀SHI R΀SLS SĀCHK A0MULU&MULSDIVUDIVSABCDSBCDNBCDHNNOP NqDRTE Ns:CMPMިRTR Nw&PEA H@΀TAS JENDMIFEQIFNEENDCIFD IFND DS RS LIST@END @EQUR|SET OPT "@EVENȀIFGTIFGEIFLTIFLEIFC @IFNC>SPC @PLEN@LLEN"@TTL P@FAIL@CNOPݺXDEF@XREF@PAGE@ORG JIDNT2DCB LREG RORGbREPTԀENDRBHS dڊBLO eڀDBHSTݺDBLOUݰSHS T잀SLO U씀IIF zTEXTDATABSS AMP!亀MOVEQ p笀MOVEM H圀MACRO MOVEA @栀MOVEP ȀINCLUDE @RESET NpڀTRAPV Nv̀NOLIST P@MEXIT MODULE SECTION LISTCHARR@RSRESET @RSSET ~@INCBIN ILLEGAL JNELSEIF "@OFFSET >OUTPUT @COMMENT @SUBTTL ~@FORMAT @INCDIR @NuA`4<e&.AMOVEg(aNA000kAHfXJ.g J.ga,p<.fNH6~p<Bg.p<Wg&p<Lgp<Sg< g< f f pS< g< f < g< g< g@<6HzZHp04?gaȼ` gaȖ2Nu:r NuLAt vg Q`fX`( nBNв< g< g< g<*g <;gpa JfJg".BӮӮBNu" -Ag$.ӮӮJ.gJ.fNup,` :a6f"P(t.R`gSf("LpNu"L((H,pNuAE)J2g(jhH6~<Wg<Lf,J2or.`Fr.`H<:dBC$L<$g <:d(<0d(J @E SSfpNuBp(NuJ.f.AC rJ2o ne0.S@pNuC tH6~rJ2nRjtJ2oBpNup<"g <'gtS< g<g8< g< fJg(<,f g-L`fH6~Rjp~CR Nu?RA?rl?H .Dg $@a&g-IH$nLag-IP$nTag-IXpL8Nu g>"@(*P)ebG(M ebSfNu g"@` )g"@`XIpNu"JpNu gDg>`* H@J@g4R@g0`<gH`<g0HfNup`pJ. gNu<gNu LI/a"Ivah(_NuANON_MODULE TEXT BDAv a~$n\HaVL8J.fJgxv aŒ-I.C-ILNuJfa`p `HC BDABa$$n.EHaVL8J.f2Jgxa6 n.S( ( a8@-I2-ii6`Jg`"n2#n`fJ.f&NuJ.g nfD)")<g<gp apNuBSSfpNu)pTEXTg DATAfp NuA*BP-H*Q Nu/ n*0++0-H*BP _Nu/) n*0++P`/ n*1|-- _Nuline malformedout of memoryundefined symboladditional symbol on pass 2symbol defined twicephasing errorlocal not allowedINTERNAL:invalid hashinginstruction not recognisedinvalid sizeduplicate MODULE nameforward referenceinvalid section name, TEXT assumedgarbage following instructionaddressing mode not recognisedaddress register expectedaddressing mode not allowedexpression mismatchmissing close bracketimported label not allowedillegal type combinationinvalid numbernumber too largemisuse of labelinclude file read errorfile not foundrepeated include filedata too largerelative not allowedcomma expected.W or .L expected as index sizeabsolute not allowedwrong processorodd addressimmediate data expecteddata register expectedBSS or OFFSET section cannot contain dataduring writing binary filecannot create binary filesymbol expectedXREFs not allowed within bracketscannot import symbolcannot export symbolnot yet implementedregister expectedinvalid MOVEP addressing modespurious ENDCmissing ENDCinvalid IF expression, ignoredsource expired prematurelyspurious ENDM or MEXITcannot nest MACRO definitions or define in REPTsmissing quoteuser errorinvalid register listinvalid optionfatally bad conditionalrelocation not alloweddivision by zeroabsolute expression MUST evaluateillegal BSR.Soption must be at startINTERNAL:invalid optimisationexecutable code onlyprogram buffer fulllinker format restrictionORG not allowedINTERNAL:invalid multi-line macro callcannot nest repeat loopsspurious ENDRinvalid numeric expansionduring listing outputinvalid printer parameterinvalid FORMAT parameterINTERNAL:bad sectionINTERNAL:macro memoryinvalid INCDIRassembly interruptedp'`PpA`La'fNua8p&`p `:p `6p `2p `.p`*p%`&p`p`p`p#`Q+Q|a `Nu.nJ.fP . d| Hp?paAR. t0J@g"Jf"n@2JYgSAf` 3n2YBQS@ap ar2.a&Jg p a"nt)UCaQaPLNuJ.gJ.g .d|Hp?paBA 4<`\short branch converted to NOPsign extended operandrelative cannot be relocatedinvalid LINK displacement68010 instruction, converted to MOVE SRsize should be .Wdirective ignoredbranch made shortoffset removedJ.g?@;HnRn0J.fNu$n\HaVL8J.fJf/ iJh _f.`txv <vЀajB/ a$ "_fV$<a%X#D#n-I/ &a"W#HC!C!I 1n Bn"_P``Jf#n-IJ)g&/ a#"_f#D i1n BnE `$ i1n BnE pNu  J` "(A$)H@a#Lf,Eg * f * g i!JR)pNupNupNupNuv E`$(gBHa#DLNu .\g @ g @Jg/ Pa _Jg( fNJg / ha _NuJg""iJg/ "Qa"_NJg / "ia"_Nu/ &JEa"nTJg"Qa&_Nu) gNNuJg""iJg/ "Qa"_aJg / "ia"_Nu) gNNuJ.f"<a -H+D-H+HBBPNu n+H0(A-H+L n+D-H+HpJhgBh (-@+@Nu ЮJ.fD/ n+HX0|g!!P@1pNuH``"<a"n+H"-H+HBBXpL`̰+@f2 n+HX0g ?p?a60P@|g1@+Lg-P+@pNu n+HJg P-H+H\Hp`p-@+@pNuABJ@gJfS@`r `ar HaLNu?HAa2?Ia2?Ia2A;`0123456789ABCDEFvt/AfJgP;N"QA;NEA2tpve RdҘ`Jj P0ANAQ0N;B@'d pa$nTI$abv E"I`F + f+`a`H/paJ.g WAaSnaa _EaLNu gp gl$@A` ~NuJ.gJ.gDJng V` hJ.g0Jng ` N . gJ.gJ.gtJng ` &p%`0 . gJ.gJng `NuJ.gJng 0` . gJ.gJng $`rOa`JfjJfH`AFafP-BLNu$.rBӮӮJ.gJ.g abga4*n-MNuA&-H". . gJ.gJng`BNuJ.gJng`J.gJ.gJng `` Nu$.gaBNu/ <32dЁr N/"a"f$NuJng >` Jng 8` j<gPJng ` Jng ` 8Jng ` ,Jng ` Jng ` J.gp:`H`P ЮHzJ.gJng` LNup.6"J.gJng<` .NuJfj"<Үh$<a-A.&-A.*aL-H."-H..-H"<Үt$<ax-A.:-A.>a -H.6-H.Bp-@.Jp-@.2Юh-@.FNurҮ-A."-A..-A$.h-A.&-A.*҂-nt.:-nt.>-A.6-A.BrҮhҮtd"nBY"h"t"BBNu .6Nu.6g<< f& Ё.>o4H`ahC.6"..FaLЁ.Jo-@.JӮ.F`> Ё.*n ӮSfNuH`a(C.""..2aLЁ.Jo-@.JӮ.2gR`np.6g < g2` .*dӮNuJfaC.""..2a4Ӯ.*Nu .>dӮNuJfaC.6"..FaӮ.>Nu g%a n-HNuJf/ .Jo/.JӮ.Ja""W#A$a"_ Q" -Hө/)/a" .Jo-@.JNuAdp.6$.Δ.Rհ! NuJ.g.6g< gNu-A..Nu-A.BNu-n.RNuJ.g.6g< g Nu-n..Nu-n.BNuJf,aC.""..2*n..a&C.6"..F*n.Ba..Mg rA&BaB.NJ.fJ.g(n."(..&E"n.aa`) <f2<)g2<<g2<)AJ.j@< e:tlaXtQ<H8( HI/ BBBBdQ(_NutlatSWSBkBQ8(NuJfH"..&gӮ.N n."(HaL(..&Nu&n."(..&B`&n."(..&a` .lxfBNuvQClJf CxP&.h"QA t2i Ѓ&YSBg$"҃*o/ra4rҁҟ`a* `Jg"QA t2i`JfPCx&.hJfrSgNuJf>H n."" &Ha0(..&LNuataA&0` h t  .NBBBXA&r`t(.htJ.g4(nIht/E"n.a$g nTUe!B&nGhta n0`Nu$"n2p)<gLJ.fNu/ Cl$QJf(a$H%H`0H`"<aL"B1|2Nu jJhf"Ha%Hp2h@@Sh! $_NuJ.gJ.g<g< gӮ.*`Ӯ.><fpNupNurTJg rD< grBa<`HA NuANuexecutable.PRGfSNu"<@$<a~-A.V-A.^a&-H.Z-H.bNu$n.braASa-J.bEvxS-O iaNO) f"nL"Q$n.b ga-J.bNuJg/ "Qa"_) gaJg / "ia"_Nura.2)a:A`D$n.braAa02)a2) a )H ) fra-J.bNu(gNuH$n.bra(HaASa-J.bL.n`,$n.b"..V.^fJf-n.Z.b-n.V.^Nurat-J.bNuJ.g$n.bra^.6Hah-J.bNuNuC.n-I.fBC.-I.jNuJ.gD n.f .j0-H.fB n.j/"OT+P6-H.jXNupNu$n.bra Ia-J.bNuJ.g$J.g$n.bra"HAaHAa-J.bpNu$n.b&..^Sea<fa `-C.^-J.bNuSeNuR-C.^a&..^`$n.b"n&..^tJ.nfVSe gSf-C.^-J.bNuSfa`R-C.^ad&..^`R.^aVS.^eNuT.^aDU.^eNuT.^a0U.^e?TNuaHH.^l.^S.^SfNuHa n.Z"..V.^ax$n.Z-n.V.^LNu`p<f.pT`*p`p `p`p ` p)S`p*`<f ?pa60 n.f 6 .j0-H.fB n.j/"OC*J. g +P60g >`-H.jXNu/A.n(g@aLHP"X&n.j0Jg&h( o -C.^a &..^SfL H`(a -C.^(-J.bNuJg AaHDNuar.`A NuANuGST linkable.BIN".hҁda-H."-H..-H".ha".tҁda-H.6-H.B".tSep0QdNuJ.g .htJ.6g .tt;;NuӮSfNuӮNuNupNu|fAH6~fSBfPNuPASCALXpB`J.g*$.hJ.6g$.tA*0|++f0jNuS@@@@NuXNu*ak;(;(Nu;(a&;(Nu:ak;(Nu:ak;(NuJg < gpNupNupNug*J.g$H@ҁavL/ E00Sf _ҁNuaBA&0` h t BBBpJ.g0?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~.  GA??<NAXNu///??<@NAO "NuJCk|d ??<>NAXNu&_*o -eFCe>,m-M2O~A-H3*A32-H3&B3"// Bg?<JNAO JfQ2N??< NA\`Hz ?<&NN\Nu 8Nu bytes used out of , took secondsEnter command line: Press a key to exitInvalid command line - see manual J.2g,Hz?< NA\/<NAXJ@f>NA< g< e.H??<LNAp///?<NNO @ h (#WH??<*NAT2A4JBJgAaN/2aF/2YAAPa4  ?<,NAT2YAa:2IA?a :2AAHABAHA 0HA0NuR Ю3&3*d n3&-H3"Ӯ3&pNupNu3"f-H3&B3"NuApCB/ /a _g "n2$fA2(Bg/?<=NAP"_ (k(?<?B?<BNAO /Bg?B?<BNAO "pNu??<>NAXNu//??<?NAO "`Bg/?<=NAPJk*6?<?B?<BNAO /Bg?B?<BNAO $pNu??<>NAXNu//??<?NAO NuCg<.f&$ JfSDJfa亴<RgRfABg/?<g =g %gJ`Rpr A9nA0m/ПЁRSBk`Jg n <#}x`zRpr A9nA0m/ПЁRSBkT`JgN n <#|L`8Cp `CorRSBk$  g  g  gQp`JBkQB"+ҫ }x$9|Lf $`nԀ n$<&ւֹ}x// Bg?<JNAJg0<`6 .A}x#p,#p0#p4NN/ K,MN5XJyg.Hyp/9a(LP/#aDX/9N>Xa*HBy3/9/9/9/9/9a+OHypHy~BN9P/9aXa,JfJg /9aBXa*a- JgB fAq`Aq//9HypHy~BN9Op/aXBaXHyqHyqHy~BN9O p/aXL N^NuNVHJgj n*h#. fAr`Ar/ /Hyr Hy~BN9O fHn/ a FP`/ a X n-h`L N^NuNVJyg /.N:XNNNJgNMt`Hyr$Hy~BN9PNMt/.N:XN^NuNVBHHyrAHyrXpN^NuHyra.XpN^NuN^NuNV/.NoX//. /.-@NnO JgpN^Nu n /Nl0XN^NuNVp /aX29H @ !nB"y#@#N^Nua#/aX Po HyraTXNuHyrapXNuNuNVa/-@aX Po HysaXN^Nua/a&X/aXNuBa|Xa/a&RXNuNVHaZ/aXNuaNNuNVHa4*@a>a / aXSWDHH./ N>X L N^Nua 9FSFJg y2@R2H`a. 9FSFJg y2@R2H`a fpNua`aaNuNVH/.afXJf pLN^Nu 9FSFJg y2@R2H`a. 9FSFJg y2@R2H`ar, Gf FgHytaX`BJygaa@/9N>X`aa/9N>Xal. Gfza|LN^NuNVH 9FSFJg y2@R2H`a. Gg yR` 9FSFJg y2@R2H`a. Gf yR`< H m n "H As"PN` H/HytaTP GfBpLN^NuNVH 9FSFJg y2@R2H`a. H g /aX` 9FSFJg y2@R2H`a. H f /aX`( H m n "H At>"PN GfNpLN^NuNVH *n /.aXJf pL0N^Nu#tJyg 9FSFJg y2@R2H`a. 9FSFJg y2@R2H`a,aJ* Gf FgHyua X`a aJ@gBp /aX(@p()E U)h U!L*/a Xa*ax/9N>Xa. GfX`: U(hg, f$/,aXaa/9N>X*`aL0N^NuNVH| 9FSFJg y2@R2H`a. Gf 9FSFJg y2@R2H`a. Gg Gf"y iN@` H m l "H y"PN`\ Gf LN^NuHyuaX`. *y g0-Gf/ aXL N^Nu*m`pL N^NuNVH/.aX*@g\Jg*J- g nR/HyuAaVPpL N^Nu| Jng\0-J@f;n`L nR/HyuoazP`6p/aX*@*;n .@ p+@ +@+y # Jyg0Jg/.aX". Ҁ+A +n`J- f+y L N^NuNVH*y g Bm*m`L N^NuNVH*y g$J- f UR/- /HyuaO *m`L N^NuNVH *n(y gJ g n fJ, g/ aX/Hyu/ N9O `Hyu/ N9P TR/Hyu/ N9O J f*Jg l"PR`Cu/ Hyu/ N9O / p /aP(l`VL0N^NuNVH<"n Q-Hf pL<N^NuA-H(n-L n$P n*hg\&U/ / N}|PJk -M-L$K(M*mfNq n"n#H-H"nf-i` n"n#h` n!n n L<N^NuNVH y -Hf pL0N^NuA-H(n-L n,( n*hgR.- o -M-L,(M*mfNq n"n#H-H"nf-i` n"n#h` n!n# L0N^NuNVH *nJg oB-(y g // N}PJf L0N^Nu(l`pL0N^NuNVH 9j/aXx*y gJ- gJg(U|G H o JgQ,~pG* SGJ@gRp/aX` SEJ@g BaX`JFg <H` </aX/ aX/aXJFg> Fo|pF* SFJ@gRp/a>X` SEJ@g Ba,X`*m`ٹjp/aX/ajXL0N^NuNVHyu/.N;P-@Jf/.HyuaPp/alX/.aX/.N=bXN^NuNVHyu/.N;P-@Jf/.HyuaTPp/aXHyv/.N9PHy a^XB/.aP/.N=bXN^NuNVH>. *yg0-Gf L N^Nu*m` H/Hyva8PpL N^NuNVH>.<.JGg6*yg0-Gg*m`g H/Hyva P/.aX/.aX*@g"0-J@g nR/Hyva . *yg0-Gf/ a&XL N^Nu*m`Hywga XpL N^NuNV n (N^NuNVHJvgHywa XBvBaX*ygZBm,-.- *J- g.`o. gR+GJ- g -Ї+@+@` -+@+@*m`L N^NuNVH (y *Lg<.- gR+G(mg -Ї",o/Hywa $P`L0N^NuNVJy(g nvvf-y$ n (Ю !@N^NuNVJy(gJg nJ( g #$B` #vv$Jg n`Avv#( UWDHH3N^Nu### p3(Avv#$#3NuNVH..p/aX*@*wBm| p@ @ +G+G+Gp+@+@(y gn+L# L8N^Nu&L(kgn+L'M L8N^Nu&L`NVH a4~x(y g*,*yg- H- HH=@HJf UR/Hywa P,-- UfݹJy(gJng +@+@+@؆`:g" Іo Ь.(lg*,` +@+@+@ކ*m`X L0N^NuNVH/9Rp?/Nm0O#:Jj$/9/HyxaO HyxaX`( 9:>l/9Rp>/Nm0Pp#J#:F#x2pNuNu y26 xNuNV .6-@Jk&:l"9:#F yx#2`8 96".Ҁ#6B/9R/pB/Nm0Op#F#:N^NuNV/.N>XN^NuJyg( <$#>"9xЁ$9p4o#>` 9p4#> yp0 9p4"9>#xp4Nu 9>ѹp4#x#>NuNV/.aXp/aܜXN^NuHyxHy~BN9PRNuaHyxHy~BN9P 9~JS#~JJk y~BR~Bp HH`Hy~Bp /N@PNuNVa/.Hy~BN9P 9~JS#~JJk y~BR~Bp HH`Hy~Bp /N@PN^NuNVa6/. /.Hy~BN9O Hy~Bp /aPN^NuNVa/./. /.Hy~BN9OHy~Bp /aPN^NuNV/. /.aPN^NuNV/.Hyy Hy~BN9O N^NuNVHyyHy~BN9P/. /.Hy~BN9O Hy~Bp /a,PN^NuNV/. /.aPN^NuNVH*n MRJfU .g cS`c M` L N^NuNVHyy)Hyy$/.aO N^NuNV/.NoX-@Z/aX/./-@NoXP/.anX-@Jf/. /.Nl`P n( bfjp//.p=/Nm0O -@Jj Jfp//.p=/Nm0O -@Jj/.Hyy,aP/.N>X n N^Nu/./.N;P-@JfJf/./.N;P-@Jf/.HyyGaP/.N>X .N^NuNV/.NoX-@Z/aX/./-@NoXP/.aHX-@Jg @B . -@/. /.Nl`P .N^NuNV yXJygJgaR`JVgZp". yVR#Vp". yVR#V . yVR#V . yVRV`Pp"./9b/aPp"./9b/aP ./9b/aP/9b/.aPN^NuNVH.. yTJyg JgVar`PJVg& " yVR#V yVRV`" "/9b/avP/9b/ahPLN^NuNVH.. yRJyg Jg.a`(JVg  yVRV`/9b/aPLN^NuJg 9T/aX#f#nNuNVJyga` yf XfN^NuNVH 9j/aXJfBa~XXjpL8N^Nu&yn 9f" -@-@Joh..(.츮lN " K"$傑(He2 " L"o"* " L(" L "偙`R` .-@`*yn,/aXXjX Mfg< "op/aDXRj` /a*X,Rj`BaXRjL8N^NuNVH . Ю.#j#^Jg/.aX#bJf/.HyybaPp/aZX/aX#V#ZJg*Hyy~Hy~BN9PB//9VNnO `&HyyHy~BN9P SJg BaLX`A#p/aX/<`aX/. aX/.aX/.aXBaXBaXBaXBaXLN^NuNVHJVf pL N^NuHyyHy~BN9P.9^*yZ/9b/9^/9ZaFO ,^gHyyaXp/aXBV/9ZN>XL N^Nu/9baXNuNVJVg yZ#V` .B//9baO N^NuNVH../9b/a`PLN^NuNVH.. "/9b/a2P /9b/aPLN^NuNVH..p"$/9b/aPp"$/9b/aP "/9b/aP /9b/aPLN^NuNV n (S!@Jk"PR .HH`/. /.N@PN^NuNVHB/.p/Nm0PJgpN^NupN^NuNVHAV/. p//a$O . g pLN^Nu .LN^NuNV/./. /.p@/Nm0ON^NuNVH/././. pB/Nm0O.Jj pLN^NupLN^NuNVHB/.p=/Nm0O .Jn pLN^Nu LN^NuNV/./. /.p?/Nm0ON^NuNVB}p#} }l nHHR"@|lgR` nJgZ 9}R} @}  nHHJgR"@|lfR` nrR@JfpNqHy~*HyyHyoN;VO 9p -@ >g"Hy~BHyyHyp N;VO -@` Hy~BHyyHyp N;VO -@Hy~ZHyyHyyN;VO -@Jf p/NM\XJf/.HyyN8Pp/N:X/9|TNCX//.N:LP n(@Jf/.HyzN8Pp/N:XHy}/9}NPBN:XN^NuNVB 9~.S#~.Jkp y~*R~*`Hy~*N>X-@ g, f nRB` nR .`JfpN^Nu nB .N^NuNVB . S".lL n (S!@Jk "PRp` /.N>X-@Rg nR . fNq . nBJfpN^Nu .N^NuNV nHHR-@Jg:"9~JS#~JJk y~BR~BHH`Hy~B/.N@P` 9~JS#~JJk y~BR~Bp HH`Hy~Bp /N@PN^NuNVB nHHR-@Jg4 n "(S!AJk "PRHH`/. /.N@P-@` .N^NuNVH A-H n JgHHR-@-H %f %f gJfV n@`\.gp`p nHH`8.gp`p` nHH` nBp#|PpN^Nup n@ nJf-|zB . lFr Nnx @zR//.N}PJf .r Nnx @z"nPR` n(Jf.g /.NQX.gp` . //.NOP n!@Jp/NlO #p6@w f| w .wf .xUDN^Nu .xU n wRx` .| }l n  .|RN^NuNVB .lP n @HH fp /p/p/NlO .HH/r/r/NlO R` .N^NuNVJg .`pN^NuNVB . l" @Jf @ N^NuR`pN^NuNV nBN^NuNV. am zn aAN^Nu. N^NuNV. HH/aX.HH/@aX/fp`pN^NuNVp-@p-@p-@-@ n JgR`B . nJg n@JgR =g ,f .S".f .N^Nu .R.HH n HH//-@a2PJfB. ,g =f p-@p-@ .,fRR`^Jg .S".f .N^NupN^NuNV#.AB-H n Jg>HHR @-H|mf %f n  %f: y.HHR.-@ n|mf %g .N^Nu n  *g -nX`BR B/.HnHz/. NX,O-@Jg-@ fJgRJo .N^NupN^NuJgS.JfD .N^Nu y.HH-@R. n|mf .g .N^NuR` .N^NuNV y.HHR.-@JfpN^NuNVp nHHR A|l-@-@gB .r Nnx nHHRЁ-@ nHHR @|lf n lf Rp-@ n N n-@ cg n|mg n N-@` . f n pN^Nu nHHr8kHfNf`s`Dc`h`Hx`o`d`p-@Jg o6 . -g +f" -fp`p-@ n NS-@ n|mf n pN^NuB .r Nnx".Ё-@ n N-@ .S-@Jg n|mfJgNJjDJf"n Q `0"n Q `" . 0m 7o n pN^NuB .".Ё-@ n N-@ .S-@Jg 0m 7oJgJf"n Q `"n Q ` n|mf n pN^Nu-n n N-@Jg oN 0fD . xg Xf0 n N @-H|mf n pN^NuBS`` n|mg .0-@ n|mg .7-@ n|mg .W-@ .S-@Jg n|mgx . n|m-@g".0 n|mg .7 n|mg .W n N-@`hJgJf"n Q `"n Q ` n|mf n pN^NuB .r Nnx".Ё-@ n N-@ .S-@Jg n|mfJgl"n Q .0`\Jg"n QR . .S-@Jo$ n N-@RgJg"n QR .` . f n pN^Nu nR N^NuJg"n QR . n N-@Rg .S-@Jg n|mg"n QB` . -g& .g 0m 9o n pN^NuHnHn/. /./.NhO-@Jf n pN^NuJg6Jf"n Q .".Nf `"n Q !n`pN^Nu n nR N^NuNVH p-@r-Ar -A n-@-@-@ -f pR-@ nHH/@R @|lgh 0fp0-@ nHHR-@ nHHR"@|lg$ .r NnxHHRЁ-@` n .fHRB nHHR"@|lg$ .r NnxHHRЁ-@` n lf pR-@B nHHrHkfNf`ne``g`Pc`*s`o`Xx`u`8d`Jg"n QX-P` "n QX-PJj(p-@` Jg"n QX-P` "n QX-Pp -@ .r Nn4-AJjDS .0". .r Nn4-@Jf fS .-A .r -A-H`vJg"n QX-P` "n QX-Pp-@S . @{ . .-@JfA .r-A-H`Jg"n QX-P` "n QX-Pp -@S .0". .-@JfA .r -A-H` f-|"n QX"P-Iгf-|{0B .lP nJgDR`Ap-@$n"RX @-H` p-@`B`p-@` pLN^NuJgJg .ܰl-n .BJgH .S-@Jk n R"nR` .S-@Jk\ n R .` .S-@Jk n R .` .S-@Jk n R"nR` n nR LN^Nu fp-@ mp` .-@R WDHHHnHnHn// n/NgO nPA".-@-A-HJjD fJg mp`p-@JgSp-@JgRJg* .R".Ё-@Jk .ѮJg@R`: .\ѮJj .D` .-@ coR oRJf4 .ܰo* . .S-@Jk . n R R`Jg n -R JgJjp n 0R.R-H .S-@Jk .R-@Jj n 0R ` .S-@Jk n"n RR ` n 0R ` .SJk0 .S-@Jk n"n RR ` n 0R `Jg n .R .S-@Jk: .S-@Jk n"n RR ` n 0R ` .S-@Jk n"n RR ` n 0R n .R .S-@Jk0 .S-@Jk n"n RR ` n 0R ` n ER-H Jj-R D` n +R p -@S .r Nn40 . .r Nn4-@ nJf . lR n R ` f4 .ܰo* . .S-@Jk . n R R` n nR LN^Nu/NkH"Nj$NuNPNQH0$h "NkHBiBi/f$h&( S`RB3BHB3BBF4)g\jVBk Bia`Ha2Ri`tiaaSiJkSi`BBBF/gaJFf BfSi`0 RB Bkv$( Jg(<iSBk:x Bl281  9o"0 R1 1 SBjRiSCzgR$hG0 gSD6CkxQJCk0Q$hBJigS$hB2)H$L NYNXNuBfNu|H0$&҃тdRL Nu/t?<@ B m RSWfO$NuNPNQH~0pr3@3@3@3@at 0fi ` -f iaV 0m> 9n8i 3F <)i/gRi`a:<) ҆Bц` .f Jif`Ri` eg efNa +g -f ia 0m. 9n(:)iFi im?)_ f $hB`4)?)_gDBi/gT3|?Jk Si`Jig ktia\adSi`aRi`t4)?)_gNk~$h$$$h$p0)L~NYNXNu,(g !|NuH$hN<L?3FS fiNu?)_g|Nu"gHAHIANu/JgLQA/gRA/fJjR`SAgAo Al&I?HA_HABA$Nu/<Nl B`/<Nl <JjO`$fprt`"HBHBB/t Q$Nu//gdB Jf BB /g$RB/fJjRd R`SBgBo Bl(J?BBHBy_HB&Nu/<Nl p`/<Nl 0<HBBH@B@Or`NV#6N^NuNV nHHR"@|lgR` .N^NuNV/.NoX n-H nR"n R Jf .N^NuNV/.NoX n-H .SJo n "nR JgR` nB .N^NuNVH*OBp of zeroLINKER BUG - bad directive function calledP  D PPPPPPPPPFP %P . r  PPPPPPPPP2FP n%&%tPPPPPPPPP&missing SOURCE directivebad directive %02xmissing SOURCE directiveunknown library format!ABSOLUTEduplicate definition of value for symbol "%s"attempt to redefine id of symbol "%s"unresolved symbol "%s" in file "%s"%08lxUNKNOWN %-32s %-32sABSOLUTEwCan't open map file "%s"wCan't open symbol file "%s" SYMBOL TABLE VALUE SYMBOL NAME RELATIVE TO SECTION *INVALID*vj %d not DEFINEd as a SECTION but used as oneattempted reuse of %d as SECTION idattempted reuse of "%s" as SECTION nameBSSsection is COMMON but being used as though its notmissing SOURCE directiveLINKER BUG - sec_value of unknown sectionuntimely data outputabsolute sections overlap at %8lxABSOLUTE SECTIONsection "%s" is neither COMMON nor SECTION MEMORY MAP BASE LENGTH TYPE SECTION NAME ABSOLUTESECTION BSS COMMON %08lx %08lx %s %-32s unexpected end of input fileread error %d on file "%s"ABORTINGnot enough memory!N ERROR - non-zero data in BSS-type sectionWARNING- %s WARNING- .BINrbCan't open input file "%s"Can't open input file "%s"Can't open output file "%s" using cache for output big file! output direct to disk writing cache to disk disk write failedrwaaCan't open stdin file Can't open stdout file con:CON:prn:PRN:lst:LST:lpt:LPT:lpt1:LPT1:aux:AUX:com:COM:com1:COM1:rdr:RDR:pun:PUN:nul:NUL:null:NULL:CON:AXI:,AXO:,LST:,NIL:,CON:=*{0123456789ABCDEF    ( H  ( H  RR o"oggmpNupNuJfpNuB H*"  R,F&       2 @   222    (  .   NN     ,l x  :   F D<  J  *   *& & D@   "P@"  , 8(vd:60((2  vx.$ $  ,**<J4 vL(*. x>     0J0d "60 , @p : ,                    $      ( 0 j ""$ 2     "     &&   j.0D0j&68 .  "   d    Pb::$  :":V:l&$@T6(,j$&:P(J.z    ,$ , Xd`$  J $2,  40 & 0  F H 4 T<@HF ,$ TD 6 (.>&2f( 0$ X&2`:D@.x""&:P>@@@:/ opt c+,l+ * file to create GST linkable gem libraries output gemlib.bin include aeslib.s include vdilib.s ` &AaBB "*opKB5 MEC\g< fB)EfA>$<.MDFaA$<.MNUa`.g<.f<\gJfNu|.BBNuA(aAaBgHz?<=NAPJ@kv>AaIlKлgv/ Hx??<?NAO Jk0gg޲< gز< gR`! R*@??<>NAX`F??<>NAXAa,`Aa `Aa`A[a`Axa`Iaf&MEXaAuaAbaBgHzX?<A\a|(Kz*Jg$A9a2aREAaJ fx 2aaQ2aa`x2aaxQ2aapAap"gfa`AaP2a|RFaAa2REatA>gR `AaxA$apAah`??<>NAX : gAa(?<?<NAXJ@fA3a?<NABg?<LNA/?< NA\NuJj-DA0tpve RdҘ`JjP0Q0Nu;B@'d H=.xvtpx$zfJfJCfPŲ< e^0HRQ LNu/ pxz a6avaJaa8`a(aha<!g8<[f;E4RE6&& B[&a.f7|6@B[66`7|(_;FD?;E;EREB[6/ &&B&& |MH/ ?RE&&B&6B[&~vJFfv<|fnRE6&&B[&B[6Gaf7|66@d6<]fJCjRCg/ I`(_6<47B _SE1ERE01C1G/g 1C` _g<!f<7| "_02LNup (@fRg$<!g<]g<|g<\g </gR`BDNu(-\] dc.w  dc.l  _o_s dc.b '',0 ,MENU2ASM v1.2 Copyright HiSoft 1988 Disk read error!! Cannot open read file Invalid menu definition Press a key to quit Reading definition file Definition file too large! Input file: Cannot create write file Output file: Writing file Write failed - file incomplete  j*[ Desk | About MenuTest... ] [ File | Hello \ Quit ] [ Testing | Check mark \(- \ Dialog ] _o0 dc.w -1,1,6,25,0,0,0,0,0,0,80,25 _o1 dc.w 6,2,2,20,0,0 dc.l $1181 dc.w 0,0,80,513 _o2 dc.w 1,3,5,25,0,0,0,0,1,0,21,769 _o3 dc.w 4,-1,-1,32,0,0 dc.l _s0 dc.w 0,0,6,769 _o4 dc.w 5,-1,-1,32,0,0 dc.l _s1 dc.w 6,0,6,769 _o5 dc.w 2,-1,-1,32,0,0 dc.l _s2 dc.w 12,0,9,769 _o6 dc.w 0,7,19,25,128,0,0,0,1,769,128,3351 _o7 dc.w 16,8,15,20,0,0 dc.l $F1181 dc.w 0,0,20,8 _o8 dc.w 9,-1,-1,28,0,0 dc.l _s3 dc.w 0,0,20,1 _o9 dc.w 10,-1,-1,28,0,8 dc.l _s4 dc.w 0,1,20,1 _o10 dc.w 11,-1,-1,28,0,0 dc.l _s5 dc.w 0,2,20,1 _o11 dc.w 12,-1,-1,28,0,0 dc.l _s6 dc.w 0,3,20,1 _o12 dc.w 13,-1,-1,28,0,0 dc.l _s7 dc.w 0,4,20,1 _o13 dc.w 14,-1,-1,28,0,0 dc.l _s8 dc.w 0,5,20,1 _o14 dc.w 15,-1,-1,28,0,0 dc.l _s9 dc.w 0,6,20,1 _o15 dc.w 7,-1,-1,28,0,0 dc.l _s10 dc.w 0,7,20,1 _o16 dc.w 19,17,18,20,0,0 dc.l $F1181 dc.w 6,0,9,2 _o17 dc.w 18,-1,-1,28,0,0 dc.l _s11 dc.w 0,0,9,1 _o18 dc.w 16,-1,-1,28,0,0 dc.l _s12 dc.w 0,1,9,1 _o19 dc.w 6,20,22,20,0,0 dc.l $F1181 dc.w 12,0,14,3 _o20 dc.w 21,-1,-1,28,0,0 dc.l _s13 dc.w 0,0,14,1 _o21 dc.w 22,-1,-1,28,0,8 dc.l _s14 dc.w 0,1,14,1 _o22 dc.w 19,-1,-1,28,32,0 dc.l _s15 dc.w 0,2,14,1 _s0 dc.b ' Desk ',0 _s1 dc.b ' File ',0 _s2 dc.b ' Testing ',0 _s3 dc.b ' About MenuTest... ',0 _s4 dc.b '-',0 _s5 dc.b '',0 _s6 dc.b '',0 _s7 dc.b '',0 _s8 dc.b '',0 _s9 dc.b '',0 _s10 dc.b '',0 _s11 dc.b ' Hello ',0 _s12 dc.b ' Quit ',0 _s13 dc.b ' Check mark ',0 _s14 dc.b '- ',0 _s15 dc.b ' Dialog ',0  * a sample GEM program supplied with DevpacST version 2 * Menu test program using the AES, VDI not required * last changed:19.4.88 opt x+ dump long labels for debugging include gemmacro.s MN_SELECTED equ 10 * the program proper start move.l 4(a7),a3 base page move.l #mystack,a7 move.l $c(a3),d0 text len add.l $14(a3),d0 data len add.l $1c(a3),d0 BSS len add.l #$100,d0 basepage move.l d0,-(sp) move.l a3,-(sp) clr.w -(sp) move.w #$4a,-(sp) trap #1 shrink memo[ry lea 12(sp),sp appl_init move.w d0,ap_id store the application id * set the mouse to an arrow graf_mouse #0 arrow please bsr load_resources menu_bar #menu_start,#1 display it clr.w check_state * the main loop of the application * the only interesting events are messages waitforevent evnt_mesag #messagebuf move.l #messagebuf,a0 move.w (a0),d0 message type cmp.w #MN_SELECTED,d0 beq handle_menu * nothing I'm interested in so try again bra waitforevent * to go away various things have to be tidied up quit menu_bar #menu_start,#0 appl_exit tell GEM I've finished * now quit to the desktop clr.w -(a7) status code move.w #$4c,-(a7) P_TERM trap #1 and go away * menu handling after one has been clicked on handle_menu move.w messagebuf+8,d4 menu item bsr.s do_menu act on it * now unlight the menu title menu_tnormal #menu_start,messagebuf+6,#1 bra waitforevent and try again * given a menu click (d4) work out what it is and act on it do_menu cmp.w #m_about,d4 beq.s do_about cmp.w #m_hello,d4 beq.s do_hello cmp.w #m_quit,d4 beq quit cmp.w #m_check,d4 beq.s do_check cmp.w #m_dialog,d4 beq.s do_dialog rts do_about form_alert #1,#about_alert rts do_hello form_alert #1,#hello_alert rts do_check eor.w #1,check_state menu_icheck #menu_start,#m_check,check_state rts do_dialog form_center #my_dialog movem.w int_out+2,d3-d6 d3-d6 are dialog co-ords form_dial #0,d3,d4,d5,d6,d3,d4,d5,d6 objc_draw #my_dialog,#0,#2,d3,d4,d5,d6 form_do #my_dialog,#0 mulu #ob_sizeof,d0 move.l #my_dialog,a0 bclr #0,ob_state+1(a0,d0.w) un-select button form_dial #3,d3,d4,d5,d6,d3,d4,d5,d6 rts * * RESOURCES * * * done the hard way. ob_flags equ 8 ob_state equ 10 ob_sizeof equ 24 G_BOX equ 20 G_STRING equ 28 G_BUTTON equ 26 NONE equ 0 SELECTABLE equ 1 DEFAULT equ 2 EXIT equ 4 LASTOB equ $20 NORMAL equ 0 OUTLINED equ $10 nextobj set 1 object macro next,head,tail,type,flags,state dc.w \1,\2,\3 dc.w G_\4,\5,\6 nextobj set nextobj+1 endm * doesn't actually load a resource file as we don't have one, but * instead converts the built-in resources co-ordinates load_resources lea menu_start(pc),a3 bsr.s convert_resource lea my_dialog(pc),a3 bsr.s convert_resource rts * given an object tree at a3, fixup its co-ordinates convert_resource moveq #0,d3 move.l a3,a0 .loop move.l a0,-(sp) rsrc_obfix a3,d3 move.l (sp)+,a0 btst #5,ob_flags+1(a0) bne.s .done addq.w #1,d3 add.w #ob_sizeof,a0 bra.s .loop until LASTOB .done rts * once a menu is stabilised it is best to Insert the file menu_start include menutest.mnu even nextobj set 1 my_dialog object 0,nextobj,nextobj+1,BOX,NONE,NORMAL dc.l 2<<16+$1181 dc.w 0,0,35,10 object nextobj,-1,-1,STRING,NONE,OUTLINED dc.l titletx dc.w 5,2,25,2 object 0,-1,-1,BUTTON,SELECTABLE!DEFAULT!EXIT!LASTOB,NORMAL dc.l buttontx dc.w 12,7,12,2 * menu numbers are best calculated using the RS directive rsset 4 * titles first rs.b 1 File title rs.b 1 Test title * other titles rs.b 2 * now the items m_about rs.b 1 About item rs.b 6+1 other items under Desk rs.b 1 skip File title m_hello rs.b 1 m_quit rs.b 1 rs.b 1 skip Test item m_check rs.b 1 rs.b 1 m_dialog rs.b 1 SECTION DATA about_alert dc.b '[1][A test program written|' dc.b 'with DevpacST Version 2][ Great ]',0 hello_alert dc.b '[3][ ][ Hello! ]',0 titletx dc.b ' A Hand-Made Dialog Box!',0 buttontx dc.b 'Click me',0 SECTION BSS * global variables ws_handle ds.w 1 ap_id ds.w 1 messagebuf ds.b 16 check_state ds.w 1 ds.l 100 stack space mystack ds.w 1 (stacks go backwards) * if not linking then include the run-times IFEQ __LK include aeslib.s * VDI not needed!! ENDC }`[` APMONST2 (C) HiSoft 1988 o,hO(HC[" ( ШШ//Bg?<JNAO JfZ N0<BQ-LPtAJfPK@a/fxA|a0$a0LAqXmX!X"=XfHx~?<HNA\Jf ?B+F`5GdLE:|>|Fa5~`8xGLE:8|>DFa5^'nLB`8jGxLE:|>DFBBa54`8F/ Ga2GLn$_a5PP`5F f@eeepNupNuHLfe dNu<NuJ.kgH@Ga1BQkLNua|k^aز< gP<gԲ|bg|qg<AeA4ggTH`&nN` .g&@ag`a6`az .g&@<Zg<:ea`~0a6`r/ Ga0GL nta,X$_A C p0QPPa4 a6aak<gag`a6`<Zgal`HzT kH|H8g4|Hg2|Pg0|P2g|Kg(|Mg&Jng< gXrNuNNNN N NkNuB kHNrNu<AgH<Bg<Egl<FgT<Lgb<Og<Pg6<Rg²<Sg<TgNu +>g +>gA7aMf'BB` a/a/Jnf +>ga5`a*p :+7@@a"GaJ.gGa Gda`apP .g@őkk0+H7@PQa2|`~/ vA7aMa1fNJgJ$Lg<=fC$ SBa&^fH(Ja dLf /a4$aJnfa&_Nua4&_Nu/ GJkfa&_Nua&_Nu+><gr<g<gNu + ?a.`/ vA7aLa0VfdJg`ag aNfI`*tJg.<,f<?gB<*gN<=gT<-fJgZafJf,a4 $v"EaIfaJ&_Nua3&_NuaLf/ a3(_v`Jfa3v`Jf|a3vt`a3"EaJfaJ.`a.vfA7(`LP aQ NuJnfp +>gh +>g`/ vA7aL a/ffHpJg LJf$"LSBa$f ?a3H0&_P?a 4gaJnf/ aF&_`a3 &_NuJnfJ.gz+><g& +Fg<fbIKn#fTxE`IKNn#fr<gr<grJgr'nBA>BkLa1a a+`NuQQa.A  C3l+><gC3R<gC3~f| BPP`.ABvDGHHI`LpMbNOP >R S UDV>Wv> r <aJa`J +>f"kBHzaFgG*tv`FNua@.Of$nLafaJ`E*NuA3tYaIfaF`A5ftYaIgKDNuJDg&.Of$nLadfNua2aJJJ`NXA3`IaJaJ*"nLaFbfN hfN`NzaJa"JvtaEfaI`NZNuaa-JLtLa$`JDgvA2aHZa+fg aFg I``//a/"_tvaEvgLNuvaGA2a" nrT (>g@vL a)ajk<g߲<Bg<Wg<Lg <Tg<IfA a*a IBxa+fjK <IgD<Tg>B-af <Bg<Wg*`:`Jg<,gaHI`A ` Lf SB.@ a.`Bn `.Gra. n$hB(><g G vg<ga<If2``ReedNuʲNu$|NuSz` af(J`(REgaf(JJg Kag fSf`$L` n(FYd -L-LB`-L .g-LaN``F Tfaxg J< gfHRSCg gL `L &n'JB`(J` ga "JE aIʳ gE aaBg*J/ a3p. SCA g< f`JgHS@VLg $_aa`(_`.<g GaFaFa*a,4` Nuv Lg a(QJ, gv Aga(|QNuJ$gbE0oa(n$|g>Rg$, abaFaaRJ, gRFkfa|<g|a&tB`afa,XNuJgJ.n na BA.af-K-KnhJ.g#g GNa+`bGa+IKNEx`(LE.|>DFa('nB`,A.+vaD^a'f+Jg+Atg<,f(H/a" _g Ia'`B a.f-K-K-KBS-K` NuvaDa'\f^JgZt/a+XaE^Ka j _f./a t f/?<HNA\Jg&@ @a a aDpNup?a aD0aDpNua+pNuv A.aCA.J.la:gZlA.J.ma*gZmA.J.!agZ!A.J."a gvZ"`nVaJrNJgrYa&TSka4ak<gD< g6߲<Yg<Nf?a&&a22<ONuvL a$rNuaa`X`*BA.\aaI\r2.fECVa(BIaZIa&fafe洼d=BfaA.aaI".a/(BIaa%f~aBgI`-BatA.aFa@ak߲<YfLaCBgHz.?<aBN`BvA-gaAa% ftg agI`=Br`) a%f&af"<,f*af<,f,a~fJfNuaBI`vA-aAdIaf(m$B"F EgRdSf` REh!Sf`(vA,aA&Iazf蜅m ESd`vA,aAa$\f< LJg6 ,:f Ae&< d ??<NAXA/?<;NA\J@f`($p?a(0`A*vA,a@a$fxJgtaA,aaB. *x`aAI *a#fNapf<,f*abfJf(mRaAAaf Eaf a&aAZ`aAT?a0`@`'va?A,1aaa<g߲<Gg<Ug <Ig<Sf?a#a2<GgT<SgT<Ug.I".ga,BIa^Ia# fPaf-B~`"I ha@I ha"f2aPf~`a&`~aA+J.oa$gZo?a6`F`&( JfɌSDNuE+aA'HHaaja|`a&`a xET2a$aBa&a"$a4a*RD|fra~I2,gZ$aatJ.gt agaRa$Ta^ lfat ar?a!E ga!`aaIHQNuA*v a>rBn`a?Ia!faVf<,fR-Ba@fԴo-B$Baf$nafaLraaBB.x`a?Ia!`fQJgFaf-BBJg<,fafJfƴe-B$.f affR. BBaraaK *xB.`a?Ia fJg`a|f<,f*anfشopJg"<,f߲<Bgp<Wg<Lfp"R*R*:7|a`BaHra a>B.xIa bfJga>h Labga>`a>a$*nJ.gBn4a|f(* gSg Xm`Tm`Rm`a*t`P*nJnfafQ Qa#A'ba<`P aa6Q Qa#JnfNuE * gm lpNuE `pNuoNuJ. jafz/ I(DC.BS* g@S@gL x"a(,\`:W x2a(,\`B xa(^,\| (_` Ha)tL( aNAX .gT/?<HNA\-@$ n/(,/ / ?<?<KNAO&j`p"a: `:,-CPPhBg/ ?<=NAP>kHnHx??<?NAO f .gpЮЮBg?/?<BNAO .$gR-@$//.??<?NAO fp n$ .S@"nPa`X( d> e: e6 $) e$) e$) dը B( (H W fS@`PB( QBPNu??<>NAX$nPPAT .dЮh}-@l"n%i$"nPC-IBvta5O(B/.PB?<?<KNAO-@Qh nP/(,a\ _aXBDa9XGaBA"7a (PkJg.J.j(BGNJkg +>f|>aaa`/?<INA\NuJTgLCBQB/ B/<KNAOJk.&@"<ҬҬҬ ғdA И И kC ,ЬSe0Qd , Ser Qd k$r gհg<f`Ё`"k-IBtva4FO(Ph-KPCAT .dЮh}-@lJg,A-H$J,fP ,US@"KaB/ B/<KNAOOa7`fGtJkg?a44NQNuGtJkg?WPa a 4NQNuB kHN`` ````NqrNu>+$kBa aa")a+@fa`a&arAaar:a$i$ a+?aaR<8fra4.JaNqa8.Ja+@+@ araz$.Da$nD+?aara\$.Laax$nLQtatgFra6$.xan$nxp.v;8a`J.ug ra6$.|aH$n|p.v;a:Pta`$A4arS frUataQNug`R`TXNZVC`` ````NqrNu$kB<+J+?ft a f $ at`$ aa +?a ga Barr Lfrana/ a@at$_SfNuaPU'JBpNuaDT``` ``L`B``0+@HBpNu +BR$@<+ajSf'JBrNu +BR$@NuaaJ`aa,b`HQQaLA JfJkLgWS7@Lg>|e$|Dd@HrAQ@drDP@0 `C PYf ! BP` tLata XB|HfNuApJhg:2(LAf2|Lf (>g."6 Bg!ABH/AB4a _LANQNuH"nL (BR$@m<(WFe/ aJgQ"_" LM`"_LM`$kB<+SFaWfJFk aaQNug " fg " fRpNupNu``(`8``N``$kBag/ aDaJ$_'JBanpNu$kB4+SBaW`$kB4+SBag^t<:d<0dd~af0CtRBa|gaf$`/ a"_gx(It`~`"~ g <>f~ ` ~`~ f~ R _L`NutS~`<0e޲<:dԂ ЀЀԀ0ԁ<:d<0d~`DHtpGN`v`,`N``p< gfg`Se`0ef<d`Ԃej0eJ<e`B0eB< dld8H`tr n$Jg g g J( g`(f LNuJ.fNue dH@J.k( n"g fLpNuJgl!@B` n"gܰfAB( LH"a HBA LNu @pg&a4SWgJ(gp \pg aSWNuNu/J$gBB Opnfo4.fJ."f~S|epQ(& n$gZRgFfBf0 gS@BQ`<ae <{dNu n$8|oxSD6C g`RgD0/C (aIJf2Q0j J(f$Jf `0J(g\afQnfgJg _J(g` _2`*2`@Bg/?<NAXNuH HBp@@"npJDN0+7@`N` ``aA'H Nu  !()0189@AHIPQXY`ahipqxy  !$%(),-014589<=@ADEHILMPQTUXY\]`adehilmpqtuxy|}j"Qp`"ip7@'iLC'I&A'H Nu``@`h`` ``l|gp"i`p"Q'iL7@r2+7ANu/ $k r"J4+SBQQ$IAQ$_Nu"k k1p2<QNu"k SAkCrpQpNuk$k p2 4+SB|g*0<2<Jf QNuFQNuHA0@A2IIA8z-|JVg~D/4+SB0<2<+)+ QLJg 0+FS@fNu2<k"k p1 `/6+SCSC4+SB2<$k J@j Sx8AQ6Q(Nu0+S@S@ Sx8A`Q6Q(Nu"ip`k"ip7@'iLC'IP&Nu`t`>``` ``D|g p"i` p"i'iL7@Nu4+SB"H2QQAPQNuP4+FAPSBfNuP4+SB0<rPJf QNuFQNuPp2<PQNuPp@QpNu6+SCSC4+SBrP"SJ@j$IA0QCPQNu0+S@A$HC0QAQNu$k6+SC SN$k S"kAN$k SN SSC$kN SSC$kN B"np0+$kN$kNpa0+S@7@BkNupaBNuJ. fH :+4+2+RA6+AoSCgx?a4RBSEfL0Nu?.?<aRXJ@Nu=CA (-HNua46.`< far a`A "nf?a 2`-INu .A (g Hn (/?.?<@NAO g `J. jBaˈf `4JnfA??.?<a o \f?< ?.?<a\LNuHJ. g 0< dr `HJ. f< g 0+kgL Rk~a@LNuNqBk0+k`x LJf*SEaa6+tDP4@aak< g<g<g\<gt|Gg|Kg4|Mg8Jgƺn g0REDg AP`S@fal@RDB4Pax`JDgaXSD`DgaNRD`JDgaD0Dg A@XS@fSDSE`0DgdA@XS@fSE`a< Nua8Bxz`.?tD6+Q4@a,2Nu?+ Lar a7_Nu?+4. a7_Nu/ ntn8.a`$_A p W| BA 'HHBkL~P/ (KG4,6,nr Jg J,Fgr0,FH0aL RBA gH1Jfr azLRB`2,SA4,6,H0azL 2,lajLSB6,af2,4,l6,aR&L(_Nu-Ip nt0<?BQ<ng 4<(6<x`4<P6<x` 4<P6<2xprG ntaB0+R@=@pABhNQBL&<nL(gL.H=E =F Nu N;N;&uNN 2 5 25NN X2 5X 25&& X&&B.#Iz<n IgIaa&aBpLQaba\LHLHGJg/ &nJkgQPa&_-KPP`6<8 .g&t|8f6<CNJv0fQNuG0`GdtJkg+FgNQNuHHz*aQQaJBkGJkgPPa2`4LNur2+p+>@|(NNu``&`D`h A|erA?A'HHNuAn'HHtv |(dtvB@C?NuA&dr<dr<erA?A'HHNu|?Ab'HHNuPC:SR:A7'Divide by zeroCHK exceptionTRAPV exceptionPrivilege violationTraceBad interruptInvalid TRAPIllegal exceptionBreakpointD:A:Searching...Address errorBus error ; , Text: Data: BSS : Current Breakpoints: Data start,end<,size>Cross-reference listFilenameDisassemblyMemoryMonST 2.02 HiSoft 1988RegistersSource code ESC to abort Window start address?[Return] Filename to loadSource file to loadExecutable file to loadCommand lineProgram terminatedRegister=valueTOS error: 12345Cannot runIn ROM!It's odd!Cannot write!Too many breakpoints!Run until PC=Kill all breakpoints Y/N?Breakpoint address<,param>HistorySearch for B/W/L/T/I? Printer not respondingRegister to lockEnter expressionSymbolsPREFERENCESScreen timer Y/N? Follow traps Y/N? Relative offsets Y/N? Ignore case Y/N? Symbol lengthTop of RAMBDOS BreakpointCopy start,end,toFill start,end,withSet current drive/directorySave binary, filenamestart address,endRun: Go,Until,Instruction,Slow Watch Y/N? HelpDisassemble start,endRe-install exceptionsSave preferences Y/N? MONST2.INFJj-D`JAj-DA` a`fB d0Nu$p/t?fJgP²< o^02Q$NuH@ @pgQJ(g\p gQLNuA0g NuTFHILSCCCSNEEQVCVSPLMIGELTGTLEAH.P NuBWL?AH NuTST CHG CLR SET 0NuH@00NBSQNu>B.uA BR4XXfBA Sg`IUeQa BNuA:EMaNuXFB0@P&Fb,|XX0`a#Jf2a"`<g"a.`2a,?<a8B#2aJ,x=0fxe`: < mE;P`?xa>.t-nx|Qt?,2< iA4JBx?a0J.tgJgPuLxAHxNu@tNu2`0Nua,#2`aA`,USP G< e1 0Nu$<.gRa4`z.xd<Jg:<Pg2x=`,zxa$,`Dzxa,`@ a?xla|v<,pVQQ6[<DaJgJg/6<AJg$pg@|7JgSg*Jf -7NuSf-|6/` Jg`/SdSNu RaJ<48< f2ar,x4aD|vNuaR`zxa.OO0,DNuzxda< 2i,A`&2IaD0," 4H҂Ү $`2IAanBx=`a#2IIAfra,x?`0@2II<@g<Hg&<g2??NuDa,D`Aax,A`Daf,A`2Ig <ga`S(BRA `S(BSR g|.S HHҍҮ $` 2HU`a,D2II`p 4Xfa4JJg$-(AaA(aa)NuDa,D`),-(AaP<fI`02(AazAa2IIah)+Nu)+,(AA:M`R:::ZZZ R(CMPAaxa,A2II` Aaaxa,D`CMPAaaDa,x=`EOR0@|@g |Hg|fI(EXG `<gNaT0@fxa^,D2II`xD2IIaj,0@x?|g*8<<`":MRaxa,A2II`(2<g< aHa2IIf#Afra,D`D`Ia  zx<`AAв<fXrLpfrRNuASLSRORO2`CagNuI>(/a| [ _"(0(|g4|g*|g?C pgQ..`*`=aJ]NuNu2A4J<A` 2zjgD`gJgA`gtf(a -@xEv`0@@|f .Jgp 6$Nu(Aa)Nugla+Nug^-.tfaEp;PxNug62Htf aЁ-@xEvJ$gV . "g&TeJ\dD0H/RaLgal`.J.!g$<g0H/tJж $$abgaB`a`6H0X@<|<f/A f _` a.Ef 1Q2J QJEf !B1CpNu JapNupAf JhgpNuHQpNupAa HQNuJhgBh"P QJf2Nu-I|=Q2JNuA-HhpBFJQNu nhCp Q D0J LChfA-HhNuEya|?aA'HHaja`Jra$a8ara4a0a 8aara$aa+? agaۢRa/ $\a`a$_aܵfIhgJFfVNu/ /vaN _aҌ7|0+kIBxaf"adfJg aI`/a$&_pNua&_tNutn ELnnBHC G8B+Fa7|7kNu/a _aa IBxNu/ /LtvEa _a 0. @k _/"HJfC0 H7@ _`Ѱ/ C`aak<g< fa&_Nu/ IDr2EaB(_A`NuC ?atak߲<Yg<Ng <g/f>a2<YNux}x~ .|tg4-@x=x@=xBx`1@1B`uvNu=|pa6`=|pa,`yz1@1BNu 8ffgNu..fNuJ.lg=|(pNuaFx@aFx@Nu-_-xA!NM!/.Nu-_-xA!NN`AG0gHh/??<NMP& _`QiPjz(l=|r=|p@|Hz?<E?<NMP-@F-xA*!=|rHz\?<!?<NM-@PNuG~0gHk/ ??<NMP&_`A!Hz ?<!?<NMPNuAFG0gHh/??<NMP _`/.?<E?<NMP!/.?<!?<NMPNu\^  #$%&'()*+,//p`/p/,zPjH?-_<-_\6=_J-_L-ODO?.Of($nLEafE afTpbWf-JL0`\/p `,/p`&/p` /p`/p`/p`/p`/p U/,zPjH?-_<-_=_J-_L-ODONh-H@/.8"nL< g8<g<||BB.n"nL?a˂aaZGaB2a;Pk-_`aJf.ngAhLgp nx (@<gn<gJ.og(agl nx (@||a aaa nx (@J.mg.J<gJ`B.nJ`I hafJfJg nx (@x ` Sfr` nB"P2J0.J@n=@JjJ.ng`Hnvgp|gzPabfZHaL0(|g>|g(|gI HàLfTJfPJgL`R`DSg`<2Bhx ``x `Z-nxLafx`J2p-@| n"P2JaH.Of$nLaf "JagJnJjh.Of`$nLatfV0@J.mg.|N@gD@|f: nD! 1.JJ-y(L-HD`|N@g@|g|gQj.nD n@N`/.L?.JLNs0(@|N@g0.J@=@-H2J`J2-HaBJ`|NuB//,zJ.ig@/AeA(e _QiJ.ngB.n` _QiJ.ngB.n`o 0.pkS@fap=@p/n,_ Nuaa2CnJ`H` z/< !xA!NMX zt!LgPiNu hNBH瀀 zN0(rk:J(jf4/ f&/NhP _f"U z(1|rB(nLX`og/hLNuAMP`[` APMONST2 (C) HiSoft 1988 o,hO(HC[" ( ШШ//Bg?<JNAO JfZ N0<BQ-LPtAJfPK@a/fxA|a0$a0LAqXmX!X"=XfHx~?<HNA\Jf ?B+F`5GdLE:|>|Fa5~`8xGLE:8|>DFa5^'nLB`8jGxLE:|>DFBBa54`8F/ Ga2GLn$_a5PP`5F f@eeepNupNuHLfe dNu<NuJ.kgH@Ga1BQkLNua|k^aز< gP<gԲ|bg|qg<AeA4ggTH`&nN` .g&@ag`a6`az .g&@<Zg<:ea`~0a6`r/ Ga0GL nta,X$_A C p0QPPa4 a6aak<gag`a6`<Zgal`HzT kH|H8g4|Hg2|Pg0|P2g|Kg(|Mg&Jng< gXrNuNNNN N NkNuB kHNrNu<AgH<Bg<Egl<FgT<Lgb<Og<Pg6<Rg²<Sg<TgNu +>g +>gA7aMf'BB` a/a/Jnf +>ga5`a*p :+7@@a"GaJ.gGa Gda`apP .g@őkk0+H7@PQa2|`~/ vA7aMa1fNJgJ$Lg<=fC$ SBa&^fH(Ja dLf /a4$aJnfa&_Nua4&_Nu/ GJkfa&_Nua&_Nu+><gr<g<gNu + ?a.`/ vA7aLa0VfdJg`ag aNfI`*tJg.<,f<?gB<*gN<=gT<-fJgZafJf,a4 $v"EaIfaJ&_Nua3&_NuaLf/ a3(_v`Jfa3v`Jf|a3vt`a3"EaJfaJ.`a.vfA7(`LP aQ NuJnfp +>gh +>g`/ vA7aL a/ffHpJg LJf$"LSBa$f ?a3H0&_P?a 4gaJnf/ aF&_`a3 &_NuJnfJ.gz+><g& +Fg<fbIKn#fTxE`IKNn#fr<gr<grJgr'nBA>BkLa1a a+`NuQQa.A  C3l+><gC3R<gC3~f| BPP`.ABvDGHHI`LpMbNOP >R S UDV>Wv> r <aJa`J +>f"kBHzaFgG*tv`FNua@.Of$nLafaJ`E*NuA3tYaIfaF`A5ftYaIgKDNuJDg&.Of$nLadfNua2aJJJ`NXA3`IaJaJ*"nLaFbfN hfN`NzaJa"JvtaEfaI`NZNuaa-JLtLa$`JDgvA2aHZa+fg aFg I``//a/"_tvaEvgLNuvaGA2a" nrT (>g@vL a)ajk<g߲<Bg<Wg<Lg <Tg<IfA a*a IBxa+fjK <IgD<Tg>B-af <Bg<Wg*`:`Jg<,gaHI`A ` Lf SB.@ a.`Bn `.Gra. n$hB(><g G vg<ga<If2``ReedNuʲNu$|NuSz` af(J`(REgaf(JJg Kag fSf`$L` n(FYd -L-LB`-L .g-LaN``F Tfaxg J< gfHRSCg gL `L &n'JB`(J` ga "JE aIʳ gE aaBg*J/ a3p. SCA g< f`JgHS@VLg $_aa`(_`.<g GaFaFa*a,4` Nuv Lg a(QJ, gv Aga(|QNuJ$gbE0oa(n$|g>Rg$, abaFaaRJ, gRFkfa|<g|a&tB`afa,XNuJgJ.n na BA.af-K-KnhJ.g#g GNa+`bGa+IKNEx`(LE.|>DFa('nB`,A.+vaD^a'f+Jg+Atg<,f(H/a" _g Ia'`B a.f-K-K-KBS-K` NuvaDa'\f^JgZt/a+XaE^Ka j _f./a t f/?<HNA\Jg&@ @a a aDpNup?a aD0aDpNua+pNuv A.aCA.J.la:gZlA.J.ma*gZmA.J.!agZ!A.J."a gvZ"`nVaJrNJgrYa&TSka4ak<gD< g6߲<Yg<Nf?a&&a22<ONuvL a$rNuaa`X`*BA.\aaI\r2.fECVa(BIaZIa&fafe洼d=BfaA.aaI".a/(BIaa%f~aBgI`-BatA.aFa@ak߲<YfLaCBgHz.?<aBN`BvA-gaAa% ftg agI`=Br`) a%f&af"<,f*af<,f,a~fJfNuaBI`vA-aAdIaf(m$B"F EgRdSf` REh!Sf`(vA,aA&Iazf蜅m ESd`vA,aAa$\f< LJg6 ,:f Ae&< d ??<NAXA/?<;NA\J@f`($p?a(0`A*vA,a@a$fxJgtaA,aaB. *x`aAI *a#fNapf<,f*abfJf(mRaAAaf Eaf a&aAZ`aAT?a0`@`'va?A,1aaa<g߲<Gg<Ug <Ig<Sf?a#a2<GgT<SgT<Ug.I".ga,BIa^Ia# fPaf-B~`"I ha@I ha"f2aPf~`a&`~aA+J.oa$gZo?a6`F`&( JfɌSDNuE+aA'HHaaja|`a&`a xET2a$aBa&a"$a4a*RD|fra~I2,gZ$aatJ.gt agaRa$Ta^ lfat ar?a!E ga!`aaIHQNuA*v a>rBn`a?Ia!faVf<,fR-Ba@fԴo-B$Baf$nafaLraaBB.x`a?Ia!`fQJgFaf-BBJg<,fafJfƴe-B$.f affR. BBaraaK *xB.`a?Ia fJg`a|f<,f*anfشopJg"<,f߲<Bgp<Wg<Lfp"R*R*:7|a`BaHra a>B.xIa bfJga>h Labga>`a>a$*nJ.gBn4a|f(* gSg Xm`Tm`Rm`a*t`P*nJnfafQ Qa#A'ba<`P aa6Q Qa#JnfNuE * gm lpNuE `pNuoNuJ. jafz/ I(DC.BS* g@S@gL x"a(,\`:W x2a(,\`B xa(^,\| (_` Ha)tL( aNAX .gT/?<HNA\-@$ n/(,/ / ?<?<KNAO&j`p"a: `:,-CPPhBg/ ?<=NAP>kHnHx??<?NAO f .gpЮЮBg?/?<BNAO .$gR-@$//.??<?NAO fp n$ .S@"nPa`X( d> e: e6 $) e$) e$) dը B( (H W fS@`PB( QBPNu??<>NAX$nPPAT .dЮh}-@l"n%i$"nPC-IBvta5O(B/.PB?<?<KNAO-@Qh nP/(,a\ _aXBDa9XGaBA"7a (PkJg.J.j(BGNJkg +>f|>aaa`/?<INA\NuJTgLCBQB/ B/<KNAOJk.&@"<ҬҬҬ ғdA И И kC ,ЬSe0Qd , Ser Qd k$r gհg<f`Ё`"k-IBtva4FO(Ph-KPCAT .dЮh}-@lJg,A-H$J,fP ,US@"KaB/ B/<KNAOOa7`fGtJkg?a44NQNuGtJkg?WPa a 4NQNuB kHN`` ````NqrNu>+$kBa aa")a+@fa`a&arAaar:a$i$ a+?aaR<8fra4.JaNqa8.Ja+@+@ araz$.Da$nD+?aara\$.Laax$nLQtatgFra6$.xan$nxp.v;8a`J.ug ra6$.|aH$n|p.v;a:Pta`$A4arS frUataQNug`R`TXNZVC`` ````NqrNu$kB<+J+?ft a f $ at`$ aa +?a ga Barr Lfrana/ a@at$_SfNuaPU'JBpNuaDT``` ``L`B``0+@HBpNu +BR$@<+ajSf'JBrNu +BR$@NuaaJ`aa,b`HQQaLA JfJkLgWS7@Lg>|e$|Dd@HrAQ@drDP@0 `C PYf ! BP` tLata XB|HfNuApJhg:2(LAf2|Lf (>g."6 Bg!ABH/AB4a _LANQNuH"nL (BR$@m<(WFe/ aJgQ"_" LM`"_LM`$kB<+SFaWfJFk aaQNug " fg " fRpNupNu``(`8``N``$kBag/ aDaJ$_'JBanpNu$kB4+SBaW`$kB4+SBag^t<:d<0dd~af0CtRBa|gaf$`/ a"_gx(It`~`"~ g <>f~ ` ~`~ f~ R _L`NutS~`<0e޲<:dԂ ЀЀԀ0ԁ<:d<0d~`DHtpGN`v`,`N``p< gfg`Se`0ef<d`Ԃej0eJ<e`B0eB< dld8H`tr n$Jg g g J( g`(f LNuJ.fNue dH@J.k( n"g fLpNuJgl!@B` n"gܰfAB( LH"a HBA LNu @pg&a4SWgJ(gp \pg aSWNuNu/J$gBB Opnfo4.fJ."f~S|epQ(& n$gZRgFfBf0 gS@BQ`<ae <{dNu n$8|oxSD6C g`RgD0/C (aIJf2Q0j J(f$Jf `0J(g\afQnfgJg _J(g` _2`*2`@Bg/?<NAXNuH HBp@@"npJDN0+7@`N` ``aA'H Nu  !()0189@AHIPQXY`ahipqxy  !$%(),-014589<=@ADEHILMPQTUXY\]`adehilmpqtuxy|}j"Qp`"ip7@'iLC'I&A'H Nu``@`h`` ``l|gp"i`p"Q'iL7@r2+7ANu/ $k r"J4+SBQQ$IAQ$_Nu"k k1p2<QNu"k SAkCrpQpNuk$k p2 4+SB|g*0<2<Jf QNuFQNuHA0@A2IIA8z-|JVg~D/4+SB0<2<+)+ QLJg 0+FS@fNu2<k"k p1 `/6+SCSC4+SB2<$k J@j Sx8AQ6Q(Nu0+S@S@ Sx8A`Q6Q(Nu"ip`k"ip7@'iLC'IP&Nu`t`>``` ``D|g p"i` p"i'iL7@Nu4+SB"H2QQAPQNuP4+FAPSBfNuP4+SB0<rPJf QNuFQNuPp2<PQNuPp@QpNu6+SCSC4+SBrP"SJ@j$IA0QCPQNu0+S@A$HC0QAQNu$k6+SC SN$k S"kAN$k SN SSC$kN SSC$kN B"np0+$kN$kNpa0+S@7@BkNupaBNuJ. fH :+4+2+RA6+AoSCgx?a4RBSEfL0Nu?.?<aRXJ@Nu=CA (-HNua46.`< far a`A "nf?a 2`-INu .A (g Hn (/?.?<@NAO g `J. jBaˈf `4JnfA??.?<a o \f?< ?.?<a\LNuHJ. g 0< dr `HJ. f< g 0+kgL Rk~a@LNuNqBk0+k`x LJf*SEaa6+tDP4@aak< g<g<g\<gt|Gg|Kg4|Mg8Jgƺn g0REDg AP`S@fal@RDB4Pax`JDgaXSD`DgaNRD`JDgaD0Dg A@XS@fSDSE`0DgdA@XS@fSE`a< Nua8Bxz`.?tD6+Q4@a,2Nu?+ Lar a7_Nu?+4. a7_Nu/ ntn8.a`$_A p W| BA 'HHBkL~P/ (KG4,6,nr Jg J,Fgr0,FH0aL RBA gH1Jfr azLRB`2,SA4,6,H0azL 2,lajLSB6,af2,4,l6,aR&L(_Nu-Ip nt0<?BQ<ng 4<(6<x`4<P6<x` 4<P6<2xprG ntaB0+R@=@pABhNQBL&<nL(gL.H=E =F Nu N;N;&uNN 2 5 25NN X2 5X 25&& X&&B.#Iz<n IgIaa&aBpLQaba\LHLHGJg/ &nJkgQPa&_-KPP`6<8 .g&t|8f6<CNJv0fQNuG0`GdtJkg+FgNQNuHHz*aQQaJBkGJkgPPa2`4LNur2+p+>@|(NNu``&`D`h A|erA?A'HHNuAn'HHtv |(dtvB@C?NuA&dr<dr<erA?A'HHNu|?Ab'HHNuPC:SR:A7'Divide by zeroCHK exceptionTRAPV exceptionPrivilege violationTraceBad interruptInvalid TRAPIllegal exceptionBreakpointD:A:Searching...Address errorBus error ; , Text: Data: BSS : Current Breakpoints: Data start,end<,size>Cross-reference listFilenameDisassemblyMemoryMonST 2.02 HiSoft 1988RegistersSource code ESC to abort Window start address?[Return] Filename to loadSource file to loadExecutable file to loadCommand lineProgram terminatedRegister=valueTOS error: 12345Cannot runIn ROM!It's odd!Cannot write!Too many breakpoints!Run until PC=Kill all breakpoints Y/N?Breakpoint address<,param>HistorySearch for B/W/L/T/I? Printer not respondingRegister to lockEnter expressionSymbolsPREFERENCESScreen timer Y/N? Follow traps Y/N? Relative offsets Y/N? Ignore case Y/N? Symbol lengthTop of RAMBDOS BreakpointCopy start,end,toFill start,end,withSet current drive/directorySave binary, filenamestart address,endRun: Go,Until,Instruction,Slow Watch Y/N? HelpDisassemble start,endRe-install exceptionsSave preferences Y/N? MONST2.INFJj-D`JAj-DA` a`fB d0Nu$p/t?fJgP²< o^02Q$NuH@ @pgQJ(g\p gQLNuA0g NuTFHILSCCCSNEEQVCVSPLMIGELTGTLEAH.P NuBWL?AH NuTST CHG CLR SET 0NuH@00NBSQNu>B.uA BR4XXfBA Sg`IUeQa BNuA:EMaNuXFB0@P&Fb,|XX0`a#Jf2a"`<g"a.`2a,?<a8B#2aJ,x=0fxe`: < mE;P`?xa>.t-nx|Qt?,2< iA4JBx?a0J.tgJgPuLxAHxNu@tNu2`0Nua,#2`aA`,USP G< e1 0Nu$<.gRa4`z.xd<Jg:<Pg2x=`,zxa$,`Dzxa,`@ a?xla|v<,pVQQ6[<DaJgJg/6<AJg$pg@|7JgSg*Jf -7NuSf-|6/` Jg`/SdSNu RaJ<48< f2ar,x4aD|vNuaR`zxa.OO0,DNuzxda< 2i,A`&2IaD0," 4H҂Ү $`2IAanBx=`a#2IIAfra,x?`0@2II<@g<Hg&<g2??NuDa,D`Aax,A`Daf,A`2Ig <ga`S(BRA `S(BSR g|.S HHҍҮ $` 2HU`a,D2II`p 4Xfa4JJg$-(AaA(aa)NuDa,D`),-(AaP<fI`02(AazAa2IIah)+Nu)+,(AA:M`R:::ZZZ R(CMPAaxa,A2II` Aaaxa,D`CMPAaaDa,x=`EOR0@|@g |Hg|fI(EXG `<gNaT0@fxa^,D2II`xD2IIaj,0@x?|g*8<<`":MRaxa,A2II`(2<g< aHa2IIf#Afra,D`D`Ia  zx<`AAв<fXrLpfrRNuASLSRORO2`CagNuI>(/a| [ _"(0(|g4|g*|g?C pgQ..`*`=aJ]NuNu2A4J<A` 2zjgD`gJgA`gtf(a -@xEv`0@@|f .Jgp 6$Nu(Aa)Nugla+Nug^-.tfaEp;PxNug62Htf aЁ-@xEvJ$gV . "g&TeJ\dD0H/RaLgal`.J.!g$<g0H/tJж $$abgaB`a`6H0X@<|<f/A f _` a.Ef 1Q2J QJEf !B1CpNu JapNupAf JhgpNuHQpNupAa HQNuJhgBh"P QJf2Nu-I|=Q2JNuA-HhpBFJQNu nhCp Q D0J LChfA-HhNuEya|?aA'HHaja`Jra$a8ara4a0a 8aara$aa+? agaۢRa/ $\a`a$_aܵfIhgJFfVNu/ /vaN _aҌ7|0+kIBxaf"adfJg aI`/a$&_pNua&_tNutn ELnnBHC G8B+Fa7|7kNu/a _aa IBxNu/ /LtvEa _a 0. @k _/"HJfC0 H7@ _`Ѱ/ C`aak<g< fa&_Nu/ IDr2EaB(_A`NuC ?atak߲<Yg<Ng <g/f>a2<YNux}x~ .|tg4-@x=x@=xBx`1@1B`uvNu=|pa6`=|pa,`yz1@1BNu 8ffgNu..fNuJ.lg=|(pNuaFx@aFx@Nu-_-xA!NM!/.Nu-_-xA!NN`AG0gHh/??<NMP& _`QiPjz(l=|r=|p@|Hz?<E?<NMP-@F-xA*!=|rHz\?<!?<NM-@PNuG~0gHk/ ??<NMP&_`A!Hz ?<!?<NMPNuAFG0gHh/??<NMP _`/.?<E?<NMP!/.?<!?<NMPNu\^  #$%&'()*+,//p`/p/,zPjH?-_<-_\6=_J-_L-ODO?.Of($nLEafE afTpbWf-JL0`\/p `,/p`&/p` /p`/p`/p`/p`/p U/,zPjH?-_<-_=_J-_L-ODONh-H@ /.8"nL< g8<g<||BB.n"nL?a˂aaZGaB2a;Pk-_`aJf.ngAhLgp nx (@<gn<gJ.og(agl nx (@||a aaa nx (@J.mg.J<gJ`B.nJ`I hafJfJg nx (@x ` Sfr` nB"P2J0.J@n=@JjJ.ng`Hnvgp|gzPabfZHaL0(|g>|g(|gI HàLfTJfPJgL`R`DSg`<2Bhx ``x `Z-nxLafx`J2p-@| n"P2JaH.Of$nLaf "JagJnJjh.Of`$nLatfV0@J.mg.|N@gD@|f: nD! 1.JJ-y(L-HD`|N@g@|g|gQj.nD n@N`/.L?.JLNs0(@|N@g0.J@=@-H2J`J2-HaBJ`|NuB//,zJ.ig@/AeA(e _QiJ.ngB.n` _QiJ.ngB.n`o 0.pkS@fap=@p/n,_ Nuaa2CnJ`H` z/< !xA!NMX zt!LgPiNu hNBH瀀 zN0(rk:J(jf4/ f&/NhP _f"U z(1|rB(nLX`og/hLNuAMP`V`NsHz*?< NA\/<?< ?<NMPBg/<?<1NANOTRACE installed HiSoft 1988  * A TSR (terminate-and-stay-resident) demo program that also has * the useful feature of pointing the default trace exception vector * to an RTE, as described in the MonST Chapter. * * This demo shows how to write a Terminate and Stay resident * program. It does *not* try to be super-smart whereby the code * is copied to the basepage to save memory, to preserve clarity. start bra.s real_start TSR_start *- here starts the code to be TSRed bclr #7,(sp) works on 68000/10/20/30! rte *- here ends the code to be TSRed even keep_length equ *-start real_start * print a message via GEMDOS - this should be before the vector patching * in case Ctrl-C is pressed during the printing pea hellotx(pc) move.w #9,-(sp) trap #1 addq.l #6,sp *- any initialisation for the TSR goes here move.l #TSR_start,-(sp) move.w #9,-(sp) Trace vector number move.w #5,-(sp) setexc trap #13 addq.l #8,sp lose old one *- end initialisation clr.w -(sp) move.l #$100+keep_length,-(sp) $100 for basepage move.w #$31,-(sp) p_termres trap #1 that's the end hellotx dc.b 'NOTRACE installed ',189,' HiSoft 1988',13,10,0 _This contains information to supplement that in the manual. This is DevpacST Version 2.08 The HiSoft File Selector can be found in the FSEL folder. The .TXT file contains its documentation. Assembler 2.08 = The new directives TEXT, DATA and BSS are supported for increased compatibility. They are the same as specifying SECTION xxx. IMPORTANT: The DCB directive (page 52) now works as described. Previously the order of the parameters were reversed, so existing code which relied on the bug will no longer work. Similarly the optimising numbers in the OPT O directive (page 48) are now implemented as described. Previously you had to use one less than the documented numbers. The LIST + and - directives (page 53) now work exactly as described. Incorrect divide-by-zero errors on pass 1 no longer occur. The destination of a MOVE is not allowed to be (PC) relative. Register equates are allowed in ADDX/SUBX/ABCD/SBCD. It was possible to crash the editor if a block was deleted and the cursor was within the block. The .TTP version now returns a GEMDOS return code to indicate the success or otherwise of the assembly. Values are: 100 main file not found 20 fatal error 10 error(s) 5 warning(s) 0 OK The AESLIB.S file has been updated. Debugger 2.02 = The Follow Traps option works on Line A op-codes. Disassembling with Long-sized data areas works. The Effective Address display in the register window correctly shows memory around the stack when in supervisor mode. Assembler 2.07 = A problem with GST sections has been corrected. The editor Delete File function has been fixed (it was broken in 2.06 only). Assembler 2.06 = The following bugs have been fixed: type checks on PC-relative with index; FORMAT; IFND/IFD with SET labels. In addition a new form of local label is supported, denoted with decimal digits ending with a $ sign, e.g. 1234$. This is to improve compatibility. The AESLIB.S file has been updated. Assembler 2.04 = The following bugs have been fixed: GEMDOS MALLOC problem; the optimiser being memory hungry; assembling DRI code to no-where; low-memory GST output; mixing macros and repeat loops; INCBIN and odd-length files; INCBIN and ORG together. INCBIN is now forced to start on an even boundary and is padded with a null byte if the file is odd in length. Editor 2.02 = There is a new option under Preferences, called End of Line. When Wrap is selected the cursor behaves differently when you  or  past the ends of a line. Try it and see if you like it. Assembler 2.02 = There is a new option, OPT A+, which enables automatic-PC mode where possible. For example the line MOVE.L int_in,d0 would get assembled as MOVE.L int_in(pc),d0. Note that this does not guarantee position- independent code, but does reduce program size and execution times. It is used in the GEMTEST program to good effect. This may have to be overidden (when reading absolute memory for example) and this may be done by using the (expression).L form, similar to that detailed on page 43 for short word addressing. There is a new option determining the speed of the assembler, available in the assembly options dialog box. Under normal circumstances leave the Fast button selected, but only if the assembler runs out of memory should you select Slow. This forces the assembler to use as little memory as possible which slows down disk accesses. It can slow down to a little faster than GenST Version 1 (which isn't actually that slow!). The .TTP version may be set to slow mode using the command line option -M. The assembler can now generate code suitable for linking with OSS Personal Pascal (Pascal Plus in Germany). For further details please quote your DevpacST and, if a UK customer, your Pascal serial numbers. Bugs fixed include the ORG, CNOP, ENDC and REPT directives. Debugger 2.01 = The debugger can now save its Preferences in a MONST2.INF file. There is a new command, Ctrl-S, that skips the current instruction. It is equivalent to setting the PC to be x words further on, ideal for not executing instructions you know are going to produce nasty results. The machine may be reset by pressing the combination Ctrl-Alt-NumericDot when in the debugger. No warning is given. Linker 2.01 = A bug to do with large library files has been corrected. Source Files 2.01 = The GEMTEST, AESLIB, VDILIB and GEMMACRO files have been updated. Editor 2.00 = Not a new feature at all really, we've just never documented it before. To search and/or replace Tab characters press Ctrl-I in the dialog box They will be echoed as clock face characters. Ctrl-M must *not* be used as a substitute for CR. Strange characters, like   and  may be entered by typing a special character, say ?, then using  the Find dialog box to replace it with the required Ctrl- characters. When using Run Other to run a program you may pass the name of thej file you are currently editing by including a % in the command line, which will be expanded. A true % may be specified using %% Assembler 2.00 = The default for option M, macro expansions, is OPT M-. The directive OPT U+ changes local labels start with underlines (_) instead of periods, to allow code to be generated for the Prospero range of languages. In the .TTP version the tab size used when listing may be specified using the option -Txx, for example -T10. Debugger 2.00 = The command Ctrl-E forces all exceptions to be re-installed. This can be useful when dealing with compiled programs whose run-times use the exceptions themselves. If you enter AMONST2 during the boot sequence you may abort its installation by quitting with Ctrl-R instead of Ctrl-C. Please note decimal numbers are now denoted with \, not # as in version 1. Linker 2.00 = An additional directive is allowed in control files: TRUNCATE This truncates all symbols to 8 characters, sometimes required to link assembly language with long labels to compiled code with short labels. Lattice C Users = Now supplied is a replacement C.LNK file for use with Lattice C 3.04. Using it with LINKST will reduce your link times and also reduce your output file size by using a true BSS-type section. If you use the -n option of the compiler (page 132) you will be able to specify HiSoft Extended Debug when linking, allowing longer and more meaningful symbols when debugging with MonST2. Manual Corrections = Page 65, the macro expansion at the bottom of the page should show the binary number as %0110. Page 156, addr_out consists of longwords, not words. Page 158, the parameter list to evnt_multi has two missing:  evnt_multi flags,clicks,mask,bstate,m1flags,m1x,m1y,m1w,m1h,   & m2flags,m2x,m2y,m2w,m2h,messagebuf.L,count.L  Page 94, under Lock Window it should read 'disassembly and memory windows' Page 161, under fsel_input, should read 'If D0.W is *zero* on return then it means' Page 164, Clear Workstation is v_clrwk, not v_clrwrk Developer Version = Please note that the Developer version described on Page 180 is not yet available. If you are interested in it please write to us and your details will be put on file, you will be then contacted when it is available. Last changed: 2nd October 1988  * VDI Library Copyright (C) HiSoft 1988 * 31.5.88 vqt_extent fixed * macro to jump to a given VDI routine govdi macro vdi_number IFNE (\1)<128 moveq #\1,d0 ELSEIF move.w #\1,d0 ENDC bra CALL_VDI endm DEFV macro name MODULE \1 SECTION TEXT XREF CALL_VDI,LOW_VDI XREF contrl,contrl1,contrl3,contrl6 XREF intin,ptsin,intout,ptsout XREF vdi_params,current_handle endm EXPORT macro name \1 XDEF \1 endm docont macro contrl1,contrl3 IFEQ \1 clr.w contrl1 ELSEIF move.w #\1,contrl1 ENDC IFEQ \2 clr.w contrl3 ELSEIF move.w #\2,contrl3 ENDC endm DEFV Workstations EXPORT v_opnwk moveq #1,d0 v_opall docont 0,11 bsr LOW_VDI move.w contrl6,current_handle rts EXPORT v_clswk docont 0,0 govdi 2 EXPORT v_opnvwk moveq #100,d0 move.w current_handle,contrl6 bra.s v_opall EXPORT v_clsvwk docont 0,0 govdi 101 EXPORT v_clrwk moveq #3,d0 v_zeroz docont 0,0 bra CALL_VDI EXPORT v_updwk moveq #4,d0 bra.s v_zeroz EXPORT vst_load_fonts moveq #119,d0 vfont_all docont 0,1 clr.w intin bsr CALL_VDI move.w intout,d0 rts EXPORT vst_unload_fonts moveq #120,d0 bra.s vfont_all EXPORT vs_clip docont 2,1 govdi 129 DEFV OutputFunctions EXPORT v_pline moveq #6,d0 v_pall clr.w contrl3 bra CALL_VDI EXPORT v_pmarker moveq #7,d0 bra.s v_pall EXPORT v_fillarea moveq #9,d0 bra.s v_pall EXPORT v_gtext moveq #0,d0 moveq #0,d1 lea intin,a1 .copy move.b (a0)+,d1 convert C string into words beq.s .end move.w d1,(a1)+ addq.b #1,d0 bpl.s .copy .end move.w d0,contrl3 move.w #1,contrl1 govdi 8 EXPORT v_contourfill docont 1,1 govdi 103 EXPORT vr_recfl docont 2,0 govdi 114 EXPORT v_pieslice moveq #3,d0 bra.s gdp_arcpie EXPORT v_arc moveq #2,d0 gdp_arcpie docont 4,2 clr.l ptsin+4 clr.l ptsin+8 clr.w ptsin+14 bra gdp_all EXPORT v_bar docont 2,0 moveq #1,d0 bra.s gdp_all EXPORT v_circle docont 3,0 moveq #4,d0 clr.l ptsin+4 clr.w ptsin+10 bra.s gdp_all EXPORT v_ellarc docont 2,2 moveq #6,d0 bra.s gdp_all EXPORT v_ellpie docont 2,2 moveq #7,d0 bra.s gdp_all EXPORT v_ellipse docont 2,0 moveq #5,d0 bra.s gdp_all EXPORT v_rbox moveq #8,d0 gdp_box docont 2,0 gdp_all move.w d0,contrl+10 govdi 11 EXPORT v_rfbox moveq #8,d0 bra.s gdp_box EXPORT v_justified moveq #2,d0 moveq #0,d1 lea intin+4,a1 .copy move.b (a0)+,d1 convert C string into words beq.s .end move.w d1,(a1)+ addq.b #1,d0 bpl.s .copy .end move.w d0,contrl3 move.w #2,contrl1 moveq #10,d0 bra.s gdp_all DEFV AttributeFunctions EXPORT vswr_mode docont 0,1 govdi 32 EXPORT vs_color docont 0,4 govdi 14 EXPORT vsl_type docont 0,1 govdi 15 EXPORT vsl_udsty docont 0,1 govdi 113 EXPORT vsl_width docont 1,0 clr.w ptsin+2 govdi 16 EXPORT vsl_color docont 0,1 govdi 17 EXPORT vsl_ends docont 0,2 govdi 108 EXPORT vsm_type docont 0,1 govdi 18 EXPORT vsm_height docont 1,0 clr.w ptsin govdi 19 EXPORT vsm_color docont 0,1 govdi 20 EXPORT vst_height docont 1,0 clr.w ptsin govdi 12 EXPORT vst_point docont 0,1 govdi 107 EXPORT vst_rotation docont 0,1 govdi 13 EXPORT vst_font docont 0,1 govdi 21 EXPORT vst_color docont 0,1 govdi 22 EXPORT vst_effects docont 0,1 govdi 106 EXPORT vst_alignment docont 0,2 govdi 39 EXPORT vsf_interior docont 0,1 govdi 23 EXPORT vsf_style docont 0,1 govdi 24 EXPORT vsf_color docont 0,1 govdi 25 EXPORT vsf_perimeter docont 0,1 govdi 104 EXPORT vsf_updat clr.w contrl1 govdi 112 DEFV RastorOps EXPORT vro_cpyfm docont 4,1 govdi 109 EXPORT vrt_cpyfm docont 4,3 govdi 121 EXPORT vr_trnfm docont 0,0 govdi 110 EXPORT v_get_pixel docont 1,0 govdi 105 DEFV InputFunctions EXPORT vex_timv docont 0,0 govdi 118 EXPORT v_show_c docont 0,1 govdi 122 EXPORT v_hide_c docont 0,0 govdi 123 EXPORT vq_mouse docont 0,0 govdi 124 EXPORT vex_butv docont 0,0 govdi 125 EXPORT vex_motv docont 0,0 govdi 126 EXPORT vex_curv docont 0,0 govdi 127 EXPORT vq_key_s docont 0,0 govdi 128 DEFV InquireFunctions EXPORT vq_extnd docont 0,1 govdi 102 EXPORT vq_color docont 0,2 govdi 26 EXPORT vql_attributes docont 0,0 govdi 35 EXPORT vqm_attributes docont 0,0 govdi 36 EXPORT vqf_attributes docont 0,0 govdi 37 EXPORT vqt_attributes docont 0,0 govdi 38 EXPORT vqt_extent moveq #0,d0 moveq #0,d1 lea intin,a1 .copy move.b (a0)+,d1 convert C string into words beq.s .end move.w d1,(a1)+ addq.b #1,d0 bpl.s .copy .end move.w d0,contrl3 clr.w contrl1 govdi 116 EXPORT vqt_width docont 0,1 govdi 117 EXPORT vqt_name docont 0,1 govdi 130 EXPORT vqt_fontinfo docont 0,0 govdi 131 * the actual calling of the VDI MODULE LowLevelVDI XDEF CALL_VDI,LOW_VDI XDEF contrl,contrl1,contrl3,contrl6 XDEF intin,intout,ptsin,ptsout XDEF current_handle,vdi_params SECTION TEXT * call a VDI routine * in: d0.w=VDI function number * out none * uses d0-d2/a0-a2 * uses the current handle CALL_VDI move.w current_handle,contrl6 LOW_VDI move.w d0,contrl store the op code move.l #vdi_params,d1 move.w #115,d0 function number trap #2 rts SECTION DATA * this is a table of pointers to all the VDI arrays vdi_params dc.l contrl,intin,ptsin,intout,ptsout SECTION BSS * these don't need initialising so can go in the BSS section current_handle ds.w 1 used by all VDI calls contrl ds.w 1 contrl1 ds.w 1 contrl2 ds.w 1 contrl3 ds.w 1 contrl4 ds.w 1 contrl5 ds.w 1 contrl6 ds.w 1 contrl7 ds.w 1 contrl8 ds.w 1 contrl9 ds.w 1 contrl10 ds.w 1 contrl11 ds.w 1 intin ds.w 128 min 30 intout ds.w 128 min 45 ptsin ds.w 128 min 30 ptsout ds.w 128 min 12 * END OF VDI * This contains information to supplement that in the manual. This is DevpacST Version 2.08 The HiSoft File Selector can be found in the FSEL folder. The .TXT file contains its documentation. Debugger 2.02 = The Follow Traps option works on Line A op-codes. Disassembling with Long-sized data areas works. The Effective Address display in the register window correctly shows memory around the stack when in supervisor mode. Assembler 2.07 = A problem with GST sections has been corrected. The editor Delete File function has been fixed (it was broken in 2.06 only). Assembler 2.06 = The following bugs have been fixed: type checks on PC-relative with index; FORMAT; IFND/IFD with SET labels. In addition a new form of local label is supported, denoted with decimal digits ending with a $ sign, e.g. 1234$. This is to improve compatibility. The AESLIB.S file has been updated. Assembler 2.04 = The following bugs have been fixed: GEMDOS MALLOC problem; the optimiser being memory hungry; assembling DRI code to no-where; low-memory GST output; mixing macros and repeat loops; INCBIN and odd-length files; INCBIN and ORG together. INCBIN is now forced to start on an even boundary and is padded with a null byte if the file is odd in length. Editor 2.02 = There is a new option under Preferences, called End of Line. When Wrap is selected the cursor behaves differently when you  or  past the ends of a line. Try it and see if you like it. Assembler 2.02 = There is a new option, OPT A+, which enables automatic-PC mode where possible. For example the line MOVE.L int_in,d0 would get assembled as MOVE.L int_in(pc),d0. Note that this does not guarantee position- independent code, but does reduce program size and execution times. It is used in the GEMTEST program to good effect. This may have to be overidden (when reading absolute memory for example) and this may be done by using the (expression).L form, similar to that for short word addressing. There is a new option determining the speed of the assembler, available in the assembly options dialog box. Under normal circumstances leave the Fast button selected, but only if the assembler runs out of memory should you select Slow. This forces the assembler to use as little memory as possible which slows down disk accesses. It can slow down to a little faster than GenST Version 1 (which isn't actually that slow!). The .TTP version may be set to slow mode using the command line option -M. The assembler can now generate code suitable for linking with OSS Personal Pascal (Pascal Plus in Germany). For further details please quote your DevpacST and, if a UK customer, your Pascal serial numbers. Bugs fixed include the ORG, CNOP, ENDC and REPT directives. Debugger 2.01 = The debugger can now save its Preferences in a MONST2.INF file. There is a new command, Ctrl-S, that skips the current instruction. It is equivalent to setting the PC to be x words further on, ideal for not executing instructions you know are going to produce nasty results. The machine may be reset by pressing the combination Ctrl-Alt-NumericDot when in the debugger. No warning is given. Linker 2.01 = A bug to do with large library files has been corrected. Source Files 2.01 = The GEMTEST, AESLIB, VDILIB and GEMMACRO files have been updated. Editor 2.00 = Not a new feature at all really, we've just never documented it before. To search and/or replace Tab characters press Ctrl-I in the dialog box They will be echoed as clock face characters. Ctrl-M must *not* be used as a substitute for CR. Strange characters, like   and  may be entered by typing a special character, say ?, then using  the Find dialog box to replace it with the required Ctrl- characters. When using Run Other to run a program you may pass the name of the file you are currently editing by including a % in the command line, which will be expanded. A true % may be specified using %% Assembler 2.00 = The default for option M, macro expansions, is OPT M-. The directive OPT U+ changes local labels start with underlines (_) instead of periods, to allow code to be generated for the Prospero range of languages. In the .TTP version the tab size used when listing may be specified using the option -Txx, for example -T10. Debugger 2.00 = The command Ctrl-E forces all exceptions to be re-installed. This can be useful when dealing with compiled programs whose run-times use the exceptions themselves. If you enter AMONST2 during the boot sequence you may abort its installation by quitting with Ctrl-R instead of Ctrl-C. Please note decimal numbers are now denoted with \, not # as in version 1. Linker 2.00 = An additional directive is allowed in control files: TRUNCATE This truncates all symbols to 8 characters, sometimes required to link assembly language with long labels to compiled code with short labels. Lattice C Users = Now supplied is a replacement C.LNK file for use with Lattice C 3.04. Using it with LINKST will reduce your link times and also reduce your output file size by using a true BSS-type section. If you use the -n option of the compiler you will be able to specify HiSoft Extended Debug when linking, allowing longer and more meaningful symbols when debugging with MonST2. Manual Corrections = Page 176, the parameter list to evnt_multi messbuf.l should readmessagebuf.L Page 182, Clear Workstation is v_clrwk, not v_clrwrk Developer Version = Please note that the Developer version described on Page 203 is not yet available. If you are interested in it please write to us and your details will be put on file, you will be then contacted when it is available. Last changed: 12 December 1988 (page 52) now works as described. Previously the order of the parameters were reversed, so existing code which relied on