Home » Archimedes archive » Archimedes World » AW-1994-02-Disc1.adf » Disk1Feb94 » !AWFeb94/Goodies/Aztec/!AZTECS/azteclib

!AWFeb94/Goodies/Aztec/!AZTECS/azteclib

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Archimedes World » AW-1994-02-Disc1.adf » Disk1Feb94
Filename: !AWFeb94/Goodies/Aztec/!AZTECS/azteclib
Read OK:
File size: 5288 bytes
Load address: 0000
Exec address: 0000
File contents
    0REMOSCLISCSI::SCSIDisc4.$.CoverDisks.!AZTECS.azteclib
    1REM >azteclib contains PROCS -
    2
    3DEFPROCpull_variables
    4fonts%=!(H%+&00)
    5letters%=!(H%+&04)
    6sp_on_vga%=!(H%+&08)
    7put_sp%=!(H%+&0C)
    8sp_name%=!(H%+&10)
    9drawit%=!(H%+&14)
   10copyscr%=!(H%+&18)
   11crunchsp%=!(H%+&1C)
   12expandsp%=!(H%+&20)
   13cspname%=!(H%+&24)
   14nspname%=!(H%+&28)
   15blowupscr%=!(H%+&2C)
   16sp_on_cga%=!(H%+&30)
   17scrolldn%=!(H%+&34)
   18scrollup%=!(H%+&38)
   19copirow%=!(H%+&3C)
   20
   21AREA%=H%+4*1024:REM 4K mc
   22ENDPROC
   23
   24DEFPROCput_sp(A%,B%,C%,D%,E%,F%,G%,sp_name$,wleft%,wbottom%,wright%,wtop%,orient%)
   25REM A%=screen,(B%,C%)=(x,y),D%=mask col,E%F%G%=behind cols.wl,wb,wr,wt=window for sp.orient%=00normal,&01mirror,&10upsdiedn,&11both
   26!(H%+&CC)=orient%>>>4:!(H%+&D0)=orient%AND&0F
   27FORlett%=1TOLEN(sp_name$):?(sp_name%+(lett%-1))=ASC(MID$(sp_name$,lett%,1)):NEXT
   28IFLEN(sp_name$)<12:FORlett%=LEN(sp_name$)+1TO12:?(sp_name%+(lett%-1))=&00:NEXT
   29SYS "OS_SpriteOp",&128,AREA%,sp_name$ TO ,,,sp_wide%,sp_hite%
   30sp_hite%=sp_hite%-1:sp_wide%=(sp_wide%/2)-1
   31y_row%=INT(C%/4):x_byte%=INT(B%/4)
   32sp_visible%=0
   33IF (y_row%>INT(wtop% / 4)) OR ((y_row%+sp_hite%)<INT(wbottom% / 4)) OR ((x_byte%+sp_wide%)<INT(wleft% / 4)) OR (x_byte%>INT(wright% / 4)) THEN
   34 sp_visible%=1
   35ELSE
   36 PROCcalc_E0 : REM !(H%+&E0) = start row in sprite image
   37 PROCcalc_E4 : REM !(H%+&E4) = no.rows-1 of sprite to display
   38 PROCcalc_E8 : REM !(H%+&E8) = starting byte no. in each sprite row
   39 PROCcalc_EC : REM !(H%+&EC) = no.bytes-1 to display in each row
   40ENDIF
   41IFsp_visible%=0:CALL put_sp%
   42ENDPROC
   43
   44DEFPROCcalc_E0
   45  IF (y_row%+sp_hite%) <= INT(wtop% / 4) THEN
   46    IF (orient%>>>4)=0 THEN
   47      !(H%+&E0)=0
   48    ELSE
   49      !(H%+&E0)=sp_hite%
   50    ENDIF
   51    !(H%+&D4)=0
   52  ELSE
   53    IF (orient%>>>4)=0 THEN
   54      !(H%+&E0)=sp_hite%-(INT(wtop% / 4)-y_row%)
   55    ELSE
   56      !(H%+&E0)=INT(wtop% / 4)-y_row%
   57    ENDIF
   58    !(H%+&D4)=sp_hite%-(INT(wtop% / 4)-y_row%)
   59  ENDIF
   60ENDPROC
   61
   62DEFPROCcalc_E4
   63  IF INT(wbottom% / 4) <= y_row% THEN
   64    IF (orient%>>>4)=0 THEN
   65      !(H%+&E4)=sp_hite%-!(H%+&E0)
   66    ELSE
   67      !(H%+&E4)=!(H%+&E0)
   68    ENDIF
   69  ELSE
   70    IF (orient%>>>4)=0 THEN
   71      !(H%+&E4)=sp_hite%-(INT(wbottom% / 4)-y_row%)-!(H%+&E0)
   72    ELSE
   73      !(H%+&E4)=y_row%+!(H%+&E0)-INT(wbottom% / 4)
   74    ENDIF
   75  ENDIF
   76ENDPROC
   77
   78DEFPROCcalc_E8
   79  IF x_byte% >= INT(wleft% / 4) THEN
   80    IF (orient%AND&0F)=0 THEN
   81      !(H%+&E8)=0
   82    ELSE
   83      !(H%+&E8)=sp_wide%
   84    ENDIF
   85    !(H%+&D8)=0
   86  ELSE
   87    IF (orient%AND&0F)=0 THEN
   88      !(H%+&E8)=INT(wleft% / 4)-x_byte%
   89    ELSE
   90      !(H%+&E8)=sp_wide%-(INT(wleft% / 4)-x_byte%)
   91    ENDIF
   92    !(H%+&D8)=INT(wleft% / 4)-x_byte%
   93  ENDIF
   94ENDPROC
   95
   96DEFPROCcalc_EC
   97  IF (x_byte% + sp_wide%) <= INT(wright% / 4) THEN
   98    IF (orient%AND&0F)=0 THEN
   99      !(H%+&EC)=sp_wide%-!(H%+&E8)
  100    ELSE
  101      !(H%+&EC)=!(H%+&E8)
  102    ENDIF
  103  ELSE
  104    IF (orient%AND&0F)=0 THEN
  105      !(H%+&EC)=INT(wright% / 4)-x_byte%-!(H%+&E8)
  106    ELSE
  107      !(H%+&EC)=!(H%+&E8)-(x_byte%+sp_wide%-INT(wright% / 4))
  108    ENDIF
  109  ENDIF
  110ENDPROC
  111
  112DEFPROCpalette
  113RESTORE +0
  114DATA 255,255,255,170,170,170,102,102,102,0,0,0,0,0,153,0,51,255,0,204,255,255,136,0,221,0,0,255,255,0,136,17,0,255,204,153,0,119,34,0,187,0,0,255,34,187,85,0
  115FOR i%=0 TO 15:READ r%, g%, b%:VDU 19,i%,16,r%,g%,b%:NEXT
  116ENDPROC
  117
  118DEFPROCwait(delay%)
  119a%=TIME:REPEATUNTILTIME>=a%+delay%
  120ENDPROC
  121
  122DEFPROCwords(A%,B%,big%,words$)
  123E%=3:IFbig%:C%=320:D%=360:ELSE:C%=240:D%=270
  124FORlett%=1TOLEN(words$):?(letters%+(lett%-1))=ASC(MID$(words$,lett%,1)):NEXT
  125?(letters%+LEN(words$))=&0D
  126CALL fonts%
  127ENDPROC
  128
  129DEFPROCjpwords(A%,B%,big%,words$)
  130E%=5:IFbig%:C%=320:D%=360:ELSE:C%=240:D%=270
  131FORlett%=1TOLEN(words$):?(letters%+(lett%-1))=ASC(MID$(words$,lett%,1)):NEXT
  132?(letters%+LEN(words$))=&0D
  133CALL fonts%
  134ENDPROC
  135
  136DEFPROCscrcopy21
  137SYS "OS_Byte",113,2:A%=2:B%=1
  138CALL copyscr%
  139WAIT:SYS "OS_Byte",113,1:SYS "OS_Byte",112,1:VDU 26
  140ENDPROC
  141
  142DEFPROCscrcopy21exp(A%,B%,C%,D%,E%,F%)
  143CALL blowupscr%
  144ENDPROC
  145
  146DEFPROCexplode(xpos%,ypos%,auto%)
  147REM C%=right speed:D%=down speed:E%=left speed:F%=up speed
  148A%=INT(xpos%/4):B%=240-INT(ypos%/4):IFB%>177:B%=177
  149IFauto%THEN
  150C%=319-A%:D%=179-B%:E%=A%:F%=B%:fact%=C%
  151IFD%<fact%:fact%=D%
  152IFE%<fact%:fact%=E%
  153IFF%<fact%:fact%=F%
  154C%=INT(C%/fact%):D%=INT(D%/fact%):E%=INT(E%/fact%):F%=INT(F%/fact%)
  155IFC%>6:C%=6
  156IFD%>6:D%=6
  157IFE%>6:E%=6
  158IFF%>6:F%=6
  159ENDIF
  160B%=(H%!&F0)*B%:D%=(H%!&F0)*D%:F%=(H%!&F0)*F%
  161PROCscrcopy21exp(A%,B%,C%,D%,E%,F%)
  162ENDPROC
  163
  164DEFPROClib_initialise
  165REMONERROR SYS"OS_Byte",250,0,255 TO ,scr%:SYS"OS_Byte",113,scr%:PRINT REPORT$+" (Internal error code "+STR$ERL+")"+CHR$0:x=GET:PROCdesk_top
  166ONERROR:PROCdesk_top
  167PROCpull_variables:PROCpalette
  168DIM SCALE% 16:!(SCALE%+0)=16:!(SCALE%+4)=16*(H%!&F0):!(SCALE%+8)=16:!(SCALE%+12)=16
  169SYS "OS_SpriteOp",&10A,AREA%,"<AZTEC$chaindir>.buttons_c"
  170left%=12:low%=256:right%=1267:high%=947
  171VDU 23,17,4,1,0,0,0,0,0,0 : REM RISC OS interleaving ECFs
  172DIM input_disk_name% 256
  173DIM pdrect% 16,pdrect2% 16,pdtrans% 16,pdplot% 8
  174DIM scale% 16,ctrans% 256,paltab% 64
  175maxbut%=13
  176DIM coords%(maxbut%,1),width%(maxbut%),height%(maxbut%),ec_width%(maxbut%),ec_height%(maxbut%),buttype%(maxbut%),labels$(maxbut%),lab_offs%(maxbut%,1)
  177DIM but$(2,3),box%(4,1)
  178but$(0,0)="button_off":but$(1,0)="button_over":but$(2,0)="button_on"
  179but$(0,1)="but_off":but$(1,1)="but_over":but$(2,1)="but_on"
  180but$(0,2)="bu_off":but$(1,2)="bu_over":but$(2,2)="bu_on"
  181but$(0,3)="butt_off":but$(1,3)="butt_over":but$(2,3)="butt_on"
  182PROCexpandbuts
  183PROCinit_buts(1000,20,18,16,24,24,1)
  184maxsounds%=20
  185DIM soundmods$(maxsounds%)
  186RESTORE +0
  187DATA dig,lightn,grunt,grind,click,turk,yap
  188DATA snore,hiccup,swallow,flareup,step,stab,Marked4
  189DATA sootthr,MARKED3,engine,goal,steam,rasplg,raspsh
  190FORk%=0TOmaxsounds%:READ soundmods$(k%):NEXT
  191ENDPROC
  192
  193DEFPROCexpandbuts
  194FORk%=0TO2:FORl%=0TO3:PROCexpand(but$(k%,l%)):NEXT:NEXT
  195PROCexpand("mouse")
  196ENDPROC
  197
  198DEFPROCinit_buts(xco%,yco%,wid%,hei%,xoff%,yoff%,butt%)
  199FOR b%=0 TO maxbut%
  200coords%(b%,0)=xco%:coords%(b%,1)=yco%
  201width%(b%)=wid%:height%(b%)=hei%
  202lab_offs%(b%,0)=xoff%:lab_offs%(b%,1)=yoff%
  203buttype%(b%)=butt%
  204NEXT
  205ENDPROC
  206
  207DEFPROCdesk_top
  208CLEAR:DIMbuf% 4:FORi%=1TO16:WAIT:FORc%=0TO16:IFc%<16v%=16 ELSE v%=24
  209SYS"OS_ReadPalette",c%,v% TO ,,d%:!buf%=d%:FORb%=1TO3:IFbuf%?b%>0buf%?b%-=16:NEXT:ELSE:NEXT
  210VDU19,c%,v%,buf%?1,buf%?2,buf%?3:NEXT,
  211*FX15
  212*FX225,1
  213*KEY0 PAGE=&8F00|MOLD|MRUN|M
  214*FX138,0,128
  215*BASIC
  216STOP
  217
  218DEFPROCadd_sp(scr%,spr$,C%,D%,G%)
  219IFscr%=1:A%=H%!&C0:ELSE:A%=H%!&C4
  220SYS "OS_SpriteOp",&118,AREA%,spr$ TO ,,B%:B%+=B%!32
  221IF(H%!&F0)=2THEN
  222D%=2*D%
  223CALL sp_on_vga%
  224ELSE
  225CALL sp_on_cga%
  226ENDIF
  227ENDPROC
  228
  229DEFPROCgo_on
  230coords%(0,1)=20
  231labels$(0)="  Go  on"
  232PROCchoose_but(1,1,2,0)
  233ENDPROC
  234
  235DEFPROCjpgo_on
  236coords%(0,1)=24
  237labels$(0)="  Go  on"
  238PROCchoose_but(1,1,2,18)
  239PROCjpcleartext
  240ENDPROC
  241
  242DEFPROCjpinfo
  243SYS "OS_SpriteOp",&10B,AREA%,"<AZTEC$chaindir>.ONE.jpinfo_c"
  244REMIF(L%>2000)AND(L%<3000):SYS "OS_SpriteOp",&10B,AREA%,"<AZTEC$chaindir>.TWO.jpinfo_c"
  245REMIFL%>3000:SYS "OS_SpriteOp",&10B,AREA%,"<AZTEC$chaindir>.THREE.jpinfo_c"
  246PROCinit_buts(900,40,24,16,26,24,1)
  247labels$(0)=" Jet-pac info"
  248PROCchoose_but(1,1,2,16)
  249VDU18,0,5
  250FORk%=2TO1STEP-1
  251SYS"OS_Byte",112,k%
  252VDU25,4,12;12;:VDU25,101,1266;18;:VDU25,101,1260;low%-22;:VDU25,101,12;low%-28;:VDU25,101,18;12;
  253NEXT
  254PROCadd_sp(1,"jpinfo",102,178,6):PROCadd_sp(2,"jpinfo",102,178,6)
  255PROCinit_buts(1000,20,18,16,24,24,1)
  256ENDPROC
  257
  258DEFPROCjpend
  259PROCdelete("jpinfo"):PROCdelete("jpscan")
  260PROCinit_buts(1000,24,22,16,26,24,1)
  261labels$(0)=" Jet-pac off"
  262PROCchoose_but(1,1,2,16)
  263PROCjpedges:SYS"OS_Byte",112,2:PROCjpedges:SYS"OS_Byte",112,1
  264VDU26
  265PROCinit_buts(1000,20,18,16,24,24,1)
  266ENDPROC
  267
  268DEFPROCjpedges
  269VDU18,0,2:VDU25,4,0;244;:VDU25,101,1278;246;
  270VDU18,0,0:VDU25,4,8;240;:VDU25,101,1268;242;
  271VDU18,0,3:VDU25,4,8;236;:VDU25,101,1268;238;
  272VDU18,0,0:VDU25,4,12;232;:VDU25,101,1266;234;:VDU25,101,1264;12;
  273VDU18,0,2:VDU25,4,12;230;:VDU25,101,14;12;:VDU25,101,1262;14;
  274VDU18,0,1:VDU25,4,16;16;:VDU25,101,1262;230;
  275ENDPROC
  276
  277DEFPROCyesno
  278PROCinit_buts(1020,40,16,16,28,24,1)
  279coords%(0,0)=820:labels$(0)="    No":labels$(1)="   Yes"
  280PROCchoose_but(1,2,2,0)
  281PROCinit_buts(1000,20,18,16,24,24,1)
  282ENDPROC
  283
  284DEFPROCposbuttons(nobuts%)
  285totwi%=0
  286FORk%=0TOnobuts%-1
  287IF(buttype%(k%)=0)OR(buttype%(k%)=1):totwi%+=176*(width%(k%)/16)
  288IFbuttype%(k%)=3:totwi%+=352*(width%(k%)/16)
  289NEXT
  290gap%=(1280-24-totwi%)/(nobuts%+1):totwi%=gap%+12:butcnt%=0
  291REPEAT
  292coords%(butcnt%,0)=totwi%
  293IF(buttype%(butcnt%)=0)OR(buttype%(butcnt%)=1):totwi%+=gap%+(176*(width%(butcnt%)/16))
  294IFbuttype%(butcnt%)=3:totwi%+=gap%+(352*(width%(butcnt%)/16))
  295butcnt%+=1
  296UNTILbutcnt%=nobuts%
  297ENDPROC
  298
  299DEFPROCchoose_but(scr%,but_no%,lab_yn%,control%)
  300REM scr%=screen number, but_no%=number of buttons to plot, lab_yn%=1 if label sprite else words
  301REM control% defines various options dependent on bit settings - unset (ie. 0)                 set (ie 1)
  302REM                                                   bit   0    loop in PROC until chosen     single pass thru PROC
  303REM                                                         1    clear text area after choice  don't clear text
  304REM    NB bits 2 and 3 of control% are now ignored    XXX   2    MOUSE to right of last box    see bit 3
  305REM                                                   XXX   3    MOUSE to below choice         MOUSE to right of choice (if bit 2 set)
  306REM                                                         4    use PROCwords (black words)   use PROCjpwords (coloured words)
  307  IF(control%AND1)=1:oneloop%=TRUE:ELSE:oneloop%=FALSE
  308  IF(control%AND2)=0:cleartext%=TRUE:ELSE:cleartext%=FALSE
  309  IF(control%AND16)=16:injetpac%=TRUE:ELSE:injetpac%=FALSE
  310REMIF(control%AND4)=0:mouseright%=TRUE:ELSE:mouseright%=FALSE
  311REMIFNOTmouseright%THEN:IF(control%AND8)=0:mousedown%=TRUE:ELSE:mousedown%=FALSE
  312  IF oneloop% THEN
  313    IF firstloop%=TRUE : PROCsetup_buts(scr%) : chosen%=20 : last_pos%=20 : firstloop%=FALSE
  314  ELSE
  315    PROCsetup_buts(scr%)
  316    SYS"OS_Byte",21,9
  317    MOUSE ON
  318    PROCmouse_text
  319    last_pos%=20
  320    chosen%=20
  321  ENDIF
  322  *FX15
  323  REPEAT
  324    IF NOToneloop% : MOUSE m_x%,m_y%,m_but%
  325    FOR k%=0 TO but_no%-1
  326      PROCscale(k%)
  327      IF (m_x%<=coords%(k%,0)+ec_width%(k%)) AND (m_x%>=coords%(k%,0)) AND (m_y%<=coords%(k%,1)+ec_height%(k%)) AND (m_y%>=coords%(k%,1)) THEN
  328        IF last_pos%<>k% THEN
  329          IF last_pos%<>20 THEN
  330            PROCscale(last_pos%)
  331            SYS "OS_SpriteOp",&134,AREA%,but$(0,buttype%(last_pos%)),coords%(last_pos%,0),coords%(last_pos%,1),0,SCALE%,0
  332            PROCadd_labels(last_pos%,0)
  333          ENDIF
  334          PROCscale(k%)
  335          SYS "OS_SpriteOp",&134,AREA%,but$(1,buttype%(k%)),coords%(k%,0),coords%(k%,1),0,SCALE%,0
  336          PROCadd_labels(k%,1)
  337        ENDIF
  338        IF m_but%=4 THEN
  339          SYS "OS_SpriteOp",&134,AREA%,but$(2,buttype%(k%)),coords%(k%,0),coords%(k%,1),0,SCALE%,0
  340          PROCadd_labels(k%,1)
  341          chosen%=k%
  342        ENDIF
  343        last_pos%=k%
  344      ELSE
  345        IF last_pos%=k% THEN
  346          SYS "OS_SpriteOp",&134,AREA%,but$(0,buttype%(k%)),coords%(k%,0),coords%(k%,1),0,SCALE%,0
  347          PROCadd_labels(k%,0)
  348          last_pos%=20
  349        ENDIF
  350      ENDIF
  351    NEXT
  352  UNTIL ((chosen%<>20) AND (m_but%=0)) OR oneloop%
  353  IF NOToneloop% THEN
  354   PROCwait(20)
  355REM   IFmouseright%THEN
  356REM    MOUSE TO coords%(but_no%-1,0)+ec_width%(but_no%-1)+24,coords%(but_no%-1,1)+(ec_height%(but_no%-1)/2)
  357REM   ELSE
  358REM    IFmousedown%THEN
  359REM     MOUSE TO coords%(chosen%,0)+(ec_width%(chosen%)/2),coords%(chosen%,1)-24
  360REM    ELSE
  361REM     MOUSE TO coords%(chosen%,0)+ec_width%(chosen%)+24,coords%(chosen%,1)+(ec_height%(chosen%)/2)
  362REM    ENDIF
  363REM   ENDIF
  364   MOUSE OFF
  365   IFcleartext%:PROCcleartext
  366  ENDIF
  367  !(SCALE%+0)=16 : !(SCALE%+4)=16*(H%!&F0)
  368ENDPROC
  369
  370DEFPROCsetup_buts(scr%)
  371FOR k%=0 TO but_no%-1
  372 IF(buttype%(k%)=0)OR(buttype%(k%)=1):ec_width%(k%)=176*(width%(k%)/16)
  373 IFbuttype%(k%)=2:ec_width%(k%)=80*(width%(k%)/16)
  374 IFbuttype%(k%)=3:ec_width%(k%)=352*(width%(k%)/16)
  375 IF buttype%(k%)=0 THEN
  376  ec_height%(k%)=160 * (height%(k%) / 16)
  377 ELSE
  378  ec_height%(k%)=80 * (height%(k%) / 16)
  379 ENDIF
  380NEXT
  381SYS "OS_Byte",112,scr%
  382FOR k%=0 TO but_no%-1
  383 PROCscale(k%)
  384 SYS "OS_SpriteOp",&134,AREA%,but$(0,buttype%(k%)),coords%(k%,0),coords%(k%,1),0,SCALE%,0
  385 PROCadd_labels(k%,0)
  386 REM reducing button height loses bottom line (unless) special short button) so add separately
  387 IF height%(k%)<16 AND buttype%(k%)=0 THEN
  388  GCOL 3
  389  VDU 25,4,coords%(k%,0);coords%(k%,1)-4;
  390  VDU 25,5,coords%(k%,0)+ec_width%-2;coords%(k%,1)-4;
  391 ENDIF
  392NEXT
  393ENDPROC
  394
  395DEFPROCscale(which%)
  396 !(SCALE%+0)=width%(which%) : !(SCALE%+4)=height%(which%)*(H%!&F0)
  397ENDPROC
  398
  399DEFPROCadd_labels(which%,drop%)
  400IF lab_yn%=1 THEN
  401 PROCput_sp(scr%,coords%(which%,0)+lab_offs%(which%,0),coords%(which%,1)+lab_offs%(which%,1)-(4*drop%),2,16,16,16,labels$(which%),0,0,1276,1020,&00)
  402ELSE
  403 IFinjetpac%THEN
  404  PROCjpwords(coords%(which%,0)+lab_offs%(which%,0),coords%(which%,1)+lab_offs%(which%,1)-(4*drop%),0,labels$(which%))
  405 ELSE
  406  PROCwords(coords%(which%,0)+lab_offs%(which%,0),coords%(which%,1)+lab_offs%(which%,1)-(4*drop%),0,labels$(which%))
  407 ENDIF
  408ENDIF
  409ENDPROC
  410
  411DEFPROCmounts(scr%,m1$,m2$,m3$,mxpos%,mypos%)
  412PROCput_sp(scr%,mxpos%,mypos%,15,16,16,16,m1$,left%,low%,right%,high%,&00)
  413PROCput_sp(scr%,mxpos%+480,mypos%,15,16,16,16,m2$,left%,low%,right%,high%,&00)
  414PROCput_sp(scr%,mxpos%+960,mypos%,15,16,16,16,m3$,left%,low%,right%,high%,&00)
  415ENDPROC
  416
  417
  418DEFPROCchoose_box(scr%,box_no%,cl%)
  419SYS "OS_Byte",112,scr%
  420PROCshow_box
  421MOUSE ON
  422PROCmouse_graphics
  423got_box%=10
  424REPEAT
  425 MOUSE m_x%,m_y%,m_but%
  426 FOR k%=0 TO box_no%-1
  427  IF (ABS(m_x%-(box%(k%,0)+32))<32) AND (ABS(m_y%-(box%(k%,1)+32))<32) THEN
  428   IF m_but%=4 THEN
  429    got_box%=k%
  430   ENDIF
  431  ENDIF
  432 NEXT
  433UNTIL (got_box%<>10) AND (m_but%=0)
  434MOUSE TO 1184,60
  435MOUSE OFF
  436IFcl%:PROCcleartext
  437PROCshow_box
  438ENDPROC
  439
  440DEFPROCjpchoose_box(scr%,box_no%)
  441PROCchoose_box(scr%,box_no%,0)
  442PROCjpcleartext
  443ENDPROC
  444
  445DEFPROCjpscan(box_no%)
  446PROCjpwords(350,128,-1,".... jet-pac scan in progress ....")
  447PROCexpand("jpscan")
  448SCALE%!0=16:SCALE%!4=16*(H%!&F0)
  449VDU25,4,12;912;:VDU25,98,1254;38;
  450FORj%=916TO260STEP-4
  451WAIT:SYS"OS_SpriteOp",&134,AREA%,"jpscan",580,j%,&0C,SCALE%,0
  452IFj%<916:SYS"OS_SpriteOp",&134,AREA%,"jpscan",580,j%+4,&0C,SCALE%,0
  453IFbox_no%>0THEN
  454 FORk%=0TObox_no%-1
  455  IF((j%+36)>=box%(k%,1))AND((j%+36)<=box%(k%,1)+60):PROCjpscanbox(k%)
  456 NEXT
  457ENDIF
  458IFj%>260:WAIT:VDU25,4,12;j%-8;:VDU25,98,1254;38;
  459VDU25,4,12;j%-4;:VDU25,98,1254;38;
  460NEXT
  461SYS"OS_SpriteOp",&134,AREA%,"jpscan",580,260,&0C,SCALE%,0
  462PROCcompact("jpscan")
  463PROCjpcleartext
  464PROCjpwords(440,128,-1,".... scan complete ....")
  465ENDPROC
  466
  467DEFPROCjpscanbox(k%)
  468IF(j%+36)=box%(k%,1)+60:VDU25,4,box%(k%,0);box%(k%,1)+60;:VDU25,98,62;2;
  469IF((j%+36)>box%(k%,1))AND((j%+36)<box%(k%,1)+60):VDU25,4,box%(k%,0);j%+36;:VDU25,98,2;2;:VDU25,4,box%(k%,0)+60;j%+36;:VDU25,98,2;2;
  470IF(j%+36)=box%(k%,1):VDU25,4,box%(k%,0);box%(k%,1);:VDU25,98,62;2;
  471ENDPROC
  472
  473DEFPROCshow_box
  474FOR k%=0 TO box_no%-1
  475 VDU 25,4,box%(k%,0);box%(k%,1);:VDU 25,98,62;62;
  476 VDU 25,4,box%(k%,0)+4;box%(k%,1)+4;:VDU 25,98,54;54;
  477NEXT
  478ENDPROC
  479
  480DEFPROCborders(bleft%,blow%,bright%,bhigh%)
  481VDU 24,bleft%;blow%;bright%;bhigh%;
  482VDU 18,0,130 : CLG
  483VDU 24,bleft%+4;blow%+4;bright%;bhigh%;
  484VDU 18,0,129 : CLG
  485VDU 24,bleft%+8;blow%+8;bright%-4;bhigh%-4;
  486VDU 18,0,128 : CLG
  487VDU 24,bleft%+8;blow%+8;bright%-8;bhigh%-8;
  488VDU 18,0,131 : CLG
  489VDU 24,bleft%+12;blow%+12;bright%-12;bhigh%-12;
  490VDU 18,0,128 : CLG
  491VDU 24,bleft%+12;blow%+12;bright%-16;bhigh%-16;
  492VDU 18,0,130 : CLG
  493PROCborder_centre(bleft%,blow%,bright%,bhigh%)
  494ENDPROC
  495
  496DEFPROCborder_centre(bleft%,blow%,bright%,bhigh%)
  497VDU 24,bleft%+16;blow%+16;bright%-16;bhigh%-16;
  498VDU 18,0,129 : CLG
  499VDU 26
  500ENDPROC
  501
  502DEFPROCcleartext
  503VDU 24,16;16;1263;low%-25;
  504REM VDU 23,12,0,1,1,0,0,1,1,0 : REM define text backgrd ECF
  505REM VDU 18,16,128 : CLG
  506VDU 18,0,129 : CLG
  507VDU 26
  508ENDPROC
  509
  510DEFPROCjpcleartext
  511VDU18,0,129:VDU24,20;20;1258;204;:CLG:VDU26
  512ENDPROC
  513
  514DEFPROCcleargraphics(bcol%)
  515VDU 24,left%;low%;right%;high%;
  516VDU 18,0,128+bcol% : CLG
  517VDU 26
  518ENDPROC
  519
  520DEFPROCmouse_text
  521MOUSE RECTANGLE 16,16,1263,low%-25
  522ENDPROC
  523
  524DEFPROCmouse_graphics
  525MOUSE RECTANGLE left%,low%,right%,high%
  526ENDPROC
  527
  528DEFPROCmouse_full
  529MOUSE RECTANGLE 0,0,1279,high%+12
  530ENDPROC
  531
  532DEFPROCsave_bgrd(scr%,x_pos%,y_pos%,x_siz%,y_siz%,sp_name$)
  533SYS "OS_SpriteOp",&110,AREA%,sp_name$,0,x_pos%,y_pos%,x_pos%+x_siz%,y_pos%+y_siz%
  534ENDPROC
  535
  536DEFPROCenlarge_box(scr%,many%,box_left%,box_low%,big_left%,big_low%,big_right%,big_high%,drawname$)
  537chg_left%=(big_left%-box_left%)/many%
  538chg_low%=(big_low%-box_low%)/many%
  539chg_right%=(big_right%-(box_left%+64))/many%
  540chg_high%=(big_high%-(box_low%+64))/many%
  541FOR m%=1 TO 4
  542 FOR l%=0 TO many%
  543  VDU 25,4,box_left%+(l%*chg_left%);box_low%+(l%*chg_low%);
  544  VDU 25,2,64+(l%*ABS(chg_left%-chg_right%));0;
  545  VDU 25,2,0;64+(l%*ABS(chg_low%-chg_high%));
  546  VDU 25,2,-(64+(l%*ABS(chg_left%-chg_right%)));0;
  547  VDU 25,2,0;-(64+(l%*ABS(chg_low%-chg_high%)));
  548  PROCwait(10)
  549 NEXT
  550NEXT
  551VDU 24,big_left%;big_low%;big_right%;big_high%;
  552VDU 18,0,131 : CLG
  553VDU 26
  554IF drawname$<>"" THEN
  555 PROCaddbox(big_left%,big_low%,big_right%,big_high%)
  556ENDIF
  557ENDPROC
  558
  559DEFPROCaddbox(big_left%,big_low%,big_right%,big_high%)
  560SYS "OS_Byte",112,2
  561VDU 24,big_left%;big_low%;big_right%;big_high%;
  562VDU 18,0,131 : CLG
  563PROCborders(big_left%+4,big_low%+4,big_right%-4,big_high%-4)
  564VDU 24,big_left%+16;big_low%+16;big_right%-16;big_high%-16;
  565VDU 18,0,128 : CLG
  566ENDPROC
  567
  568DEFPROCexplore
  569 PROCwords(728,50,0,"explore picture")
  570 PROCput_sp(1,1000,20,5,16,16,16,"mouse",0,0,right%,high%,&00)
  571ENDPROC
  572
  573DEFPROCjpexplore
  574 PROCjpwords(800,50,0,"explore ...")
  575 PROCput_sp(1,1000,24,5,16,16,16,"mouse",0,0,right%,high%,&00)
  576ENDPROC
  577
  578DEFPROCexpand(spn$)
  579LOCAL G%
  580REM create sprite "j" size 5 bytes to store the size of the compacted sprite & mask byte
  581SYS"OS_SpriteOp",&10F,AREA%,spn$+"j",0,10,1,12
  582SYS"OS_SpriteOp",&118,AREA%,spn$+"j" TO ,,image%
  583image%+=image%!32
  584SYS"OS_SpriteOp",&118,AREA%,spn$ TO ,,cspimage%
  585!image%=((cspimage%!16)+1)*8 : REM size in pixels
  586cspimage%+=cspimage%!32
  587image%?4=cspimage%?8 : REM store mask byte
  588REM create sprite "q" (temporarily) to expand into
  589SYS"OS_SpriteOp",&10F,AREA%,spn$+"q",0,!cspimage%*2,cspimage%!4,12
  590IF((cspimage%?8)AND&10)<>0:SYS"OS_SpriteOp",&11D,AREA%,spn$+"q"
  591FORlett%=1TOLEN(spn$):?(cspname%+(lett%-1))=ASC(MID$(spn$,lett%,1)):?(nspname%+(lett%-1))=ASC(MID$(spn$,lett%,1)):NEXT
  592IFLEN(spn$)<11:FORlett%=LEN(spn$)+1TO12:?(cspname%+(lett%-1))=&00:NEXT
  593?(nspname%+LEN(spn$))=&71
  594IFLEN(spn$)<10:FORlett%=LEN(spn$)+2TO12:?(nspname%+(lett%-1))=&00:NEXT
  595G%=AREA%
  596CALL expandsp%
  597REM delete original (compacted) sprite, rename "q" sprite to orig.
  598SYS"OS_SpriteOp",&119,AREA%,spn$
  599SYS"OS_SpriteOp",&11A,AREA%,spn$+"q",spn$
  600ENDPROC
  601
  602DEFPROCcompact(spn$)
  603LOCAL G%
  604REM create sprite "q" (temporary) to be compacted into (size details stored in sprite "j")
  605SYS"OS_SpriteOp",&118,AREA%,spn$+"j" TO ,,image%
  606image%+=image%!32:mask%=image%?4
  607SYS"OS_SpriteOp",&10F,AREA%,spn$+"q",0,!image%,1,12
  608SYS"OS_SpriteOp",&118,AREA%,spn$+"q" TO ,,image%
  609image%+=image%!32
  610SYS"OS_SpriteOp",&128,AREA%,spn$ TO ,,,!image%,image%!4
  611!image%=!image%/2:image%?8=mask%
  612FORlett%=1TOLEN(spn$):?(nspname%+(lett%-1))=ASC(MID$(spn$,lett%,1)):?(cspname%+(lett%-1))=ASC(MID$(spn$,lett%,1)):NEXT
  613IFLEN(spn$)<11:FORlett%=LEN(spn$)+1TO12:?(nspname%+(lett%-1))=&00:NEXT
  614?(cspname%+LEN(spn$))=&71
  615IFLEN(spn$)<10:FORlett%=LEN(spn$)+2TO12:?(cspname%+(lett%-1))=&00:NEXT
  616G%=AREA%
  617CALL crunchsp%
  618REM delete original (normal) sprite and "j" sprite, rename "q" sprite to orig.
  619SYS"OS_SpriteOp",&119,AREA%,spn$:SYS"OS_SpriteOp",&119,AREA%,spn$+"j"
  620SYS"OS_SpriteOp",&11A,AREA%,spn$+"q",spn$
  621ENDPROC
  622
  623DEFPROCdelete(spn$)
  624SYS "OS_SpriteOp",&119,AREA%,spn$
  625ENDPROC
  626
  627DEFPROCloadsoundmod(sdir$,smod$)
  628PROCkilloldmod
  629FORk%=0TOmaxsounds%
  630IFsmod$=soundmods$(k%):R%=k%
  631NEXT
  632OSCLI"RMEnsure <AZTEC$chaindir>."+sdir$+"."+smod$+" RMLoad <AZTEC$chaindir>."+sdir$+"."+smod$
  633ENDPROC
  634
  635DEFPROCkilloldmod
  636LOCAL ERROR
  637ONERRORLOCAL:RESTORE ERROR:ENDPROC
  638 OSCLI"RMKill "+soundmods$(R%)
  639RESTORE ERROR
  640ENDPROC
  641
  642DEFPROCconch(con%,goon%)
  643SYS "OS_SpriteOp",&10B,AREA%,"<AZTEC$chaindir>.ONE.conch_c"
  644OSCLI"ChannelVoice 1 conch2"
  645OSCLI"ChannelVoice 2 conch2"
  646PROCaddbox(312,268,958,928)
  647VDU 18,0,134:CLG:VDU26:PROCadd_sp(2,"conchman",82,11,6)
  648PROCexpand("smconch"):PROCexpand("conch")
  649FORk%=0TOcon%-1:PROCput_sp(2,332+(k%*68),288,6,16,16,16,"smconch",left%,low%,right%,high%,&00):NEXT
  650IFgoon%:SYS"OS_Byte",112,1:PROCgo_on
  651C%=1:D%=1:E%=1:F%=1:PROCexplode(640,636,0):PROCscrcopy21
  652PROCsave_bgrd(1,540,356,400,440,"bgrd"):tog%=1:firsttime%=TRUE:alldone%=FALSE:REPEAT:PROCanim_conch(con%):UNTILalldone%
  653PROCscrcopy21
  654PROCdelete("conchman"):PROCdelete("bgrd")
  655PROCcompact("smconch"):PROCcompact("conch")
  656PROCdelete("conch"):PROCdelete("smconch")
  657ENDPROC
  658
  659DEFPROCanim_conch(con%)
  660IFfirsttime%THEN:firsttime%=FALSE:lasttime%=TIME-4
  661SYS "OS_Byte",112,1+(tog%MOD2)
  662SYS "OS_SpriteOp",&122,AREA%,"bgrd",540,356,0
  663IFtog%>21:PROCput_sp(1+(tog%MOD2),540,316,6,16,16,16,"conch",left%,356,right%,high%,&00):ELSE:PROCput_sp(1+(tog%MOD2),540,(tog%*20)-104,6,16,16,16,"conch",left%,356,right%,high%,&00)
  664IF(tog%=30)OR(tog%=31):PROCput_sp(1+(tog%MOD2),332+(con%*68),288,6,16,16,16,"smconch",left%,low%,right%,high%,&00)
  665REPEAT:UNTIL TIME>=lasttime%+4
  666WAIT:SYS "OS_Byte",113,1+(tog%MOD2)
  667IFtog%=23:SOUND1,&17F,&1800,10
  668IFtog%=38:SOUND2,&17F,&1800,10
  669tog%+=1:lasttime%=TIME:IFtog%>=40:alldone%=TRUE
  670ENDPROC
  671
  672DEFPROCscrolldown(A%,B%)
  673CALL scrolldn%
  674ENDPROC
  675
  676DEFPROCscrollup(A%,B%)
  677CALL scrollup%
  678ENDPROC
  679
  680DEFPROCchain(file$)
  681IFY%=0:test%=0:REPEAT:PROCfloppy_disk("AZTEC DEMO","$.!Aztecs."+file$,"$.!Aztecs"):UNTILerror%=0
  682file$="<Aztec$chaindir>."+file$
  683CHAINfile$
  684STOP
  685
  686DEFPROCdummy
  687REM 'cos last PROC gets chopped
  688ENDPROC
  689
  690
  691
  692
  693
  694
  695
3�SCSI::SCSIDisc4.$.CoverDisks.!AZTECS.azteclib
 � >azteclib contains PROCS -

��pull_variables
fonts%=!(H%+&00)
letters%=!(H%+&04)
sp_on_vga%=!(H%+&08)
put_sp%=!(H%+&0C)
sp_name%=!(H%+&10)
	drawit%=!(H%+&14)

copyscr%=!(H%+&18)
crunchsp%=!(H%+&1C)
expandsp%=!(H%+&20)

cspname%=!(H%+&24)
nspname%=!(H%+&28)
blowupscr%=!(H%+&2C)
sp_on_cga%=!(H%+&30)
scrolldn%=!(H%+&34)
scrollup%=!(H%+&38)
copirow%=!(H%+&3C)

AREA%=H%+4*1024:� 4K mc
�

Q��put_sp(A%,B%,C%,D%,E%,F%,G%,sp_name$,wleft%,wbottom%,wright%,wtop%,orient%)
�� A%=screen,(B%,C%)=(x,y),D%=mask col,E%F%G%=behind cols.wl,wb,wr,wt=window for sp.orient%=00normal,&01mirror,&10upsdiedn,&11both
/!(H%+&CC)=orient%>>>4:!(H%+&D0)=orient%�&0F
F�lett%=1��(sp_name$):?(sp_name%+(lett%-1))=�(�sp_name$,lett%,1)):�
G�(sp_name$)<12:�lett%=�(sp_name$)+1�12:?(sp_name%+(lett%-1))=&00:�
?ș "OS_SpriteOp",&128,AREA%,sp_name$ � ,,,sp_wide%,sp_hite%
/sp_hite%=sp_hite%-1:sp_wide%=(sp_wide%/2)-1
"y_row%=�(C%/4):x_byte%=�(B%/4)
 sp_visible%=0
!�� (y_row%>�(wtop% / 4)) � ((y_row%+sp_hite%)<�(wbottom% / 4)) � ((x_byte%+sp_wide%)<�(wleft% / 4)) � (x_byte%>�(wright% / 4)) �
" sp_visible%=1
#�
$7 �calc_E0 : � !(H%+&E0) = start row in sprite image
%< �calc_E4 : � !(H%+&E4) = no.rows-1 of sprite to display
&B �calc_E8 : � !(H%+&E8) = starting byte no. in each sprite row
'? �calc_EC : � !(H%+&EC) = no.bytes-1 to display in each row
(�
)�sp_visible%=0:� put_sp%
*�
+
,
��calc_E0
-+  � (y_row%+sp_hite%) <= �(wtop% / 4) �
.    � (orient%>>>4)=0 �
/      !(H%+&E0)=0
0	    �
1      !(H%+&E0)=sp_hite%
2	    �
3    !(H%+&D4)=0
4  �
5    � (orient%>>>4)=0 �
62      !(H%+&E0)=sp_hite%-(�(wtop% / 4)-y_row%)
7	    �
8'      !(H%+&E0)=�(wtop% / 4)-y_row%
9	    �
:0    !(H%+&D4)=sp_hite%-(�(wtop% / 4)-y_row%)
;  �
<�
=
>
��calc_E4
?#  � �(wbottom% / 4) <= y_row% �
@    � (orient%>>>4)=0 �
A&      !(H%+&E4)=sp_hite%-!(H%+&E0)
B	    �
C      !(H%+&E4)=!(H%+&E0)
D	    �
E  �
F    � (orient%>>>4)=0 �
G?      !(H%+&E4)=sp_hite%-(�(wbottom% / 4)-y_row%)-!(H%+&E0)
H	    �
I4      !(H%+&E4)=y_row%+!(H%+&E0)-�(wbottom% / 4)
J	    �
K  �
L�
M
N
��calc_E8
O"  � x_byte% >= �(wleft% / 4) �
P    � (orient%�&0F)=0 �
Q      !(H%+&E8)=0
R	    �
S      !(H%+&E8)=sp_wide%
T	    �
U    !(H%+&D8)=0
V  �
W    � (orient%�&0F)=0 �
X)      !(H%+&E8)=�(wleft% / 4)-x_byte%
Y	    �
Z4      !(H%+&E8)=sp_wide%-(�(wleft% / 4)-x_byte%)
[	    �
\'    !(H%+&D8)=�(wleft% / 4)-x_byte%
]  �
^�
_
`
��calc_EC
a0  � (x_byte% + sp_wide%) <= �(wright% / 4) �
b    � (orient%�&0F)=0 �
c&      !(H%+&EC)=sp_wide%-!(H%+&E8)
d	    �
e      !(H%+&EC)=!(H%+&E8)
f	    �
g  �
h    � (orient%�&0F)=0 �
i4      !(H%+&EC)=�(wright% / 4)-x_byte%-!(H%+&E8)
j	    �
k?      !(H%+&EC)=!(H%+&E8)-(x_byte%+sp_wide%-�(wright% / 4))
l	    �
m  �
n�
o
p
��palette
q� +0
r�� 255,255,255,170,170,170,102,102,102,0,0,0,0,0,153,0,51,255,0,204,255,255,136,0,221,0,0,255,255,0,136,17,0,255,204,153,0,119,34,0,187,0,0,255,34,187,85,0
s2� i%=0 � 15:� r%, g%, b%:� 19,i%,16,r%,g%,b%:�
t�
u
v��wait(delay%)
wa%=�:���>=a%+delay%
x�
y
z��words(A%,B%,big%,words$)
{,E%=3:�big%:C%=320:D%=360:�:C%=240:D%=270
|B�lett%=1��(words$):?(letters%+(lett%-1))=�(�words$,lett%,1)):�
}?(letters%+�(words$))=&0D
~� fonts%
�
�
� ��jpwords(A%,B%,big%,words$)
�,E%=5:�big%:C%=320:D%=360:�:C%=240:D%=270
�B�lett%=1��(words$):?(letters%+(lett%-1))=�(�words$,lett%,1)):�
�?(letters%+�(words$))=&0D
�� fonts%
��
�
���scrcopy21
� ș "OS_Byte",113,2:A%=2:B%=1
�� copyscr%
�1Ȗ:ș "OS_Byte",113,1:ș "OS_Byte",112,1:� 26
��
�
�%��scrcopy21exp(A%,B%,C%,D%,E%,F%)
�� blowupscr%
��
�
� ��explode(xpos%,ypos%,auto%)
�<� C%=right speed:D%=down speed:E%=left speed:F%=up speed
�2A%=�(xpos%/4):B%=240-�(ypos%/4):�B%>177:B%=177
��auto%�
�,C%=319-A%:D%=179-B%:E%=A%:F%=B%:fact%=C%
��D%<fact%:fact%=D%
��E%<fact%:fact%=E%
��F%<fact%:fact%=F%
�?C%=�(C%/fact%):D%=�(D%/fact%):E%=�(E%/fact%):F%=�(F%/fact%)
��C%>6:C%=6
��D%>6:D%=6
��E%>6:E%=6
��F%>6:F%=6
��
�0B%=(H%!&F0)*B%:D%=(H%!&F0)*D%:F%=(H%!&F0)*F%
�$�scrcopy21exp(A%,B%,C%,D%,E%,F%)
��
�
���lib_initialise
���ONERROR SYS"OS_Byte",250,0,255 TO ,scr%:SYS"OS_Byte",113,scr%:PRINT REPORT$+" (Internal error code "+STR$ERL+")"+CHR$0:x=GET:PROCdesk_top
��:�desk_top
��pull_variables:�palette
�U� SCALE% 16:!(SCALE%+0)=16:!(SCALE%+4)=16*(H%!&F0):!(SCALE%+8)=16:!(SCALE%+12)=16
�<ș "OS_SpriteOp",&10A,AREA%,"<AZTEC$chaindir>.buttons_c"
�+left%=12:low%=256:right%=1267:high%=947
�9� 23,17,4,1,0,0,0,0,0,0 : � RISC OS interleaving ECFs
�� input_disk_name% 256
�2� pdrect% 16,pdrect2% 16,pdtrans% 16,pdplot% 8
�&� scale% 16,ctrans% 256,paltab% 64
�maxbut%=13
��� coords%(maxbut%,1),width%(maxbut%),height%(maxbut%),ec_width%(maxbut%),ec_height%(maxbut%),buttype%(maxbut%),labels$(maxbut%),lab_offs%(maxbut%,1)
�� but$(2,3),box%(4,1)
�Hbut$(0,0)="button_off":but$(1,0)="button_over":but$(2,0)="button_on"
�?but$(0,1)="but_off":but$(1,1)="but_over":but$(2,1)="but_on"
�<but$(0,2)="bu_off":but$(1,2)="bu_over":but$(2,2)="bu_on"
�Bbut$(0,3)="butt_off":but$(1,3)="butt_over":but$(2,3)="butt_on"
��expandbuts
�%�init_buts(1000,20,18,16,24,24,1)
�maxsounds%=20
�� soundmods$(maxsounds%)
�� +0
�+� dig,lightn,grunt,grind,click,turk,yap
�4� snore,hiccup,swallow,flareup,step,stab,Marked4
�5� sootthr,MARKED3,engine,goal,steam,rasplg,raspsh
�'�k%=0�maxsounds%:� soundmods$(k%):�
��
�
���expandbuts
�,�k%=0�2:�l%=0�3:�expand(but$(k%,l%)):�:�
��expand("mouse")
��
�
�6��init_buts(xco%,yco%,wid%,hei%,xoff%,yoff%,butt%)
�� b%=0 � maxbut%
�)coords%(b%,0)=xco%:coords%(b%,1)=yco%
�$width%(b%)=wid%:height%(b%)=hei%
�/lab_offs%(b%,0)=xoff%:lab_offs%(b%,1)=yoff%
�buttype%(b%)=butt%
��
��
�
���desk_top
�6�:�buf% 4:�i%=1�16:Ȗ:�c%=0�16:�c%<16v%=16 � v%=24
�Pș"OS_ReadPalette",c%,v% � ,,d%:!buf%=d%:�b%=1�3:�buf%?b%>0buf%?b%-=16:�:�:�
�%�19,c%,v%,buf%?1,buf%?2,buf%?3:�,
�	*FX15
�*FX225,1
� *KEY0 PAGE=&8F00|MOLD|MRUN|M
�*FX138,0,128
�
*BASIC
��
�
� ��add_sp(scr%,spr$,C%,D%,G%)
�!�scr%=1:A%=H%!&C0:�:A%=H%!&C4
�5ș "OS_SpriteOp",&118,AREA%,spr$ � ,,B%:B%+=B%!32
��(H%!&F0)=2�
�D%=2*D%
�� sp_on_vga%
��
�� sp_on_cga%
��
��
�
���go_on
�coords%(0,1)=20
�labels$(0)="  Go  on"
��choose_but(1,1,2,0)
��
�
�
��jpgo_on
�coords%(0,1)=24
�labels$(0)="  Go  on"
��choose_but(1,1,2,18)
��jpcleartext
��
�
���jpinfo
�?ș "OS_SpriteOp",&10B,AREA%,"<AZTEC$chaindir>.ONE.jpinfo_c"
�Y�IF(L%>2000)AND(L%<3000):SYS "OS_SpriteOp",&10B,AREA%,"<AZTEC$chaindir>.TWO.jpinfo_c"
�M�IFL%>3000:SYS "OS_SpriteOp",&10B,AREA%,"<AZTEC$chaindir>.THREE.jpinfo_c"
�$�init_buts(900,40,24,16,26,24,1)
�labels$(0)=" Jet-pac info"
��choose_but(1,1,2,16)
��18,0,5
��k%=2�1�-1
�ș"OS_Byte",112,k%
�Z�25,4,12;12;:�25,101,1266;18;:�25,101,1260;low%-22;:�25,101,12;low%-28;:�25,101,18;12;
��
�?�add_sp(1,"jpinfo",102,178,6):�add_sp(2,"jpinfo",102,178,6)
�%�init_buts(1000,20,18,16,24,24,1)
�

��jpend
'�delete("jpinfo"):�delete("jpscan")
%�init_buts(1000,24,22,16,26,24,1)
labels$(0)=" Jet-pac off"
�choose_but(1,1,2,16)
9�jpedges:ș"OS_Byte",112,2:�jpedges:ș"OS_Byte",112,1
�26
	%�init_buts(1000,20,18,16,24,24,1)

�


��jpedges

*�18,0,2:�25,4,0;244;:�25,101,1278;246;
*�18,0,0:�25,4,8;240;:�25,101,1268;242;
*�18,0,3:�25,4,8;236;:�25,101,1268;238;
<�18,0,0:�25,4,12;232;:�25,101,1266;234;:�25,101,1264;12;
9�18,0,2:�25,4,12;230;:�25,101,14;12;:�25,101,1262;14;
*�18,0,1:�25,4,16;16;:�25,101,1262;230;
�

��yesno
%�init_buts(1020,40,16,16,28,24,1)
<coords%(0,0)=820:labels$(0)="    No":labels$(1)="   Yes"
�choose_but(1,2,2,0)
%�init_buts(1000,20,18,16,24,24,1)
�

��posbuttons(nobuts%)
totwi%=0
�k%=0�nobuts%-1
B�(buttype%(k%)=0)�(buttype%(k%)=1):totwi%+=176*(width%(k%)/16)
 /�buttype%(k%)=3:totwi%+=352*(width%(k%)/16)
!�
">gap%=(1280-24-totwi%)/(nobuts%+1):totwi%=gap%+12:butcnt%=0
#�
$coords%(butcnt%,0)=totwi%
%X�(buttype%(butcnt%)=0)�(buttype%(butcnt%)=1):totwi%+=gap%+(176*(width%(butcnt%)/16))
&@�buttype%(butcnt%)=3:totwi%+=gap%+(352*(width%(butcnt%)/16))
'butcnt%+=1
(�butcnt%=nobuts%
)�
*
+/��choose_but(scr%,but_no%,lab_yn%,control%)
,a� scr%=screen number, but_no%=number of buttons to plot, lab_yn%=1 if label sprite else words
-k� control% defines various options dependent on bit settings - unset (ie. 0)                 set (ie 1)
.v�                                                   bit   0    loop in PROC until chosen     single pass thru PROC
/q�                                                         1    clear text area after choice  don't clear text
0j�    NB bits 2 and 3 of control% are now ignored    XXX   2    MOUSE to right of last box    see bit 3
1��                                                   XXX   3    MOUSE to below choice         MOUSE to right of choice (if bit 2 set)
2��                                                         4    use PROCwords (black words)   use PROCjpwords (coloured words)
3-  �(control%�1)=1:oneloop%=�:�:oneloop%=�
41  �(control%�2)=0:cleartext%=�:�:cleartext%=�
51  �(control%�16)=16:injetpac%=�:�:injetpac%=�
6?�IF(control%AND4)=0:mouseright%=TRUE:ELSE:mouseright%=FALSE
7R�IFNOTmouseright%THEN:IF(control%AND8)=0:mousedown%=TRUE:ELSE:mousedown%=FALSE
8  � oneloop% �
9U    � firstloop%=� : �setup_buts(scr%) : chosen%=20 : last_pos%=20 : firstloop%=�
:  �
;    �setup_buts(scr%)
<    ș"OS_Byte",21,9
=    ȗ �
>    �mouse_text
?    last_pos%=20
@    chosen%=20
A  �
B  *FX15
C  �
D)    � �oneloop% : ȗ m_x%,m_y%,m_but%
E    � k%=0 � but_no%-1
F      �scale(k%)
G�      � (m_x%<=coords%(k%,0)+ec_width%(k%)) � (m_x%>=coords%(k%,0)) � (m_y%<=coords%(k%,1)+ec_height%(k%)) � (m_y%>=coords%(k%,1)) �
H        � last_pos%<>k% �
I          � last_pos%<>20 �
J!            �scale(last_pos%)
K|            ș "OS_SpriteOp",&134,AREA%,but$(0,buttype%(last_pos%)),coords%(last_pos%,0),coords%(last_pos%,1),0,SCALE%,0
L(            �add_labels(last_pos%,0)
M          �
N          �scale(k%)
Oe          ș "OS_SpriteOp",&134,AREA%,but$(1,buttype%(k%)),coords%(k%,0),coords%(k%,1),0,SCALE%,0
P          �add_labels(k%,1)
Q
        �
R        � m_but%=4 �
Se          ș "OS_SpriteOp",&134,AREA%,but$(2,buttype%(k%)),coords%(k%,0),coords%(k%,1),0,SCALE%,0
T          �add_labels(k%,1)
U          chosen%=k%
V
        �
W        last_pos%=k%
X      �
Y        � last_pos%=k% �
Ze          ș "OS_SpriteOp",&134,AREA%,but$(0,buttype%(k%)),coords%(k%,0),coords%(k%,1),0,SCALE%,0
[          �add_labels(k%,0)
\          last_pos%=20
]
        �
^      �
_	    �
`/  � ((chosen%<>20) � (m_but%=0)) � oneloop%
a  � �oneloop% �
b   �wait(20)
c�   IFmouseright%THEN
dm�    MOUSE TO coords%(but_no%-1,0)+ec_width%(but_no%-1)+24,coords%(but_no%-1,1)+(ec_height%(but_no%-1)/2)
e�   ELSE
f�    IFmousedown%THEN
gR�     MOUSE TO coords%(chosen%,0)+(ec_width%(chosen%)/2),coords%(chosen%,1)-24
h
�    ELSE
if�     MOUSE TO coords%(chosen%,0)+ec_width%(chosen%)+24,coords%(chosen%,1)+(ec_height%(chosen%)/2)
j�    ENDIF
k
�   ENDIF
l   ȗ �
m   �cleartext%:�cleartext
n  �
o.  !(SCALE%+0)=16 : !(SCALE%+4)=16*(H%!&F0)
p�
q
r��setup_buts(scr%)
s� k%=0 � but_no%-1
tI �(buttype%(k%)=0)�(buttype%(k%)=1):ec_width%(k%)=176*(width%(k%)/16)
u5 �buttype%(k%)=2:ec_width%(k%)=80*(width%(k%)/16)
v6 �buttype%(k%)=3:ec_width%(k%)=352*(width%(k%)/16)
w � buttype%(k%)=0 �
x-  ec_height%(k%)=160 * (height%(k%) / 16)
y �
z,  ec_height%(k%)=80 * (height%(k%) / 16)
{ �
|�
}ș "OS_Byte",112,scr%
~� k%=0 � but_no%-1
 �scale(k%)
�\ ș "OS_SpriteOp",&134,AREA%,but$(0,buttype%(k%)),coords%(k%,0),coords%(k%,1),0,SCALE%,0
� �add_labels(k%,0)
�` � reducing button height loses bottom line (unless) special short button) so add separately
�( � height%(k%)<16 � buttype%(k%)=0 �
�	  � 3
�+  � 25,4,coords%(k%,0);coords%(k%,1)-4;
�7  � 25,5,coords%(k%,0)+ec_width%-2;coords%(k%,1)-4;
� �
��
��
�
���scale(which%)
�F !(SCALE%+0)=width%(which%) : !(SCALE%+4)=height%(which%)*(H%!&F0)
��
�
���add_labels(which%,drop%)
�� lab_yn%=1 �
�� �put_sp(scr%,coords%(which%,0)+lab_offs%(which%,0),coords%(which%,1)+lab_offs%(which%,1)-(4*drop%),2,16,16,16,labels$(which%),0,0,1276,1020,&00)
��
� �injetpac%�
�w  �jpwords(coords%(which%,0)+lab_offs%(which%,0),coords%(which%,1)+lab_offs%(which%,1)-(4*drop%),0,labels$(which%))
� �
�u  �words(coords%(which%,0)+lab_offs%(which%,0),coords%(which%,1)+lab_offs%(which%,1)-(4*drop%),0,labels$(which%))
� �
��
��
�
�,��mounts(scr%,m1$,m2$,m3$,mxpos%,mypos%)
�K�put_sp(scr%,mxpos%,mypos%,15,16,16,16,m1$,left%,low%,right%,high%,&00)
�O�put_sp(scr%,mxpos%+480,mypos%,15,16,16,16,m2$,left%,low%,right%,high%,&00)
�O�put_sp(scr%,mxpos%+960,mypos%,15,16,16,16,m3$,left%,low%,right%,high%,&00)
��
�
�
�"��choose_box(scr%,box_no%,cl%)
�ș "OS_Byte",112,scr%
�
�show_box
�ȗ �
��mouse_graphics
�got_box%=10
��
� ȗ m_x%,m_y%,m_but%
� � k%=0 � box_no%-1
�E  � (�(m_x%-(box%(k%,0)+32))<32) � (�(m_y%-(box%(k%,1)+32))<32) �
�   � m_but%=4 �
�    got_box%=k%
�   �
�  �
� �
�!� (got_box%<>10) � (m_but%=0)
�ȗ � 1184,60
�ȗ �
��cl%:�cleartext
�
�show_box
��
�
� ��jpchoose_box(scr%,box_no%)
��choose_box(scr%,box_no%,0)
��jpcleartext
��
�
���jpscan(box_no%)
�=�jpwords(350,128,-1,".... jet-pac scan in progress ....")
��expand("jpscan")
�$SCALE%!0=16:SCALE%!4=16*(H%!&F0)
�!�25,4,12;912;:�25,98,1254;38;
��j%=916�260�-4
�>Ȗ:ș"OS_SpriteOp",&134,AREA%,"jpscan",580,j%,&0C,SCALE%,0
�E�j%<916:ș"OS_SpriteOp",&134,AREA%,"jpscan",580,j%+4,&0C,SCALE%,0
��box_no%>0�
� �k%=0�box_no%-1
�D  �((j%+36)>=box%(k%,1))�((j%+36)<=box%(k%,1)+60):�jpscanbox(k%)
� �
��
�-�j%>260:Ȗ:�25,4,12;j%-8;:�25,98,1254;38;
�"�25,4,12;j%-4;:�25,98,1254;38;
��
�<ș"OS_SpriteOp",&134,AREA%,"jpscan",580,260,&0C,SCALE%,0
��compact("jpscan")
��jpcleartext
�2�jpwords(440,128,-1,".... scan complete ....")
��
�
���jpscanbox(k%)
�G�(j%+36)=box%(k%,1)+60:�25,4,box%(k%,0);box%(k%,1)+60;:�25,98,62;2;
�|�((j%+36)>box%(k%,1))�((j%+36)<box%(k%,1)+60):�25,4,box%(k%,0);j%+36;:�25,98,2;2;:�25,4,box%(k%,0)+60;j%+36;:�25,98,2;2;
�A�(j%+36)=box%(k%,1):�25,4,box%(k%,0);box%(k%,1);:�25,98,62;2;
��
�
���show_box
�� k%=0 � box_no%-1
�1 � 25,4,box%(k%,0);box%(k%,1);:� 25,98,62;62;
�5 � 25,4,box%(k%,0)+4;box%(k%,1)+4;:� 25,98,54;54;
��
��
�
�*��borders(bleft%,blow%,bright%,bhigh%)
�%� 24,bleft%;blow%;bright%;bhigh%;
�� 18,0,130 : �
�)� 24,bleft%+4;blow%+4;bright%;bhigh%;
�� 18,0,129 : �
�-� 24,bleft%+8;blow%+8;bright%-4;bhigh%-4;
�� 18,0,128 : �
�-� 24,bleft%+8;blow%+8;bright%-8;bhigh%-8;
�� 18,0,131 : �
�1� 24,bleft%+12;blow%+12;bright%-12;bhigh%-12;
�� 18,0,128 : �
�1� 24,bleft%+12;blow%+12;bright%-16;bhigh%-16;
�� 18,0,130 : �
�/�border_centre(bleft%,blow%,bright%,bhigh%)
��
�
�0��border_centre(bleft%,blow%,bright%,bhigh%)
�1� 24,bleft%+16;blow%+16;bright%-16;bhigh%-16;
�� 18,0,129 : �
�� 26
��
�
���cleartext
�� 24,16;16;1263;low%-25;
�=� VDU 23,12,0,1,1,0,0,1,1,0 : REM define text backgrd ECF
�� VDU 18,16,128 : CLG
�� 18,0,129 : �
�� 26
��
�
���jpcleartext
�'�18,0,129:�24,20;20;1258;204;:�:�26
�

��cleargraphics(bcol%)
!� 24,left%;low%;right%;high%;
� 18,0,128+bcol% : �
� 26
�

��mouse_text
	ȗ ȓ 16,16,1263,low%-25

�

��mouse_graphics

!ȗ ȓ left%,low%,right%,high%
�

��mouse_full
ȗ ȓ 0,0,1279,high%+12
�

:��save_bgrd(scr%,x_pos%,y_pos%,x_siz%,y_siz%,sp_name$)
Tș "OS_SpriteOp",&110,AREA%,sp_name$,0,x_pos%,y_pos%,x_pos%+x_siz%,y_pos%+y_siz%
�

b��enlarge_box(scr%,many%,box_left%,box_low%,big_left%,big_low%,big_right%,big_high%,drawname$)
)chg_left%=(big_left%-box_left%)/many%
&chg_low%=(big_low%-box_low%)/many%
0chg_right%=(big_right%-(box_left%+64))/many%
-chg_high%=(big_high%-(box_low%+64))/many%
� m%=1 � 4
 � l%=0 � many%
=  � 25,4,box_left%+(l%*chg_left%);box_low%+(l%*chg_low%);
 /  � 25,2,64+(l%*�(chg_left%-chg_right%));0;
!-  � 25,2,0;64+(l%*�(chg_low%-chg_high%));
"2  � 25,2,-(64+(l%*�(chg_left%-chg_right%)));0;
#0  � 25,2,0;-(64+(l%*�(chg_low%-chg_high%)));
$  �wait(10)
% �
&�
'1� 24,big_left%;big_low%;big_right%;big_high%;
(� 18,0,131 : �
)� 26
*� drawname$<>"" �
+5 �addbox(big_left%,big_low%,big_right%,big_high%)
,�
-�
.
/5��addbox(big_left%,big_low%,big_right%,big_high%)
0ș "OS_Byte",112,2
11� 24,big_left%;big_low%;big_right%;big_high%;
2� 18,0,131 : �
3=�borders(big_left%+4,big_low%+4,big_right%-4,big_high%-4)
4=� 24,big_left%+16;big_low%+16;big_right%-16;big_high%-16;
5� 18,0,128 : �
6�
7
8
��explore
9' �words(728,50,0,"explore picture")
:? �put_sp(1,1000,20,5,16,16,16,"mouse",0,0,right%,high%,&00)
;�
<
=��jpexplore
>% �jpwords(800,50,0,"explore ...")
?? �put_sp(1,1000,24,5,16,16,16,"mouse",0,0,right%,high%,&00)
@�
A
B��expand(spn$)
C� G%
DZ� create sprite "j" size 5 bytes to store the size of the compacted sprite & mask byte
E1ș"OS_SpriteOp",&10F,AREA%,spn$+"j",0,10,1,12
F2ș"OS_SpriteOp",&118,AREA%,spn$+"j" � ,,image%
Gimage%+=image%!32
H1ș"OS_SpriteOp",&118,AREA%,spn$ � ,,cspimage%
I3!image%=((cspimage%!16)+1)*8 : � size in pixels
Jcspimage%+=cspimage%!32
K,image%?4=cspimage%?8 : � store mask byte
L4� create sprite "q" (temporarily) to expand into
MEș"OS_SpriteOp",&10F,AREA%,spn$+"q",0,!cspimage%*2,cspimage%!4,12
N?�((cspimage%?8)�&10)<>0:ș"OS_SpriteOp",&11D,AREA%,spn$+"q"
Of�lett%=1��(spn$):?(cspname%+(lett%-1))=�(�spn$,lett%,1)):?(nspname%+(lett%-1))=�(�spn$,lett%,1)):�
P?�(spn$)<11:�lett%=�(spn$)+1�12:?(cspname%+(lett%-1))=&00:�
Q?(nspname%+�(spn$))=&71
R?�(spn$)<10:�lett%=�(spn$)+2�12:?(nspname%+(lett%-1))=&00:�
SG%=AREA%
T� expandsp%
UD� delete original (compacted) sprite, rename "q" sprite to orig.
V#ș"OS_SpriteOp",&119,AREA%,spn$
W,ș"OS_SpriteOp",&11A,AREA%,spn$+"q",spn$
X�
Y
Z��compact(spn$)
[� G%
\\� create sprite "q" (temporary) to be compacted into (size details stored in sprite "j")
]2ș"OS_SpriteOp",&118,AREA%,spn$+"j" � ,,image%
^$image%+=image%!32:mask%=image%?4
_6ș"OS_SpriteOp",&10F,AREA%,spn$+"q",0,!image%,1,12
`2ș"OS_SpriteOp",&118,AREA%,spn$+"q" � ,,image%
aimage%+=image%!32
b9ș"OS_SpriteOp",&128,AREA%,spn$ � ,,,!image%,image%!4
c$!image%=!image%/2:image%?8=mask%
df�lett%=1��(spn$):?(nspname%+(lett%-1))=�(�spn$,lett%,1)):?(cspname%+(lett%-1))=�(�spn$,lett%,1)):�
e?�(spn$)<11:�lett%=�(spn$)+1�12:?(nspname%+(lett%-1))=&00:�
f?(cspname%+�(spn$))=&71
g?�(spn$)<10:�lett%=�(spn$)+2�12:?(cspname%+(lett%-1))=&00:�
hG%=AREA%
i� crunchsp%
jP� delete original (normal) sprite and "j" sprite, rename "q" sprite to orig.
kGș"OS_SpriteOp",&119,AREA%,spn$:ș"OS_SpriteOp",&119,AREA%,spn$+"j"
l,ș"OS_SpriteOp",&11A,AREA%,spn$+"q",spn$
m�
n
o��delete(spn$)
p$ș "OS_SpriteOp",&119,AREA%,spn$
q�
r
s��loadsoundmod(sdir$,smod$)
t�killoldmod
u�k%=0�maxsounds%
v�smod$=soundmods$(k%):R%=k%
w�
x]�"RMEnsure <AZTEC$chaindir>."+sdir$+"."+smod$+" RMLoad <AZTEC$chaindir>."+sdir$+"."+smod$
y�
z
{��killoldmod
|� �
}
��:� �:�
~ �"RMKill "+soundmods$(R%)
� �
��
�
���conch(con%,goon%)
�>ș "OS_SpriteOp",&10B,AREA%,"<AZTEC$chaindir>.ONE.conch_c"
��"ChannelVoice 1 conch2"
��"ChannelVoice 2 conch2"
��addbox(312,268,958,928)
�2� 18,0,134:�:�26:�add_sp(2,"conchman",82,11,6)
�'�expand("smconch"):�expand("conch")
�^�k%=0�con%-1:�put_sp(2,332+(k%*68),288,6,16,16,16,"smconch",left%,low%,right%,high%,&00):�
�#�goon%:ș"OS_Byte",112,1:�go_on
�6C%=1:D%=1:E%=1:F%=1:�explode(640,636,0):�scrcopy21
�e�save_bgrd(1,540,356,400,440,"bgrd"):tog%=1:firsttime%=�:alldone%=�:�:�anim_conch(con%):�alldone%
��scrcopy21
�'�delete("conchman"):�delete("bgrd")
�)�compact("smconch"):�compact("conch")
�'�delete("conch"):�delete("smconch")
��
�
���anim_conch(con%)
�+�firsttime%�:firsttime%=�:lasttime%=�-4
�ș "OS_Byte",112,1+(tog%�2)
�0ș "OS_SpriteOp",&122,AREA%,"bgrd",540,356,0
���tog%>21:�put_sp(1+(tog%�2),540,316,6,16,16,16,"conch",left%,356,right%,high%,&00):�:�put_sp(1+(tog%�2),540,(tog%*20)-104,6,16,16,16,"conch",left%,356,right%,high%,&00)
�o�(tog%=30)�(tog%=31):�put_sp(1+(tog%�2),332+(con%*68),288,6,16,16,16,"smconch",left%,low%,right%,high%,&00)
��:� �>=lasttime%+4
�"Ȗ:ș "OS_Byte",113,1+(tog%�2)
��tog%=23:�1,&17F,&1800,10
��tog%=38:�2,&17F,&1800,10
�,tog%+=1:lasttime%=�:�tog%>=40:alldone%=�
��
�
���scrolldown(A%,B%)
�� scrolldn%
��
�
���scrollup(A%,B%)
�� scrollup%
��
�
���chain(file$)
�W�Y%=0:test%=0:�:�floppy_disk("AZTEC DEMO","$.!Aztecs."+file$,"$.!Aztecs"):�error%=0
�#file$="<Aztec$chaindir>."+file$
�
�file$
��
�
���dummy
�!� 'cos last PROC gets chopped
��
�
�
�
�
�
�
�
�
00000000  0d 00 00 33 f4 ff 53 43  53 49 3a 3a 53 43 53 49  |...3..SCSI::SCSI|
00000010  44 69 73 63 34 2e 24 2e  43 6f 76 65 72 44 69 73  |Disc4.$.CoverDis|
00000020  6b 73 2e 21 41 5a 54 45  43 53 2e 61 7a 74 65 63  |ks.!AZTECS.aztec|
00000030  6c 69 62 0d 00 01 20 f4  20 3e 61 7a 74 65 63 6c  |lib... . >aztecl|
00000040  69 62 20 63 6f 6e 74 61  69 6e 73 20 50 52 4f 43  |ib contains PROC|
00000050  53 20 2d 0d 00 02 04 0d  00 03 14 dd f2 70 75 6c  |S -..........pul|
00000060  6c 5f 76 61 72 69 61 62  6c 65 73 0d 00 04 14 66  |l_variables....f|
00000070  6f 6e 74 73 25 3d 21 28  48 25 2b 26 30 30 29 0d  |onts%=!(H%+&00).|
00000080  00 05 16 6c 65 74 74 65  72 73 25 3d 21 28 48 25  |...letters%=!(H%|
00000090  2b 26 30 34 29 0d 00 06  18 73 70 5f 6f 6e 5f 76  |+&04)....sp_on_v|
000000a0  67 61 25 3d 21 28 48 25  2b 26 30 38 29 0d 00 07  |ga%=!(H%+&08)...|
000000b0  15 70 75 74 5f 73 70 25  3d 21 28 48 25 2b 26 30  |.put_sp%=!(H%+&0|
000000c0  43 29 0d 00 08 16 73 70  5f 6e 61 6d 65 25 3d 21  |C)....sp_name%=!|
000000d0  28 48 25 2b 26 31 30 29  0d 00 09 15 64 72 61 77  |(H%+&10)....draw|
000000e0  69 74 25 3d 21 28 48 25  2b 26 31 34 29 0d 00 0a  |it%=!(H%+&14)...|
000000f0  16 63 6f 70 79 73 63 72  25 3d 21 28 48 25 2b 26  |.copyscr%=!(H%+&|
00000100  31 38 29 0d 00 0b 17 63  72 75 6e 63 68 73 70 25  |18)....crunchsp%|
00000110  3d 21 28 48 25 2b 26 31  43 29 0d 00 0c 17 65 78  |=!(H%+&1C)....ex|
00000120  70 61 6e 64 73 70 25 3d  21 28 48 25 2b 26 32 30  |pandsp%=!(H%+&20|
00000130  29 0d 00 0d 16 63 73 70  6e 61 6d 65 25 3d 21 28  |)....cspname%=!(|
00000140  48 25 2b 26 32 34 29 0d  00 0e 16 6e 73 70 6e 61  |H%+&24)....nspna|
00000150  6d 65 25 3d 21 28 48 25  2b 26 32 38 29 0d 00 0f  |me%=!(H%+&28)...|
00000160  18 62 6c 6f 77 75 70 73  63 72 25 3d 21 28 48 25  |.blowupscr%=!(H%|
00000170  2b 26 32 43 29 0d 00 10  18 73 70 5f 6f 6e 5f 63  |+&2C)....sp_on_c|
00000180  67 61 25 3d 21 28 48 25  2b 26 33 30 29 0d 00 11  |ga%=!(H%+&30)...|
00000190  17 73 63 72 6f 6c 6c 64  6e 25 3d 21 28 48 25 2b  |.scrolldn%=!(H%+|
000001a0  26 33 34 29 0d 00 12 17  73 63 72 6f 6c 6c 75 70  |&34)....scrollup|
000001b0  25 3d 21 28 48 25 2b 26  33 38 29 0d 00 13 16 63  |%=!(H%+&38)....c|
000001c0  6f 70 69 72 6f 77 25 3d  21 28 48 25 2b 26 33 43  |opirow%=!(H%+&3C|
000001d0  29 0d 00 14 04 0d 00 15  1b 41 52 45 41 25 3d 48  |)........AREA%=H|
000001e0  25 2b 34 2a 31 30 32 34  3a f4 20 34 4b 20 6d 63  |%+4*1024:. 4K mc|
000001f0  0d 00 16 05 e1 0d 00 17  04 0d 00 18 51 dd f2 70  |............Q..p|
00000200  75 74 5f 73 70 28 41 25  2c 42 25 2c 43 25 2c 44  |ut_sp(A%,B%,C%,D|
00000210  25 2c 45 25 2c 46 25 2c  47 25 2c 73 70 5f 6e 61  |%,E%,F%,G%,sp_na|
00000220  6d 65 24 2c 77 6c 65 66  74 25 2c 77 62 6f 74 74  |me$,wleft%,wbott|
00000230  6f 6d 25 2c 77 72 69 67  68 74 25 2c 77 74 6f 70  |om%,wright%,wtop|
00000240  25 2c 6f 72 69 65 6e 74  25 29 0d 00 19 85 f4 20  |%,orient%)..... |
00000250  41 25 3d 73 63 72 65 65  6e 2c 28 42 25 2c 43 25  |A%=screen,(B%,C%|
00000260  29 3d 28 78 2c 79 29 2c  44 25 3d 6d 61 73 6b 20  |)=(x,y),D%=mask |
00000270  63 6f 6c 2c 45 25 46 25  47 25 3d 62 65 68 69 6e  |col,E%F%G%=behin|
00000280  64 20 63 6f 6c 73 2e 77  6c 2c 77 62 2c 77 72 2c  |d cols.wl,wb,wr,|
00000290  77 74 3d 77 69 6e 64 6f  77 20 66 6f 72 20 73 70  |wt=window for sp|
000002a0  2e 6f 72 69 65 6e 74 25  3d 30 30 6e 6f 72 6d 61  |.orient%=00norma|
000002b0  6c 2c 26 30 31 6d 69 72  72 6f 72 2c 26 31 30 75  |l,&01mirror,&10u|
000002c0  70 73 64 69 65 64 6e 2c  26 31 31 62 6f 74 68 0d  |psdiedn,&11both.|
000002d0  00 1a 2f 21 28 48 25 2b  26 43 43 29 3d 6f 72 69  |../!(H%+&CC)=ori|
000002e0  65 6e 74 25 3e 3e 3e 34  3a 21 28 48 25 2b 26 44  |ent%>>>4:!(H%+&D|
000002f0  30 29 3d 6f 72 69 65 6e  74 25 80 26 30 46 0d 00  |0)=orient%.&0F..|
00000300  1b 46 e3 6c 65 74 74 25  3d 31 b8 a9 28 73 70 5f  |.F.lett%=1..(sp_|
00000310  6e 61 6d 65 24 29 3a 3f  28 73 70 5f 6e 61 6d 65  |name$):?(sp_name|
00000320  25 2b 28 6c 65 74 74 25  2d 31 29 29 3d 97 28 c1  |%+(lett%-1))=.(.|
00000330  73 70 5f 6e 61 6d 65 24  2c 6c 65 74 74 25 2c 31  |sp_name$,lett%,1|
00000340  29 29 3a ed 0d 00 1c 47  e7 a9 28 73 70 5f 6e 61  |)):....G..(sp_na|
00000350  6d 65 24 29 3c 31 32 3a  e3 6c 65 74 74 25 3d a9  |me$)<12:.lett%=.|
00000360  28 73 70 5f 6e 61 6d 65  24 29 2b 31 b8 31 32 3a  |(sp_name$)+1.12:|
00000370  3f 28 73 70 5f 6e 61 6d  65 25 2b 28 6c 65 74 74  |?(sp_name%+(lett|
00000380  25 2d 31 29 29 3d 26 30  30 3a ed 0d 00 1d 3f c8  |%-1))=&00:....?.|
00000390  99 20 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |. "OS_SpriteOp",|
000003a0  26 31 32 38 2c 41 52 45  41 25 2c 73 70 5f 6e 61  |&128,AREA%,sp_na|
000003b0  6d 65 24 20 b8 20 2c 2c  2c 73 70 5f 77 69 64 65  |me$ . ,,,sp_wide|
000003c0  25 2c 73 70 5f 68 69 74  65 25 0d 00 1e 2f 73 70  |%,sp_hite%.../sp|
000003d0  5f 68 69 74 65 25 3d 73  70 5f 68 69 74 65 25 2d  |_hite%=sp_hite%-|
000003e0  31 3a 73 70 5f 77 69 64  65 25 3d 28 73 70 5f 77  |1:sp_wide%=(sp_w|
000003f0  69 64 65 25 2f 32 29 2d  31 0d 00 1f 22 79 5f 72  |ide%/2)-1..."y_r|
00000400  6f 77 25 3d a8 28 43 25  2f 34 29 3a 78 5f 62 79  |ow%=.(C%/4):x_by|
00000410  74 65 25 3d a8 28 42 25  2f 34 29 0d 00 20 11 73  |te%=.(B%/4).. .s|
00000420  70 5f 76 69 73 69 62 6c  65 25 3d 30 0d 00 21 83  |p_visible%=0..!.|
00000430  e7 20 28 79 5f 72 6f 77  25 3e a8 28 77 74 6f 70  |. (y_row%>.(wtop|
00000440  25 20 2f 20 34 29 29 20  84 20 28 28 79 5f 72 6f  |% / 4)) . ((y_ro|
00000450  77 25 2b 73 70 5f 68 69  74 65 25 29 3c a8 28 77  |w%+sp_hite%)<.(w|
00000460  62 6f 74 74 6f 6d 25 20  2f 20 34 29 29 20 84 20  |bottom% / 4)) . |
00000470  28 28 78 5f 62 79 74 65  25 2b 73 70 5f 77 69 64  |((x_byte%+sp_wid|
00000480  65 25 29 3c a8 28 77 6c  65 66 74 25 20 2f 20 34  |e%)<.(wleft% / 4|
00000490  29 29 20 84 20 28 78 5f  62 79 74 65 25 3e a8 28  |)) . (x_byte%>.(|
000004a0  77 72 69 67 68 74 25 20  2f 20 34 29 29 20 8c 0d  |wright% / 4)) ..|
000004b0  00 22 12 20 73 70 5f 76  69 73 69 62 6c 65 25 3d  |.". sp_visible%=|
000004c0  31 0d 00 23 05 cc 0d 00  24 37 20 f2 63 61 6c 63  |1..#....$7 .calc|
000004d0  5f 45 30 20 3a 20 f4 20  21 28 48 25 2b 26 45 30  |_E0 : . !(H%+&E0|
000004e0  29 20 3d 20 73 74 61 72  74 20 72 6f 77 20 69 6e  |) = start row in|
000004f0  20 73 70 72 69 74 65 20  69 6d 61 67 65 0d 00 25  | sprite image..%|
00000500  3c 20 f2 63 61 6c 63 5f  45 34 20 3a 20 f4 20 21  |< .calc_E4 : . !|
00000510  28 48 25 2b 26 45 34 29  20 3d 20 6e 6f 2e 72 6f  |(H%+&E4) = no.ro|
00000520  77 73 2d 31 20 6f 66 20  73 70 72 69 74 65 20 74  |ws-1 of sprite t|
00000530  6f 20 64 69 73 70 6c 61  79 0d 00 26 42 20 f2 63  |o display..&B .c|
00000540  61 6c 63 5f 45 38 20 3a  20 f4 20 21 28 48 25 2b  |alc_E8 : . !(H%+|
00000550  26 45 38 29 20 3d 20 73  74 61 72 74 69 6e 67 20  |&E8) = starting |
00000560  62 79 74 65 20 6e 6f 2e  20 69 6e 20 65 61 63 68  |byte no. in each|
00000570  20 73 70 72 69 74 65 20  72 6f 77 0d 00 27 3f 20  | sprite row..'? |
00000580  f2 63 61 6c 63 5f 45 43  20 3a 20 f4 20 21 28 48  |.calc_EC : . !(H|
00000590  25 2b 26 45 43 29 20 3d  20 6e 6f 2e 62 79 74 65  |%+&EC) = no.byte|
000005a0  73 2d 31 20 74 6f 20 64  69 73 70 6c 61 79 20 69  |s-1 to display i|
000005b0  6e 20 65 61 63 68 20 72  6f 77 0d 00 28 05 cd 0d  |n each row..(...|
000005c0  00 29 1c e7 73 70 5f 76  69 73 69 62 6c 65 25 3d  |.)..sp_visible%=|
000005d0  30 3a d6 20 70 75 74 5f  73 70 25 0d 00 2a 05 e1  |0:. put_sp%..*..|
000005e0  0d 00 2b 04 0d 00 2c 0d  dd f2 63 61 6c 63 5f 45  |..+...,...calc_E|
000005f0  30 0d 00 2d 2b 20 20 e7  20 28 79 5f 72 6f 77 25  |0..-+  . (y_row%|
00000600  2b 73 70 5f 68 69 74 65  25 29 20 3c 3d 20 a8 28  |+sp_hite%) <= .(|
00000610  77 74 6f 70 25 20 2f 20  34 29 20 8c 0d 00 2e 1b  |wtop% / 4) .....|
00000620  20 20 20 20 e7 20 28 6f  72 69 65 6e 74 25 3e 3e  |    . (orient%>>|
00000630  3e 34 29 3d 30 20 8c 0d  00 2f 15 20 20 20 20 20  |>4)=0 .../.     |
00000640  20 21 28 48 25 2b 26 45  30 29 3d 30 0d 00 30 09  | !(H%+&E0)=0..0.|
00000650  20 20 20 20 cc 0d 00 31  1c 20 20 20 20 20 20 21  |    ...1.      !|
00000660  28 48 25 2b 26 45 30 29  3d 73 70 5f 68 69 74 65  |(H%+&E0)=sp_hite|
00000670  25 0d 00 32 09 20 20 20  20 cd 0d 00 33 13 20 20  |%..2.    ...3.  |
00000680  20 20 21 28 48 25 2b 26  44 34 29 3d 30 0d 00 34  |  !(H%+&D4)=0..4|
00000690  07 20 20 cc 0d 00 35 1b  20 20 20 20 e7 20 28 6f  |.  ...5.    . (o|
000006a0  72 69 65 6e 74 25 3e 3e  3e 34 29 3d 30 20 8c 0d  |rient%>>>4)=0 ..|
000006b0  00 36 32 20 20 20 20 20  20 21 28 48 25 2b 26 45  |.62      !(H%+&E|
000006c0  30 29 3d 73 70 5f 68 69  74 65 25 2d 28 a8 28 77  |0)=sp_hite%-(.(w|
000006d0  74 6f 70 25 20 2f 20 34  29 2d 79 5f 72 6f 77 25  |top% / 4)-y_row%|
000006e0  29 0d 00 37 09 20 20 20  20 cc 0d 00 38 27 20 20  |)..7.    ...8'  |
000006f0  20 20 20 20 21 28 48 25  2b 26 45 30 29 3d a8 28  |    !(H%+&E0)=.(|
00000700  77 74 6f 70 25 20 2f 20  34 29 2d 79 5f 72 6f 77  |wtop% / 4)-y_row|
00000710  25 0d 00 39 09 20 20 20  20 cd 0d 00 3a 30 20 20  |%..9.    ...:0  |
00000720  20 20 21 28 48 25 2b 26  44 34 29 3d 73 70 5f 68  |  !(H%+&D4)=sp_h|
00000730  69 74 65 25 2d 28 a8 28  77 74 6f 70 25 20 2f 20  |ite%-(.(wtop% / |
00000740  34 29 2d 79 5f 72 6f 77  25 29 0d 00 3b 07 20 20  |4)-y_row%)..;.  |
00000750  cd 0d 00 3c 05 e1 0d 00  3d 04 0d 00 3e 0d dd f2  |...<....=...>...|
00000760  63 61 6c 63 5f 45 34 0d  00 3f 23 20 20 e7 20 a8  |calc_E4..?#  . .|
00000770  28 77 62 6f 74 74 6f 6d  25 20 2f 20 34 29 20 3c  |(wbottom% / 4) <|
00000780  3d 20 79 5f 72 6f 77 25  20 8c 0d 00 40 1b 20 20  |= y_row% ...@.  |
00000790  20 20 e7 20 28 6f 72 69  65 6e 74 25 3e 3e 3e 34  |  . (orient%>>>4|
000007a0  29 3d 30 20 8c 0d 00 41  26 20 20 20 20 20 20 21  |)=0 ...A&      !|
000007b0  28 48 25 2b 26 45 34 29  3d 73 70 5f 68 69 74 65  |(H%+&E4)=sp_hite|
000007c0  25 2d 21 28 48 25 2b 26  45 30 29 0d 00 42 09 20  |%-!(H%+&E0)..B. |
000007d0  20 20 20 cc 0d 00 43 1d  20 20 20 20 20 20 21 28  |   ...C.      !(|
000007e0  48 25 2b 26 45 34 29 3d  21 28 48 25 2b 26 45 30  |H%+&E4)=!(H%+&E0|
000007f0  29 0d 00 44 09 20 20 20  20 cd 0d 00 45 07 20 20  |)..D.    ...E.  |
00000800  cc 0d 00 46 1b 20 20 20  20 e7 20 28 6f 72 69 65  |...F.    . (orie|
00000810  6e 74 25 3e 3e 3e 34 29  3d 30 20 8c 0d 00 47 3f  |nt%>>>4)=0 ...G?|
00000820  20 20 20 20 20 20 21 28  48 25 2b 26 45 34 29 3d  |      !(H%+&E4)=|
00000830  73 70 5f 68 69 74 65 25  2d 28 a8 28 77 62 6f 74  |sp_hite%-(.(wbot|
00000840  74 6f 6d 25 20 2f 20 34  29 2d 79 5f 72 6f 77 25  |tom% / 4)-y_row%|
00000850  29 2d 21 28 48 25 2b 26  45 30 29 0d 00 48 09 20  |)-!(H%+&E0)..H. |
00000860  20 20 20 cc 0d 00 49 34  20 20 20 20 20 20 21 28  |   ...I4      !(|
00000870  48 25 2b 26 45 34 29 3d  79 5f 72 6f 77 25 2b 21  |H%+&E4)=y_row%+!|
00000880  28 48 25 2b 26 45 30 29  2d a8 28 77 62 6f 74 74  |(H%+&E0)-.(wbott|
00000890  6f 6d 25 20 2f 20 34 29  0d 00 4a 09 20 20 20 20  |om% / 4)..J.    |
000008a0  cd 0d 00 4b 07 20 20 cd  0d 00 4c 05 e1 0d 00 4d  |...K.  ...L....M|
000008b0  04 0d 00 4e 0d dd f2 63  61 6c 63 5f 45 38 0d 00  |...N...calc_E8..|
000008c0  4f 22 20 20 e7 20 78 5f  62 79 74 65 25 20 3e 3d  |O"  . x_byte% >=|
000008d0  20 a8 28 77 6c 65 66 74  25 20 2f 20 34 29 20 8c  | .(wleft% / 4) .|
000008e0  0d 00 50 1b 20 20 20 20  e7 20 28 6f 72 69 65 6e  |..P.    . (orien|
000008f0  74 25 80 26 30 46 29 3d  30 20 8c 0d 00 51 15 20  |t%.&0F)=0 ...Q. |
00000900  20 20 20 20 20 21 28 48  25 2b 26 45 38 29 3d 30  |     !(H%+&E8)=0|
00000910  0d 00 52 09 20 20 20 20  cc 0d 00 53 1c 20 20 20  |..R.    ...S.   |
00000920  20 20 20 21 28 48 25 2b  26 45 38 29 3d 73 70 5f  |   !(H%+&E8)=sp_|
00000930  77 69 64 65 25 0d 00 54  09 20 20 20 20 cd 0d 00  |wide%..T.    ...|
00000940  55 13 20 20 20 20 21 28  48 25 2b 26 44 38 29 3d  |U.    !(H%+&D8)=|
00000950  30 0d 00 56 07 20 20 cc  0d 00 57 1b 20 20 20 20  |0..V.  ...W.    |
00000960  e7 20 28 6f 72 69 65 6e  74 25 80 26 30 46 29 3d  |. (orient%.&0F)=|
00000970  30 20 8c 0d 00 58 29 20  20 20 20 20 20 21 28 48  |0 ...X)      !(H|
00000980  25 2b 26 45 38 29 3d a8  28 77 6c 65 66 74 25 20  |%+&E8)=.(wleft% |
00000990  2f 20 34 29 2d 78 5f 62  79 74 65 25 0d 00 59 09  |/ 4)-x_byte%..Y.|
000009a0  20 20 20 20 cc 0d 00 5a  34 20 20 20 20 20 20 21  |    ...Z4      !|
000009b0  28 48 25 2b 26 45 38 29  3d 73 70 5f 77 69 64 65  |(H%+&E8)=sp_wide|
000009c0  25 2d 28 a8 28 77 6c 65  66 74 25 20 2f 20 34 29  |%-(.(wleft% / 4)|
000009d0  2d 78 5f 62 79 74 65 25  29 0d 00 5b 09 20 20 20  |-x_byte%)..[.   |
000009e0  20 cd 0d 00 5c 27 20 20  20 20 21 28 48 25 2b 26  | ...\'    !(H%+&|
000009f0  44 38 29 3d a8 28 77 6c  65 66 74 25 20 2f 20 34  |D8)=.(wleft% / 4|
00000a00  29 2d 78 5f 62 79 74 65  25 0d 00 5d 07 20 20 cd  |)-x_byte%..].  .|
00000a10  0d 00 5e 05 e1 0d 00 5f  04 0d 00 60 0d dd f2 63  |..^...._...`...c|
00000a20  61 6c 63 5f 45 43 0d 00  61 30 20 20 e7 20 28 78  |alc_EC..a0  . (x|
00000a30  5f 62 79 74 65 25 20 2b  20 73 70 5f 77 69 64 65  |_byte% + sp_wide|
00000a40  25 29 20 3c 3d 20 a8 28  77 72 69 67 68 74 25 20  |%) <= .(wright% |
00000a50  2f 20 34 29 20 8c 0d 00  62 1b 20 20 20 20 e7 20  |/ 4) ...b.    . |
00000a60  28 6f 72 69 65 6e 74 25  80 26 30 46 29 3d 30 20  |(orient%.&0F)=0 |
00000a70  8c 0d 00 63 26 20 20 20  20 20 20 21 28 48 25 2b  |...c&      !(H%+|
00000a80  26 45 43 29 3d 73 70 5f  77 69 64 65 25 2d 21 28  |&EC)=sp_wide%-!(|
00000a90  48 25 2b 26 45 38 29 0d  00 64 09 20 20 20 20 cc  |H%+&E8)..d.    .|
00000aa0  0d 00 65 1d 20 20 20 20  20 20 21 28 48 25 2b 26  |..e.      !(H%+&|
00000ab0  45 43 29 3d 21 28 48 25  2b 26 45 38 29 0d 00 66  |EC)=!(H%+&E8)..f|
00000ac0  09 20 20 20 20 cd 0d 00  67 07 20 20 cc 0d 00 68  |.    ...g.  ...h|
00000ad0  1b 20 20 20 20 e7 20 28  6f 72 69 65 6e 74 25 80  |.    . (orient%.|
00000ae0  26 30 46 29 3d 30 20 8c  0d 00 69 34 20 20 20 20  |&0F)=0 ...i4    |
00000af0  20 20 21 28 48 25 2b 26  45 43 29 3d a8 28 77 72  |  !(H%+&EC)=.(wr|
00000b00  69 67 68 74 25 20 2f 20  34 29 2d 78 5f 62 79 74  |ight% / 4)-x_byt|
00000b10  65 25 2d 21 28 48 25 2b  26 45 38 29 0d 00 6a 09  |e%-!(H%+&E8)..j.|
00000b20  20 20 20 20 cc 0d 00 6b  3f 20 20 20 20 20 20 21  |    ...k?      !|
00000b30  28 48 25 2b 26 45 43 29  3d 21 28 48 25 2b 26 45  |(H%+&EC)=!(H%+&E|
00000b40  38 29 2d 28 78 5f 62 79  74 65 25 2b 73 70 5f 77  |8)-(x_byte%+sp_w|
00000b50  69 64 65 25 2d a8 28 77  72 69 67 68 74 25 20 2f  |ide%-.(wright% /|
00000b60  20 34 29 29 0d 00 6c 09  20 20 20 20 cd 0d 00 6d  | 4))..l.    ...m|
00000b70  07 20 20 cd 0d 00 6e 05  e1 0d 00 6f 04 0d 00 70  |.  ...n....o...p|
00000b80  0d dd f2 70 61 6c 65 74  74 65 0d 00 71 08 f7 20  |...palette..q.. |
00000b90  2b 30 0d 00 72 9e dc 20  32 35 35 2c 32 35 35 2c  |+0..r.. 255,255,|
00000ba0  32 35 35 2c 31 37 30 2c  31 37 30 2c 31 37 30 2c  |255,170,170,170,|
00000bb0  31 30 32 2c 31 30 32 2c  31 30 32 2c 30 2c 30 2c  |102,102,102,0,0,|
00000bc0  30 2c 30 2c 30 2c 31 35  33 2c 30 2c 35 31 2c 32  |0,0,0,153,0,51,2|
00000bd0  35 35 2c 30 2c 32 30 34  2c 32 35 35 2c 32 35 35  |55,0,204,255,255|
00000be0  2c 31 33 36 2c 30 2c 32  32 31 2c 30 2c 30 2c 32  |,136,0,221,0,0,2|
00000bf0  35 35 2c 32 35 35 2c 30  2c 31 33 36 2c 31 37 2c  |55,255,0,136,17,|
00000c00  30 2c 32 35 35 2c 32 30  34 2c 31 35 33 2c 30 2c  |0,255,204,153,0,|
00000c10  31 31 39 2c 33 34 2c 30  2c 31 38 37 2c 30 2c 30  |119,34,0,187,0,0|
00000c20  2c 32 35 35 2c 33 34 2c  31 38 37 2c 38 35 2c 30  |,255,34,187,85,0|
00000c30  0d 00 73 32 e3 20 69 25  3d 30 20 b8 20 31 35 3a  |..s2. i%=0 . 15:|
00000c40  f3 20 72 25 2c 20 67 25  2c 20 62 25 3a ef 20 31  |. r%, g%, b%:. 1|
00000c50  39 2c 69 25 2c 31 36 2c  72 25 2c 67 25 2c 62 25  |9,i%,16,r%,g%,b%|
00000c60  3a ed 0d 00 74 05 e1 0d  00 75 04 0d 00 76 12 dd  |:...t....u...v..|
00000c70  f2 77 61 69 74 28 64 65  6c 61 79 25 29 0d 00 77  |.wait(delay%)..w|
00000c80  17 61 25 3d 91 3a f5 fd  91 3e 3d 61 25 2b 64 65  |.a%=.:...>=a%+de|
00000c90  6c 61 79 25 0d 00 78 05  e1 0d 00 79 04 0d 00 7a  |lay%..x....y...z|
00000ca0  1e dd f2 77 6f 72 64 73  28 41 25 2c 42 25 2c 62  |...words(A%,B%,b|
00000cb0  69 67 25 2c 77 6f 72 64  73 24 29 0d 00 7b 2c 45  |ig%,words$)..{,E|
00000cc0  25 3d 33 3a e7 62 69 67  25 3a 43 25 3d 33 32 30  |%=3:.big%:C%=320|
00000cd0  3a 44 25 3d 33 36 30 3a  8b 3a 43 25 3d 32 34 30  |:D%=360:.:C%=240|
00000ce0  3a 44 25 3d 32 37 30 0d  00 7c 42 e3 6c 65 74 74  |:D%=270..|B.lett|
00000cf0  25 3d 31 b8 a9 28 77 6f  72 64 73 24 29 3a 3f 28  |%=1..(words$):?(|
00000d00  6c 65 74 74 65 72 73 25  2b 28 6c 65 74 74 25 2d  |letters%+(lett%-|
00000d10  31 29 29 3d 97 28 c1 77  6f 72 64 73 24 2c 6c 65  |1))=.(.words$,le|
00000d20  74 74 25 2c 31 29 29 3a  ed 0d 00 7d 1d 3f 28 6c  |tt%,1)):...}.?(l|
00000d30  65 74 74 65 72 73 25 2b  a9 28 77 6f 72 64 73 24  |etters%+.(words$|
00000d40  29 29 3d 26 30 44 0d 00  7e 0c d6 20 66 6f 6e 74  |))=&0D..~.. font|
00000d50  73 25 0d 00 7f 05 e1 0d  00 80 04 0d 00 81 20 dd  |s%............ .|
00000d60  f2 6a 70 77 6f 72 64 73  28 41 25 2c 42 25 2c 62  |.jpwords(A%,B%,b|
00000d70  69 67 25 2c 77 6f 72 64  73 24 29 0d 00 82 2c 45  |ig%,words$)...,E|
00000d80  25 3d 35 3a e7 62 69 67  25 3a 43 25 3d 33 32 30  |%=5:.big%:C%=320|
00000d90  3a 44 25 3d 33 36 30 3a  8b 3a 43 25 3d 32 34 30  |:D%=360:.:C%=240|
00000da0  3a 44 25 3d 32 37 30 0d  00 83 42 e3 6c 65 74 74  |:D%=270...B.lett|
00000db0  25 3d 31 b8 a9 28 77 6f  72 64 73 24 29 3a 3f 28  |%=1..(words$):?(|
00000dc0  6c 65 74 74 65 72 73 25  2b 28 6c 65 74 74 25 2d  |letters%+(lett%-|
00000dd0  31 29 29 3d 97 28 c1 77  6f 72 64 73 24 2c 6c 65  |1))=.(.words$,le|
00000de0  74 74 25 2c 31 29 29 3a  ed 0d 00 84 1d 3f 28 6c  |tt%,1)):.....?(l|
00000df0  65 74 74 65 72 73 25 2b  a9 28 77 6f 72 64 73 24  |etters%+.(words$|
00000e00  29 29 3d 26 30 44 0d 00  85 0c d6 20 66 6f 6e 74  |))=&0D..... font|
00000e10  73 25 0d 00 86 05 e1 0d  00 87 04 0d 00 88 0f dd  |s%..............|
00000e20  f2 73 63 72 63 6f 70 79  32 31 0d 00 89 20 c8 99  |.scrcopy21... ..|
00000e30  20 22 4f 53 5f 42 79 74  65 22 2c 31 31 33 2c 32  | "OS_Byte",113,2|
00000e40  3a 41 25 3d 32 3a 42 25  3d 31 0d 00 8a 0e d6 20  |:A%=2:B%=1..... |
00000e50  63 6f 70 79 73 63 72 25  0d 00 8b 31 c8 96 3a c8  |copyscr%...1..:.|
00000e60  99 20 22 4f 53 5f 42 79  74 65 22 2c 31 31 33 2c  |. "OS_Byte",113,|
00000e70  31 3a c8 99 20 22 4f 53  5f 42 79 74 65 22 2c 31  |1:.. "OS_Byte",1|
00000e80  31 32 2c 31 3a ef 20 32  36 0d 00 8c 05 e1 0d 00  |12,1:. 26.......|
00000e90  8d 04 0d 00 8e 25 dd f2  73 63 72 63 6f 70 79 32  |.....%..scrcopy2|
00000ea0  31 65 78 70 28 41 25 2c  42 25 2c 43 25 2c 44 25  |1exp(A%,B%,C%,D%|
00000eb0  2c 45 25 2c 46 25 29 0d  00 8f 10 d6 20 62 6c 6f  |,E%,F%)..... blo|
00000ec0  77 75 70 73 63 72 25 0d  00 90 05 e1 0d 00 91 04  |wupscr%.........|
00000ed0  0d 00 92 20 dd f2 65 78  70 6c 6f 64 65 28 78 70  |... ..explode(xp|
00000ee0  6f 73 25 2c 79 70 6f 73  25 2c 61 75 74 6f 25 29  |os%,ypos%,auto%)|
00000ef0  0d 00 93 3c f4 20 43 25  3d 72 69 67 68 74 20 73  |...<. C%=right s|
00000f00  70 65 65 64 3a 44 25 3d  64 6f 77 6e 20 73 70 65  |peed:D%=down spe|
00000f10  65 64 3a 45 25 3d 6c 65  66 74 20 73 70 65 65 64  |ed:E%=left speed|
00000f20  3a 46 25 3d 75 70 20 73  70 65 65 64 0d 00 94 32  |:F%=up speed...2|
00000f30  41 25 3d a8 28 78 70 6f  73 25 2f 34 29 3a 42 25  |A%=.(xpos%/4):B%|
00000f40  3d 32 34 30 2d a8 28 79  70 6f 73 25 2f 34 29 3a  |=240-.(ypos%/4):|
00000f50  e7 42 25 3e 31 37 37 3a  42 25 3d 31 37 37 0d 00  |.B%>177:B%=177..|
00000f60  95 0b e7 61 75 74 6f 25  8c 0d 00 96 2c 43 25 3d  |...auto%....,C%=|
00000f70  33 31 39 2d 41 25 3a 44  25 3d 31 37 39 2d 42 25  |319-A%:D%=179-B%|
00000f80  3a 45 25 3d 41 25 3a 46  25 3d 42 25 3a 66 61 63  |:E%=A%:F%=B%:fac|
00000f90  74 25 3d 43 25 0d 00 97  16 e7 44 25 3c 66 61 63  |t%=C%.....D%<fac|
00000fa0  74 25 3a 66 61 63 74 25  3d 44 25 0d 00 98 16 e7  |t%:fact%=D%.....|
00000fb0  45 25 3c 66 61 63 74 25  3a 66 61 63 74 25 3d 45  |E%<fact%:fact%=E|
00000fc0  25 0d 00 99 16 e7 46 25  3c 66 61 63 74 25 3a 66  |%.....F%<fact%:f|
00000fd0  61 63 74 25 3d 46 25 0d  00 9a 3f 43 25 3d a8 28  |act%=F%...?C%=.(|
00000fe0  43 25 2f 66 61 63 74 25  29 3a 44 25 3d a8 28 44  |C%/fact%):D%=.(D|
00000ff0  25 2f 66 61 63 74 25 29  3a 45 25 3d a8 28 45 25  |%/fact%):E%=.(E%|
00001000  2f 66 61 63 74 25 29 3a  46 25 3d a8 28 46 25 2f  |/fact%):F%=.(F%/|
00001010  66 61 63 74 25 29 0d 00  9b 0e e7 43 25 3e 36 3a  |fact%).....C%>6:|
00001020  43 25 3d 36 0d 00 9c 0e  e7 44 25 3e 36 3a 44 25  |C%=6.....D%>6:D%|
00001030  3d 36 0d 00 9d 0e e7 45  25 3e 36 3a 45 25 3d 36  |=6.....E%>6:E%=6|
00001040  0d 00 9e 0e e7 46 25 3e  36 3a 46 25 3d 36 0d 00  |.....F%>6:F%=6..|
00001050  9f 05 cd 0d 00 a0 30 42  25 3d 28 48 25 21 26 46  |......0B%=(H%!&F|
00001060  30 29 2a 42 25 3a 44 25  3d 28 48 25 21 26 46 30  |0)*B%:D%=(H%!&F0|
00001070  29 2a 44 25 3a 46 25 3d  28 48 25 21 26 46 30 29  |)*D%:F%=(H%!&F0)|
00001080  2a 46 25 0d 00 a1 24 f2  73 63 72 63 6f 70 79 32  |*F%...$.scrcopy2|
00001090  31 65 78 70 28 41 25 2c  42 25 2c 43 25 2c 44 25  |1exp(A%,B%,C%,D%|
000010a0  2c 45 25 2c 46 25 29 0d  00 a2 05 e1 0d 00 a3 04  |,E%,F%).........|
000010b0  0d 00 a4 14 dd f2 6c 69  62 5f 69 6e 69 74 69 61  |......lib_initia|
000010c0  6c 69 73 65 0d 00 a5 8e  f4 4f 4e 45 52 52 4f 52  |lise.....ONERROR|
000010d0  20 53 59 53 22 4f 53 5f  42 79 74 65 22 2c 32 35  | SYS"OS_Byte",25|
000010e0  30 2c 30 2c 32 35 35 20  54 4f 20 2c 73 63 72 25  |0,0,255 TO ,scr%|
000010f0  3a 53 59 53 22 4f 53 5f  42 79 74 65 22 2c 31 31  |:SYS"OS_Byte",11|
00001100  33 2c 73 63 72 25 3a 50  52 49 4e 54 20 52 45 50  |3,scr%:PRINT REP|
00001110  4f 52 54 24 2b 22 20 28  49 6e 74 65 72 6e 61 6c  |ORT$+" (Internal|
00001120  20 65 72 72 6f 72 20 63  6f 64 65 20 22 2b 53 54  | error code "+ST|
00001130  52 24 45 52 4c 2b 22 29  22 2b 43 48 52 24 30 3a  |R$ERL+")"+CHR$0:|
00001140  78 3d 47 45 54 3a 50 52  4f 43 64 65 73 6b 5f 74  |x=GET:PROCdesk_t|
00001150  6f 70 0d 00 a6 10 ee 85  3a f2 64 65 73 6b 5f 74  |op......:.desk_t|
00001160  6f 70 0d 00 a7 1c f2 70  75 6c 6c 5f 76 61 72 69  |op.....pull_vari|
00001170  61 62 6c 65 73 3a f2 70  61 6c 65 74 74 65 0d 00  |ables:.palette..|
00001180  a8 55 de 20 53 43 41 4c  45 25 20 31 36 3a 21 28  |.U. SCALE% 16:!(|
00001190  53 43 41 4c 45 25 2b 30  29 3d 31 36 3a 21 28 53  |SCALE%+0)=16:!(S|
000011a0  43 41 4c 45 25 2b 34 29  3d 31 36 2a 28 48 25 21  |CALE%+4)=16*(H%!|
000011b0  26 46 30 29 3a 21 28 53  43 41 4c 45 25 2b 38 29  |&F0):!(SCALE%+8)|
000011c0  3d 31 36 3a 21 28 53 43  41 4c 45 25 2b 31 32 29  |=16:!(SCALE%+12)|
000011d0  3d 31 36 0d 00 a9 3c c8  99 20 22 4f 53 5f 53 70  |=16...<.. "OS_Sp|
000011e0  72 69 74 65 4f 70 22 2c  26 31 30 41 2c 41 52 45  |riteOp",&10A,ARE|
000011f0  41 25 2c 22 3c 41 5a 54  45 43 24 63 68 61 69 6e  |A%,"<AZTEC$chain|
00001200  64 69 72 3e 2e 62 75 74  74 6f 6e 73 5f 63 22 0d  |dir>.buttons_c".|
00001210  00 aa 2b 6c 65 66 74 25  3d 31 32 3a 6c 6f 77 25  |..+left%=12:low%|
00001220  3d 32 35 36 3a 72 69 67  68 74 25 3d 31 32 36 37  |=256:right%=1267|
00001230  3a 68 69 67 68 25 3d 39  34 37 0d 00 ab 39 ef 20  |:high%=947...9. |
00001240  32 33 2c 31 37 2c 34 2c  31 2c 30 2c 30 2c 30 2c  |23,17,4,1,0,0,0,|
00001250  30 2c 30 2c 30 20 3a 20  f4 20 52 49 53 43 20 4f  |0,0,0 : . RISC O|
00001260  53 20 69 6e 74 65 72 6c  65 61 76 69 6e 67 20 45  |S interleaving E|
00001270  43 46 73 0d 00 ac 1a de  20 69 6e 70 75 74 5f 64  |CFs..... input_d|
00001280  69 73 6b 5f 6e 61 6d 65  25 20 32 35 36 0d 00 ad  |isk_name% 256...|
00001290  32 de 20 70 64 72 65 63  74 25 20 31 36 2c 70 64  |2. pdrect% 16,pd|
000012a0  72 65 63 74 32 25 20 31  36 2c 70 64 74 72 61 6e  |rect2% 16,pdtran|
000012b0  73 25 20 31 36 2c 70 64  70 6c 6f 74 25 20 38 0d  |s% 16,pdplot% 8.|
000012c0  00 ae 26 de 20 73 63 61  6c 65 25 20 31 36 2c 63  |..&. scale% 16,c|
000012d0  74 72 61 6e 73 25 20 32  35 36 2c 70 61 6c 74 61  |trans% 256,palta|
000012e0  62 25 20 36 34 0d 00 af  0e 6d 61 78 62 75 74 25  |b% 64....maxbut%|
000012f0  3d 31 33 0d 00 b0 98 de  20 63 6f 6f 72 64 73 25  |=13..... coords%|
00001300  28 6d 61 78 62 75 74 25  2c 31 29 2c 77 69 64 74  |(maxbut%,1),widt|
00001310  68 25 28 6d 61 78 62 75  74 25 29 2c 68 65 69 67  |h%(maxbut%),heig|
00001320  68 74 25 28 6d 61 78 62  75 74 25 29 2c 65 63 5f  |ht%(maxbut%),ec_|
00001330  77 69 64 74 68 25 28 6d  61 78 62 75 74 25 29 2c  |width%(maxbut%),|
00001340  65 63 5f 68 65 69 67 68  74 25 28 6d 61 78 62 75  |ec_height%(maxbu|
00001350  74 25 29 2c 62 75 74 74  79 70 65 25 28 6d 61 78  |t%),buttype%(max|
00001360  62 75 74 25 29 2c 6c 61  62 65 6c 73 24 28 6d 61  |but%),labels$(ma|
00001370  78 62 75 74 25 29 2c 6c  61 62 5f 6f 66 66 73 25  |xbut%),lab_offs%|
00001380  28 6d 61 78 62 75 74 25  2c 31 29 0d 00 b1 19 de  |(maxbut%,1).....|
00001390  20 62 75 74 24 28 32 2c  33 29 2c 62 6f 78 25 28  | but$(2,3),box%(|
000013a0  34 2c 31 29 0d 00 b2 48  62 75 74 24 28 30 2c 30  |4,1)...Hbut$(0,0|
000013b0  29 3d 22 62 75 74 74 6f  6e 5f 6f 66 66 22 3a 62  |)="button_off":b|
000013c0  75 74 24 28 31 2c 30 29  3d 22 62 75 74 74 6f 6e  |ut$(1,0)="button|
000013d0  5f 6f 76 65 72 22 3a 62  75 74 24 28 32 2c 30 29  |_over":but$(2,0)|
000013e0  3d 22 62 75 74 74 6f 6e  5f 6f 6e 22 0d 00 b3 3f  |="button_on"...?|
000013f0  62 75 74 24 28 30 2c 31  29 3d 22 62 75 74 5f 6f  |but$(0,1)="but_o|
00001400  66 66 22 3a 62 75 74 24  28 31 2c 31 29 3d 22 62  |ff":but$(1,1)="b|
00001410  75 74 5f 6f 76 65 72 22  3a 62 75 74 24 28 32 2c  |ut_over":but$(2,|
00001420  31 29 3d 22 62 75 74 5f  6f 6e 22 0d 00 b4 3c 62  |1)="but_on"...<b|
00001430  75 74 24 28 30 2c 32 29  3d 22 62 75 5f 6f 66 66  |ut$(0,2)="bu_off|
00001440  22 3a 62 75 74 24 28 31  2c 32 29 3d 22 62 75 5f  |":but$(1,2)="bu_|
00001450  6f 76 65 72 22 3a 62 75  74 24 28 32 2c 32 29 3d  |over":but$(2,2)=|
00001460  22 62 75 5f 6f 6e 22 0d  00 b5 42 62 75 74 24 28  |"bu_on"...Bbut$(|
00001470  30 2c 33 29 3d 22 62 75  74 74 5f 6f 66 66 22 3a  |0,3)="butt_off":|
00001480  62 75 74 24 28 31 2c 33  29 3d 22 62 75 74 74 5f  |but$(1,3)="butt_|
00001490  6f 76 65 72 22 3a 62 75  74 24 28 32 2c 33 29 3d  |over":but$(2,3)=|
000014a0  22 62 75 74 74 5f 6f 6e  22 0d 00 b6 0f f2 65 78  |"butt_on".....ex|
000014b0  70 61 6e 64 62 75 74 73  0d 00 b7 25 f2 69 6e 69  |pandbuts...%.ini|
000014c0  74 5f 62 75 74 73 28 31  30 30 30 2c 32 30 2c 31  |t_buts(1000,20,1|
000014d0  38 2c 31 36 2c 32 34 2c  32 34 2c 31 29 0d 00 b8  |8,16,24,24,1)...|
000014e0  11 6d 61 78 73 6f 75 6e  64 73 25 3d 32 30 0d 00  |.maxsounds%=20..|
000014f0  b9 1c de 20 73 6f 75 6e  64 6d 6f 64 73 24 28 6d  |... soundmods$(m|
00001500  61 78 73 6f 75 6e 64 73  25 29 0d 00 ba 08 f7 20  |axsounds%)..... |
00001510  2b 30 0d 00 bb 2b dc 20  64 69 67 2c 6c 69 67 68  |+0...+. dig,ligh|
00001520  74 6e 2c 67 72 75 6e 74  2c 67 72 69 6e 64 2c 63  |tn,grunt,grind,c|
00001530  6c 69 63 6b 2c 74 75 72  6b 2c 79 61 70 0d 00 bc  |lick,turk,yap...|
00001540  34 dc 20 73 6e 6f 72 65  2c 68 69 63 63 75 70 2c  |4. snore,hiccup,|
00001550  73 77 61 6c 6c 6f 77 2c  66 6c 61 72 65 75 70 2c  |swallow,flareup,|
00001560  73 74 65 70 2c 73 74 61  62 2c 4d 61 72 6b 65 64  |step,stab,Marked|
00001570  34 0d 00 bd 35 dc 20 73  6f 6f 74 74 68 72 2c 4d  |4...5. sootthr,M|
00001580  41 52 4b 45 44 33 2c 65  6e 67 69 6e 65 2c 67 6f  |ARKED3,engine,go|
00001590  61 6c 2c 73 74 65 61 6d  2c 72 61 73 70 6c 67 2c  |al,steam,rasplg,|
000015a0  72 61 73 70 73 68 0d 00  be 27 e3 6b 25 3d 30 b8  |raspsh...'.k%=0.|
000015b0  6d 61 78 73 6f 75 6e 64  73 25 3a f3 20 73 6f 75  |maxsounds%:. sou|
000015c0  6e 64 6d 6f 64 73 24 28  6b 25 29 3a ed 0d 00 bf  |ndmods$(k%):....|
000015d0  05 e1 0d 00 c0 04 0d 00  c1 10 dd f2 65 78 70 61  |............expa|
000015e0  6e 64 62 75 74 73 0d 00  c2 2c e3 6b 25 3d 30 b8  |ndbuts...,.k%=0.|
000015f0  32 3a e3 6c 25 3d 30 b8  33 3a f2 65 78 70 61 6e  |2:.l%=0.3:.expan|
00001600  64 28 62 75 74 24 28 6b  25 2c 6c 25 29 29 3a ed  |d(but$(k%,l%)):.|
00001610  3a ed 0d 00 c3 14 f2 65  78 70 61 6e 64 28 22 6d  |:......expand("m|
00001620  6f 75 73 65 22 29 0d 00  c4 05 e1 0d 00 c5 04 0d  |ouse")..........|
00001630  00 c6 36 dd f2 69 6e 69  74 5f 62 75 74 73 28 78  |..6..init_buts(x|
00001640  63 6f 25 2c 79 63 6f 25  2c 77 69 64 25 2c 68 65  |co%,yco%,wid%,he|
00001650  69 25 2c 78 6f 66 66 25  2c 79 6f 66 66 25 2c 62  |i%,xoff%,yoff%,b|
00001660  75 74 74 25 29 0d 00 c7  14 e3 20 62 25 3d 30 20  |utt%)..... b%=0 |
00001670  b8 20 6d 61 78 62 75 74  25 0d 00 c8 29 63 6f 6f  |. maxbut%...)coo|
00001680  72 64 73 25 28 62 25 2c  30 29 3d 78 63 6f 25 3a  |rds%(b%,0)=xco%:|
00001690  63 6f 6f 72 64 73 25 28  62 25 2c 31 29 3d 79 63  |coords%(b%,1)=yc|
000016a0  6f 25 0d 00 c9 24 77 69  64 74 68 25 28 62 25 29  |o%...$width%(b%)|
000016b0  3d 77 69 64 25 3a 68 65  69 67 68 74 25 28 62 25  |=wid%:height%(b%|
000016c0  29 3d 68 65 69 25 0d 00  ca 2f 6c 61 62 5f 6f 66  |)=hei%.../lab_of|
000016d0  66 73 25 28 62 25 2c 30  29 3d 78 6f 66 66 25 3a  |fs%(b%,0)=xoff%:|
000016e0  6c 61 62 5f 6f 66 66 73  25 28 62 25 2c 31 29 3d  |lab_offs%(b%,1)=|
000016f0  79 6f 66 66 25 0d 00 cb  16 62 75 74 74 79 70 65  |yoff%....buttype|
00001700  25 28 62 25 29 3d 62 75  74 74 25 0d 00 cc 05 ed  |%(b%)=butt%.....|
00001710  0d 00 cd 05 e1 0d 00 ce  04 0d 00 cf 0e dd f2 64  |...............d|
00001720  65 73 6b 5f 74 6f 70 0d  00 d0 36 d8 3a de 62 75  |esk_top...6.:.bu|
00001730  66 25 20 34 3a e3 69 25  3d 31 b8 31 36 3a c8 96  |f% 4:.i%=1.16:..|
00001740  3a e3 63 25 3d 30 b8 31  36 3a e7 63 25 3c 31 36  |:.c%=0.16:.c%<16|
00001750  76 25 3d 31 36 20 8b 20  76 25 3d 32 34 0d 00 d1  |v%=16 . v%=24...|
00001760  50 c8 99 22 4f 53 5f 52  65 61 64 50 61 6c 65 74  |P.."OS_ReadPalet|
00001770  74 65 22 2c 63 25 2c 76  25 20 b8 20 2c 2c 64 25  |te",c%,v% . ,,d%|
00001780  3a 21 62 75 66 25 3d 64  25 3a e3 62 25 3d 31 b8  |:!buf%=d%:.b%=1.|
00001790  33 3a e7 62 75 66 25 3f  62 25 3e 30 62 75 66 25  |3:.buf%?b%>0buf%|
000017a0  3f 62 25 2d 3d 31 36 3a  ed 3a 8b 3a ed 0d 00 d2  |?b%-=16:.:.:....|
000017b0  25 ef 31 39 2c 63 25 2c  76 25 2c 62 75 66 25 3f  |%.19,c%,v%,buf%?|
000017c0  31 2c 62 75 66 25 3f 32  2c 62 75 66 25 3f 33 3a  |1,buf%?2,buf%?3:|
000017d0  ed 2c 0d 00 d3 09 2a 46  58 31 35 0d 00 d4 0c 2a  |.,....*FX15....*|
000017e0  46 58 32 32 35 2c 31 0d  00 d5 20 2a 4b 45 59 30  |FX225,1... *KEY0|
000017f0  20 50 41 47 45 3d 26 38  46 30 30 7c 4d 4f 4c 44  | PAGE=&8F00|MOLD|
00001800  7c 4d 52 55 4e 7c 4d 0d  00 d6 10 2a 46 58 31 33  ||MRUN|M....*FX13|
00001810  38 2c 30 2c 31 32 38 0d  00 d7 0a 2a 42 41 53 49  |8,0,128....*BASI|
00001820  43 0d 00 d8 05 fa 0d 00  d9 04 0d 00 da 20 dd f2  |C............ ..|
00001830  61 64 64 5f 73 70 28 73  63 72 25 2c 73 70 72 24  |add_sp(scr%,spr$|
00001840  2c 43 25 2c 44 25 2c 47  25 29 0d 00 db 21 e7 73  |,C%,D%,G%)...!.s|
00001850  63 72 25 3d 31 3a 41 25  3d 48 25 21 26 43 30 3a  |cr%=1:A%=H%!&C0:|
00001860  8b 3a 41 25 3d 48 25 21  26 43 34 0d 00 dc 35 c8  |.:A%=H%!&C4...5.|
00001870  99 20 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |. "OS_SpriteOp",|
00001880  26 31 31 38 2c 41 52 45  41 25 2c 73 70 72 24 20  |&118,AREA%,spr$ |
00001890  b8 20 2c 2c 42 25 3a 42  25 2b 3d 42 25 21 33 32  |. ,,B%:B%+=B%!32|
000018a0  0d 00 dd 10 e7 28 48 25  21 26 46 30 29 3d 32 8c  |.....(H%!&F0)=2.|
000018b0  0d 00 de 0b 44 25 3d 32  2a 44 25 0d 00 df 10 d6  |....D%=2*D%.....|
000018c0  20 73 70 5f 6f 6e 5f 76  67 61 25 0d 00 e0 05 cc  | sp_on_vga%.....|
000018d0  0d 00 e1 10 d6 20 73 70  5f 6f 6e 5f 63 67 61 25  |..... sp_on_cga%|
000018e0  0d 00 e2 05 cd 0d 00 e3  05 e1 0d 00 e4 04 0d 00  |................|
000018f0  e5 0b dd f2 67 6f 5f 6f  6e 0d 00 e6 13 63 6f 6f  |....go_on....coo|
00001900  72 64 73 25 28 30 2c 31  29 3d 32 30 0d 00 e7 19  |rds%(0,1)=20....|
00001910  6c 61 62 65 6c 73 24 28  30 29 3d 22 20 20 47 6f  |labels$(0)="  Go|
00001920  20 20 6f 6e 22 0d 00 e8  18 f2 63 68 6f 6f 73 65  |  on".....choose|
00001930  5f 62 75 74 28 31 2c 31  2c 32 2c 30 29 0d 00 e9  |_but(1,1,2,0)...|
00001940  05 e1 0d 00 ea 04 0d 00  eb 0d dd f2 6a 70 67 6f  |............jpgo|
00001950  5f 6f 6e 0d 00 ec 13 63  6f 6f 72 64 73 25 28 30  |_on....coords%(0|
00001960  2c 31 29 3d 32 34 0d 00  ed 19 6c 61 62 65 6c 73  |,1)=24....labels|
00001970  24 28 30 29 3d 22 20 20  47 6f 20 20 6f 6e 22 0d  |$(0)="  Go  on".|
00001980  00 ee 19 f2 63 68 6f 6f  73 65 5f 62 75 74 28 31  |....choose_but(1|
00001990  2c 31 2c 32 2c 31 38 29  0d 00 ef 10 f2 6a 70 63  |,1,2,18).....jpc|
000019a0  6c 65 61 72 74 65 78 74  0d 00 f0 05 e1 0d 00 f1  |leartext........|
000019b0  04 0d 00 f2 0c dd f2 6a  70 69 6e 66 6f 0d 00 f3  |.......jpinfo...|
000019c0  3f c8 99 20 22 4f 53 5f  53 70 72 69 74 65 4f 70  |?.. "OS_SpriteOp|
000019d0  22 2c 26 31 30 42 2c 41  52 45 41 25 2c 22 3c 41  |",&10B,AREA%,"<A|
000019e0  5a 54 45 43 24 63 68 61  69 6e 64 69 72 3e 2e 4f  |ZTEC$chaindir>.O|
000019f0  4e 45 2e 6a 70 69 6e 66  6f 5f 63 22 0d 00 f4 59  |NE.jpinfo_c"...Y|
00001a00  f4 49 46 28 4c 25 3e 32  30 30 30 29 41 4e 44 28  |.IF(L%>2000)AND(|
00001a10  4c 25 3c 33 30 30 30 29  3a 53 59 53 20 22 4f 53  |L%<3000):SYS "OS|
00001a20  5f 53 70 72 69 74 65 4f  70 22 2c 26 31 30 42 2c  |_SpriteOp",&10B,|
00001a30  41 52 45 41 25 2c 22 3c  41 5a 54 45 43 24 63 68  |AREA%,"<AZTEC$ch|
00001a40  61 69 6e 64 69 72 3e 2e  54 57 4f 2e 6a 70 69 6e  |aindir>.TWO.jpin|
00001a50  66 6f 5f 63 22 0d 00 f5  4d f4 49 46 4c 25 3e 33  |fo_c"...M.IFL%>3|
00001a60  30 30 30 3a 53 59 53 20  22 4f 53 5f 53 70 72 69  |000:SYS "OS_Spri|
00001a70  74 65 4f 70 22 2c 26 31  30 42 2c 41 52 45 41 25  |teOp",&10B,AREA%|
00001a80  2c 22 3c 41 5a 54 45 43  24 63 68 61 69 6e 64 69  |,"<AZTEC$chaindi|
00001a90  72 3e 2e 54 48 52 45 45  2e 6a 70 69 6e 66 6f 5f  |r>.THREE.jpinfo_|
00001aa0  63 22 0d 00 f6 24 f2 69  6e 69 74 5f 62 75 74 73  |c"...$.init_buts|
00001ab0  28 39 30 30 2c 34 30 2c  32 34 2c 31 36 2c 32 36  |(900,40,24,16,26|
00001ac0  2c 32 34 2c 31 29 0d 00  f7 1e 6c 61 62 65 6c 73  |,24,1)....labels|
00001ad0  24 28 30 29 3d 22 20 4a  65 74 2d 70 61 63 20 69  |$(0)=" Jet-pac i|
00001ae0  6e 66 6f 22 0d 00 f8 19  f2 63 68 6f 6f 73 65 5f  |nfo".....choose_|
00001af0  62 75 74 28 31 2c 31 2c  32 2c 31 36 29 0d 00 f9  |but(1,1,2,16)...|
00001b00  0b ef 31 38 2c 30 2c 35  0d 00 fa 0e e3 6b 25 3d  |..18,0,5.....k%=|
00001b10  32 b8 31 88 2d 31 0d 00  fb 16 c8 99 22 4f 53 5f  |2.1.-1......"OS_|
00001b20  42 79 74 65 22 2c 31 31  32 2c 6b 25 0d 00 fc 5a  |Byte",112,k%...Z|
00001b30  ef 32 35 2c 34 2c 31 32  3b 31 32 3b 3a ef 32 35  |.25,4,12;12;:.25|
00001b40  2c 31 30 31 2c 31 32 36  36 3b 31 38 3b 3a ef 32  |,101,1266;18;:.2|
00001b50  35 2c 31 30 31 2c 31 32  36 30 3b 6c 6f 77 25 2d  |5,101,1260;low%-|
00001b60  32 32 3b 3a ef 32 35 2c  31 30 31 2c 31 32 3b 6c  |22;:.25,101,12;l|
00001b70  6f 77 25 2d 32 38 3b 3a  ef 32 35 2c 31 30 31 2c  |ow%-28;:.25,101,|
00001b80  31 38 3b 31 32 3b 0d 00  fd 05 ed 0d 00 fe 3f f2  |18;12;........?.|
00001b90  61 64 64 5f 73 70 28 31  2c 22 6a 70 69 6e 66 6f  |add_sp(1,"jpinfo|
00001ba0  22 2c 31 30 32 2c 31 37  38 2c 36 29 3a f2 61 64  |",102,178,6):.ad|
00001bb0  64 5f 73 70 28 32 2c 22  6a 70 69 6e 66 6f 22 2c  |d_sp(2,"jpinfo",|
00001bc0  31 30 32 2c 31 37 38 2c  36 29 0d 00 ff 25 f2 69  |102,178,6)...%.i|
00001bd0  6e 69 74 5f 62 75 74 73  28 31 30 30 30 2c 32 30  |nit_buts(1000,20|
00001be0  2c 31 38 2c 31 36 2c 32  34 2c 32 34 2c 31 29 0d  |,18,16,24,24,1).|
00001bf0  01 00 05 e1 0d 01 01 04  0d 01 02 0b dd f2 6a 70  |..............jp|
00001c00  65 6e 64 0d 01 03 27 f2  64 65 6c 65 74 65 28 22  |end...'.delete("|
00001c10  6a 70 69 6e 66 6f 22 29  3a f2 64 65 6c 65 74 65  |jpinfo"):.delete|
00001c20  28 22 6a 70 73 63 61 6e  22 29 0d 01 04 25 f2 69  |("jpscan")...%.i|
00001c30  6e 69 74 5f 62 75 74 73  28 31 30 30 30 2c 32 34  |nit_buts(1000,24|
00001c40  2c 32 32 2c 31 36 2c 32  36 2c 32 34 2c 31 29 0d  |,22,16,26,24,1).|
00001c50  01 05 1d 6c 61 62 65 6c  73 24 28 30 29 3d 22 20  |...labels$(0)=" |
00001c60  4a 65 74 2d 70 61 63 20  6f 66 66 22 0d 01 06 19  |Jet-pac off"....|
00001c70  f2 63 68 6f 6f 73 65 5f  62 75 74 28 31 2c 31 2c  |.choose_but(1,1,|
00001c80  32 2c 31 36 29 0d 01 07  39 f2 6a 70 65 64 67 65  |2,16)...9.jpedge|
00001c90  73 3a c8 99 22 4f 53 5f  42 79 74 65 22 2c 31 31  |s:.."OS_Byte",11|
00001ca0  32 2c 32 3a f2 6a 70 65  64 67 65 73 3a c8 99 22  |2,2:.jpedges:.."|
00001cb0  4f 53 5f 42 79 74 65 22  2c 31 31 32 2c 31 0d 01  |OS_Byte",112,1..|
00001cc0  08 07 ef 32 36 0d 01 09  25 f2 69 6e 69 74 5f 62  |...26...%.init_b|
00001cd0  75 74 73 28 31 30 30 30  2c 32 30 2c 31 38 2c 31  |uts(1000,20,18,1|
00001ce0  36 2c 32 34 2c 32 34 2c  31 29 0d 01 0a 05 e1 0d  |6,24,24,1)......|
00001cf0  01 0b 04 0d 01 0c 0d dd  f2 6a 70 65 64 67 65 73  |.........jpedges|
00001d00  0d 01 0d 2a ef 31 38 2c  30 2c 32 3a ef 32 35 2c  |...*.18,0,2:.25,|
00001d10  34 2c 30 3b 32 34 34 3b  3a ef 32 35 2c 31 30 31  |4,0;244;:.25,101|
00001d20  2c 31 32 37 38 3b 32 34  36 3b 0d 01 0e 2a ef 31  |,1278;246;...*.1|
00001d30  38 2c 30 2c 30 3a ef 32  35 2c 34 2c 38 3b 32 34  |8,0,0:.25,4,8;24|
00001d40  30 3b 3a ef 32 35 2c 31  30 31 2c 31 32 36 38 3b  |0;:.25,101,1268;|
00001d50  32 34 32 3b 0d 01 0f 2a  ef 31 38 2c 30 2c 33 3a  |242;...*.18,0,3:|
00001d60  ef 32 35 2c 34 2c 38 3b  32 33 36 3b 3a ef 32 35  |.25,4,8;236;:.25|
00001d70  2c 31 30 31 2c 31 32 36  38 3b 32 33 38 3b 0d 01  |,101,1268;238;..|
00001d80  10 3c ef 31 38 2c 30 2c  30 3a ef 32 35 2c 34 2c  |.<.18,0,0:.25,4,|
00001d90  31 32 3b 32 33 32 3b 3a  ef 32 35 2c 31 30 31 2c  |12;232;:.25,101,|
00001da0  31 32 36 36 3b 32 33 34  3b 3a ef 32 35 2c 31 30  |1266;234;:.25,10|
00001db0  31 2c 31 32 36 34 3b 31  32 3b 0d 01 11 39 ef 31  |1,1264;12;...9.1|
00001dc0  38 2c 30 2c 32 3a ef 32  35 2c 34 2c 31 32 3b 32  |8,0,2:.25,4,12;2|
00001dd0  33 30 3b 3a ef 32 35 2c  31 30 31 2c 31 34 3b 31  |30;:.25,101,14;1|
00001de0  32 3b 3a ef 32 35 2c 31  30 31 2c 31 32 36 32 3b  |2;:.25,101,1262;|
00001df0  31 34 3b 0d 01 12 2a ef  31 38 2c 30 2c 31 3a ef  |14;...*.18,0,1:.|
00001e00  32 35 2c 34 2c 31 36 3b  31 36 3b 3a ef 32 35 2c  |25,4,16;16;:.25,|
00001e10  31 30 31 2c 31 32 36 32  3b 32 33 30 3b 0d 01 13  |101,1262;230;...|
00001e20  05 e1 0d 01 14 04 0d 01  15 0b dd f2 79 65 73 6e  |............yesn|
00001e30  6f 0d 01 16 25 f2 69 6e  69 74 5f 62 75 74 73 28  |o...%.init_buts(|
00001e40  31 30 32 30 2c 34 30 2c  31 36 2c 31 36 2c 32 38  |1020,40,16,16,28|
00001e50  2c 32 34 2c 31 29 0d 01  17 3c 63 6f 6f 72 64 73  |,24,1)...<coords|
00001e60  25 28 30 2c 30 29 3d 38  32 30 3a 6c 61 62 65 6c  |%(0,0)=820:label|
00001e70  73 24 28 30 29 3d 22 20  20 20 20 4e 6f 22 3a 6c  |s$(0)="    No":l|
00001e80  61 62 65 6c 73 24 28 31  29 3d 22 20 20 20 59 65  |abels$(1)="   Ye|
00001e90  73 22 0d 01 18 18 f2 63  68 6f 6f 73 65 5f 62 75  |s".....choose_bu|
00001ea0  74 28 31 2c 32 2c 32 2c  30 29 0d 01 19 25 f2 69  |t(1,2,2,0)...%.i|
00001eb0  6e 69 74 5f 62 75 74 73  28 31 30 30 30 2c 32 30  |nit_buts(1000,20|
00001ec0  2c 31 38 2c 31 36 2c 32  34 2c 32 34 2c 31 29 0d  |,18,16,24,24,1).|
00001ed0  01 1a 05 e1 0d 01 1b 04  0d 01 1c 19 dd f2 70 6f  |..............po|
00001ee0  73 62 75 74 74 6f 6e 73  28 6e 6f 62 75 74 73 25  |sbuttons(nobuts%|
00001ef0  29 0d 01 1d 0c 74 6f 74  77 69 25 3d 30 0d 01 1e  |)....totwi%=0...|
00001f00  13 e3 6b 25 3d 30 b8 6e  6f 62 75 74 73 25 2d 31  |..k%=0.nobuts%-1|
00001f10  0d 01 1f 42 e7 28 62 75  74 74 79 70 65 25 28 6b  |...B.(buttype%(k|
00001f20  25 29 3d 30 29 84 28 62  75 74 74 79 70 65 25 28  |%)=0).(buttype%(|
00001f30  6b 25 29 3d 31 29 3a 74  6f 74 77 69 25 2b 3d 31  |k%)=1):totwi%+=1|
00001f40  37 36 2a 28 77 69 64 74  68 25 28 6b 25 29 2f 31  |76*(width%(k%)/1|
00001f50  36 29 0d 01 20 2f e7 62  75 74 74 79 70 65 25 28  |6).. /.buttype%(|
00001f60  6b 25 29 3d 33 3a 74 6f  74 77 69 25 2b 3d 33 35  |k%)=3:totwi%+=35|
00001f70  32 2a 28 77 69 64 74 68  25 28 6b 25 29 2f 31 36  |2*(width%(k%)/16|
00001f80  29 0d 01 21 05 ed 0d 01  22 3e 67 61 70 25 3d 28  |)..!....">gap%=(|
00001f90  31 32 38 30 2d 32 34 2d  74 6f 74 77 69 25 29 2f  |1280-24-totwi%)/|
00001fa0  28 6e 6f 62 75 74 73 25  2b 31 29 3a 74 6f 74 77  |(nobuts%+1):totw|
00001fb0  69 25 3d 67 61 70 25 2b  31 32 3a 62 75 74 63 6e  |i%=gap%+12:butcn|
00001fc0  74 25 3d 30 0d 01 23 05  f5 0d 01 24 1d 63 6f 6f  |t%=0..#....$.coo|
00001fd0  72 64 73 25 28 62 75 74  63 6e 74 25 2c 30 29 3d  |rds%(butcnt%,0)=|
00001fe0  74 6f 74 77 69 25 0d 01  25 58 e7 28 62 75 74 74  |totwi%..%X.(butt|
00001ff0  79 70 65 25 28 62 75 74  63 6e 74 25 29 3d 30 29  |ype%(butcnt%)=0)|
00002000  84 28 62 75 74 74 79 70  65 25 28 62 75 74 63 6e  |.(buttype%(butcn|
00002010  74 25 29 3d 31 29 3a 74  6f 74 77 69 25 2b 3d 67  |t%)=1):totwi%+=g|
00002020  61 70 25 2b 28 31 37 36  2a 28 77 69 64 74 68 25  |ap%+(176*(width%|
00002030  28 62 75 74 63 6e 74 25  29 2f 31 36 29 29 0d 01  |(butcnt%)/16))..|
00002040  26 40 e7 62 75 74 74 79  70 65 25 28 62 75 74 63  |&@.buttype%(butc|
00002050  6e 74 25 29 3d 33 3a 74  6f 74 77 69 25 2b 3d 67  |nt%)=3:totwi%+=g|
00002060  61 70 25 2b 28 33 35 32  2a 28 77 69 64 74 68 25  |ap%+(352*(width%|
00002070  28 62 75 74 63 6e 74 25  29 2f 31 36 29 29 0d 01  |(butcnt%)/16))..|
00002080  27 0e 62 75 74 63 6e 74  25 2b 3d 31 0d 01 28 14  |'.butcnt%+=1..(.|
00002090  fd 62 75 74 63 6e 74 25  3d 6e 6f 62 75 74 73 25  |.butcnt%=nobuts%|
000020a0  0d 01 29 05 e1 0d 01 2a  04 0d 01 2b 2f dd f2 63  |..)....*...+/..c|
000020b0  68 6f 6f 73 65 5f 62 75  74 28 73 63 72 25 2c 62  |hoose_but(scr%,b|
000020c0  75 74 5f 6e 6f 25 2c 6c  61 62 5f 79 6e 25 2c 63  |ut_no%,lab_yn%,c|
000020d0  6f 6e 74 72 6f 6c 25 29  0d 01 2c 61 f4 20 73 63  |ontrol%)..,a. sc|
000020e0  72 25 3d 73 63 72 65 65  6e 20 6e 75 6d 62 65 72  |r%=screen number|
000020f0  2c 20 62 75 74 5f 6e 6f  25 3d 6e 75 6d 62 65 72  |, but_no%=number|
00002100  20 6f 66 20 62 75 74 74  6f 6e 73 20 74 6f 20 70  | of buttons to p|
00002110  6c 6f 74 2c 20 6c 61 62  5f 79 6e 25 3d 31 20 69  |lot, lab_yn%=1 i|
00002120  66 20 6c 61 62 65 6c 20  73 70 72 69 74 65 20 65  |f label sprite e|
00002130  6c 73 65 20 77 6f 72 64  73 0d 01 2d 6b f4 20 63  |lse words..-k. c|
00002140  6f 6e 74 72 6f 6c 25 20  64 65 66 69 6e 65 73 20  |ontrol% defines |
00002150  76 61 72 69 6f 75 73 20  6f 70 74 69 6f 6e 73 20  |various options |
00002160  64 65 70 65 6e 64 65 6e  74 20 6f 6e 20 62 69 74  |dependent on bit|
00002170  20 73 65 74 74 69 6e 67  73 20 2d 20 75 6e 73 65  | settings - unse|
00002180  74 20 28 69 65 2e 20 30  29 20 20 20 20 20 20 20  |t (ie. 0)       |
00002190  20 20 20 20 20 20 20 20  20 20 73 65 74 20 28 69  |          set (i|
000021a0  65 20 31 29 0d 01 2e 76  f4 20 20 20 20 20 20 20  |e 1)...v.       |
000021b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000021d0  20 20 20 20 20 20 20 20  20 20 20 20 62 69 74 20  |            bit |
000021e0  20 20 30 20 20 20 20 6c  6f 6f 70 20 69 6e 20 50  |  0    loop in P|
000021f0  52 4f 43 20 75 6e 74 69  6c 20 63 68 6f 73 65 6e  |ROC until chosen|
00002200  20 20 20 20 20 73 69 6e  67 6c 65 20 70 61 73 73  |     single pass|
00002210  20 74 68 72 75 20 50 52  4f 43 0d 01 2f 71 f4 20  | thru PROC../q. |
00002220  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00002250  20 20 20 20 20 20 20 20  31 20 20 20 20 63 6c 65  |        1    cle|
00002260  61 72 20 74 65 78 74 20  61 72 65 61 20 61 66 74  |ar text area aft|
00002270  65 72 20 63 68 6f 69 63  65 20 20 64 6f 6e 27 74  |er choice  don't|
00002280  20 63 6c 65 61 72 20 74  65 78 74 0d 01 30 6a f4  | clear text..0j.|
00002290  20 20 20 20 4e 42 20 62  69 74 73 20 32 20 61 6e  |    NB bits 2 an|
000022a0  64 20 33 20 6f 66 20 63  6f 6e 74 72 6f 6c 25 20  |d 3 of control% |
000022b0  61 72 65 20 6e 6f 77 20  69 67 6e 6f 72 65 64 20  |are now ignored |
000022c0  20 20 20 58 58 58 20 20  20 32 20 20 20 20 4d 4f  |   XXX   2    MO|
000022d0  55 53 45 20 74 6f 20 72  69 67 68 74 20 6f 66 20  |USE to right of |
000022e0  6c 61 73 74 20 62 6f 78  20 20 20 20 73 65 65 20  |last box    see |
000022f0  62 69 74 20 33 0d 01 31  88 f4 20 20 20 20 20 20  |bit 3..1..      |
00002300  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00002320  20 20 20 20 20 20 20 20  20 20 20 20 20 58 58 58  |             XXX|
00002330  20 20 20 33 20 20 20 20  4d 4f 55 53 45 20 74 6f  |   3    MOUSE to|
00002340  20 62 65 6c 6f 77 20 63  68 6f 69 63 65 20 20 20  | below choice   |
00002350  20 20 20 20 20 20 4d 4f  55 53 45 20 74 6f 20 72  |      MOUSE to r|
00002360  69 67 68 74 20 6f 66 20  63 68 6f 69 63 65 20 28  |ight of choice (|
00002370  69 66 20 62 69 74 20 32  20 73 65 74 29 0d 01 32  |if bit 2 set)..2|
00002380  81 f4 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |..              |
00002390  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000023b0  20 20 20 20 20 20 20 20  20 20 20 34 20 20 20 20  |           4    |
000023c0  75 73 65 20 50 52 4f 43  77 6f 72 64 73 20 28 62  |use PROCwords (b|
000023d0  6c 61 63 6b 20 77 6f 72  64 73 29 20 20 20 75 73  |lack words)   us|
000023e0  65 20 50 52 4f 43 6a 70  77 6f 72 64 73 20 28 63  |e PROCjpwords (c|
000023f0  6f 6c 6f 75 72 65 64 20  77 6f 72 64 73 29 0d 01  |oloured words)..|
00002400  33 2d 20 20 e7 28 63 6f  6e 74 72 6f 6c 25 80 31  |3-  .(control%.1|
00002410  29 3d 31 3a 6f 6e 65 6c  6f 6f 70 25 3d b9 3a 8b  |)=1:oneloop%=.:.|
00002420  3a 6f 6e 65 6c 6f 6f 70  25 3d a3 0d 01 34 31 20  |:oneloop%=...41 |
00002430  20 e7 28 63 6f 6e 74 72  6f 6c 25 80 32 29 3d 30  | .(control%.2)=0|
00002440  3a 63 6c 65 61 72 74 65  78 74 25 3d b9 3a 8b 3a  |:cleartext%=.:.:|
00002450  63 6c 65 61 72 74 65 78  74 25 3d a3 0d 01 35 31  |cleartext%=...51|
00002460  20 20 e7 28 63 6f 6e 74  72 6f 6c 25 80 31 36 29  |  .(control%.16)|
00002470  3d 31 36 3a 69 6e 6a 65  74 70 61 63 25 3d b9 3a  |=16:injetpac%=.:|
00002480  8b 3a 69 6e 6a 65 74 70  61 63 25 3d a3 0d 01 36  |.:injetpac%=...6|
00002490  3f f4 49 46 28 63 6f 6e  74 72 6f 6c 25 41 4e 44  |?.IF(control%AND|
000024a0  34 29 3d 30 3a 6d 6f 75  73 65 72 69 67 68 74 25  |4)=0:mouseright%|
000024b0  3d 54 52 55 45 3a 45 4c  53 45 3a 6d 6f 75 73 65  |=TRUE:ELSE:mouse|
000024c0  72 69 67 68 74 25 3d 46  41 4c 53 45 0d 01 37 52  |right%=FALSE..7R|
000024d0  f4 49 46 4e 4f 54 6d 6f  75 73 65 72 69 67 68 74  |.IFNOTmouseright|
000024e0  25 54 48 45 4e 3a 49 46  28 63 6f 6e 74 72 6f 6c  |%THEN:IF(control|
000024f0  25 41 4e 44 38 29 3d 30  3a 6d 6f 75 73 65 64 6f  |%AND8)=0:mousedo|
00002500  77 6e 25 3d 54 52 55 45  3a 45 4c 53 45 3a 6d 6f  |wn%=TRUE:ELSE:mo|
00002510  75 73 65 64 6f 77 6e 25  3d 46 41 4c 53 45 0d 01  |usedown%=FALSE..|
00002520  38 12 20 20 e7 20 6f 6e  65 6c 6f 6f 70 25 20 8c  |8.  . oneloop% .|
00002530  0d 01 39 55 20 20 20 20  e7 20 66 69 72 73 74 6c  |..9U    . firstl|
00002540  6f 6f 70 25 3d b9 20 3a  20 f2 73 65 74 75 70 5f  |oop%=. : .setup_|
00002550  62 75 74 73 28 73 63 72  25 29 20 3a 20 63 68 6f  |buts(scr%) : cho|
00002560  73 65 6e 25 3d 32 30 20  3a 20 6c 61 73 74 5f 70  |sen%=20 : last_p|
00002570  6f 73 25 3d 32 30 20 3a  20 66 69 72 73 74 6c 6f  |os%=20 : firstlo|
00002580  6f 70 25 3d a3 0d 01 3a  07 20 20 cc 0d 01 3b 19  |op%=...:.  ...;.|
00002590  20 20 20 20 f2 73 65 74  75 70 5f 62 75 74 73 28  |    .setup_buts(|
000025a0  73 63 72 25 29 0d 01 3c  18 20 20 20 20 c8 99 22  |scr%)..<.    .."|
000025b0  4f 53 5f 42 79 74 65 22  2c 32 31 2c 39 0d 01 3d  |OS_Byte",21,9..=|
000025c0  0c 20 20 20 20 c8 97 20  ee 0d 01 3e 13 20 20 20  |.    .. ...>.   |
000025d0  20 f2 6d 6f 75 73 65 5f  74 65 78 74 0d 01 3f 14  | .mouse_text..?.|
000025e0  20 20 20 20 6c 61 73 74  5f 70 6f 73 25 3d 32 30  |    last_pos%=20|
000025f0  0d 01 40 12 20 20 20 20  63 68 6f 73 65 6e 25 3d  |..@.    chosen%=|
00002600  32 30 0d 01 41 07 20 20  cd 0d 01 42 0b 20 20 2a  |20..A.  ...B.  *|
00002610  46 58 31 35 0d 01 43 07  20 20 f5 0d 01 44 29 20  |FX15..C.  ...D) |
00002620  20 20 20 e7 20 ac 6f 6e  65 6c 6f 6f 70 25 20 3a  |   . .oneloop% :|
00002630  20 c8 97 20 6d 5f 78 25  2c 6d 5f 79 25 2c 6d 5f  | .. m_x%,m_y%,m_|
00002640  62 75 74 25 0d 01 45 1a  20 20 20 20 e3 20 6b 25  |but%..E.    . k%|
00002650  3d 30 20 b8 20 62 75 74  5f 6e 6f 25 2d 31 0d 01  |=0 . but_no%-1..|
00002660  46 14 20 20 20 20 20 20  f2 73 63 61 6c 65 28 6b  |F.      .scale(k|
00002670  25 29 0d 01 47 88 20 20  20 20 20 20 e7 20 28 6d  |%)..G.      . (m|
00002680  5f 78 25 3c 3d 63 6f 6f  72 64 73 25 28 6b 25 2c  |_x%<=coords%(k%,|
00002690  30 29 2b 65 63 5f 77 69  64 74 68 25 28 6b 25 29  |0)+ec_width%(k%)|
000026a0  29 20 80 20 28 6d 5f 78  25 3e 3d 63 6f 6f 72 64  |) . (m_x%>=coord|
000026b0  73 25 28 6b 25 2c 30 29  29 20 80 20 28 6d 5f 79  |s%(k%,0)) . (m_y|
000026c0  25 3c 3d 63 6f 6f 72 64  73 25 28 6b 25 2c 31 29  |%<=coords%(k%,1)|
000026d0  2b 65 63 5f 68 65 69 67  68 74 25 28 6b 25 29 29  |+ec_height%(k%))|
000026e0  20 80 20 28 6d 5f 79 25  3e 3d 63 6f 6f 72 64 73  | . (m_y%>=coords|
000026f0  25 28 6b 25 2c 31 29 29  20 8c 0d 01 48 1d 20 20  |%(k%,1)) ...H.  |
00002700  20 20 20 20 20 20 e7 20  6c 61 73 74 5f 70 6f 73  |      . last_pos|
00002710  25 3c 3e 6b 25 20 8c 0d  01 49 1f 20 20 20 20 20  |%<>k% ...I.     |
00002720  20 20 20 20 20 e7 20 6c  61 73 74 5f 70 6f 73 25  |     . last_pos%|
00002730  3c 3e 32 30 20 8c 0d 01  4a 21 20 20 20 20 20 20  |<>20 ...J!      |
00002740  20 20 20 20 20 20 f2 73  63 61 6c 65 28 6c 61 73  |      .scale(las|
00002750  74 5f 70 6f 73 25 29 0d  01 4b 7c 20 20 20 20 20  |t_pos%)..K|     |
00002760  20 20 20 20 20 20 20 c8  99 20 22 4f 53 5f 53 70  |       .. "OS_Sp|
00002770  72 69 74 65 4f 70 22 2c  26 31 33 34 2c 41 52 45  |riteOp",&134,ARE|
00002780  41 25 2c 62 75 74 24 28  30 2c 62 75 74 74 79 70  |A%,but$(0,buttyp|
00002790  65 25 28 6c 61 73 74 5f  70 6f 73 25 29 29 2c 63  |e%(last_pos%)),c|
000027a0  6f 6f 72 64 73 25 28 6c  61 73 74 5f 70 6f 73 25  |oords%(last_pos%|
000027b0  2c 30 29 2c 63 6f 6f 72  64 73 25 28 6c 61 73 74  |,0),coords%(last|
000027c0  5f 70 6f 73 25 2c 31 29  2c 30 2c 53 43 41 4c 45  |_pos%,1),0,SCALE|
000027d0  25 2c 30 0d 01 4c 28 20  20 20 20 20 20 20 20 20  |%,0..L(         |
000027e0  20 20 20 f2 61 64 64 5f  6c 61 62 65 6c 73 28 6c  |   .add_labels(l|
000027f0  61 73 74 5f 70 6f 73 25  2c 30 29 0d 01 4d 0f 20  |ast_pos%,0)..M. |
00002800  20 20 20 20 20 20 20 20  20 cd 0d 01 4e 18 20 20  |         ...N.  |
00002810  20 20 20 20 20 20 20 20  f2 73 63 61 6c 65 28 6b  |        .scale(k|
00002820  25 29 0d 01 4f 65 20 20  20 20 20 20 20 20 20 20  |%)..Oe          |
00002830  c8 99 20 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  |.. "OS_SpriteOp"|
00002840  2c 26 31 33 34 2c 41 52  45 41 25 2c 62 75 74 24  |,&134,AREA%,but$|
00002850  28 31 2c 62 75 74 74 79  70 65 25 28 6b 25 29 29  |(1,buttype%(k%))|
00002860  2c 63 6f 6f 72 64 73 25  28 6b 25 2c 30 29 2c 63  |,coords%(k%,0),c|
00002870  6f 6f 72 64 73 25 28 6b  25 2c 31 29 2c 30 2c 53  |oords%(k%,1),0,S|
00002880  43 41 4c 45 25 2c 30 0d  01 50 1f 20 20 20 20 20  |CALE%,0..P.     |
00002890  20 20 20 20 20 f2 61 64  64 5f 6c 61 62 65 6c 73  |     .add_labels|
000028a0  28 6b 25 2c 31 29 0d 01  51 0d 20 20 20 20 20 20  |(k%,1)..Q.      |
000028b0  20 20 cd 0d 01 52 18 20  20 20 20 20 20 20 20 e7  |  ...R.        .|
000028c0  20 6d 5f 62 75 74 25 3d  34 20 8c 0d 01 53 65 20  | m_but%=4 ...Se |
000028d0  20 20 20 20 20 20 20 20  20 c8 99 20 22 4f 53 5f  |         .. "OS_|
000028e0  53 70 72 69 74 65 4f 70  22 2c 26 31 33 34 2c 41  |SpriteOp",&134,A|
000028f0  52 45 41 25 2c 62 75 74  24 28 32 2c 62 75 74 74  |REA%,but$(2,butt|
00002900  79 70 65 25 28 6b 25 29  29 2c 63 6f 6f 72 64 73  |ype%(k%)),coords|
00002910  25 28 6b 25 2c 30 29 2c  63 6f 6f 72 64 73 25 28  |%(k%,0),coords%(|
00002920  6b 25 2c 31 29 2c 30 2c  53 43 41 4c 45 25 2c 30  |k%,1),0,SCALE%,0|
00002930  0d 01 54 1f 20 20 20 20  20 20 20 20 20 20 f2 61  |..T.          .a|
00002940  64 64 5f 6c 61 62 65 6c  73 28 6b 25 2c 31 29 0d  |dd_labels(k%,1).|
00002950  01 55 18 20 20 20 20 20  20 20 20 20 20 63 68 6f  |.U.          cho|
00002960  73 65 6e 25 3d 6b 25 0d  01 56 0d 20 20 20 20 20  |sen%=k%..V.     |
00002970  20 20 20 cd 0d 01 57 18  20 20 20 20 20 20 20 20  |   ...W.        |
00002980  6c 61 73 74 5f 70 6f 73  25 3d 6b 25 0d 01 58 0b  |last_pos%=k%..X.|
00002990  20 20 20 20 20 20 cc 0d  01 59 1c 20 20 20 20 20  |      ...Y.     |
000029a0  20 20 20 e7 20 6c 61 73  74 5f 70 6f 73 25 3d 6b  |   . last_pos%=k|
000029b0  25 20 8c 0d 01 5a 65 20  20 20 20 20 20 20 20 20  |% ...Ze         |
000029c0  20 c8 99 20 22 4f 53 5f  53 70 72 69 74 65 4f 70  | .. "OS_SpriteOp|
000029d0  22 2c 26 31 33 34 2c 41  52 45 41 25 2c 62 75 74  |",&134,AREA%,but|
000029e0  24 28 30 2c 62 75 74 74  79 70 65 25 28 6b 25 29  |$(0,buttype%(k%)|
000029f0  29 2c 63 6f 6f 72 64 73  25 28 6b 25 2c 30 29 2c  |),coords%(k%,0),|
00002a00  63 6f 6f 72 64 73 25 28  6b 25 2c 31 29 2c 30 2c  |coords%(k%,1),0,|
00002a10  53 43 41 4c 45 25 2c 30  0d 01 5b 1f 20 20 20 20  |SCALE%,0..[.    |
00002a20  20 20 20 20 20 20 f2 61  64 64 5f 6c 61 62 65 6c  |      .add_label|
00002a30  73 28 6b 25 2c 30 29 0d  01 5c 1a 20 20 20 20 20  |s(k%,0)..\.     |
00002a40  20 20 20 20 20 6c 61 73  74 5f 70 6f 73 25 3d 32  |     last_pos%=2|
00002a50  30 0d 01 5d 0d 20 20 20  20 20 20 20 20 cd 0d 01  |0..].        ...|
00002a60  5e 0b 20 20 20 20 20 20  cd 0d 01 5f 09 20 20 20  |^.      ..._.   |
00002a70  20 ed 0d 01 60 2f 20 20  fd 20 28 28 63 68 6f 73  | ...`/  . ((chos|
00002a80  65 6e 25 3c 3e 32 30 29  20 80 20 28 6d 5f 62 75  |en%<>20) . (m_bu|
00002a90  74 25 3d 30 29 29 20 84  20 6f 6e 65 6c 6f 6f 70  |t%=0)) . oneloop|
00002aa0  25 0d 01 61 13 20 20 e7  20 ac 6f 6e 65 6c 6f 6f  |%..a.  . .oneloo|
00002ab0  70 25 20 8c 0d 01 62 10  20 20 20 f2 77 61 69 74  |p% ...b.   .wait|
00002ac0  28 32 30 29 0d 01 63 19  f4 20 20 20 49 46 6d 6f  |(20)..c..   IFmo|
00002ad0  75 73 65 72 69 67 68 74  25 54 48 45 4e 0d 01 64  |useright%THEN..d|
00002ae0  6d f4 20 20 20 20 4d 4f  55 53 45 20 54 4f 20 63  |m.    MOUSE TO c|
00002af0  6f 6f 72 64 73 25 28 62  75 74 5f 6e 6f 25 2d 31  |oords%(but_no%-1|
00002b00  2c 30 29 2b 65 63 5f 77  69 64 74 68 25 28 62 75  |,0)+ec_width%(bu|
00002b10  74 5f 6e 6f 25 2d 31 29  2b 32 34 2c 63 6f 6f 72  |t_no%-1)+24,coor|
00002b20  64 73 25 28 62 75 74 5f  6e 6f 25 2d 31 2c 31 29  |ds%(but_no%-1,1)|
00002b30  2b 28 65 63 5f 68 65 69  67 68 74 25 28 62 75 74  |+(ec_height%(but|
00002b40  5f 6e 6f 25 2d 31 29 2f  32 29 0d 01 65 0c f4 20  |_no%-1)/2)..e.. |
00002b50  20 20 45 4c 53 45 0d 01  66 19 f4 20 20 20 20 49  |  ELSE..f..    I|
00002b60  46 6d 6f 75 73 65 64 6f  77 6e 25 54 48 45 4e 0d  |Fmousedown%THEN.|
00002b70  01 67 52 f4 20 20 20 20  20 4d 4f 55 53 45 20 54  |.gR.     MOUSE T|
00002b80  4f 20 63 6f 6f 72 64 73  25 28 63 68 6f 73 65 6e  |O coords%(chosen|
00002b90  25 2c 30 29 2b 28 65 63  5f 77 69 64 74 68 25 28  |%,0)+(ec_width%(|
00002ba0  63 68 6f 73 65 6e 25 29  2f 32 29 2c 63 6f 6f 72  |chosen%)/2),coor|
00002bb0  64 73 25 28 63 68 6f 73  65 6e 25 2c 31 29 2d 32  |ds%(chosen%,1)-2|
00002bc0  34 0d 01 68 0d f4 20 20  20 20 45 4c 53 45 0d 01  |4..h..    ELSE..|
00002bd0  69 66 f4 20 20 20 20 20  4d 4f 55 53 45 20 54 4f  |if.     MOUSE TO|
00002be0  20 63 6f 6f 72 64 73 25  28 63 68 6f 73 65 6e 25  | coords%(chosen%|
00002bf0  2c 30 29 2b 65 63 5f 77  69 64 74 68 25 28 63 68  |,0)+ec_width%(ch|
00002c00  6f 73 65 6e 25 29 2b 32  34 2c 63 6f 6f 72 64 73  |osen%)+24,coords|
00002c10  25 28 63 68 6f 73 65 6e  25 2c 31 29 2b 28 65 63  |%(chosen%,1)+(ec|
00002c20  5f 68 65 69 67 68 74 25  28 63 68 6f 73 65 6e 25  |_height%(chosen%|
00002c30  29 2f 32 29 0d 01 6a 0e  f4 20 20 20 20 45 4e 44  |)/2)..j..    END|
00002c40  49 46 0d 01 6b 0d f4 20  20 20 45 4e 44 49 46 0d  |IF..k..   ENDIF.|
00002c50  01 6c 0b 20 20 20 c8 97  20 87 0d 01 6d 1d 20 20  |.l.   .. ...m.  |
00002c60  20 e7 63 6c 65 61 72 74  65 78 74 25 3a f2 63 6c  | .cleartext%:.cl|
00002c70  65 61 72 74 65 78 74 0d  01 6e 07 20 20 cd 0d 01  |eartext..n.  ...|
00002c80  6f 2e 20 20 21 28 53 43  41 4c 45 25 2b 30 29 3d  |o.  !(SCALE%+0)=|
00002c90  31 36 20 3a 20 21 28 53  43 41 4c 45 25 2b 34 29  |16 : !(SCALE%+4)|
00002ca0  3d 31 36 2a 28 48 25 21  26 46 30 29 0d 01 70 05  |=16*(H%!&F0)..p.|
00002cb0  e1 0d 01 71 04 0d 01 72  16 dd f2 73 65 74 75 70  |...q...r...setup|
00002cc0  5f 62 75 74 73 28 73 63  72 25 29 0d 01 73 16 e3  |_buts(scr%)..s..|
00002cd0  20 6b 25 3d 30 20 b8 20  62 75 74 5f 6e 6f 25 2d  | k%=0 . but_no%-|
00002ce0  31 0d 01 74 49 20 e7 28  62 75 74 74 79 70 65 25  |1..tI .(buttype%|
00002cf0  28 6b 25 29 3d 30 29 84  28 62 75 74 74 79 70 65  |(k%)=0).(buttype|
00002d00  25 28 6b 25 29 3d 31 29  3a 65 63 5f 77 69 64 74  |%(k%)=1):ec_widt|
00002d10  68 25 28 6b 25 29 3d 31  37 36 2a 28 77 69 64 74  |h%(k%)=176*(widt|
00002d20  68 25 28 6b 25 29 2f 31  36 29 0d 01 75 35 20 e7  |h%(k%)/16)..u5 .|
00002d30  62 75 74 74 79 70 65 25  28 6b 25 29 3d 32 3a 65  |buttype%(k%)=2:e|
00002d40  63 5f 77 69 64 74 68 25  28 6b 25 29 3d 38 30 2a  |c_width%(k%)=80*|
00002d50  28 77 69 64 74 68 25 28  6b 25 29 2f 31 36 29 0d  |(width%(k%)/16).|
00002d60  01 76 36 20 e7 62 75 74  74 79 70 65 25 28 6b 25  |.v6 .buttype%(k%|
00002d70  29 3d 33 3a 65 63 5f 77  69 64 74 68 25 28 6b 25  |)=3:ec_width%(k%|
00002d80  29 3d 33 35 32 2a 28 77  69 64 74 68 25 28 6b 25  |)=352*(width%(k%|
00002d90  29 2f 31 36 29 0d 01 77  17 20 e7 20 62 75 74 74  |)/16)..w. . butt|
00002da0  79 70 65 25 28 6b 25 29  3d 30 20 8c 0d 01 78 2d  |ype%(k%)=0 ...x-|
00002db0  20 20 65 63 5f 68 65 69  67 68 74 25 28 6b 25 29  |  ec_height%(k%)|
00002dc0  3d 31 36 30 20 2a 20 28  68 65 69 67 68 74 25 28  |=160 * (height%(|
00002dd0  6b 25 29 20 2f 20 31 36  29 0d 01 79 06 20 cc 0d  |k%) / 16)..y. ..|
00002de0  01 7a 2c 20 20 65 63 5f  68 65 69 67 68 74 25 28  |.z,  ec_height%(|
00002df0  6b 25 29 3d 38 30 20 2a  20 28 68 65 69 67 68 74  |k%)=80 * (height|
00002e00  25 28 6b 25 29 20 2f 20  31 36 29 0d 01 7b 06 20  |%(k%) / 16)..{. |
00002e10  cd 0d 01 7c 05 ed 0d 01  7d 19 c8 99 20 22 4f 53  |...|....}... "OS|
00002e20  5f 42 79 74 65 22 2c 31  31 32 2c 73 63 72 25 0d  |_Byte",112,scr%.|
00002e30  01 7e 16 e3 20 6b 25 3d  30 20 b8 20 62 75 74 5f  |.~.. k%=0 . but_|
00002e40  6e 6f 25 2d 31 0d 01 7f  0f 20 f2 73 63 61 6c 65  |no%-1.... .scale|
00002e50  28 6b 25 29 0d 01 80 5c  20 c8 99 20 22 4f 53 5f  |(k%)...\ .. "OS_|
00002e60  53 70 72 69 74 65 4f 70  22 2c 26 31 33 34 2c 41  |SpriteOp",&134,A|
00002e70  52 45 41 25 2c 62 75 74  24 28 30 2c 62 75 74 74  |REA%,but$(0,butt|
00002e80  79 70 65 25 28 6b 25 29  29 2c 63 6f 6f 72 64 73  |ype%(k%)),coords|
00002e90  25 28 6b 25 2c 30 29 2c  63 6f 6f 72 64 73 25 28  |%(k%,0),coords%(|
00002ea0  6b 25 2c 31 29 2c 30 2c  53 43 41 4c 45 25 2c 30  |k%,1),0,SCALE%,0|
00002eb0  0d 01 81 16 20 f2 61 64  64 5f 6c 61 62 65 6c 73  |.... .add_labels|
00002ec0  28 6b 25 2c 30 29 0d 01  82 60 20 f4 20 72 65 64  |(k%,0)...` . red|
00002ed0  75 63 69 6e 67 20 62 75  74 74 6f 6e 20 68 65 69  |ucing button hei|
00002ee0  67 68 74 20 6c 6f 73 65  73 20 62 6f 74 74 6f 6d  |ght loses bottom|
00002ef0  20 6c 69 6e 65 20 28 75  6e 6c 65 73 73 29 20 73  | line (unless) s|
00002f00  70 65 63 69 61 6c 20 73  68 6f 72 74 20 62 75 74  |pecial short but|
00002f10  74 6f 6e 29 20 73 6f 20  61 64 64 20 73 65 70 61  |ton) so add sepa|
00002f20  72 61 74 65 6c 79 0d 01  83 28 20 e7 20 68 65 69  |rately...( . hei|
00002f30  67 68 74 25 28 6b 25 29  3c 31 36 20 80 20 62 75  |ght%(k%)<16 . bu|
00002f40  74 74 79 70 65 25 28 6b  25 29 3d 30 20 8c 0d 01  |ttype%(k%)=0 ...|
00002f50  84 09 20 20 e6 20 33 0d  01 85 2b 20 20 ef 20 32  |..  . 3...+  . 2|
00002f60  35 2c 34 2c 63 6f 6f 72  64 73 25 28 6b 25 2c 30  |5,4,coords%(k%,0|
00002f70  29 3b 63 6f 6f 72 64 73  25 28 6b 25 2c 31 29 2d  |);coords%(k%,1)-|
00002f80  34 3b 0d 01 86 37 20 20  ef 20 32 35 2c 35 2c 63  |4;...7  . 25,5,c|
00002f90  6f 6f 72 64 73 25 28 6b  25 2c 30 29 2b 65 63 5f  |oords%(k%,0)+ec_|
00002fa0  77 69 64 74 68 25 2d 32  3b 63 6f 6f 72 64 73 25  |width%-2;coords%|
00002fb0  28 6b 25 2c 31 29 2d 34  3b 0d 01 87 06 20 cd 0d  |(k%,1)-4;.... ..|
00002fc0  01 88 05 ed 0d 01 89 05  e1 0d 01 8a 04 0d 01 8b  |................|
00002fd0  13 dd f2 73 63 61 6c 65  28 77 68 69 63 68 25 29  |...scale(which%)|
00002fe0  0d 01 8c 46 20 21 28 53  43 41 4c 45 25 2b 30 29  |...F !(SCALE%+0)|
00002ff0  3d 77 69 64 74 68 25 28  77 68 69 63 68 25 29 20  |=width%(which%) |
00003000  3a 20 21 28 53 43 41 4c  45 25 2b 34 29 3d 68 65  |: !(SCALE%+4)=he|
00003010  69 67 68 74 25 28 77 68  69 63 68 25 29 2a 28 48  |ight%(which%)*(H|
00003020  25 21 26 46 30 29 0d 01  8d 05 e1 0d 01 8e 04 0d  |%!&F0)..........|
00003030  01 8f 1e dd f2 61 64 64  5f 6c 61 62 65 6c 73 28  |.....add_labels(|
00003040  77 68 69 63 68 25 2c 64  72 6f 70 25 29 0d 01 90  |which%,drop%)...|
00003050  11 e7 20 6c 61 62 5f 79  6e 25 3d 31 20 8c 0d 01  |.. lab_yn%=1 ...|
00003060  91 95 20 f2 70 75 74 5f  73 70 28 73 63 72 25 2c  |.. .put_sp(scr%,|
00003070  63 6f 6f 72 64 73 25 28  77 68 69 63 68 25 2c 30  |coords%(which%,0|
00003080  29 2b 6c 61 62 5f 6f 66  66 73 25 28 77 68 69 63  |)+lab_offs%(whic|
00003090  68 25 2c 30 29 2c 63 6f  6f 72 64 73 25 28 77 68  |h%,0),coords%(wh|
000030a0  69 63 68 25 2c 31 29 2b  6c 61 62 5f 6f 66 66 73  |ich%,1)+lab_offs|
000030b0  25 28 77 68 69 63 68 25  2c 31 29 2d 28 34 2a 64  |%(which%,1)-(4*d|
000030c0  72 6f 70 25 29 2c 32 2c  31 36 2c 31 36 2c 31 36  |rop%),2,16,16,16|
000030d0  2c 6c 61 62 65 6c 73 24  28 77 68 69 63 68 25 29  |,labels$(which%)|
000030e0  2c 30 2c 30 2c 31 32 37  36 2c 31 30 32 30 2c 26  |,0,0,1276,1020,&|
000030f0  30 30 29 0d 01 92 05 cc  0d 01 93 10 20 e7 69 6e  |00)......... .in|
00003100  6a 65 74 70 61 63 25 8c  0d 01 94 77 20 20 f2 6a  |jetpac%....w  .j|
00003110  70 77 6f 72 64 73 28 63  6f 6f 72 64 73 25 28 77  |pwords(coords%(w|
00003120  68 69 63 68 25 2c 30 29  2b 6c 61 62 5f 6f 66 66  |hich%,0)+lab_off|
00003130  73 25 28 77 68 69 63 68  25 2c 30 29 2c 63 6f 6f  |s%(which%,0),coo|
00003140  72 64 73 25 28 77 68 69  63 68 25 2c 31 29 2b 6c  |rds%(which%,1)+l|
00003150  61 62 5f 6f 66 66 73 25  28 77 68 69 63 68 25 2c  |ab_offs%(which%,|
00003160  31 29 2d 28 34 2a 64 72  6f 70 25 29 2c 30 2c 6c  |1)-(4*drop%),0,l|
00003170  61 62 65 6c 73 24 28 77  68 69 63 68 25 29 29 0d  |abels$(which%)).|
00003180  01 95 06 20 cc 0d 01 96  75 20 20 f2 77 6f 72 64  |... ....u  .word|
00003190  73 28 63 6f 6f 72 64 73  25 28 77 68 69 63 68 25  |s(coords%(which%|
000031a0  2c 30 29 2b 6c 61 62 5f  6f 66 66 73 25 28 77 68  |,0)+lab_offs%(wh|
000031b0  69 63 68 25 2c 30 29 2c  63 6f 6f 72 64 73 25 28  |ich%,0),coords%(|
000031c0  77 68 69 63 68 25 2c 31  29 2b 6c 61 62 5f 6f 66  |which%,1)+lab_of|
000031d0  66 73 25 28 77 68 69 63  68 25 2c 31 29 2d 28 34  |fs%(which%,1)-(4|
000031e0  2a 64 72 6f 70 25 29 2c  30 2c 6c 61 62 65 6c 73  |*drop%),0,labels|
000031f0  24 28 77 68 69 63 68 25  29 29 0d 01 97 06 20 cd  |$(which%)).... .|
00003200  0d 01 98 05 cd 0d 01 99  05 e1 0d 01 9a 04 0d 01  |................|
00003210  9b 2c dd f2 6d 6f 75 6e  74 73 28 73 63 72 25 2c  |.,..mounts(scr%,|
00003220  6d 31 24 2c 6d 32 24 2c  6d 33 24 2c 6d 78 70 6f  |m1$,m2$,m3$,mxpo|
00003230  73 25 2c 6d 79 70 6f 73  25 29 0d 01 9c 4b f2 70  |s%,mypos%)...K.p|
00003240  75 74 5f 73 70 28 73 63  72 25 2c 6d 78 70 6f 73  |ut_sp(scr%,mxpos|
00003250  25 2c 6d 79 70 6f 73 25  2c 31 35 2c 31 36 2c 31  |%,mypos%,15,16,1|
00003260  36 2c 31 36 2c 6d 31 24  2c 6c 65 66 74 25 2c 6c  |6,16,m1$,left%,l|
00003270  6f 77 25 2c 72 69 67 68  74 25 2c 68 69 67 68 25  |ow%,right%,high%|
00003280  2c 26 30 30 29 0d 01 9d  4f f2 70 75 74 5f 73 70  |,&00)...O.put_sp|
00003290  28 73 63 72 25 2c 6d 78  70 6f 73 25 2b 34 38 30  |(scr%,mxpos%+480|
000032a0  2c 6d 79 70 6f 73 25 2c  31 35 2c 31 36 2c 31 36  |,mypos%,15,16,16|
000032b0  2c 31 36 2c 6d 32 24 2c  6c 65 66 74 25 2c 6c 6f  |,16,m2$,left%,lo|
000032c0  77 25 2c 72 69 67 68 74  25 2c 68 69 67 68 25 2c  |w%,right%,high%,|
000032d0  26 30 30 29 0d 01 9e 4f  f2 70 75 74 5f 73 70 28  |&00)...O.put_sp(|
000032e0  73 63 72 25 2c 6d 78 70  6f 73 25 2b 39 36 30 2c  |scr%,mxpos%+960,|
000032f0  6d 79 70 6f 73 25 2c 31  35 2c 31 36 2c 31 36 2c  |mypos%,15,16,16,|
00003300  31 36 2c 6d 33 24 2c 6c  65 66 74 25 2c 6c 6f 77  |16,m3$,left%,low|
00003310  25 2c 72 69 67 68 74 25  2c 68 69 67 68 25 2c 26  |%,right%,high%,&|
00003320  30 30 29 0d 01 9f 05 e1  0d 01 a0 04 0d 01 a1 04  |00).............|
00003330  0d 01 a2 22 dd f2 63 68  6f 6f 73 65 5f 62 6f 78  |..."..choose_box|
00003340  28 73 63 72 25 2c 62 6f  78 5f 6e 6f 25 2c 63 6c  |(scr%,box_no%,cl|
00003350  25 29 0d 01 a3 19 c8 99  20 22 4f 53 5f 42 79 74  |%)...... "OS_Byt|
00003360  65 22 2c 31 31 32 2c 73  63 72 25 0d 01 a4 0d f2  |e",112,scr%.....|
00003370  73 68 6f 77 5f 62 6f 78  0d 01 a5 08 c8 97 20 ee  |show_box...... .|
00003380  0d 01 a6 13 f2 6d 6f 75  73 65 5f 67 72 61 70 68  |.....mouse_graph|
00003390  69 63 73 0d 01 a7 0f 67  6f 74 5f 62 6f 78 25 3d  |ics....got_box%=|
000033a0  31 30 0d 01 a8 05 f5 0d  01 a9 18 20 c8 97 20 6d  |10......... .. m|
000033b0  5f 78 25 2c 6d 5f 79 25  2c 6d 5f 62 75 74 25 0d  |_x%,m_y%,m_but%.|
000033c0  01 aa 17 20 e3 20 6b 25  3d 30 20 b8 20 62 6f 78  |... . k%=0 . box|
000033d0  5f 6e 6f 25 2d 31 0d 01  ab 45 20 20 e7 20 28 94  |_no%-1...E  . (.|
000033e0  28 6d 5f 78 25 2d 28 62  6f 78 25 28 6b 25 2c 30  |(m_x%-(box%(k%,0|
000033f0  29 2b 33 32 29 29 3c 33  32 29 20 80 20 28 94 28  |)+32))<32) . (.(|
00003400  6d 5f 79 25 2d 28 62 6f  78 25 28 6b 25 2c 31 29  |m_y%-(box%(k%,1)|
00003410  2b 33 32 29 29 3c 33 32  29 20 8c 0d 01 ac 13 20  |+32))<32) ..... |
00003420  20 20 e7 20 6d 5f 62 75  74 25 3d 34 20 8c 0d 01  |  . m_but%=4 ...|
00003430  ad 13 20 20 20 20 67 6f  74 5f 62 6f 78 25 3d 6b  |..    got_box%=k|
00003440  25 0d 01 ae 08 20 20 20  cd 0d 01 af 07 20 20 cd  |%....   .....  .|
00003450  0d 01 b0 06 20 ed 0d 01  b1 21 fd 20 28 67 6f 74  |.... ....!. (got|
00003460  5f 62 6f 78 25 3c 3e 31  30 29 20 80 20 28 6d 5f  |_box%<>10) . (m_|
00003470  62 75 74 25 3d 30 29 0d  01 b2 10 c8 97 20 b8 20  |but%=0)...... . |
00003480  31 31 38 34 2c 36 30 0d  01 b3 08 c8 97 20 87 0d  |1184,60...... ..|
00003490  01 b4 13 e7 63 6c 25 3a  f2 63 6c 65 61 72 74 65  |....cl%:.clearte|
000034a0  78 74 0d 01 b5 0d f2 73  68 6f 77 5f 62 6f 78 0d  |xt.....show_box.|
000034b0  01 b6 05 e1 0d 01 b7 04  0d 01 b8 20 dd f2 6a 70  |........... ..jp|
000034c0  63 68 6f 6f 73 65 5f 62  6f 78 28 73 63 72 25 2c  |choose_box(scr%,|
000034d0  62 6f 78 5f 6e 6f 25 29  0d 01 b9 1f f2 63 68 6f  |box_no%).....cho|
000034e0  6f 73 65 5f 62 6f 78 28  73 63 72 25 2c 62 6f 78  |ose_box(scr%,box|
000034f0  5f 6e 6f 25 2c 30 29 0d  01 ba 10 f2 6a 70 63 6c  |_no%,0).....jpcl|
00003500  65 61 72 74 65 78 74 0d  01 bb 05 e1 0d 01 bc 04  |eartext.........|
00003510  0d 01 bd 15 dd f2 6a 70  73 63 61 6e 28 62 6f 78  |......jpscan(box|
00003520  5f 6e 6f 25 29 0d 01 be  3d f2 6a 70 77 6f 72 64  |_no%)...=.jpword|
00003530  73 28 33 35 30 2c 31 32  38 2c 2d 31 2c 22 2e 2e  |s(350,128,-1,"..|
00003540  2e 2e 20 6a 65 74 2d 70  61 63 20 73 63 61 6e 20  |.. jet-pac scan |
00003550  69 6e 20 70 72 6f 67 72  65 73 73 20 2e 2e 2e 2e  |in progress ....|
00003560  22 29 0d 01 bf 15 f2 65  78 70 61 6e 64 28 22 6a  |").....expand("j|
00003570  70 73 63 61 6e 22 29 0d  01 c0 24 53 43 41 4c 45  |pscan")...$SCALE|
00003580  25 21 30 3d 31 36 3a 53  43 41 4c 45 25 21 34 3d  |%!0=16:SCALE%!4=|
00003590  31 36 2a 28 48 25 21 26  46 30 29 0d 01 c1 21 ef  |16*(H%!&F0)...!.|
000035a0  32 35 2c 34 2c 31 32 3b  39 31 32 3b 3a ef 32 35  |25,4,12;912;:.25|
000035b0  2c 39 38 2c 31 32 35 34  3b 33 38 3b 0d 01 c2 12  |,98,1254;38;....|
000035c0  e3 6a 25 3d 39 31 36 b8  32 36 30 88 2d 34 0d 01  |.j%=916.260.-4..|
000035d0  c3 3e c8 96 3a c8 99 22  4f 53 5f 53 70 72 69 74  |.>..:.."OS_Sprit|
000035e0  65 4f 70 22 2c 26 31 33  34 2c 41 52 45 41 25 2c  |eOp",&134,AREA%,|
000035f0  22 6a 70 73 63 61 6e 22  2c 35 38 30 2c 6a 25 2c  |"jpscan",580,j%,|
00003600  26 30 43 2c 53 43 41 4c  45 25 2c 30 0d 01 c4 45  |&0C,SCALE%,0...E|
00003610  e7 6a 25 3c 39 31 36 3a  c8 99 22 4f 53 5f 53 70  |.j%<916:.."OS_Sp|
00003620  72 69 74 65 4f 70 22 2c  26 31 33 34 2c 41 52 45  |riteOp",&134,ARE|
00003630  41 25 2c 22 6a 70 73 63  61 6e 22 2c 35 38 30 2c  |A%,"jpscan",580,|
00003640  6a 25 2b 34 2c 26 30 43  2c 53 43 41 4c 45 25 2c  |j%+4,&0C,SCALE%,|
00003650  30 0d 01 c5 0f e7 62 6f  78 5f 6e 6f 25 3e 30 8c  |0.....box_no%>0.|
00003660  0d 01 c6 14 20 e3 6b 25  3d 30 b8 62 6f 78 5f 6e  |.... .k%=0.box_n|
00003670  6f 25 2d 31 0d 01 c7 44  20 20 e7 28 28 6a 25 2b  |o%-1...D  .((j%+|
00003680  33 36 29 3e 3d 62 6f 78  25 28 6b 25 2c 31 29 29  |36)>=box%(k%,1))|
00003690  80 28 28 6a 25 2b 33 36  29 3c 3d 62 6f 78 25 28  |.((j%+36)<=box%(|
000036a0  6b 25 2c 31 29 2b 36 30  29 3a f2 6a 70 73 63 61  |k%,1)+60):.jpsca|
000036b0  6e 62 6f 78 28 6b 25 29  0d 01 c8 06 20 ed 0d 01  |nbox(k%).... ...|
000036c0  c9 05 cd 0d 01 ca 2d e7  6a 25 3e 32 36 30 3a c8  |......-.j%>260:.|
000036d0  96 3a ef 32 35 2c 34 2c  31 32 3b 6a 25 2d 38 3b  |.:.25,4,12;j%-8;|
000036e0  3a ef 32 35 2c 39 38 2c  31 32 35 34 3b 33 38 3b  |:.25,98,1254;38;|
000036f0  0d 01 cb 22 ef 32 35 2c  34 2c 31 32 3b 6a 25 2d  |...".25,4,12;j%-|
00003700  34 3b 3a ef 32 35 2c 39  38 2c 31 32 35 34 3b 33  |4;:.25,98,1254;3|
00003710  38 3b 0d 01 cc 05 ed 0d  01 cd 3c c8 99 22 4f 53  |8;........<.."OS|
00003720  5f 53 70 72 69 74 65 4f  70 22 2c 26 31 33 34 2c  |_SpriteOp",&134,|
00003730  41 52 45 41 25 2c 22 6a  70 73 63 61 6e 22 2c 35  |AREA%,"jpscan",5|
00003740  38 30 2c 32 36 30 2c 26  30 43 2c 53 43 41 4c 45  |80,260,&0C,SCALE|
00003750  25 2c 30 0d 01 ce 16 f2  63 6f 6d 70 61 63 74 28  |%,0.....compact(|
00003760  22 6a 70 73 63 61 6e 22  29 0d 01 cf 10 f2 6a 70  |"jpscan").....jp|
00003770  63 6c 65 61 72 74 65 78  74 0d 01 d0 32 f2 6a 70  |cleartext...2.jp|
00003780  77 6f 72 64 73 28 34 34  30 2c 31 32 38 2c 2d 31  |words(440,128,-1|
00003790  2c 22 2e 2e 2e 2e 20 73  63 61 6e 20 63 6f 6d 70  |,".... scan comp|
000037a0  6c 65 74 65 20 2e 2e 2e  2e 22 29 0d 01 d1 05 e1  |lete ....").....|
000037b0  0d 01 d2 04 0d 01 d3 13  dd f2 6a 70 73 63 61 6e  |..........jpscan|
000037c0  62 6f 78 28 6b 25 29 0d  01 d4 47 e7 28 6a 25 2b  |box(k%)...G.(j%+|
000037d0  33 36 29 3d 62 6f 78 25  28 6b 25 2c 31 29 2b 36  |36)=box%(k%,1)+6|
000037e0  30 3a ef 32 35 2c 34 2c  62 6f 78 25 28 6b 25 2c  |0:.25,4,box%(k%,|
000037f0  30 29 3b 62 6f 78 25 28  6b 25 2c 31 29 2b 36 30  |0);box%(k%,1)+60|
00003800  3b 3a ef 32 35 2c 39 38  2c 36 32 3b 32 3b 0d 01  |;:.25,98,62;2;..|
00003810  d5 7c e7 28 28 6a 25 2b  33 36 29 3e 62 6f 78 25  |.|.((j%+36)>box%|
00003820  28 6b 25 2c 31 29 29 80  28 28 6a 25 2b 33 36 29  |(k%,1)).((j%+36)|
00003830  3c 62 6f 78 25 28 6b 25  2c 31 29 2b 36 30 29 3a  |<box%(k%,1)+60):|
00003840  ef 32 35 2c 34 2c 62 6f  78 25 28 6b 25 2c 30 29  |.25,4,box%(k%,0)|
00003850  3b 6a 25 2b 33 36 3b 3a  ef 32 35 2c 39 38 2c 32  |;j%+36;:.25,98,2|
00003860  3b 32 3b 3a ef 32 35 2c  34 2c 62 6f 78 25 28 6b  |;2;:.25,4,box%(k|
00003870  25 2c 30 29 2b 36 30 3b  6a 25 2b 33 36 3b 3a ef  |%,0)+60;j%+36;:.|
00003880  32 35 2c 39 38 2c 32 3b  32 3b 0d 01 d6 41 e7 28  |25,98,2;2;...A.(|
00003890  6a 25 2b 33 36 29 3d 62  6f 78 25 28 6b 25 2c 31  |j%+36)=box%(k%,1|
000038a0  29 3a ef 32 35 2c 34 2c  62 6f 78 25 28 6b 25 2c  |):.25,4,box%(k%,|
000038b0  30 29 3b 62 6f 78 25 28  6b 25 2c 31 29 3b 3a ef  |0);box%(k%,1);:.|
000038c0  32 35 2c 39 38 2c 36 32  3b 32 3b 0d 01 d7 05 e1  |25,98,62;2;.....|
000038d0  0d 01 d8 04 0d 01 d9 0e  dd f2 73 68 6f 77 5f 62  |..........show_b|
000038e0  6f 78 0d 01 da 16 e3 20  6b 25 3d 30 20 b8 20 62  |ox..... k%=0 . b|
000038f0  6f 78 5f 6e 6f 25 2d 31  0d 01 db 31 20 ef 20 32  |ox_no%-1...1 . 2|
00003900  35 2c 34 2c 62 6f 78 25  28 6b 25 2c 30 29 3b 62  |5,4,box%(k%,0);b|
00003910  6f 78 25 28 6b 25 2c 31  29 3b 3a ef 20 32 35 2c  |ox%(k%,1);:. 25,|
00003920  39 38 2c 36 32 3b 36 32  3b 0d 01 dc 35 20 ef 20  |98,62;62;...5 . |
00003930  32 35 2c 34 2c 62 6f 78  25 28 6b 25 2c 30 29 2b  |25,4,box%(k%,0)+|
00003940  34 3b 62 6f 78 25 28 6b  25 2c 31 29 2b 34 3b 3a  |4;box%(k%,1)+4;:|
00003950  ef 20 32 35 2c 39 38 2c  35 34 3b 35 34 3b 0d 01  |. 25,98,54;54;..|
00003960  dd 05 ed 0d 01 de 05 e1  0d 01 df 04 0d 01 e0 2a  |...............*|
00003970  dd f2 62 6f 72 64 65 72  73 28 62 6c 65 66 74 25  |..borders(bleft%|
00003980  2c 62 6c 6f 77 25 2c 62  72 69 67 68 74 25 2c 62  |,blow%,bright%,b|
00003990  68 69 67 68 25 29 0d 01  e1 25 ef 20 32 34 2c 62  |high%)...%. 24,b|
000039a0  6c 65 66 74 25 3b 62 6c  6f 77 25 3b 62 72 69 67  |left%;blow%;brig|
000039b0  68 74 25 3b 62 68 69 67  68 25 3b 0d 01 e2 12 ef  |ht%;bhigh%;.....|
000039c0  20 31 38 2c 30 2c 31 33  30 20 3a 20 da 0d 01 e3  | 18,0,130 : ....|
000039d0  29 ef 20 32 34 2c 62 6c  65 66 74 25 2b 34 3b 62  |). 24,bleft%+4;b|
000039e0  6c 6f 77 25 2b 34 3b 62  72 69 67 68 74 25 3b 62  |low%+4;bright%;b|
000039f0  68 69 67 68 25 3b 0d 01  e4 12 ef 20 31 38 2c 30  |high%;..... 18,0|
00003a00  2c 31 32 39 20 3a 20 da  0d 01 e5 2d ef 20 32 34  |,129 : ....-. 24|
00003a10  2c 62 6c 65 66 74 25 2b  38 3b 62 6c 6f 77 25 2b  |,bleft%+8;blow%+|
00003a20  38 3b 62 72 69 67 68 74  25 2d 34 3b 62 68 69 67  |8;bright%-4;bhig|
00003a30  68 25 2d 34 3b 0d 01 e6  12 ef 20 31 38 2c 30 2c  |h%-4;..... 18,0,|
00003a40  31 32 38 20 3a 20 da 0d  01 e7 2d ef 20 32 34 2c  |128 : ....-. 24,|
00003a50  62 6c 65 66 74 25 2b 38  3b 62 6c 6f 77 25 2b 38  |bleft%+8;blow%+8|
00003a60  3b 62 72 69 67 68 74 25  2d 38 3b 62 68 69 67 68  |;bright%-8;bhigh|
00003a70  25 2d 38 3b 0d 01 e8 12  ef 20 31 38 2c 30 2c 31  |%-8;..... 18,0,1|
00003a80  33 31 20 3a 20 da 0d 01  e9 31 ef 20 32 34 2c 62  |31 : ....1. 24,b|
00003a90  6c 65 66 74 25 2b 31 32  3b 62 6c 6f 77 25 2b 31  |left%+12;blow%+1|
00003aa0  32 3b 62 72 69 67 68 74  25 2d 31 32 3b 62 68 69  |2;bright%-12;bhi|
00003ab0  67 68 25 2d 31 32 3b 0d  01 ea 12 ef 20 31 38 2c  |gh%-12;..... 18,|
00003ac0  30 2c 31 32 38 20 3a 20  da 0d 01 eb 31 ef 20 32  |0,128 : ....1. 2|
00003ad0  34 2c 62 6c 65 66 74 25  2b 31 32 3b 62 6c 6f 77  |4,bleft%+12;blow|
00003ae0  25 2b 31 32 3b 62 72 69  67 68 74 25 2d 31 36 3b  |%+12;bright%-16;|
00003af0  62 68 69 67 68 25 2d 31  36 3b 0d 01 ec 12 ef 20  |bhigh%-16;..... |
00003b00  31 38 2c 30 2c 31 33 30  20 3a 20 da 0d 01 ed 2f  |18,0,130 : ..../|
00003b10  f2 62 6f 72 64 65 72 5f  63 65 6e 74 72 65 28 62  |.border_centre(b|
00003b20  6c 65 66 74 25 2c 62 6c  6f 77 25 2c 62 72 69 67  |left%,blow%,brig|
00003b30  68 74 25 2c 62 68 69 67  68 25 29 0d 01 ee 05 e1  |ht%,bhigh%).....|
00003b40  0d 01 ef 04 0d 01 f0 30  dd f2 62 6f 72 64 65 72  |.......0..border|
00003b50  5f 63 65 6e 74 72 65 28  62 6c 65 66 74 25 2c 62  |_centre(bleft%,b|
00003b60  6c 6f 77 25 2c 62 72 69  67 68 74 25 2c 62 68 69  |low%,bright%,bhi|
00003b70  67 68 25 29 0d 01 f1 31  ef 20 32 34 2c 62 6c 65  |gh%)...1. 24,ble|
00003b80  66 74 25 2b 31 36 3b 62  6c 6f 77 25 2b 31 36 3b  |ft%+16;blow%+16;|
00003b90  62 72 69 67 68 74 25 2d  31 36 3b 62 68 69 67 68  |bright%-16;bhigh|
00003ba0  25 2d 31 36 3b 0d 01 f2  12 ef 20 31 38 2c 30 2c  |%-16;..... 18,0,|
00003bb0  31 32 39 20 3a 20 da 0d  01 f3 08 ef 20 32 36 0d  |129 : ...... 26.|
00003bc0  01 f4 05 e1 0d 01 f5 04  0d 01 f6 0f dd f2 63 6c  |..............cl|
00003bd0  65 61 72 74 65 78 74 0d  01 f7 1c ef 20 32 34 2c  |eartext..... 24,|
00003be0  31 36 3b 31 36 3b 31 32  36 33 3b 6c 6f 77 25 2d  |16;16;1263;low%-|
00003bf0  32 35 3b 0d 01 f8 3d f4  20 56 44 55 20 32 33 2c  |25;...=. VDU 23,|
00003c00  31 32 2c 30 2c 31 2c 31  2c 30 2c 30 2c 31 2c 31  |12,0,1,1,0,0,1,1|
00003c10  2c 30 20 3a 20 52 45 4d  20 64 65 66 69 6e 65 20  |,0 : REM define |
00003c20  74 65 78 74 20 62 61 63  6b 67 72 64 20 45 43 46  |text backgrd ECF|
00003c30  0d 01 f9 19 f4 20 56 44  55 20 31 38 2c 31 36 2c  |..... VDU 18,16,|
00003c40  31 32 38 20 3a 20 43 4c  47 0d 01 fa 12 ef 20 31  |128 : CLG..... 1|
00003c50  38 2c 30 2c 31 32 39 20  3a 20 da 0d 01 fb 08 ef  |8,0,129 : ......|
00003c60  20 32 36 0d 01 fc 05 e1  0d 01 fd 04 0d 01 fe 11  | 26.............|
00003c70  dd f2 6a 70 63 6c 65 61  72 74 65 78 74 0d 01 ff  |..jpcleartext...|
00003c80  27 ef 31 38 2c 30 2c 31  32 39 3a ef 32 34 2c 32  |'.18,0,129:.24,2|
00003c90  30 3b 32 30 3b 31 32 35  38 3b 32 30 34 3b 3a da  |0;20;1258;204;:.|
00003ca0  3a ef 32 36 0d 02 00 05  e1 0d 02 01 04 0d 02 02  |:.26............|
00003cb0  1a dd f2 63 6c 65 61 72  67 72 61 70 68 69 63 73  |...cleargraphics|
00003cc0  28 62 63 6f 6c 25 29 0d  02 03 21 ef 20 32 34 2c  |(bcol%)...!. 24,|
00003cd0  6c 65 66 74 25 3b 6c 6f  77 25 3b 72 69 67 68 74  |left%;low%;right|
00003ce0  25 3b 68 69 67 68 25 3b  0d 02 04 18 ef 20 31 38  |%;high%;..... 18|
00003cf0  2c 30 2c 31 32 38 2b 62  63 6f 6c 25 20 3a 20 da  |,0,128+bcol% : .|
00003d00  0d 02 05 08 ef 20 32 36  0d 02 06 05 e1 0d 02 07  |..... 26........|
00003d10  04 0d 02 08 10 dd f2 6d  6f 75 73 65 5f 74 65 78  |.......mouse_tex|
00003d20  74 0d 02 09 1c c8 97 20  c8 93 20 31 36 2c 31 36  |t...... .. 16,16|
00003d30  2c 31 32 36 33 2c 6c 6f  77 25 2d 32 35 0d 02 0a  |,1263,low%-25...|
00003d40  05 e1 0d 02 0b 04 0d 02  0c 14 dd f2 6d 6f 75 73  |............mous|
00003d50  65 5f 67 72 61 70 68 69  63 73 0d 02 0d 21 c8 97  |e_graphics...!..|
00003d60  20 c8 93 20 6c 65 66 74  25 2c 6c 6f 77 25 2c 72  | .. left%,low%,r|
00003d70  69 67 68 74 25 2c 68 69  67 68 25 0d 02 0e 05 e1  |ight%,high%.....|
00003d80  0d 02 0f 04 0d 02 10 10  dd f2 6d 6f 75 73 65 5f  |..........mouse_|
00003d90  66 75 6c 6c 0d 02 11 1b  c8 97 20 c8 93 20 30 2c  |full...... .. 0,|
00003da0  30 2c 31 32 37 39 2c 68  69 67 68 25 2b 31 32 0d  |0,1279,high%+12.|
00003db0  02 12 05 e1 0d 02 13 04  0d 02 14 3a dd f2 73 61  |...........:..sa|
00003dc0  76 65 5f 62 67 72 64 28  73 63 72 25 2c 78 5f 70  |ve_bgrd(scr%,x_p|
00003dd0  6f 73 25 2c 79 5f 70 6f  73 25 2c 78 5f 73 69 7a  |os%,y_pos%,x_siz|
00003de0  25 2c 79 5f 73 69 7a 25  2c 73 70 5f 6e 61 6d 65  |%,y_siz%,sp_name|
00003df0  24 29 0d 02 15 54 c8 99  20 22 4f 53 5f 53 70 72  |$)...T.. "OS_Spr|
00003e00  69 74 65 4f 70 22 2c 26  31 31 30 2c 41 52 45 41  |iteOp",&110,AREA|
00003e10  25 2c 73 70 5f 6e 61 6d  65 24 2c 30 2c 78 5f 70  |%,sp_name$,0,x_p|
00003e20  6f 73 25 2c 79 5f 70 6f  73 25 2c 78 5f 70 6f 73  |os%,y_pos%,x_pos|
00003e30  25 2b 78 5f 73 69 7a 25  2c 79 5f 70 6f 73 25 2b  |%+x_siz%,y_pos%+|
00003e40  79 5f 73 69 7a 25 0d 02  16 05 e1 0d 02 17 04 0d  |y_siz%..........|
00003e50  02 18 62 dd f2 65 6e 6c  61 72 67 65 5f 62 6f 78  |..b..enlarge_box|
00003e60  28 73 63 72 25 2c 6d 61  6e 79 25 2c 62 6f 78 5f  |(scr%,many%,box_|
00003e70  6c 65 66 74 25 2c 62 6f  78 5f 6c 6f 77 25 2c 62  |left%,box_low%,b|
00003e80  69 67 5f 6c 65 66 74 25  2c 62 69 67 5f 6c 6f 77  |ig_left%,big_low|
00003e90  25 2c 62 69 67 5f 72 69  67 68 74 25 2c 62 69 67  |%,big_right%,big|
00003ea0  5f 68 69 67 68 25 2c 64  72 61 77 6e 61 6d 65 24  |_high%,drawname$|
00003eb0  29 0d 02 19 29 63 68 67  5f 6c 65 66 74 25 3d 28  |)...)chg_left%=(|
00003ec0  62 69 67 5f 6c 65 66 74  25 2d 62 6f 78 5f 6c 65  |big_left%-box_le|
00003ed0  66 74 25 29 2f 6d 61 6e  79 25 0d 02 1a 26 63 68  |ft%)/many%...&ch|
00003ee0  67 5f 6c 6f 77 25 3d 28  62 69 67 5f 6c 6f 77 25  |g_low%=(big_low%|
00003ef0  2d 62 6f 78 5f 6c 6f 77  25 29 2f 6d 61 6e 79 25  |-box_low%)/many%|
00003f00  0d 02 1b 30 63 68 67 5f  72 69 67 68 74 25 3d 28  |...0chg_right%=(|
00003f10  62 69 67 5f 72 69 67 68  74 25 2d 28 62 6f 78 5f  |big_right%-(box_|
00003f20  6c 65 66 74 25 2b 36 34  29 29 2f 6d 61 6e 79 25  |left%+64))/many%|
00003f30  0d 02 1c 2d 63 68 67 5f  68 69 67 68 25 3d 28 62  |...-chg_high%=(b|
00003f40  69 67 5f 68 69 67 68 25  2d 28 62 6f 78 5f 6c 6f  |ig_high%-(box_lo|
00003f50  77 25 2b 36 34 29 29 2f  6d 61 6e 79 25 0d 02 1d  |w%+64))/many%...|
00003f60  0e e3 20 6d 25 3d 31 20  b8 20 34 0d 02 1e 13 20  |.. m%=1 . 4.... |
00003f70  e3 20 6c 25 3d 30 20 b8  20 6d 61 6e 79 25 0d 02  |. l%=0 . many%..|
00003f80  1f 3d 20 20 ef 20 32 35  2c 34 2c 62 6f 78 5f 6c  |.=  . 25,4,box_l|
00003f90  65 66 74 25 2b 28 6c 25  2a 63 68 67 5f 6c 65 66  |eft%+(l%*chg_lef|
00003fa0  74 25 29 3b 62 6f 78 5f  6c 6f 77 25 2b 28 6c 25  |t%);box_low%+(l%|
00003fb0  2a 63 68 67 5f 6c 6f 77  25 29 3b 0d 02 20 2f 20  |*chg_low%);.. / |
00003fc0  20 ef 20 32 35 2c 32 2c  36 34 2b 28 6c 25 2a 94  | . 25,2,64+(l%*.|
00003fd0  28 63 68 67 5f 6c 65 66  74 25 2d 63 68 67 5f 72  |(chg_left%-chg_r|
00003fe0  69 67 68 74 25 29 29 3b  30 3b 0d 02 21 2d 20 20  |ight%));0;..!-  |
00003ff0  ef 20 32 35 2c 32 2c 30  3b 36 34 2b 28 6c 25 2a  |. 25,2,0;64+(l%*|
00004000  94 28 63 68 67 5f 6c 6f  77 25 2d 63 68 67 5f 68  |.(chg_low%-chg_h|
00004010  69 67 68 25 29 29 3b 0d  02 22 32 20 20 ef 20 32  |igh%));.."2  . 2|
00004020  35 2c 32 2c 2d 28 36 34  2b 28 6c 25 2a 94 28 63  |5,2,-(64+(l%*.(c|
00004030  68 67 5f 6c 65 66 74 25  2d 63 68 67 5f 72 69 67  |hg_left%-chg_rig|
00004040  68 74 25 29 29 29 3b 30  3b 0d 02 23 30 20 20 ef  |ht%)));0;..#0  .|
00004050  20 32 35 2c 32 2c 30 3b  2d 28 36 34 2b 28 6c 25  | 25,2,0;-(64+(l%|
00004060  2a 94 28 63 68 67 5f 6c  6f 77 25 2d 63 68 67 5f  |*.(chg_low%-chg_|
00004070  68 69 67 68 25 29 29 29  3b 0d 02 24 0f 20 20 f2  |high%)));..$.  .|
00004080  77 61 69 74 28 31 30 29  0d 02 25 06 20 ed 0d 02  |wait(10)..%. ...|
00004090  26 05 ed 0d 02 27 31 ef  20 32 34 2c 62 69 67 5f  |&....'1. 24,big_|
000040a0  6c 65 66 74 25 3b 62 69  67 5f 6c 6f 77 25 3b 62  |left%;big_low%;b|
000040b0  69 67 5f 72 69 67 68 74  25 3b 62 69 67 5f 68 69  |ig_right%;big_hi|
000040c0  67 68 25 3b 0d 02 28 12  ef 20 31 38 2c 30 2c 31  |gh%;..(.. 18,0,1|
000040d0  33 31 20 3a 20 da 0d 02  29 08 ef 20 32 36 0d 02  |31 : ...).. 26..|
000040e0  2a 15 e7 20 64 72 61 77  6e 61 6d 65 24 3c 3e 22  |*.. drawname$<>"|
000040f0  22 20 8c 0d 02 2b 35 20  f2 61 64 64 62 6f 78 28  |" ...+5 .addbox(|
00004100  62 69 67 5f 6c 65 66 74  25 2c 62 69 67 5f 6c 6f  |big_left%,big_lo|
00004110  77 25 2c 62 69 67 5f 72  69 67 68 74 25 2c 62 69  |w%,big_right%,bi|
00004120  67 5f 68 69 67 68 25 29  0d 02 2c 05 cd 0d 02 2d  |g_high%)..,....-|
00004130  05 e1 0d 02 2e 04 0d 02  2f 35 dd f2 61 64 64 62  |......../5..addb|
00004140  6f 78 28 62 69 67 5f 6c  65 66 74 25 2c 62 69 67  |ox(big_left%,big|
00004150  5f 6c 6f 77 25 2c 62 69  67 5f 72 69 67 68 74 25  |_low%,big_right%|
00004160  2c 62 69 67 5f 68 69 67  68 25 29 0d 02 30 16 c8  |,big_high%)..0..|
00004170  99 20 22 4f 53 5f 42 79  74 65 22 2c 31 31 32 2c  |. "OS_Byte",112,|
00004180  32 0d 02 31 31 ef 20 32  34 2c 62 69 67 5f 6c 65  |2..11. 24,big_le|
00004190  66 74 25 3b 62 69 67 5f  6c 6f 77 25 3b 62 69 67  |ft%;big_low%;big|
000041a0  5f 72 69 67 68 74 25 3b  62 69 67 5f 68 69 67 68  |_right%;big_high|
000041b0  25 3b 0d 02 32 12 ef 20  31 38 2c 30 2c 31 33 31  |%;..2.. 18,0,131|
000041c0  20 3a 20 da 0d 02 33 3d  f2 62 6f 72 64 65 72 73  | : ...3=.borders|
000041d0  28 62 69 67 5f 6c 65 66  74 25 2b 34 2c 62 69 67  |(big_left%+4,big|
000041e0  5f 6c 6f 77 25 2b 34 2c  62 69 67 5f 72 69 67 68  |_low%+4,big_righ|
000041f0  74 25 2d 34 2c 62 69 67  5f 68 69 67 68 25 2d 34  |t%-4,big_high%-4|
00004200  29 0d 02 34 3d ef 20 32  34 2c 62 69 67 5f 6c 65  |)..4=. 24,big_le|
00004210  66 74 25 2b 31 36 3b 62  69 67 5f 6c 6f 77 25 2b  |ft%+16;big_low%+|
00004220  31 36 3b 62 69 67 5f 72  69 67 68 74 25 2d 31 36  |16;big_right%-16|
00004230  3b 62 69 67 5f 68 69 67  68 25 2d 31 36 3b 0d 02  |;big_high%-16;..|
00004240  35 12 ef 20 31 38 2c 30  2c 31 32 38 20 3a 20 da  |5.. 18,0,128 : .|
00004250  0d 02 36 05 e1 0d 02 37  04 0d 02 38 0d dd f2 65  |..6....7...8...e|
00004260  78 70 6c 6f 72 65 0d 02  39 27 20 f2 77 6f 72 64  |xplore..9' .word|
00004270  73 28 37 32 38 2c 35 30  2c 30 2c 22 65 78 70 6c  |s(728,50,0,"expl|
00004280  6f 72 65 20 70 69 63 74  75 72 65 22 29 0d 02 3a  |ore picture")..:|
00004290  3f 20 f2 70 75 74 5f 73  70 28 31 2c 31 30 30 30  |? .put_sp(1,1000|
000042a0  2c 32 30 2c 35 2c 31 36  2c 31 36 2c 31 36 2c 22  |,20,5,16,16,16,"|
000042b0  6d 6f 75 73 65 22 2c 30  2c 30 2c 72 69 67 68 74  |mouse",0,0,right|
000042c0  25 2c 68 69 67 68 25 2c  26 30 30 29 0d 02 3b 05  |%,high%,&00)..;.|
000042d0  e1 0d 02 3c 04 0d 02 3d  0f dd f2 6a 70 65 78 70  |...<...=...jpexp|
000042e0  6c 6f 72 65 0d 02 3e 25  20 f2 6a 70 77 6f 72 64  |lore..>% .jpword|
000042f0  73 28 38 30 30 2c 35 30  2c 30 2c 22 65 78 70 6c  |s(800,50,0,"expl|
00004300  6f 72 65 20 2e 2e 2e 22  29 0d 02 3f 3f 20 f2 70  |ore ...")..?? .p|
00004310  75 74 5f 73 70 28 31 2c  31 30 30 30 2c 32 34 2c  |ut_sp(1,1000,24,|
00004320  35 2c 31 36 2c 31 36 2c  31 36 2c 22 6d 6f 75 73  |5,16,16,16,"mous|
00004330  65 22 2c 30 2c 30 2c 72  69 67 68 74 25 2c 68 69  |e",0,0,right%,hi|
00004340  67 68 25 2c 26 30 30 29  0d 02 40 05 e1 0d 02 41  |gh%,&00)..@....A|
00004350  04 0d 02 42 12 dd f2 65  78 70 61 6e 64 28 73 70  |...B...expand(sp|
00004360  6e 24 29 0d 02 43 08 ea  20 47 25 0d 02 44 5a f4  |n$)..C.. G%..DZ.|
00004370  20 63 72 65 61 74 65 20  73 70 72 69 74 65 20 22  | create sprite "|
00004380  6a 22 20 73 69 7a 65 20  35 20 62 79 74 65 73 20  |j" size 5 bytes |
00004390  74 6f 20 73 74 6f 72 65  20 74 68 65 20 73 69 7a  |to store the siz|
000043a0  65 20 6f 66 20 74 68 65  20 63 6f 6d 70 61 63 74  |e of the compact|
000043b0  65 64 20 73 70 72 69 74  65 20 26 20 6d 61 73 6b  |ed sprite & mask|
000043c0  20 62 79 74 65 0d 02 45  31 c8 99 22 4f 53 5f 53  | byte..E1.."OS_S|
000043d0  70 72 69 74 65 4f 70 22  2c 26 31 30 46 2c 41 52  |priteOp",&10F,AR|
000043e0  45 41 25 2c 73 70 6e 24  2b 22 6a 22 2c 30 2c 31  |EA%,spn$+"j",0,1|
000043f0  30 2c 31 2c 31 32 0d 02  46 32 c8 99 22 4f 53 5f  |0,1,12..F2.."OS_|
00004400  53 70 72 69 74 65 4f 70  22 2c 26 31 31 38 2c 41  |SpriteOp",&118,A|
00004410  52 45 41 25 2c 73 70 6e  24 2b 22 6a 22 20 b8 20  |REA%,spn$+"j" . |
00004420  2c 2c 69 6d 61 67 65 25  0d 02 47 15 69 6d 61 67  |,,image%..G.imag|
00004430  65 25 2b 3d 69 6d 61 67  65 25 21 33 32 0d 02 48  |e%+=image%!32..H|
00004440  31 c8 99 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  |1.."OS_SpriteOp"|
00004450  2c 26 31 31 38 2c 41 52  45 41 25 2c 73 70 6e 24  |,&118,AREA%,spn$|
00004460  20 b8 20 2c 2c 63 73 70  69 6d 61 67 65 25 0d 02  | . ,,cspimage%..|
00004470  49 33 21 69 6d 61 67 65  25 3d 28 28 63 73 70 69  |I3!image%=((cspi|
00004480  6d 61 67 65 25 21 31 36  29 2b 31 29 2a 38 20 3a  |mage%!16)+1)*8 :|
00004490  20 f4 20 73 69 7a 65 20  69 6e 20 70 69 78 65 6c  | . size in pixel|
000044a0  73 0d 02 4a 1b 63 73 70  69 6d 61 67 65 25 2b 3d  |s..J.cspimage%+=|
000044b0  63 73 70 69 6d 61 67 65  25 21 33 32 0d 02 4b 2c  |cspimage%!32..K,|
000044c0  69 6d 61 67 65 25 3f 34  3d 63 73 70 69 6d 61 67  |image%?4=cspimag|
000044d0  65 25 3f 38 20 3a 20 f4  20 73 74 6f 72 65 20 6d  |e%?8 : . store m|
000044e0  61 73 6b 20 62 79 74 65  0d 02 4c 34 f4 20 63 72  |ask byte..L4. cr|
000044f0  65 61 74 65 20 73 70 72  69 74 65 20 22 71 22 20  |eate sprite "q" |
00004500  28 74 65 6d 70 6f 72 61  72 69 6c 79 29 20 74 6f  |(temporarily) to|
00004510  20 65 78 70 61 6e 64 20  69 6e 74 6f 0d 02 4d 45  | expand into..ME|
00004520  c8 99 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |.."OS_SpriteOp",|
00004530  26 31 30 46 2c 41 52 45  41 25 2c 73 70 6e 24 2b  |&10F,AREA%,spn$+|
00004540  22 71 22 2c 30 2c 21 63  73 70 69 6d 61 67 65 25  |"q",0,!cspimage%|
00004550  2a 32 2c 63 73 70 69 6d  61 67 65 25 21 34 2c 31  |*2,cspimage%!4,1|
00004560  32 0d 02 4e 3f e7 28 28  63 73 70 69 6d 61 67 65  |2..N?.((cspimage|
00004570  25 3f 38 29 80 26 31 30  29 3c 3e 30 3a c8 99 22  |%?8).&10)<>0:.."|
00004580  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 26 31 31  |OS_SpriteOp",&11|
00004590  44 2c 41 52 45 41 25 2c  73 70 6e 24 2b 22 71 22  |D,AREA%,spn$+"q"|
000045a0  0d 02 4f 66 e3 6c 65 74  74 25 3d 31 b8 a9 28 73  |..Of.lett%=1..(s|
000045b0  70 6e 24 29 3a 3f 28 63  73 70 6e 61 6d 65 25 2b  |pn$):?(cspname%+|
000045c0  28 6c 65 74 74 25 2d 31  29 29 3d 97 28 c1 73 70  |(lett%-1))=.(.sp|
000045d0  6e 24 2c 6c 65 74 74 25  2c 31 29 29 3a 3f 28 6e  |n$,lett%,1)):?(n|
000045e0  73 70 6e 61 6d 65 25 2b  28 6c 65 74 74 25 2d 31  |spname%+(lett%-1|
000045f0  29 29 3d 97 28 c1 73 70  6e 24 2c 6c 65 74 74 25  |))=.(.spn$,lett%|
00004600  2c 31 29 29 3a ed 0d 02  50 3f e7 a9 28 73 70 6e  |,1)):...P?..(spn|
00004610  24 29 3c 31 31 3a e3 6c  65 74 74 25 3d a9 28 73  |$)<11:.lett%=.(s|
00004620  70 6e 24 29 2b 31 b8 31  32 3a 3f 28 63 73 70 6e  |pn$)+1.12:?(cspn|
00004630  61 6d 65 25 2b 28 6c 65  74 74 25 2d 31 29 29 3d  |ame%+(lett%-1))=|
00004640  26 30 30 3a ed 0d 02 51  1b 3f 28 6e 73 70 6e 61  |&00:...Q.?(nspna|
00004650  6d 65 25 2b a9 28 73 70  6e 24 29 29 3d 26 37 31  |me%+.(spn$))=&71|
00004660  0d 02 52 3f e7 a9 28 73  70 6e 24 29 3c 31 30 3a  |..R?..(spn$)<10:|
00004670  e3 6c 65 74 74 25 3d a9  28 73 70 6e 24 29 2b 32  |.lett%=.(spn$)+2|
00004680  b8 31 32 3a 3f 28 6e 73  70 6e 61 6d 65 25 2b 28  |.12:?(nspname%+(|
00004690  6c 65 74 74 25 2d 31 29  29 3d 26 30 30 3a ed 0d  |lett%-1))=&00:..|
000046a0  02 53 0c 47 25 3d 41 52  45 41 25 0d 02 54 0f d6  |.S.G%=AREA%..T..|
000046b0  20 65 78 70 61 6e 64 73  70 25 0d 02 55 44 f4 20  | expandsp%..UD. |
000046c0  64 65 6c 65 74 65 20 6f  72 69 67 69 6e 61 6c 20  |delete original |
000046d0  28 63 6f 6d 70 61 63 74  65 64 29 20 73 70 72 69  |(compacted) spri|
000046e0  74 65 2c 20 72 65 6e 61  6d 65 20 22 71 22 20 73  |te, rename "q" s|
000046f0  70 72 69 74 65 20 74 6f  20 6f 72 69 67 2e 0d 02  |prite to orig...|
00004700  56 23 c8 99 22 4f 53 5f  53 70 72 69 74 65 4f 70  |V#.."OS_SpriteOp|
00004710  22 2c 26 31 31 39 2c 41  52 45 41 25 2c 73 70 6e  |",&119,AREA%,spn|
00004720  24 0d 02 57 2c c8 99 22  4f 53 5f 53 70 72 69 74  |$..W,.."OS_Sprit|
00004730  65 4f 70 22 2c 26 31 31  41 2c 41 52 45 41 25 2c  |eOp",&11A,AREA%,|
00004740  73 70 6e 24 2b 22 71 22  2c 73 70 6e 24 0d 02 58  |spn$+"q",spn$..X|
00004750  05 e1 0d 02 59 04 0d 02  5a 13 dd f2 63 6f 6d 70  |....Y...Z...comp|
00004760  61 63 74 28 73 70 6e 24  29 0d 02 5b 08 ea 20 47  |act(spn$)..[.. G|
00004770  25 0d 02 5c 5c f4 20 63  72 65 61 74 65 20 73 70  |%..\\. create sp|
00004780  72 69 74 65 20 22 71 22  20 28 74 65 6d 70 6f 72  |rite "q" (tempor|
00004790  61 72 79 29 20 74 6f 20  62 65 20 63 6f 6d 70 61  |ary) to be compa|
000047a0  63 74 65 64 20 69 6e 74  6f 20 28 73 69 7a 65 20  |cted into (size |
000047b0  64 65 74 61 69 6c 73 20  73 74 6f 72 65 64 20 69  |details stored i|
000047c0  6e 20 73 70 72 69 74 65  20 22 6a 22 29 0d 02 5d  |n sprite "j")..]|
000047d0  32 c8 99 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  |2.."OS_SpriteOp"|
000047e0  2c 26 31 31 38 2c 41 52  45 41 25 2c 73 70 6e 24  |,&118,AREA%,spn$|
000047f0  2b 22 6a 22 20 b8 20 2c  2c 69 6d 61 67 65 25 0d  |+"j" . ,,image%.|
00004800  02 5e 24 69 6d 61 67 65  25 2b 3d 69 6d 61 67 65  |.^$image%+=image|
00004810  25 21 33 32 3a 6d 61 73  6b 25 3d 69 6d 61 67 65  |%!32:mask%=image|
00004820  25 3f 34 0d 02 5f 36 c8  99 22 4f 53 5f 53 70 72  |%?4.._6.."OS_Spr|
00004830  69 74 65 4f 70 22 2c 26  31 30 46 2c 41 52 45 41  |iteOp",&10F,AREA|
00004840  25 2c 73 70 6e 24 2b 22  71 22 2c 30 2c 21 69 6d  |%,spn$+"q",0,!im|
00004850  61 67 65 25 2c 31 2c 31  32 0d 02 60 32 c8 99 22  |age%,1,12..`2.."|
00004860  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 26 31 31  |OS_SpriteOp",&11|
00004870  38 2c 41 52 45 41 25 2c  73 70 6e 24 2b 22 71 22  |8,AREA%,spn$+"q"|
00004880  20 b8 20 2c 2c 69 6d 61  67 65 25 0d 02 61 15 69  | . ,,image%..a.i|
00004890  6d 61 67 65 25 2b 3d 69  6d 61 67 65 25 21 33 32  |mage%+=image%!32|
000048a0  0d 02 62 39 c8 99 22 4f  53 5f 53 70 72 69 74 65  |..b9.."OS_Sprite|
000048b0  4f 70 22 2c 26 31 32 38  2c 41 52 45 41 25 2c 73  |Op",&128,AREA%,s|
000048c0  70 6e 24 20 b8 20 2c 2c  2c 21 69 6d 61 67 65 25  |pn$ . ,,,!image%|
000048d0  2c 69 6d 61 67 65 25 21  34 0d 02 63 24 21 69 6d  |,image%!4..c$!im|
000048e0  61 67 65 25 3d 21 69 6d  61 67 65 25 2f 32 3a 69  |age%=!image%/2:i|
000048f0  6d 61 67 65 25 3f 38 3d  6d 61 73 6b 25 0d 02 64  |mage%?8=mask%..d|
00004900  66 e3 6c 65 74 74 25 3d  31 b8 a9 28 73 70 6e 24  |f.lett%=1..(spn$|
00004910  29 3a 3f 28 6e 73 70 6e  61 6d 65 25 2b 28 6c 65  |):?(nspname%+(le|
00004920  74 74 25 2d 31 29 29 3d  97 28 c1 73 70 6e 24 2c  |tt%-1))=.(.spn$,|
00004930  6c 65 74 74 25 2c 31 29  29 3a 3f 28 63 73 70 6e  |lett%,1)):?(cspn|
00004940  61 6d 65 25 2b 28 6c 65  74 74 25 2d 31 29 29 3d  |ame%+(lett%-1))=|
00004950  97 28 c1 73 70 6e 24 2c  6c 65 74 74 25 2c 31 29  |.(.spn$,lett%,1)|
00004960  29 3a ed 0d 02 65 3f e7  a9 28 73 70 6e 24 29 3c  |):...e?..(spn$)<|
00004970  31 31 3a e3 6c 65 74 74  25 3d a9 28 73 70 6e 24  |11:.lett%=.(spn$|
00004980  29 2b 31 b8 31 32 3a 3f  28 6e 73 70 6e 61 6d 65  |)+1.12:?(nspname|
00004990  25 2b 28 6c 65 74 74 25  2d 31 29 29 3d 26 30 30  |%+(lett%-1))=&00|
000049a0  3a ed 0d 02 66 1b 3f 28  63 73 70 6e 61 6d 65 25  |:...f.?(cspname%|
000049b0  2b a9 28 73 70 6e 24 29  29 3d 26 37 31 0d 02 67  |+.(spn$))=&71..g|
000049c0  3f e7 a9 28 73 70 6e 24  29 3c 31 30 3a e3 6c 65  |?..(spn$)<10:.le|
000049d0  74 74 25 3d a9 28 73 70  6e 24 29 2b 32 b8 31 32  |tt%=.(spn$)+2.12|
000049e0  3a 3f 28 63 73 70 6e 61  6d 65 25 2b 28 6c 65 74  |:?(cspname%+(let|
000049f0  74 25 2d 31 29 29 3d 26  30 30 3a ed 0d 02 68 0c  |t%-1))=&00:...h.|
00004a00  47 25 3d 41 52 45 41 25  0d 02 69 0f d6 20 63 72  |G%=AREA%..i.. cr|
00004a10  75 6e 63 68 73 70 25 0d  02 6a 50 f4 20 64 65 6c  |unchsp%..jP. del|
00004a20  65 74 65 20 6f 72 69 67  69 6e 61 6c 20 28 6e 6f  |ete original (no|
00004a30  72 6d 61 6c 29 20 73 70  72 69 74 65 20 61 6e 64  |rmal) sprite and|
00004a40  20 22 6a 22 20 73 70 72  69 74 65 2c 20 72 65 6e  | "j" sprite, ren|
00004a50  61 6d 65 20 22 71 22 20  73 70 72 69 74 65 20 74  |ame "q" sprite t|
00004a60  6f 20 6f 72 69 67 2e 0d  02 6b 47 c8 99 22 4f 53  |o orig...kG.."OS|
00004a70  5f 53 70 72 69 74 65 4f  70 22 2c 26 31 31 39 2c  |_SpriteOp",&119,|
00004a80  41 52 45 41 25 2c 73 70  6e 24 3a c8 99 22 4f 53  |AREA%,spn$:.."OS|
00004a90  5f 53 70 72 69 74 65 4f  70 22 2c 26 31 31 39 2c  |_SpriteOp",&119,|
00004aa0  41 52 45 41 25 2c 73 70  6e 24 2b 22 6a 22 0d 02  |AREA%,spn$+"j"..|
00004ab0  6c 2c c8 99 22 4f 53 5f  53 70 72 69 74 65 4f 70  |l,.."OS_SpriteOp|
00004ac0  22 2c 26 31 31 41 2c 41  52 45 41 25 2c 73 70 6e  |",&11A,AREA%,spn|
00004ad0  24 2b 22 71 22 2c 73 70  6e 24 0d 02 6d 05 e1 0d  |$+"q",spn$..m...|
00004ae0  02 6e 04 0d 02 6f 12 dd  f2 64 65 6c 65 74 65 28  |.n...o...delete(|
00004af0  73 70 6e 24 29 0d 02 70  24 c8 99 20 22 4f 53 5f  |spn$)..p$.. "OS_|
00004b00  53 70 72 69 74 65 4f 70  22 2c 26 31 31 39 2c 41  |SpriteOp",&119,A|
00004b10  52 45 41 25 2c 73 70 6e  24 0d 02 71 05 e1 0d 02  |REA%,spn$..q....|
00004b20  72 04 0d 02 73 1f dd f2  6c 6f 61 64 73 6f 75 6e  |r...s...loadsoun|
00004b30  64 6d 6f 64 28 73 64 69  72 24 2c 73 6d 6f 64 24  |dmod(sdir$,smod$|
00004b40  29 0d 02 74 0f f2 6b 69  6c 6c 6f 6c 64 6d 6f 64  |)..t..killoldmod|
00004b50  0d 02 75 14 e3 6b 25 3d  30 b8 6d 61 78 73 6f 75  |..u..k%=0.maxsou|
00004b60  6e 64 73 25 0d 02 76 1f  e7 73 6d 6f 64 24 3d 73  |nds%..v..smod$=s|
00004b70  6f 75 6e 64 6d 6f 64 73  24 28 6b 25 29 3a 52 25  |oundmods$(k%):R%|
00004b80  3d 6b 25 0d 02 77 05 ed  0d 02 78 5d ff 22 52 4d  |=k%..w....x]."RM|
00004b90  45 6e 73 75 72 65 20 3c  41 5a 54 45 43 24 63 68  |Ensure <AZTEC$ch|
00004ba0  61 69 6e 64 69 72 3e 2e  22 2b 73 64 69 72 24 2b  |aindir>."+sdir$+|
00004bb0  22 2e 22 2b 73 6d 6f 64  24 2b 22 20 52 4d 4c 6f  |"."+smod$+" RMLo|
00004bc0  61 64 20 3c 41 5a 54 45  43 24 63 68 61 69 6e 64  |ad <AZTEC$chaind|
00004bd0  69 72 3e 2e 22 2b 73 64  69 72 24 2b 22 2e 22 2b  |ir>."+sdir$+"."+|
00004be0  73 6d 6f 64 24 0d 02 79  05 e1 0d 02 7a 04 0d 02  |smod$..y....z...|
00004bf0  7b 10 dd f2 6b 69 6c 6c  6f 6c 64 6d 6f 64 0d 02  |{...killoldmod..|
00004c00  7c 07 ea 20 85 0d 02 7d  0d ee 85 ea 3a f7 20 85  ||.. ...}....:. .|
00004c10  3a e1 0d 02 7e 1e 20 ff  22 52 4d 4b 69 6c 6c 20  |:...~. ."RMKill |
00004c20  22 2b 73 6f 75 6e 64 6d  6f 64 73 24 28 52 25 29  |"+soundmods$(R%)|
00004c30  0d 02 7f 07 f7 20 85 0d  02 80 05 e1 0d 02 81 04  |..... ..........|
00004c40  0d 02 82 17 dd f2 63 6f  6e 63 68 28 63 6f 6e 25  |......conch(con%|
00004c50  2c 67 6f 6f 6e 25 29 0d  02 83 3e c8 99 20 22 4f  |,goon%)...>.. "O|
00004c60  53 5f 53 70 72 69 74 65  4f 70 22 2c 26 31 30 42  |S_SpriteOp",&10B|
00004c70  2c 41 52 45 41 25 2c 22  3c 41 5a 54 45 43 24 63  |,AREA%,"<AZTEC$c|
00004c80  68 61 69 6e 64 69 72 3e  2e 4f 4e 45 2e 63 6f 6e  |haindir>.ONE.con|
00004c90  63 68 5f 63 22 0d 02 84  1c ff 22 43 68 61 6e 6e  |ch_c"....."Chann|
00004ca0  65 6c 56 6f 69 63 65 20  31 20 63 6f 6e 63 68 32  |elVoice 1 conch2|
00004cb0  22 0d 02 85 1c ff 22 43  68 61 6e 6e 65 6c 56 6f  |"....."ChannelVo|
00004cc0  69 63 65 20 32 20 63 6f  6e 63 68 32 22 0d 02 86  |ice 2 conch2"...|
00004cd0  1c f2 61 64 64 62 6f 78  28 33 31 32 2c 32 36 38  |..addbox(312,268|
00004ce0  2c 39 35 38 2c 39 32 38  29 0d 02 87 32 ef 20 31  |,958,928)...2. 1|
00004cf0  38 2c 30 2c 31 33 34 3a  da 3a ef 32 36 3a f2 61  |8,0,134:.:.26:.a|
00004d00  64 64 5f 73 70 28 32 2c  22 63 6f 6e 63 68 6d 61  |dd_sp(2,"conchma|
00004d10  6e 22 2c 38 32 2c 31 31  2c 36 29 0d 02 88 27 f2  |n",82,11,6)...'.|
00004d20  65 78 70 61 6e 64 28 22  73 6d 63 6f 6e 63 68 22  |expand("smconch"|
00004d30  29 3a f2 65 78 70 61 6e  64 28 22 63 6f 6e 63 68  |):.expand("conch|
00004d40  22 29 0d 02 89 5e e3 6b  25 3d 30 b8 63 6f 6e 25  |")...^.k%=0.con%|
00004d50  2d 31 3a f2 70 75 74 5f  73 70 28 32 2c 33 33 32  |-1:.put_sp(2,332|
00004d60  2b 28 6b 25 2a 36 38 29  2c 32 38 38 2c 36 2c 31  |+(k%*68),288,6,1|
00004d70  36 2c 31 36 2c 31 36 2c  22 73 6d 63 6f 6e 63 68  |6,16,16,"smconch|
00004d80  22 2c 6c 65 66 74 25 2c  6c 6f 77 25 2c 72 69 67  |",left%,low%,rig|
00004d90  68 74 25 2c 68 69 67 68  25 2c 26 30 30 29 3a ed  |ht%,high%,&00):.|
00004da0  0d 02 8a 23 e7 67 6f 6f  6e 25 3a c8 99 22 4f 53  |...#.goon%:.."OS|
00004db0  5f 42 79 74 65 22 2c 31  31 32 2c 31 3a f2 67 6f  |_Byte",112,1:.go|
00004dc0  5f 6f 6e 0d 02 8b 36 43  25 3d 31 3a 44 25 3d 31  |_on...6C%=1:D%=1|
00004dd0  3a 45 25 3d 31 3a 46 25  3d 31 3a f2 65 78 70 6c  |:E%=1:F%=1:.expl|
00004de0  6f 64 65 28 36 34 30 2c  36 33 36 2c 30 29 3a f2  |ode(640,636,0):.|
00004df0  73 63 72 63 6f 70 79 32  31 0d 02 8c 65 f2 73 61  |scrcopy21...e.sa|
00004e00  76 65 5f 62 67 72 64 28  31 2c 35 34 30 2c 33 35  |ve_bgrd(1,540,35|
00004e10  36 2c 34 30 30 2c 34 34  30 2c 22 62 67 72 64 22  |6,400,440,"bgrd"|
00004e20  29 3a 74 6f 67 25 3d 31  3a 66 69 72 73 74 74 69  |):tog%=1:firstti|
00004e30  6d 65 25 3d b9 3a 61 6c  6c 64 6f 6e 65 25 3d a3  |me%=.:alldone%=.|
00004e40  3a f5 3a f2 61 6e 69 6d  5f 63 6f 6e 63 68 28 63  |:.:.anim_conch(c|
00004e50  6f 6e 25 29 3a fd 61 6c  6c 64 6f 6e 65 25 0d 02  |on%):.alldone%..|
00004e60  8d 0e f2 73 63 72 63 6f  70 79 32 31 0d 02 8e 27  |...scrcopy21...'|
00004e70  f2 64 65 6c 65 74 65 28  22 63 6f 6e 63 68 6d 61  |.delete("conchma|
00004e80  6e 22 29 3a f2 64 65 6c  65 74 65 28 22 62 67 72  |n"):.delete("bgr|
00004e90  64 22 29 0d 02 8f 29 f2  63 6f 6d 70 61 63 74 28  |d")...).compact(|
00004ea0  22 73 6d 63 6f 6e 63 68  22 29 3a f2 63 6f 6d 70  |"smconch"):.comp|
00004eb0  61 63 74 28 22 63 6f 6e  63 68 22 29 0d 02 90 27  |act("conch")...'|
00004ec0  f2 64 65 6c 65 74 65 28  22 63 6f 6e 63 68 22 29  |.delete("conch")|
00004ed0  3a f2 64 65 6c 65 74 65  28 22 73 6d 63 6f 6e 63  |:.delete("smconc|
00004ee0  68 22 29 0d 02 91 05 e1  0d 02 92 04 0d 02 93 16  |h").............|
00004ef0  dd f2 61 6e 69 6d 5f 63  6f 6e 63 68 28 63 6f 6e  |..anim_conch(con|
00004f00  25 29 0d 02 94 2b e7 66  69 72 73 74 74 69 6d 65  |%)...+.firsttime|
00004f10  25 8c 3a 66 69 72 73 74  74 69 6d 65 25 3d a3 3a  |%.:firsttime%=.:|
00004f20  6c 61 73 74 74 69 6d 65  25 3d 91 2d 34 0d 02 95  |lasttime%=.-4...|
00004f30  1f c8 99 20 22 4f 53 5f  42 79 74 65 22 2c 31 31  |... "OS_Byte",11|
00004f40  32 2c 31 2b 28 74 6f 67  25 83 32 29 0d 02 96 30  |2,1+(tog%.2)...0|
00004f50  c8 99 20 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  |.. "OS_SpriteOp"|
00004f60  2c 26 31 32 32 2c 41 52  45 41 25 2c 22 62 67 72  |,&122,AREA%,"bgr|
00004f70  64 22 2c 35 34 30 2c 33  35 36 2c 30 0d 02 97 ac  |d",540,356,0....|
00004f80  e7 74 6f 67 25 3e 32 31  3a f2 70 75 74 5f 73 70  |.tog%>21:.put_sp|
00004f90  28 31 2b 28 74 6f 67 25  83 32 29 2c 35 34 30 2c  |(1+(tog%.2),540,|
00004fa0  33 31 36 2c 36 2c 31 36  2c 31 36 2c 31 36 2c 22  |316,6,16,16,16,"|
00004fb0  63 6f 6e 63 68 22 2c 6c  65 66 74 25 2c 33 35 36  |conch",left%,356|
00004fc0  2c 72 69 67 68 74 25 2c  68 69 67 68 25 2c 26 30  |,right%,high%,&0|
00004fd0  30 29 3a 8b 3a f2 70 75  74 5f 73 70 28 31 2b 28  |0):.:.put_sp(1+(|
00004fe0  74 6f 67 25 83 32 29 2c  35 34 30 2c 28 74 6f 67  |tog%.2),540,(tog|
00004ff0  25 2a 32 30 29 2d 31 30  34 2c 36 2c 31 36 2c 31  |%*20)-104,6,16,1|
00005000  36 2c 31 36 2c 22 63 6f  6e 63 68 22 2c 6c 65 66  |6,16,"conch",lef|
00005010  74 25 2c 33 35 36 2c 72  69 67 68 74 25 2c 68 69  |t%,356,right%,hi|
00005020  67 68 25 2c 26 30 30 29  0d 02 98 6f e7 28 74 6f  |gh%,&00)...o.(to|
00005030  67 25 3d 33 30 29 84 28  74 6f 67 25 3d 33 31 29  |g%=30).(tog%=31)|
00005040  3a f2 70 75 74 5f 73 70  28 31 2b 28 74 6f 67 25  |:.put_sp(1+(tog%|
00005050  83 32 29 2c 33 33 32 2b  28 63 6f 6e 25 2a 36 38  |.2),332+(con%*68|
00005060  29 2c 32 38 38 2c 36 2c  31 36 2c 31 36 2c 31 36  |),288,6,16,16,16|
00005070  2c 22 73 6d 63 6f 6e 63  68 22 2c 6c 65 66 74 25  |,"smconch",left%|
00005080  2c 6c 6f 77 25 2c 72 69  67 68 74 25 2c 68 69 67  |,low%,right%,hig|
00005090  68 25 2c 26 30 30 29 0d  02 99 16 f5 3a fd 20 91  |h%,&00).....:. .|
000050a0  3e 3d 6c 61 73 74 74 69  6d 65 25 2b 34 0d 02 9a  |>=lasttime%+4...|
000050b0  22 c8 96 3a c8 99 20 22  4f 53 5f 42 79 74 65 22  |"..:.. "OS_Byte"|
000050c0  2c 31 31 33 2c 31 2b 28  74 6f 67 25 83 32 29 0d  |,113,1+(tog%.2).|
000050d0  02 9b 1d e7 74 6f 67 25  3d 32 33 3a d4 31 2c 26  |....tog%=23:.1,&|
000050e0  31 37 46 2c 26 31 38 30  30 2c 31 30 0d 02 9c 1d  |17F,&1800,10....|
000050f0  e7 74 6f 67 25 3d 33 38  3a d4 32 2c 26 31 37 46  |.tog%=38:.2,&17F|
00005100  2c 26 31 38 30 30 2c 31  30 0d 02 9d 2c 74 6f 67  |,&1800,10...,tog|
00005110  25 2b 3d 31 3a 6c 61 73  74 74 69 6d 65 25 3d 91  |%+=1:lasttime%=.|
00005120  3a e7 74 6f 67 25 3e 3d  34 30 3a 61 6c 6c 64 6f  |:.tog%>=40:alldo|
00005130  6e 65 25 3d b9 0d 02 9e  05 e1 0d 02 9f 04 0d 02  |ne%=............|
00005140  a0 17 dd f2 73 63 72 6f  6c 6c 64 6f 77 6e 28 41  |....scrolldown(A|
00005150  25 2c 42 25 29 0d 02 a1  0f d6 20 73 63 72 6f 6c  |%,B%)..... scrol|
00005160  6c 64 6e 25 0d 02 a2 05  e1 0d 02 a3 04 0d 02 a4  |ldn%............|
00005170  15 dd f2 73 63 72 6f 6c  6c 75 70 28 41 25 2c 42  |...scrollup(A%,B|
00005180  25 29 0d 02 a5 0f d6 20  73 63 72 6f 6c 6c 75 70  |%)..... scrollup|
00005190  25 0d 02 a6 05 e1 0d 02  a7 04 0d 02 a8 12 dd f2  |%...............|
000051a0  63 68 61 69 6e 28 66 69  6c 65 24 29 0d 02 a9 57  |chain(file$)...W|
000051b0  e7 59 25 3d 30 3a 74 65  73 74 25 3d 30 3a f5 3a  |.Y%=0:test%=0:.:|
000051c0  f2 66 6c 6f 70 70 79 5f  64 69 73 6b 28 22 41 5a  |.floppy_disk("AZ|
000051d0  54 45 43 20 44 45 4d 4f  22 2c 22 24 2e 21 41 7a  |TEC DEMO","$.!Az|
000051e0  74 65 63 73 2e 22 2b 66  69 6c 65 24 2c 22 24 2e  |tecs."+file$,"$.|
000051f0  21 41 7a 74 65 63 73 22  29 3a fd 65 72 72 6f 72  |!Aztecs"):.error|
00005200  25 3d 30 0d 02 aa 23 66  69 6c 65 24 3d 22 3c 41  |%=0...#file$="<A|
00005210  7a 74 65 63 24 63 68 61  69 6e 64 69 72 3e 2e 22  |ztec$chaindir>."|
00005220  2b 66 69 6c 65 24 0d 02  ab 0a d7 66 69 6c 65 24  |+file$.....file$|
00005230  0d 02 ac 05 fa 0d 02 ad  04 0d 02 ae 0b dd f2 64  |...............d|
00005240  75 6d 6d 79 0d 02 af 21  f4 20 27 63 6f 73 20 6c  |ummy...!. 'cos l|
00005250  61 73 74 20 50 52 4f 43  20 67 65 74 73 20 63 68  |ast PROC gets ch|
00005260  6f 70 70 65 64 0d 02 b0  05 e1 0d 02 b1 04 0d 02  |opped...........|
00005270  b2 04 0d 02 b3 04 0d 02  b4 04 0d 02 b5 04 0d 02  |................|
00005280  b6 04 0d 02 b7 04 0d ff                           |........|
00005288