Home » Archimedes archive » Archimedes World » AW-1992-02 - Virus Removed.adf » February92 » !AWFeb92/Goodies/BasPrint/!BasPrint/!RunImage

!AWFeb92/Goodies/BasPrint/!BasPrint/!RunImage

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-1992-02 - Virus Removed.adf » February92
Filename: !AWFeb92/Goodies/BasPrint/!BasPrint/!RunImage
Read OK:
File size: 4713 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > !RunImage
   20REM    Name = BasPrint
   30REM Purpose = BASIC Format & Print Utility
   40REM Version = 1.03 (15th October 1991)
   50REM  Author = 1991 - Alan Stout
   55REM Copyright = Archimedes World 1992
   60:
   70DIM token$(128),token_C6$(32),token_C7$(32),token_C8$(32)
   80:
   90DIM task% 4
  100DIM blk% 1023,hlpblk% 2047,icnblk% 63,menblk% 511,msgblk% 255,tmpblk% 1023,txtblk% 4095
  110:
  120hlpptr% = hlpblk% : hlpmax% = hlpblk%+2047
  130tmpptr% = tmpblk% : tmpmax% = tmpblk%+1023
  140txtptr% = txtblk% : txtmax% = txtblk%+4095
  150:
  160$task% = "TASK"
  170SYS "Wimp_Initialise",200,!task%,"Basic Print" TO version%,task_handle%
  180:
  190ON ERROR PROCbasic_error
  200:
  210help$  = "This is the BasPrint Icon.|M"
  220help$ += "You can format and print a BASIC source program|M"
  230help$ += "by dragging a BASIC file onto this Icon.|M"
  240help$ += "Read the help supplied with BasPrint for details."
  250help_window% = 0
  260:
  270`white = 0 :  `dark_blue = 8
  280`grey1 = 1 :     `yellow = 9
  290`grey2 = 2 :      `green = 10
  300`grey3 = 3 :        `red = 11
  310`grey4 = 4 :      `cream = 12
  320`grey5 = 5 : `army_green = 13
  330`grey6 = 6 :     `orange = 14
  340`black = 7 : `light_blue = 15
  350:
  360msg_quit%     = 0
  370msg_datasave% = 1
  380msg_dsaveACK% = 2
  390msg_dataload% = 3
  400msg_dloadACK% = 4
  410msg_dataopen% = 5
  420msg_RAMfetch% = 6
  430msg_RAMtrans% = 7
  440msg_modechng% = &400C1
  450msg_tsknamrq% = &400C6
  460msg_tsknamis% = &400C7
  470msg_help%     = &502
  480msg_helpACK%  = &503
  490:
  500typ_text%     = &0FFF
  510typ_basic%    = &0FFB
  520typ_applictn% = &2000
  530:
  540PROCinitialise
  550:
  560SYS "Wimp_OpenTemplate",,"<BasPrint$Dir>.Template"
  570 info_window% = FNload_template("Info")
  580 info_window% = FNload_template("Info")
  590print_window% = FNload_template("Print")
  600width_window% = FNload_template("Width")
  610spool_window% = FNload_template("Spool")
  620SYS "Wimp_CloseTemplate"
  630:
  640icon_window% = FNcreate_icon(-1,0,0,68,68,&00000000,2,6,"!basprint",1)
  650finish = FALSE
  660poll% = &00000001
  670REPEAT
  680   SYS "Wimp_Poll",poll%,blk% TO reason%
  690   CASE reason% OF
  700   WHEN 0
  710      PROCnull_reason(blk%!0)
  720   WHEN 2
  730      PROCopen_window(blk%!0,blk%!4,blk%!8,blk%!12,blk%!16,blk%!20,blk%!24,blk%!28)
  740   WHEN 3
  750      PROCclose_window(blk%!0)
  760   WHEN 6
  770      PROCmouse_click(blk%!0,blk%!4,blk%!8,blk%!12,blk%!16)
  780   WHEN 7
  790      PROCuser_drag_box(blk%!0,blk%!4,blk%!8,blk%!12)
  800   WHEN 8
  810      PROCkey_pressed(blk%!0,blk%!4,blk%!24)
  820   WHEN 9
  830      PROCmenu_selection(blk%)
  840   WHEN 17,18
  850      PROCuser_message
  860   ENDCASE
  870UNTIL finish
  880PROCquit
  890:
  900DEF FNload_template(name$)
  910LOCAL window%
  920SYS "Wimp_LoadTemplate",,blk%,tmpptr%,tmpmax%,-1,name$,0 TO ,,tmpptr%
  930SYS "Wimp_CreateWindow",,blk% TO window%
  940= window%
  950:
  960DEF PROCnull_reason(window%)
  970IF print_file% THEN
  980   print_icon% = 0
  990   PROCfind_print_task
 1000   print_file% = FALSE
 1010   poll% = poll% OR &00000001
 1020ENDIF
 1030ENDPROC
 1040:
 1050DEF PROCopen_window(window%,vmin_x%,vmin_y%,vmax_x%,vmax_y%,soff_x%,soff_y%,behind%)
 1060blk%!0  = window%
 1070blk%!4  = vmin_x%
 1080blk%!8  = vmin_y%
 1090blk%!12 = vmax_x%
 1100blk%!16 = vmax_y%
 1110blk%!20 = soff_x%
 1120blk%!24 = soff_y%
 1130blk%!28 = behind%
 1140SYS "Wimp_OpenWindow",,blk%
 1150ENDPROC
 1160:
 1170DEF PROCget_window_state(window%)
 1180blk%!0  = window%
 1190SYS "Wimp_GetWindowState",,blk%
 1200vmin_x% = blk%!4
 1210vmin_y% = blk%!8
 1220vmax_x% = blk%!12
 1230vmax_y% = blk%!16
 1240soff_x% = blk%!20
 1250soff_y% = blk%!24
 1260ENDPROC
 1270:
 1280DEF PROCclose_window(window%)
 1290blk%!0 = window%
 1300SYS "Wimp_CloseWindow",,blk%
 1310ENDPROC
 1320:
 1330DEF PROCmouse_click(mouse_x%,mouse_y%,button%,window%,icon%)
 1340CASE button% OF
 1350WHEN 2
 1360   IF window% = -2 AND icon% = icon_window% THEN
 1370      PROCdisplay_menu(mouse_x%,mouse_y%,window%,"BASIC Print","Info,Help,Print Task,Auto Print,Page Width,Save Choices,Quit")
 1380   ENDIF
 1390WHEN 4
 1400   IF window% = print_window% THEN
 1410      PROCkey_pressed(window%,0,&0D)
 1420   ENDIF
 1430   IF window% = width_window% THEN
 1440      PROCkey_pressed(window%,0,&0D)
 1450   ENDIF
 1460   IF window% = spool_window% AND icon% = 1 THEN
 1470      PROCget_window_state(spool_window%)
 1480      PROCget_icon_state(spool_window%,1)
 1490      blk%!0  = 0
 1500      blk%!4  = 5
 1510      blk%!8  = min_x%+(vmin_x%-soff_x%)
 1520      blk%!12 = min_y%+(vmax_y%-soff_y%)
 1530      blk%!16 = max_x%+(vmin_x%-soff_x%)
 1540      blk%!20 = max_y%+(vmax_y%-soff_y%)
 1550      blk%!24 = 0
 1560      blk%!28 = 0
 1570      blk%!32 = wsiz_x%
 1580      blk%!36 = wsiz_y%
 1590      SYS "Wimp_DragBox",,blk%
 1600      ENDPROC
 1610   ENDIF
 1620ENDCASE
 1630ENDPROC
 1640:
 1650DEF PROCdisplay_menu(mouse_x%,mouse_y%,window%,title$,items$)
 1660menu_window% = window%
 1670menu_ptr% = menblk%
 1680$(menu_ptr%) = title$
 1690menu_ptr%?12 = `black
 1700menu_ptr%?13 = `grey2
 1710menu_ptr%?14 = `black
 1720menu_ptr%?15 = `grey3
 1730menu_ptr%!16 = 200
 1740menu_ptr%!20 = 40
 1750menu_ptr%!24 = 0
 1760menu_ptr% += 4
 1770i% = 0
 1780REPEAT
 1790   j% = i%+1
 1800   i% = INSTR(items$+",",",",j%)
 1810   item$ = MID$(items$,j%,i%-j%)
 1820   IF item$ <> "" THEN
 1830      menu_ptr% += 24
 1840      menu_ptr%!0 = &00
 1850      menu_ptr%!4 = -1
 1860      CASE item$ OF
 1870      WHEN "Info"
 1880         menu_ptr%!4 = info_window%
 1890      WHEN "Print Task"
 1900         menu_ptr%!4 = print_window%
 1910         PROCput_icon_text(print_window%,0,print_task$)
 1920      WHEN "Auto Print"
 1930         prtptr% = menu_ptr%
 1940         IF auto_print% THEN prtptr%!0 = &01
 1950      WHEN "Page Width"
 1960         menu_ptr%!4 = width_window%
 1970         PROCput_icon_text(width_window%,0,STR$(page_width%))
 1980      ENDCASE
 1990      menu_ptr%!8 = &07000021
 2000      $(menu_ptr%+12) = item$
 2010   ENDIF
 2020UNTIL item$ = ""
 2030menu_ptr%!0 = (menu_ptr%!0) OR &80
 2040SYS "Wimp_CreateMenu",,menblk%,mouse_x%-100,mouse_y%+400
 2050ENDPROC
 2060:
 2070DEF PROCuser_drag_box(min_x%,min_y%,max_x%,max_y%)
 2080SYS "Wimp_GetPointerInfo",,blk%
 2090mouse_x% = blk%!0
 2100mouse_y% = blk%!4
 2110window%  = blk%!12
 2120icon%    = blk%!16
 2130spool_name$ = FNget_icon_text(spool_window%,0)
 2140PROCsend_data_save(0,window%,icon%,mouse_x%,mouse_y%,512,typ_text%,spool_name$)
 2150ENDPROC
 2160:
 2170DEF PROCkey_pressed(window%,icon%,char%)
 2180CASE window% OF
 2190WHEN print_window%
 2200   IF char% = &0D THEN
 2210      print_task$ = FNget_icon_text(print_window%,0)
 2220      ENDPROC
 2230   ENDIF
 2240WHEN width_window%
 2250   IF char% = &0D THEN
 2260      width% = VAL(FNget_icon_text(width_window%,0))
 2270      IF width% < 32 OR width% > 256 THEN
 2280         reply% = FNreport_error(0,"Invalid page width specified",&01)
 2290      ELSE
 2300         page_width% = width%
 2310      ENDIF
 2320      ENDPROC
 2330   ENDIF
 2340WHEN spool_window%
 2350   IF char% = &0D THEN
 2360      spool_name$ = FNget_icon_text(spool_window%,0)
 2370      i% = LEN(basic_file$)
 2380      WHILE i% > 0 AND MID$(basic_file$,i%,1) <> "."
 2390         i% -= 1
 2400      ENDWHILE
 2410      spool_file$ = LEFT$(basic_file$,i%)+spool_name$
 2420      PROCprocess_file
 2430      ENDPROC
 2440   ENDIF
 2450ENDCASE
 2460SYS "Wimp_ProcessKey",char%
 2470ENDPROC
 2480:
 2490DEF PROCput_icon_text(window%,icon%,text$)
 2500icnblk%!0 = window%
 2510icnblk%!4 = icon%
 2520SYS "Wimp_GetIconState",,icnblk%
 2530icnptr% = icnblk%+8
 2540savptr% = icnptr%!20
 2550$(savptr%) = text$
 2560ENDPROC
 2570:
 2580DEF FNget_icon_text(window%,icon%)
 2590icnblk%!0 = window%
 2600icnblk%!4 = icon%
 2610SYS "Wimp_GetIconState",,icnblk%
 2620icnptr% = icnblk%+8
 2630savptr% = icnptr%!20
 2640= $(savptr%)
 2650:
 2660DEF PROCmenu_selection(select%)
 2670SYS "Wimp_GetPointerInfo",,tmpblk%
 2680mouse_x% = tmpblk%!0
 2690mouse_y% = tmpblk%!4
 2700 button% = tmpblk%!8
 2710SYS "Wimp_DecodeMenu",,menblk%,select%,STRING$(200," ") TO ,,,item$
 2720CASE item$ OF
 2730WHEN "Auto Print"
 2740   auto_print% = NOT auto_print%
 2750   prtptr%!0 = prtptr%!0 EOR &01
 2760WHEN "Help"
 2770   IF help_window% = 0 THEN PROCcreate_help("BASIC Print Utility")
 2780   PROCopen_window(help_window%,128,256,1152,768,0,0,-1)
 2790WHEN "Save Choices"
 2800   chan% = OPENOUT "<BasPrint$Dir>.Choices"
 2810   PRINT#chan%,print_task$,auto_print%,page_width%
 2820   CLOSE#chan%
 2830WHEN "Quit"
 2840   PROCquit
 2850ENDCASE
 2860IF button% = 1 THEN
 2870   SYS "Wimp_CreateMenu",,menblk%,mouse_x%-40,mouse_y%+200
 2880ENDIF
 2890ENDPROC
 2900:
 2910DEF FNtext_buffer(text$)
 2920savptr% = txtptr%
 2930txtptr% += LEN(text$)+1
 2940IF txtptr% > txtmax% THEN
 2950   ERROR 100,"Insufficient text buffer space"
 2960ENDIF
 2970$(savptr%) = text$
 2980= savptr%
 2990:
 3000DEF PROCcreate_help(title$)
 3010hlpblk%!0  = 0
 3020hlpblk%!4  = -512
 3030hlpblk%!8  = 1024
 3040hlpblk%!12 = 0
 3050hlpblk%!16 = 0
 3060hlpblk%!20 = 0
 3070hlpblk%!24 = -1
 3080hlpblk%!28 = &BF000012
 3090hlpblk%?32 = `black
 3100hlpblk%?33 = `grey2
 3110hlpblk%?34 = `orange
 3120hlpblk%?35 = `cream
 3130hlpblk%?36 = `grey3
 3140hlpblk%?37 = `grey1
 3150hlpblk%?38 = `cream
 3160hlpblk%?39 = 0
 3170hlpblk%!40 = 0
 3180hlpblk%!44 = 0
 3190hlpblk%!48 = 996
 3200hlpblk%!52 = 0
 3210hlpblk%!56 = &0109
 3220hlpblk%!60 = &0000
 3230hlpblk%!64 = 1
 3240hlpblk%!68 = 0
 3250help_title$ = "HELP - "+title$
 3260hlpblk%!72 = FNtext_buffer(help_title$)
 3270hlpblk%!76 = -1
 3280hlpblk%!80 = LEN(help_title$)
 3290hlpblk%!84 = 0
 3300hlpptr% = hlpblk%+88
 3310min_x% = 8: min_y% = -36: max_y% = 0: max_x% = 1024
 3320chan% = OPENIN "<BasPrint$Dir>.HelpText"
 3330WHILE NOT EOF#chan%
 3340   IF hlpptr% > hlpmax%-32 THEN
 3350      ERROR 101,"Insufficient HELP window space"
 3360   ENDIF
 3370   line$ = GET$#chan%
 3380   hlpptr%!0 = min_x%
 3390   hlpptr%!4 = min_y%
 3400   hlpptr%!8 = max_x%
 3410   hlpptr%!12 = max_y%
 3420   IF LEFT$(line$,1) = "�" THEN
 3430      line$ = RIGHT$(line$,LEN(line$)-1)
 3440      hlpptr%!16 = &0B000111
 3450   ELSE
 3460      hlpptr%!16 = &0D000111
 3470   ENDIF
 3480   hlpptr%!20 = FNtext_buffer(line$)
 3490   hlpptr%!24 = -1
 3500   hlpptr%!28 = LEN(line$)
 3510   hlpblk%!84 += 1
 3520   hlpptr% += 32
 3530   min_y% -= 36: max_y% -= 36
 3540ENDWHILE
 3550CLOSE#chan%
 3560IF min_y% < 512 THEN hlpblk%!44 = min_y%
 3570SYS "Wimp_CreateWindow",,hlpblk% TO help_window%
 3580ENDPROC
 3590:
 3600DEF FNcreate_icon(window%,min_x%,min_y%,max_x%,max_y%,flag%,type%,data%,name$,pntr%)
 3610blk%!0  = window%
 3620blk%!4  = min_x%
 3630blk%!8  = min_y%
 3640blk%!12 = max_x%
 3650blk%!16 = max_y%
 3660blk%!20 = flag% OR (type%<<12) OR (data% AND 3) OR ((data% AND 4)<<6)
 3670CASE data% OF
 3680WHEN 1,2,3
 3690   $(blk%+24) = LEFT$(name$,11)
 3700WHEN 5,6,7
 3710   blk%!24 = FNtext_buffer(name$)
 3720   blk%!28 = pntr%
 3730   blk%!32 = LEN(name$)
 3740ENDCASE
 3750SYS "Wimp_CreateIcon",,blk% TO icon%
 3760= icon%
 3770:
 3780DEF PROCget_icon_state(window%,icon%)
 3790icnblk%!0 = window%
 3800icnblk%!4 = icon%
 3810SYS "Wimp_GetIconState",,icnblk%
 3820min_x% = icnblk%!8
 3830min_y% = icnblk%!12
 3840max_x% = icnblk%!16
 3850max_y% = icnblk%!20
 3860ENDPROC
 3870:
 3880DEF PROCuser_message
 3890LOCAL i%
 3900FOR i% = 0 TO 255 STEP 4 : msgblk%!i% = blk%!i% : NEXT i%
 3910CASE msgblk%!16 OF
 3920WHEN msg_quit%
 3930   PROCquit
 3940WHEN msg_datasave%
 3950   PROCdata_save
 3960WHEN msg_dsaveACK%
 3970   PROCdata_save_ACK
 3980WHEN msg_dataload%
 3990   PROCdata_load
 4000WHEN msg_dloadACK%
 4010   PROCdata_load_ACK
 4020WHEN msg_modechng%
 4030   PROCmode_change
 4040WHEN msg_tsknamis%
 4050   PROCtask_name_is
 4060WHEN msg_help%
 4070   PROChelp
 4080ENDCASE
 4090ENDPROC
 4100:
 4110DEF PROCquit
 4120SYS "Wimp_CloseDown"
 4130END
 4140ENDPROC
 4150:
 4160DEF PROCdata_save
 4170ENDPROC
 4180:
 4190DEF PROCdata_save_ACK
 4200PROCpath_name
 4210IF type% = typ_text% THEN
 4220   spool_file$ = file$
 4230   PROCprocess_file
 4240ELSE
 4250   VDU 7
 4260ENDIF
 4270PROCsend_data_load
 4280ENDPROC
 4290:
 4300DEF PROCdata_load
 4310PROCpath_name
 4320CASE type% OF
 4330WHEN typ_basic%
 4340   SYS "OS_File",5,file$ TO ,,,,file_size%
 4350   PROCprepare_file(file$)
 4360WHEN typ_applictn%
 4370   file% = 0
 4380   WHILE MID$(file$,file%+1,1) <> CHR$(0)
 4390      file% += 1
 4400   ENDWHILE
 4410   file$ = LEFT$(file$,file%)+".!RunImage"
 4420   SYS "OS_File",5,file$ TO ,,load_addr%,exec_addr%,file_size%
 4430   type% = (&000FFF00 AND load_addr%)>>8
 4440   IF type% = typ_basic% THEN
 4450      PROCprepare_file(file$)
 4460   ELSE
 4470      VDU 7
 4480   ENDIF
 4490OTHERWISE
 4500   VDU 7
 4510ENDCASE
 4520PROCsend_data_load_ACK
 4530ENDPROC
 4540:
 4550DEF PROCdata_load_ACK
 4560ENDPROC
 4570:
 4580DEF PROCsend_data_save(ref%,window%,icon%,mouse_x%,mouse_y%,size%,type%,file$)
 4590msgblk%!0  = (LEN(file$)+48) AND &FFFFFFFC
 4600msgblk%!4  = 0
 4610msgblk%!8  = 0
 4620msgblk%!12 = ref%
 4630msgblk%!16 = msg_datasave%
 4640msgblk%!20 = window%
 4650msgblk%!24 = icon%
 4660msgblk%!28 = mouse_x%
 4670msgblk%!32 = mouse_y%
 4680msgblk%!36 = size%
 4690msgblk%!40 = type%
 4700$(msgblk%+44) = file$
 4710SYS "Wimp_SendMessage",17,msgblk%,window%
 4720ENDPROC
 4730:
 4740DEF PROCsend_data_save_ACK
 4750ENDPROC
 4760:
 4770DEF PROCsend_data_load
 4780msgblk%!12 = msgblk%!8
 4790msgblk%!16 = msg_dataload%
 4800SYS "Wimp_SendMessage",17,msgblk%,msgblk%!4
 4810ENDPROC
 4820:
 4830DEF PROCsend_data_load_ACK
 4840msgblk%!12 = msgblk%!8
 4850msgblk%!16 = msg_dloadACK%
 4860SYS "Wimp_SendMessage",17,msgblk%,msgblk%!4
 4870ENDPROC
 4880:
 4890DEF PROChelp
 4900msgblk%!0 = (LEN(help$)+24) AND &FFFFFFFC
 4910msgblk%!12 = msgblk%!8
 4920msgblk%!16 = msg_helpACK%
 4930$(msgblk%+20) = help$
 4940SYS "Wimp_SendMessage",17,msgblk%,msgblk%!4
 4950ENDPROC
 4960:
 4970DEF PROCmode_change
 4980msgblk%!0 = 130
 4990msgblk%!4 = 131
 5000msgblk%!8 = -1
 5010SYS "OS_ReadVduVariables",msgblk%,msgblk%+12
 5020SYS "OS_ReadModeVariable",-1,4 TO ,,x_pix%
 5030SYS "OS_ReadModeVariable",-1,5 TO ,,y_pix%
 5040wsiz_x% = (msgblk%!12+1)<<x_pix%
 5050wsiz_y% = (msgblk%!16+1)<<y_pix%
 5060ENDPROC
 5070:
 5080DEF PROCpath_name
 5090LOCAL i%
 5100type% = msgblk%!40
 5110file$ = ""
 5120i% = 44
 5130WHILE i% < (msgblk%!0) AND (msgblk%?i%) > 0
 5140   IF (msgblk%?i%) > 32 AND (msgblk%?i%) < 127 THEN file$ += CHR$(msgblk%?i%)
 5150   i% += 1
 5160ENDWHILE
 5170file$ += CHR$(0)
 5180ENDPROC
 5190:
 5200DEF PROCtask_name_is
 5210PROCcheck_task_name($(msgblk%+28))
 5220ENDPROC
 5230:
 5240DEF PROCbasic_error
 5250reply% = FNreport_error(ERR,REPORT$+" at line "+STR$(ERL),&01)
 5260PROCquit
 5270ENDPROC
 5280:
 5290DEF FNreport_error(code%,text$,flag%)
 5300DIM error% 64
 5310SYS "Wimp_DragBox",,-1
 5320!error% = code%
 5330$(error%+4) = text$
 5340SYS "Wimp_ReportError",error%,flag%,"BASIC Print" TO ,reply%
 5350= reply%
 5360:
 5370DEF PROCinitialise
 5380min_C6% = 142
 5390max_C6% = 143
 5400min_C7% = 142
 5410max_C7% = 155
 5420min_C8% = 142
 5430max_C8% = 163
 5440chan% = OPENIN "<BasPrint$Dir>.TokenData"
 5450WHILE NOT EOF#chan%
 5460   line$ = GET$#chan%
 5470   hex$ = LEFT$(line$,2)
 5480   SYS "OS_ReadUnsigned",&C0000010,hex$ TO ,,token%
 5490   token$ = RIGHT$(line$,LEN(line$)-6)
 5500   CASE token% OF
 5510   WHEN &C6
 5520      hex$ = MID$(line$,4,2)
 5530      SYS "OS_ReadUnsigned",&C0000010,hex$ TO ,,token%
 5540      token_C6$(token%-142) = token$
 5550   WHEN &C7
 5560      hex$ = MID$(line$,4,2)
 5570      SYS "OS_ReadUnsigned",&C0000010,hex$ TO ,,token%
 5580      token_C7$(token%-142) = token$
 5590   WHEN &C8
 5600      hex$ = MID$(line$,4,2)
 5610      SYS "OS_ReadUnsigned",&C0000010,hex$ TO ,,token%
 5620      token_C8$(token%-142) = token$
 5630   OTHERWISE
 5640      token$(token%-127) = token$
 5650   ENDCASE
 5660ENDWHILE
 5670CLOSE#chan%
 5680chan% = OPENIN "<BasPrint$Dir>.Choices"
 5690INPUT#chan%,print_task$,auto_print%,page_width%
 5700CLOSE#chan%
 5710PROCmode_change
 5720ENDPROC
 5730:
 5740DEF PROCprepare_file(file$)
 5750basic_file$ = file$
 5760PROCget_window_state(spool_window%)
 5770PROCopen_window(spool_window%,vmin_x%,vmin_y%,vmax_x%,vmax_y%,soff_x%,soff_y%,-1)
 5780ENDPROC
 5790:
 5800DEF PROCprocess_file
 5810LOCAL ERROR
 5820ON ERROR PROCerror
 5830PROCclose_window(spool_window%)
 5840SYS "Hourglass_On"
 5850cancel% = FALSE
 5860inch% = 0
 5870ouch% = 0
 5880stage% = 0
 5890REPEAT
 5900   stage% += 1
 5910   CASE stage% OF
 5920   WHEN 1
 5930      inch% = FNopenin(basic_file$)
 5940      size% = 0
 5950   WHEN 2
 5960      ouch% = FNopenout(spool_file$)
 5970   WHEN 3
 5980      PROCbasic_print
 5990      CLOSE#inch%: inch% = 0
 6000      CLOSE#ouch%: ouch% = 0
 6010   WHEN 4
 6020      IF LEFT$(spool_file$,12) <> "<Wimp$Scrap>" THEN
 6030      SYS "OS_File",18,spool_file$,typ_text%
 6040         IF auto_print% THEN
 6050            print_file% = TRUE
 6060            poll% = poll% AND &FFFFFFFE
 6070         ENDIF
 6080      ENDIF
 6090   WHEN 5
 6100      cancel% = TRUE
 6110   ENDCASE
 6120UNTIL cancel%
 6130IF inch% THEN CLOSE#inch% : inch% = 0
 6140IF ouch% THEN CLOSE#ouch% : ouch% = 0
 6150SYS "Hourglass_Off"
 6160ENDPROC
 6170:
 6180DEF FNopenin(file$)
 6190ON ERROR LOCAL PROCerror : = 0
 6200chan% = OPENIN file$
 6210IF chan% = 0 THEN ERROR 100,"File not found"
 6220= chan%
 6230:
 6240DEF FNopenout(file$)
 6250ON ERROR LOCAL PROCerror : = 0
 6260chan% = OPENOUT file$
 6270= chan%
 6280:
 6290DEF PROCbasic_print
 6300char% = BGET#inch%
 6310REPEAT
 6320   char% = BGET#inch%
 6330   IF char% <> &FF THEN
 6340      lino% = (char%<<8)+BGET#inch%
 6350      line_length% = 0
 6360      PROCput(RIGHT$("     "+STR$(lino%),5)+" ")
 6370      IF lino% MOD 100 = 0 THEN
 6380         pc% = 100*size%/file_size%
 6390         SYS "Hourglass_Percentage",pc%
 6400      ENDIF
 6410      char% = BGET#inch%
 6420      size% += char%
 6430      line$ = GET$#inch%
 6440      line% = 0
 6450      string% = FALSE
 6460      WHILE line% < LEN(line$)
 6470         line% += 1
 6480         char% = ASC(MID$(line$,line%,1))
 6490         PROCtoken_print
 6500      ENDWHILE
 6510      PROCput(CHR$(&0A))
 6520   ENDIF
 6530UNTIL char% = &FF OR EOF#inch% OR cancel%
 6540ENDPROC
 6550:
 6560DEF PROCtoken_print
 6570IF char% = &22 THEN string% = NOT string%
 6580IF char% < 127 OR string% THEN PROCput(CHR$(char%)): ENDPROC
 6590CASE char% OF
 6600WHEN &8D
 6610   line% += 1
 6620   odd% = ASC(MID$(line$,line%,1))
 6630   line% += 1
 6640   lsb% = ASC(MID$(line$,line%,1))
 6650   line% += 1
 6660   msb% = ASC(MID$(line$,line%,1))
 6670   lino% = (msb%<<8 OR lsb%) EOR (odd% AND &30)<<2 EOR (odd% AND &0C)<<12
 6680   PROCput(STR$(lino%))
 6690WHEN &C6
 6700   line% += 1
 6710   char% = ASC(MID$(line$,line%,1))
 6720   IF char% < min_C6% OR char% > max_C6% THEN
 6730      PROCtoken_error(&C6,char%)
 6740   ELSE
 6750      PROCput(token_C6$(char%-min_C6%))
 6760   ENDIF
 6770WHEN &C7
 6780   line% += 1
 6790   char% = ASC(MID$(line$,line%,1))
 6800   IF char% < min_C7% OR char% > max_C7% THEN
 6810      PROCtoken_error(&C7,char%)
 6820   ELSE
 6830      PROCput(token_C7$(char%-min_C7%))
 6840   ENDIF
 6850WHEN &C8
 6860   line% += 1
 6870   char% = ASC(MID$(line$,line%,1))
 6880   IF char% < min_C8% OR char% > max_C8% THEN
 6890      PROCtoken_error(&C8,char%)
 6900   ELSE
 6910      PROCput(token_C8$(char%-min_C8%))
 6920   ENDIF
 6930OTHERWISE
 6940   token$ = token$(char%-127)
 6950   IF token$ = "" THEN
 6960      PROCtoken_error(0,char%)
 6970   ELSE
 6980      PROCput(token$)
 6990   ENDIF
 7000ENDCASE
 7010ENDPROC
 7020:
 7030DEF PROCput(text$)
 7040text_length% = LEN(text$)
 7050IF line_length%+text_length% > page_width% THEN
 7060   BPUT#ouch%,&0A
 7070   BPUT#ouch%,"...      ";
 7080   line_length% = 9
 7090ENDIF
 7100BPUT#ouch%,text$;
 7110line_length% += text_length%
 7120ENDPROC
 7130:
 7140DEF PROCtoken_error(char1%,char2%)
 7150error$ = "Token [&"
 7160IF char1% > 0 THEN error$ += STR$~(char1%)+",&"
 7170error$ += STR$~(char2%)+"]; Error at line "+STR$(lino%)
 7180PROCquery(error$)
 7190ENDIF
 7200ENDPROC
 7210:
 7220DEF PROCerror
 7230reply% = FNreport_error(ERR,REPORT$+" at line "+STR$(ERL),&01)
 7240cancel% = TRUE
 7250ENDPROC
 7260:
 7270DEF PROCquery(text$)
 7280cancel% = (FNreport_error(0,text$,&07) = 2)
 7290ENDPROC
 7300:
 7310DEF PROCfind_print_task
 7320print_task% = 0
 7330WHILE print_icon% < 16 AND print_task% = 0
 7340   print_icon% += 1
 7350   msgblk%!0  = 128
 7360   msgblk%!12 = 0
 7370   SYS "Wimp_SendMessage",19,msgblk%,-2,print_icon% TO ,,print_task%
 7380ENDWHILE
 7390IF print_task% <> 0 THEN
 7400   msgblk%!0  = 128
 7410   msgblk%!12 = 0
 7420   msgblk%!16 = msg_tsknamrq%
 7430   msgblk%!20 = print_task%
 7440   SYS "Wimp_SendMessage",17,msgblk%,0
 7450ENDIF
 7460ENDPROC
 7470:
 7480DEF PROCcheck_task_name(name$)
 7490IF LEFT$(name$,LEN(print_task$)) = print_task$ THEN
 7500   msgblk%!0  = (LEN(spool_file$)+48) AND &FFFFFFFC
 7510   msgblk%!4  = 0
 7520   msgblk%!8  = 0
 7530   msgblk%!12 = 0
 7540   msgblk%!16 = msg_dataload%
 7550   msgblk%!20 = -2
 7560   msgblk%!24 = print_icon%
 7570   msgblk%!28 = 0
 7580   msgblk%!32 = 0
 7590   msgblk%!36 = -1
 7600   msgblk%!40 = typ_text%
 7610   $(msgblk%+44) = spool_file$
 7620   SYS "Wimp_SendMessage",17,msgblk%,print_task%
 7630ELSE
 7640   PROCfind_print_task
 7650ENDIF
 7660ENDPROC
 7670:

� > !RunImage
�    Name = BasPrint
,� Purpose = BASIC Format & Print Utility
((� Version = 1.03 (15th October 1991)
2!�  Author = 1991 - Alan Stout
7'� Copyright = Archimedes World 1992
<:
F;� token$(128),token_C6$(32),token_C7$(32),token_C8$(32)
P:
Z
� task% 4
dY� blk% 1023,hlpblk% 2047,icnblk% 63,menblk% 511,msgblk% 255,tmpblk% 1023,txtblk% 4095
n:
x.hlpptr% = hlpblk% : hlpmax% = hlpblk%+2047
�.tmpptr% = tmpblk% : tmpmax% = tmpblk%+1023
�.txtptr% = txtblk% : txtmax% = txtblk%+4095
�:
�$task% = "TASK"
�Iș "Wimp_Initialise",200,!task%,"Basic Print" � version%,task_handle%
�:
�� � �basic_error
�:
�+help$  = "This is the BasPrint Icon.|M"
�@help$ += "You can format and print a BASIC source program|M"
�9help$ += "by dragging a BASIC file onto this Icon.|M"
�@help$ += "Read the help supplied with BasPrint for details."
�help_window% = 0
:
 `white = 0 :  `dark_blue = 8
 `grey1 = 1 :     `yellow = 9
"!`grey2 = 2 :      `green = 10
,!`grey3 = 3 :        `red = 11
6!`grey4 = 4 :      `cream = 12
@!`grey5 = 5 : `army_green = 13
J!`grey6 = 6 :     `orange = 14
T!`black = 7 : `light_blue = 15
^:
hmsg_quit%     = 0
rmsg_datasave% = 1
|msg_dsaveACK% = 2
�msg_dataload% = 3
�msg_dloadACK% = 4
�msg_dataopen% = 5
�msg_RAMfetch% = 6
�msg_RAMtrans% = 7
�msg_modechng% = &400C1
�msg_tsknamrq% = &400C6
�msg_tsknamis% = &400C7
�msg_help%     = &502
�msg_helpACK%  = &503
�:
�typ_text%     = &0FFF
�typ_basic%    = &0FFB
typ_applictn% = &2000
:
�initialise
&:
05ș "Wimp_OpenTemplate",,"<BasPrint$Dir>.Template"
:* info_window% = �load_template("Info")
D* info_window% = �load_template("Info")
N+print_window% = �load_template("Print")
X+width_window% = �load_template("Width")
b+spool_window% = �load_template("Spool")
lș "Wimp_CloseTemplate"
v:
�Iicon_window% = �create_icon(-1,0,0,68,68,&00000000,2,6,"!basprint",1)
�finish = �
�poll% = &00000001
��
�*   ș "Wimp_Poll",poll%,blk% � reason%
�   Ȏ reason% �
�
   � 0
�      �null_reason(blk%!0)
�
   � 2
�T      �open_window(blk%!0,blk%!4,blk%!8,blk%!12,blk%!16,blk%!20,blk%!24,blk%!28)
�
   � 3
�      �close_window(blk%!0)
�
   � 6
<      �mouse_click(blk%!0,blk%!4,blk%!8,blk%!12,blk%!16)

   � 7
6      �user_drag_box(blk%!0,blk%!4,blk%!8,blk%!12)
 
   � 8
*-      �key_pressed(blk%!0,blk%!4,blk%!24)
4
   � 9
>      �menu_selection(blk%)
H   � 17,18
R      �user_message
\   �
f� finish
p	�quit
z:
�� �load_template(name$)
�
� window%
�Gș "Wimp_LoadTemplate",,blk%,tmpptr%,tmpmax%,-1,name$,0 � ,,tmpptr%
�*ș "Wimp_CreateWindow",,blk% � window%
�
= window%
�:
�� �null_reason(window%)
�� print_file% �
�   print_icon% = 0
�   �find_print_task
�   print_file% = �
�    poll% = poll% � &00000001
��
�
:
S� �open_window(window%,vmin_x%,vmin_y%,vmax_x%,vmax_y%,soff_x%,soff_y%,behind%)
$blk%!0  = window%
.blk%!4  = vmin_x%
8blk%!8  = vmin_y%
Bblk%!12 = vmax_x%
Lblk%!16 = vmax_y%
Vblk%!20 = soff_x%
`blk%!24 = soff_y%
jblk%!28 = behind%
tș "Wimp_OpenWindow",,blk%
~�
�:
� � �get_window_state(window%)
�blk%!0  = window%
�"ș "Wimp_GetWindowState",,blk%
�vmin_x% = blk%!4
�vmin_y% = blk%!8
�vmax_x% = blk%!12
�vmax_y% = blk%!16
�soff_x% = blk%!20
�soff_y% = blk%!24
��
�:
� �close_window(window%)

blk%!0 = window%
ș "Wimp_CloseWindow",,blk%
�
(:
2;� �mouse_click(mouse_x%,mouse_y%,button%,window%,icon%)
<Ȏ button% �
F� 2
P.   � window% = -2 � icon% = icon_window% �
Z      �display_menu(mouse_x%,mouse_y%,window%,"BASIC Print","Info,Help,Print Task,Auto Print,Page Width,Save Choices,Quit")
d   �
n� 4
x"   � window% = print_window% �
�%      �key_pressed(window%,0,&0D)
�   �
�"   � window% = width_window% �
�%      �key_pressed(window%,0,&0D)
�   �
�.   � window% = spool_window% � icon% = 1 �
�*      �get_window_state(spool_window%)
�*      �get_icon_state(spool_window%,1)
�      blk%!0  = 0
�      blk%!4  = 5
�,      blk%!8  = min_x%+(vmin_x%-soff_x%)
�,      blk%!12 = min_y%+(vmax_y%-soff_y%)
�,      blk%!16 = max_x%+(vmin_x%-soff_x%)
,      blk%!20 = max_y%+(vmax_y%-soff_y%)
      blk%!24 = 0
      blk%!28 = 0
"      blk%!32 = wsiz_x%
,      blk%!36 = wsiz_y%
6!      ș "Wimp_DragBox",,blk%
@      �
J   �
T�
^�
h:
r<� �display_menu(mouse_x%,mouse_y%,window%,title$,items$)
|menu_window% = window%
�menu_ptr% = menblk%
�$(menu_ptr%) = title$
�menu_ptr%?12 = `black
�menu_ptr%?13 = `grey2
�menu_ptr%?14 = `black
�menu_ptr%?15 = `grey3
�menu_ptr%!16 = 200
�menu_ptr%!20 = 40
�menu_ptr%!24 = 0
�menu_ptr% += 4
�
i% = 0
��
�   j% = i%+1
   i% = �items$+",",",",j%)
    item$ = �items$,j%,i%-j%)
   � item$ <> "" �
&      menu_ptr% += 24
0      menu_ptr%!0 = &00
:      menu_ptr%!4 = -1
D      Ȏ item$ �
N      � "Info"
X'         menu_ptr%!4 = info_window%
b      � "Print Task"
l(         menu_ptr%!4 = print_window%
v8         �put_icon_text(print_window%,0,print_task$)
�      � "Auto Print"
�          prtptr% = menu_ptr%
�,         � auto_print% � prtptr%!0 = &01
�      � "Page Width"
�(         menu_ptr%!4 = width_window%
�;         �put_icon_text(width_window%,0,�(page_width%))
�      �
�!      menu_ptr%!8 = &07000021
�!      $(menu_ptr%+12) = item$
�   �
�� item$ = ""
�%menu_ptr%!0 = (menu_ptr%!0) � &80
�;ș "Wimp_CreateMenu",,menblk%,mouse_x%-100,mouse_y%+400
�
:
1� �user_drag_box(min_x%,min_y%,max_x%,max_y%)
 "ș "Wimp_GetPointerInfo",,blk%
*mouse_x% = blk%!0
4mouse_y% = blk%!4
>window%  = blk%!12
Hicon%    = blk%!16
R1spool_name$ = �get_icon_text(spool_window%,0)
\P�send_data_save(0,window%,icon%,mouse_x%,mouse_y%,512,typ_text%,spool_name$)
f�
p:
z'� �key_pressed(window%,icon%,char%)
�Ȏ window% �
�� print_window%
�   � char% = &0D �
�7      print_task$ = �get_icon_text(print_window%,0)
�      �
�   �
�� width_window%
�   � char% = &0D �
�5      width% = �(�get_icon_text(width_window%,0))
�(      � width% < 32 � width% > 256 �
�I         reply% = �report_error(0,"Invalid page width specified",&01)
�      �
�!         page_width% = width%
	      �
	      �
	   �
	$� spool_window%
	.   � char% = &0D �
	87      spool_name$ = �get_icon_text(spool_window%,0)
	B      i% = �(basic_file$)
	L/      ȕ i% > 0 � �basic_file$,i%,1) <> "."
	V         i% -= 1
	`      �
	j4      spool_file$ = �basic_file$,i%)+spool_name$
	t      �process_file
	~      �
	�   �
	��
	�ș "Wimp_ProcessKey",char%
	��
	�:
	�)� �put_icon_text(window%,icon%,text$)
	�icnblk%!0 = window%
	�icnblk%!4 = icon%
	�#ș "Wimp_GetIconState",,icnblk%
	�icnptr% = icnblk%+8
	�savptr% = icnptr%!20
	�$(savptr%) = text$
�

:
#� �get_icon_text(window%,icon%)
icnblk%!0 = window%
(icnblk%!4 = icon%
2#ș "Wimp_GetIconState",,icnblk%
<icnptr% = icnblk%+8
Fsavptr% = icnptr%!20
P= $(savptr%)
Z:
d� �menu_selection(select%)
n%ș "Wimp_GetPointerInfo",,tmpblk%
xmouse_x% = tmpblk%!0
�mouse_y% = tmpblk%!4
� button% = tmpblk%!8
�>ș "Wimp_DecodeMenu",,menblk%,select%,�200," ") � ,,,item$
�Ȏ item$ �
�� "Auto Print"
�"   auto_print% = � auto_print%
�"   prtptr%!0 = prtptr%!0 � &01
�� "Help"
�?   � help_window% = 0 � �create_help("BASIC Print Utility")
�9   �open_window(help_window%,128,256,1152,768,0,0,-1)
�� "Save Choices"
�)   chan% = � "<BasPrint$Dir>.Choices"
�2   �#chan%,print_task$,auto_print%,page_width%
   �#chan%
� "Quit"
   �quit
"�
,� button% = 1 �
6=   ș "Wimp_CreateMenu",,menblk%,mouse_x%-40,mouse_y%+200
@�
J�
T:
^� �text_buffer(text$)
hsavptr% = txtptr%
rtxtptr% += �(text$)+1
|� txtptr% > txtmax% �
�-   � 100,"Insufficient text buffer space"
��
�$(savptr%) = text$
�
= savptr%
�:
�� �create_help(title$)
�hlpblk%!0  = 0
�hlpblk%!4  = -512
�hlpblk%!8  = 1024
�hlpblk%!12 = 0
�hlpblk%!16 = 0
�hlpblk%!20 = 0
�hlpblk%!24 = -1
hlpblk%!28 = &BF000012
hlpblk%?32 = `black
hlpblk%?33 = `grey2
&hlpblk%?34 = `orange
0hlpblk%?35 = `cream
:hlpblk%?36 = `grey3
Dhlpblk%?37 = `grey1
Nhlpblk%?38 = `cream
Xhlpblk%?39 = 0
bhlpblk%!40 = 0
lhlpblk%!44 = 0
vhlpblk%!48 = 996
�hlpblk%!52 = 0
�hlpblk%!56 = &0109
�hlpblk%!60 = &0000
�hlpblk%!64 = 1
�hlpblk%!68 = 0
�"help_title$ = "HELP - "+title$
�*hlpblk%!72 = �text_buffer(help_title$)
�hlpblk%!76 = -1
�hlpblk%!80 = �(help_title$)
�hlpblk%!84 = 0
�hlpptr% = hlpblk%+88
�7min_x% = 8: min_y% = -36: max_y% = 0: max_x% = 1024
�'chan% = � "<BasPrint$Dir>.HelpText"

ȕ � �#chan%

   � hlpptr% > hlpmax%-32 �

0      � 101,"Insufficient HELP window space"

    �

*   line$ = �#chan%

4   hlpptr%!0 = min_x%

>   hlpptr%!4 = min_y%

H   hlpptr%!8 = max_x%

R   hlpptr%!12 = max_y%

\   � �line$,1) = "�" �

f$      line$ = �line$,�(line$)-1)

p       hlpptr%!16 = &0B000111

z   �

�       hlpptr%!16 = &0D000111

�   �

�'   hlpptr%!20 = �text_buffer(line$)

�   hlpptr%!24 = -1

�   hlpptr%!28 = �(line$)

�   hlpblk%!84 += 1

�   hlpptr% += 32

�!   min_y% -= 36: max_y% -= 36

��

��#chan%

�(� min_y% < 512 � hlpblk%!44 = min_y%

�2ș "Wimp_CreateWindow",,hlpblk% � help_window%

��
:
U� �create_icon(window%,min_x%,min_y%,max_x%,max_y%,flag%,type%,data%,name$,pntr%)
blk%!0  = window%
$blk%!4  = min_x%
.blk%!8  = min_y%
8blk%!12 = max_x%
Bblk%!16 = max_y%
LBblk%!20 = flag% � (type%<<12) � (data% � 3) � ((data% � 4)<<6)
VȎ data% �
`� 1,2,3
j   $(blk%+24) = �name$,11)
t� 5,6,7
~$   blk%!24 = �text_buffer(name$)
�   blk%!28 = pntr%
�   blk%!32 = �(name$)
��
�&ș "Wimp_CreateIcon",,blk% � icon%
�= icon%
�:
�$� �get_icon_state(window%,icon%)
�icnblk%!0 = window%
�icnblk%!4 = icon%
�#ș "Wimp_GetIconState",,icnblk%
�min_x% = icnblk%!8
�min_y% = icnblk%!12
max_x% = icnblk%!16

max_y% = icnblk%!20
�
:
(� �user_message
2� i%
<4� i% = 0 � 255 � 4 : msgblk%!i% = blk%!i% : � i%
FȎ msgblk%!16 �
P� msg_quit%
Z   �quit
d� msg_datasave%
n   �data_save
x� msg_dsaveACK%
�   �data_save_ACK
�� msg_dataload%
�   �data_load
�� msg_dloadACK%
�   �data_load_ACK
�� msg_modechng%
�   �mode_change
�� msg_tsknamis%
�   �task_name_is
�� msg_help%
�   �help
��
��
:
� �quit
ș "Wimp_CloseDown"
"�
,�
6:
@� �data_save
J�
T:
^� �data_save_ACK
h�path_name
r� type% = typ_text% �
|   spool_file$ = file$
�   �process_file
��
�
   � 7
��
��send_data_load
��
�:
�� �data_load
��path_name
�Ȏ type% �
�� typ_basic%
�,   ș "OS_File",5,file$ � ,,,,file_size%
�   �prepare_file(file$)
� typ_applictn%
   file% = 0
#   ȕ �file$,file%+1,1) <> �(0)
&      file% += 1
0   �
:)   file$ = �file$,file%)+".!RunImage"
D@   ș "OS_File",5,file$ � ,,load_addr%,exec_addr%,file_size%
N*   type% = (&000FFF00 � load_addr%)>>8
X   � type% = typ_basic% �
b      �prepare_file(file$)
l   �
v
      � 7
�   �
�
�
   � 7
��
��send_data_load_ACK
��
�:
�� �data_load_ACK
��
�:
�M� �send_data_save(ref%,window%,icon%,mouse_x%,mouse_y%,size%,type%,file$)
�*msgblk%!0  = (�(file$)+48) � &FFFFFFFC
�msgblk%!4  = 0
msgblk%!8  = 0
msgblk%!12 = ref%
msgblk%!16 = msg_datasave%
 msgblk%!20 = window%
*msgblk%!24 = icon%
4msgblk%!28 = mouse_x%
>msgblk%!32 = mouse_y%
Hmsgblk%!36 = size%
Rmsgblk%!40 = type%
\$(msgblk%+44) = file$
f,ș "Wimp_SendMessage",17,msgblk%,window%
p�
z:
�� �send_data_save_ACK
��
�:
�� �send_data_load
�msgblk%!12 = msgblk%!8
�msgblk%!16 = msg_dataload%
�.ș "Wimp_SendMessage",17,msgblk%,msgblk%!4
��
�:
�� �send_data_load_ACK
�msgblk%!12 = msgblk%!8
�msgblk%!16 = msg_dloadACK%
�.ș "Wimp_SendMessage",17,msgblk%,msgblk%!4
�
:
� �help
$)msgblk%!0 = (�(help$)+24) � &FFFFFFFC
.msgblk%!12 = msgblk%!8
8msgblk%!16 = msg_helpACK%
B$(msgblk%+20) = help$
L.ș "Wimp_SendMessage",17,msgblk%,msgblk%!4
V�
`:
j� �mode_change
tmsgblk%!0 = 130
~msgblk%!4 = 131
�msgblk%!8 = -1
�/ș "OS_ReadVduVariables",msgblk%,msgblk%+12
�,ș "OS_ReadModeVariable",-1,4 � ,,x_pix%
�,ș "OS_ReadModeVariable",-1,5 � ,,y_pix%
�$wsiz_x% = (msgblk%!12+1)<<x_pix%
�$wsiz_y% = (msgblk%!16+1)<<y_pix%
��
�:
�� �path_name
�� i%
�type% = msgblk%!40
�file$ = ""
i% = 44

*ȕ i% < (msgblk%!0) � (msgblk%?i%) > 0
H   � (msgblk%?i%) > 32 � (msgblk%?i%) < 127 � file$ += �(msgblk%?i%)
   i% += 1
(�
2file$ += �(0)
<�
F:
P� �task_name_is
Z#�check_task_name($(msgblk%+28))
d�
n:
x� �basic_error
�5reply% = �report_error(�,�$+" at line "+�(�),&01)
�	�quit
��
�:
�&� �report_error(code%,text$,flag%)
�� error% 64
�ș "Wimp_DragBox",,-1
�!error% = code%
�$(error%+4) = text$
�>ș "Wimp_ReportError",error%,flag%,"BASIC Print" � ,reply%
�= reply%
�:
�� �initialise
min_C6% = 142
max_C6% = 143
min_C7% = 142
"max_C7% = 155
,min_C8% = 142
6max_C8% = 163
@(chan% = � "<BasPrint$Dir>.TokenData"
Jȕ � �#chan%
T   line$ = �#chan%
^   hex$ = �line$,2)
h5   ș "OS_ReadUnsigned",&C0000010,hex$ � ,,token%
r"   token$ = �line$,�(line$)-6)
|   Ȏ token% �
�   � &C6
�      hex$ = �line$,4,2)
�8      ș "OS_ReadUnsigned",&C0000010,hex$ � ,,token%
�(      token_C6$(token%-142) = token$
�   � &C7
�      hex$ = �line$,4,2)
�8      ș "OS_ReadUnsigned",&C0000010,hex$ � ,,token%
�(      token_C7$(token%-142) = token$
�   � &C8
�      hex$ = �line$,4,2)
�8      ș "OS_ReadUnsigned",&C0000010,hex$ � ,,token%
�(      token_C8$(token%-142) = token$
�   
%      token$(token%-127) = token$
   �
�
&�#chan%
0&chan% = � "<BasPrint$Dir>.Choices"
:/�#chan%,print_task$,auto_print%,page_width%
D�#chan%
N�mode_change
X�
b:
l� �prepare_file(file$)
vbasic_file$ = file$
�$�get_window_state(spool_window%)
�R�open_window(spool_window%,vmin_x%,vmin_y%,vmax_x%,vmax_y%,soff_x%,soff_y%,-1)
��
�:
�� �process_file
�� �
�� � �error
� �close_window(spool_window%)
�ș "Hourglass_On"
�cancel% = �
�
inch% = 0
�
ouch% = 0
�stage% = 0
�
   stage% += 1
   Ȏ stage% �
 
   � 1
*&      inch% = �openin(basic_file$)
4      size% = 0
>
   � 2
H'      ouch% = �openout(spool_file$)
R
   � 3
\      �basic_print
f      �#inch%: inch% = 0
p      �#ouch%: ouch% = 0
z
   � 4
�0      � �spool_file$,12) <> "<Wimp$Scrap>" �
�/      ș "OS_File",18,spool_file$,typ_text%
�         � auto_print% �
�            print_file% = �
�)            poll% = poll% � &FFFFFFFE
�         �
�      �
�
   � 5
�      cancel% = �
�   �
�
� cancel%
�!� inch% � �#inch% : inch% = 0
�!� ouch% � �#ouch% : ouch% = 0
ș "Hourglass_Off"
�
:
$� �openin(file$)
.� � � �error : = 0
8chan% = � file$
B(� chan% = 0 � � 100,"File not found"
L= chan%
V:
`� �openout(file$)
j� � � �error : = 0
tchan% = � file$
~= chan%
�:
�� �basic_print
�char% = �#inch%
��
�   char% = �#inch%
�   � char% <> &FF �
�$      lino% = (char%<<8)+�#inch%
�      line_length% = 0
�(      �put(�"     "+�(lino%),5)+" ")
�      � lino% � 100 = 0 �
�'         pc% = 100*size%/file_size%
�*         ș "Hourglass_Percentage",pc%
      �

      char% = �#inch%
      size% += char%
      line$ = �#inch%
(      line% = 0
2      string% = �
<      ȕ line% < �(line$)
F         line% += 1
P'         char% = �(�line$,line%,1))
Z         �token_print
d      �
n      �put(�(&0A))
x   �
�%� char% = &FF � �#inch% � cancel%
��
�:
�� �token_print
�'� char% = &22 � string% = � string%
�/� char% < 127 � string% � �put(�(char%)): �
�Ȏ char% �
�	� &8D
�   line% += 1
�    odd% = �(�line$,line%,1))
�   line% += 1
�    lsb% = �(�line$,line%,1))
�   line% += 1
    msb% = �(�line$,line%,1))
D   lino% = (msb%<<8 � lsb%) � (odd% � &30)<<2 � (odd% � &0C)<<12
   �put(�(lino%))
"	� &C6
,   line% += 1
6!   char% = �(�line$,line%,1))
@,   � char% < min_C6% � char% > max_C6% �
J!      �token_error(&C6,char%)
T   �
^(      �put(token_C6$(char%-min_C6%))
h   �
r	� &C7
|   line% += 1
�!   char% = �(�line$,line%,1))
�,   � char% < min_C7% � char% > max_C7% �
�!      �token_error(&C7,char%)
�   �
�(      �put(token_C7$(char%-min_C7%))
�   �
�	� &C8
�   line% += 1
�!   char% = �(�line$,line%,1))
�,   � char% < min_C8% � char% > max_C8% �
�!      �token_error(&C8,char%)
�   �
�(      �put(token_C8$(char%-min_C8%))
   �

!   token$ = token$(char%-127)
&   � token$ = "" �
0      �token_error(0,char%)
:   �
D      �put(token$)
N   �
X�
b�
l:
v� �put(text$)
�text_length% = �(text$)
�/� line_length%+text_length% > page_width% �
�   �#ouch%,&0A
�   �#ouch%,"...      ";
�   line_length% = 9
��
��#ouch%,text$;
� line_length% += text_length%
��
�:
�!� �token_error(char1%,char2%)
�error$ = "Token [&"
�,� char1% > 0 � error$ += �~(char1%)+",&"
5error$ += �~(char2%)+"]; Error at line "+�(lino%)
�query(error$)
�
 �
*:
4� �error
>5reply% = �report_error(�,�$+" at line "+�(�),&01)
Hcancel% = �
R�
\:
f� �query(text$)
p.cancel% = (�report_error(0,text$,&07) = 2)
z�
�:
�� �find_print_task
�print_task% = 0
�)ȕ print_icon% < 16 � print_task% = 0
�   print_icon% += 1
�   msgblk%!0  = 128
�   msgblk%!12 = 0
�F   ș "Wimp_SendMessage",19,msgblk%,-2,print_icon% � ,,print_task%
��
�� print_task% <> 0 �
�   msgblk%!0  = 128
�   msgblk%!12 = 0
�!   msgblk%!16 = msg_tsknamrq%
   msgblk%!20 = print_task%
)   ș "Wimp_SendMessage",17,msgblk%,0
�
$�
.:
8� �check_task_name(name$)
B,� �name$,�(print_task$)) = print_task$ �
L3   msgblk%!0  = (�(spool_file$)+48) � &FFFFFFFC
V   msgblk%!4  = 0
`   msgblk%!8  = 0
j   msgblk%!12 = 0
t!   msgblk%!16 = msg_dataload%
~   msgblk%!20 = -2
�   msgblk%!24 = print_icon%
�   msgblk%!28 = 0
�   msgblk%!32 = 0
�   msgblk%!36 = -1
�   msgblk%!40 = typ_text%
�"   $(msgblk%+44) = spool_file$
�3   ș "Wimp_SendMessage",17,msgblk%,print_task%
��
�   �find_print_task
��
��
�:
�
00000000  0d 00 0a 11 f4 20 3e 20  21 52 75 6e 49 6d 61 67  |..... > !RunImag|
00000010  65 0d 00 14 18 f4 20 20  20 20 4e 61 6d 65 20 3d  |e.....    Name =|
00000020  20 42 61 73 50 72 69 6e  74 0d 00 1e 2c f4 20 50  | BasPrint...,. P|
00000030  75 72 70 6f 73 65 20 3d  20 42 41 53 49 43 20 46  |urpose = BASIC F|
00000040  6f 72 6d 61 74 20 26 20  50 72 69 6e 74 20 55 74  |ormat & Print Ut|
00000050  69 6c 69 74 79 0d 00 28  28 f4 20 56 65 72 73 69  |ility..((. Versi|
00000060  6f 6e 20 3d 20 31 2e 30  33 20 28 31 35 74 68 20  |on = 1.03 (15th |
00000070  4f 63 74 6f 62 65 72 20  31 39 39 31 29 0d 00 32  |October 1991)..2|
00000080  21 f4 20 20 41 75 74 68  6f 72 20 3d 20 31 39 39  |!.  Author = 199|
00000090  31 20 2d 20 41 6c 61 6e  20 53 74 6f 75 74 0d 00  |1 - Alan Stout..|
000000a0  37 27 f4 20 43 6f 70 79  72 69 67 68 74 20 3d 20  |7'. Copyright = |
000000b0  41 72 63 68 69 6d 65 64  65 73 20 57 6f 72 6c 64  |Archimedes World|
000000c0  20 31 39 39 32 0d 00 3c  05 3a 0d 00 46 3b de 20  | 1992..<.:..F;. |
000000d0  74 6f 6b 65 6e 24 28 31  32 38 29 2c 74 6f 6b 65  |token$(128),toke|
000000e0  6e 5f 43 36 24 28 33 32  29 2c 74 6f 6b 65 6e 5f  |n_C6$(32),token_|
000000f0  43 37 24 28 33 32 29 2c  74 6f 6b 65 6e 5f 43 38  |C7$(32),token_C8|
00000100  24 28 33 32 29 0d 00 50  05 3a 0d 00 5a 0d de 20  |$(32)..P.:..Z.. |
00000110  74 61 73 6b 25 20 34 0d  00 64 59 de 20 62 6c 6b  |task% 4..dY. blk|
00000120  25 20 31 30 32 33 2c 68  6c 70 62 6c 6b 25 20 32  |% 1023,hlpblk% 2|
00000130  30 34 37 2c 69 63 6e 62  6c 6b 25 20 36 33 2c 6d  |047,icnblk% 63,m|
00000140  65 6e 62 6c 6b 25 20 35  31 31 2c 6d 73 67 62 6c  |enblk% 511,msgbl|
00000150  6b 25 20 32 35 35 2c 74  6d 70 62 6c 6b 25 20 31  |k% 255,tmpblk% 1|
00000160  30 32 33 2c 74 78 74 62  6c 6b 25 20 34 30 39 35  |023,txtblk% 4095|
00000170  0d 00 6e 05 3a 0d 00 78  2e 68 6c 70 70 74 72 25  |..n.:..x.hlpptr%|
00000180  20 3d 20 68 6c 70 62 6c  6b 25 20 3a 20 68 6c 70  | = hlpblk% : hlp|
00000190  6d 61 78 25 20 3d 20 68  6c 70 62 6c 6b 25 2b 32  |max% = hlpblk%+2|
000001a0  30 34 37 0d 00 82 2e 74  6d 70 70 74 72 25 20 3d  |047....tmpptr% =|
000001b0  20 74 6d 70 62 6c 6b 25  20 3a 20 74 6d 70 6d 61  | tmpblk% : tmpma|
000001c0  78 25 20 3d 20 74 6d 70  62 6c 6b 25 2b 31 30 32  |x% = tmpblk%+102|
000001d0  33 0d 00 8c 2e 74 78 74  70 74 72 25 20 3d 20 74  |3....txtptr% = t|
000001e0  78 74 62 6c 6b 25 20 3a  20 74 78 74 6d 61 78 25  |xtblk% : txtmax%|
000001f0  20 3d 20 74 78 74 62 6c  6b 25 2b 34 30 39 35 0d  | = txtblk%+4095.|
00000200  00 96 05 3a 0d 00 a0 13  24 74 61 73 6b 25 20 3d  |...:....$task% =|
00000210  20 22 54 41 53 4b 22 0d  00 aa 49 c8 99 20 22 57  | "TASK"...I.. "W|
00000220  69 6d 70 5f 49 6e 69 74  69 61 6c 69 73 65 22 2c  |imp_Initialise",|
00000230  32 30 30 2c 21 74 61 73  6b 25 2c 22 42 61 73 69  |200,!task%,"Basi|
00000240  63 20 50 72 69 6e 74 22  20 b8 20 76 65 72 73 69  |c Print" . versi|
00000250  6f 6e 25 2c 74 61 73 6b  5f 68 61 6e 64 6c 65 25  |on%,task_handle%|
00000260  0d 00 b4 05 3a 0d 00 be  14 ee 20 85 20 f2 62 61  |....:..... . .ba|
00000270  73 69 63 5f 65 72 72 6f  72 0d 00 c8 05 3a 0d 00  |sic_error....:..|
00000280  d2 2b 68 65 6c 70 24 20  20 3d 20 22 54 68 69 73  |.+help$  = "This|
00000290  20 69 73 20 74 68 65 20  42 61 73 50 72 69 6e 74  | is the BasPrint|
000002a0  20 49 63 6f 6e 2e 7c 4d  22 0d 00 dc 40 68 65 6c  | Icon.|M"...@hel|
000002b0  70 24 20 2b 3d 20 22 59  6f 75 20 63 61 6e 20 66  |p$ += "You can f|
000002c0  6f 72 6d 61 74 20 61 6e  64 20 70 72 69 6e 74 20  |ormat and print |
000002d0  61 20 42 41 53 49 43 20  73 6f 75 72 63 65 20 70  |a BASIC source p|
000002e0  72 6f 67 72 61 6d 7c 4d  22 0d 00 e6 39 68 65 6c  |rogram|M"...9hel|
000002f0  70 24 20 2b 3d 20 22 62  79 20 64 72 61 67 67 69  |p$ += "by draggi|
00000300  6e 67 20 61 20 42 41 53  49 43 20 66 69 6c 65 20  |ng a BASIC file |
00000310  6f 6e 74 6f 20 74 68 69  73 20 49 63 6f 6e 2e 7c  |onto this Icon.||
00000320  4d 22 0d 00 f0 40 68 65  6c 70 24 20 2b 3d 20 22  |M"...@help$ += "|
00000330  52 65 61 64 20 74 68 65  20 68 65 6c 70 20 73 75  |Read the help su|
00000340  70 70 6c 69 65 64 20 77  69 74 68 20 42 61 73 50  |pplied with BasP|
00000350  72 69 6e 74 20 66 6f 72  20 64 65 74 61 69 6c 73  |rint for details|
00000360  2e 22 0d 00 fa 14 68 65  6c 70 5f 77 69 6e 64 6f  |."....help_windo|
00000370  77 25 20 3d 20 30 0d 01  04 05 3a 0d 01 0e 20 60  |w% = 0....:... `|
00000380  77 68 69 74 65 20 3d 20  30 20 3a 20 20 60 64 61  |white = 0 :  `da|
00000390  72 6b 5f 62 6c 75 65 20  3d 20 38 0d 01 18 20 60  |rk_blue = 8... `|
000003a0  67 72 65 79 31 20 3d 20  31 20 3a 20 20 20 20 20  |grey1 = 1 :     |
000003b0  60 79 65 6c 6c 6f 77 20  3d 20 39 0d 01 22 21 60  |`yellow = 9.."!`|
000003c0  67 72 65 79 32 20 3d 20  32 20 3a 20 20 20 20 20  |grey2 = 2 :     |
000003d0  20 60 67 72 65 65 6e 20  3d 20 31 30 0d 01 2c 21  | `green = 10..,!|
000003e0  60 67 72 65 79 33 20 3d  20 33 20 3a 20 20 20 20  |`grey3 = 3 :    |
000003f0  20 20 20 20 60 72 65 64  20 3d 20 31 31 0d 01 36  |    `red = 11..6|
00000400  21 60 67 72 65 79 34 20  3d 20 34 20 3a 20 20 20  |!`grey4 = 4 :   |
00000410  20 20 20 60 63 72 65 61  6d 20 3d 20 31 32 0d 01  |   `cream = 12..|
00000420  40 21 60 67 72 65 79 35  20 3d 20 35 20 3a 20 60  |@!`grey5 = 5 : `|
00000430  61 72 6d 79 5f 67 72 65  65 6e 20 3d 20 31 33 0d  |army_green = 13.|
00000440  01 4a 21 60 67 72 65 79  36 20 3d 20 36 20 3a 20  |.J!`grey6 = 6 : |
00000450  20 20 20 20 60 6f 72 61  6e 67 65 20 3d 20 31 34  |    `orange = 14|
00000460  0d 01 54 21 60 62 6c 61  63 6b 20 3d 20 37 20 3a  |..T!`black = 7 :|
00000470  20 60 6c 69 67 68 74 5f  62 6c 75 65 20 3d 20 31  | `light_blue = 1|
00000480  35 0d 01 5e 05 3a 0d 01  68 15 6d 73 67 5f 71 75  |5..^.:..h.msg_qu|
00000490  69 74 25 20 20 20 20 20  3d 20 30 0d 01 72 15 6d  |it%     = 0..r.m|
000004a0  73 67 5f 64 61 74 61 73  61 76 65 25 20 3d 20 31  |sg_datasave% = 1|
000004b0  0d 01 7c 15 6d 73 67 5f  64 73 61 76 65 41 43 4b  |..|.msg_dsaveACK|
000004c0  25 20 3d 20 32 0d 01 86  15 6d 73 67 5f 64 61 74  |% = 2....msg_dat|
000004d0  61 6c 6f 61 64 25 20 3d  20 33 0d 01 90 15 6d 73  |aload% = 3....ms|
000004e0  67 5f 64 6c 6f 61 64 41  43 4b 25 20 3d 20 34 0d  |g_dloadACK% = 4.|
000004f0  01 9a 15 6d 73 67 5f 64  61 74 61 6f 70 65 6e 25  |...msg_dataopen%|
00000500  20 3d 20 35 0d 01 a4 15  6d 73 67 5f 52 41 4d 66  | = 5....msg_RAMf|
00000510  65 74 63 68 25 20 3d 20  36 0d 01 ae 15 6d 73 67  |etch% = 6....msg|
00000520  5f 52 41 4d 74 72 61 6e  73 25 20 3d 20 37 0d 01  |_RAMtrans% = 7..|
00000530  b8 1a 6d 73 67 5f 6d 6f  64 65 63 68 6e 67 25 20  |..msg_modechng% |
00000540  3d 20 26 34 30 30 43 31  0d 01 c2 1a 6d 73 67 5f  |= &400C1....msg_|
00000550  74 73 6b 6e 61 6d 72 71  25 20 3d 20 26 34 30 30  |tsknamrq% = &400|
00000560  43 36 0d 01 cc 1a 6d 73  67 5f 74 73 6b 6e 61 6d  |C6....msg_tsknam|
00000570  69 73 25 20 3d 20 26 34  30 30 43 37 0d 01 d6 18  |is% = &400C7....|
00000580  6d 73 67 5f 68 65 6c 70  25 20 20 20 20 20 3d 20  |msg_help%     = |
00000590  26 35 30 32 0d 01 e0 18  6d 73 67 5f 68 65 6c 70  |&502....msg_help|
000005a0  41 43 4b 25 20 20 3d 20  26 35 30 33 0d 01 ea 05  |ACK%  = &503....|
000005b0  3a 0d 01 f4 19 74 79 70  5f 74 65 78 74 25 20 20  |:....typ_text%  |
000005c0  20 20 20 3d 20 26 30 46  46 46 0d 01 fe 19 74 79  |   = &0FFF....ty|
000005d0  70 5f 62 61 73 69 63 25  20 20 20 20 3d 20 26 30  |p_basic%    = &0|
000005e0  46 46 42 0d 02 08 19 74  79 70 5f 61 70 70 6c 69  |FFB....typ_appli|
000005f0  63 74 6e 25 20 3d 20 26  32 30 30 30 0d 02 12 05  |ctn% = &2000....|
00000600  3a 0d 02 1c 0f f2 69 6e  69 74 69 61 6c 69 73 65  |:.....initialise|
00000610  0d 02 26 05 3a 0d 02 30  35 c8 99 20 22 57 69 6d  |..&.:..05.. "Wim|
00000620  70 5f 4f 70 65 6e 54 65  6d 70 6c 61 74 65 22 2c  |p_OpenTemplate",|
00000630  2c 22 3c 42 61 73 50 72  69 6e 74 24 44 69 72 3e  |,"<BasPrint$Dir>|
00000640  2e 54 65 6d 70 6c 61 74  65 22 0d 02 3a 2a 20 69  |.Template"..:* i|
00000650  6e 66 6f 5f 77 69 6e 64  6f 77 25 20 3d 20 a4 6c  |nfo_window% = .l|
00000660  6f 61 64 5f 74 65 6d 70  6c 61 74 65 28 22 49 6e  |oad_template("In|
00000670  66 6f 22 29 0d 02 44 2a  20 69 6e 66 6f 5f 77 69  |fo")..D* info_wi|
00000680  6e 64 6f 77 25 20 3d 20  a4 6c 6f 61 64 5f 74 65  |ndow% = .load_te|
00000690  6d 70 6c 61 74 65 28 22  49 6e 66 6f 22 29 0d 02  |mplate("Info")..|
000006a0  4e 2b 70 72 69 6e 74 5f  77 69 6e 64 6f 77 25 20  |N+print_window% |
000006b0  3d 20 a4 6c 6f 61 64 5f  74 65 6d 70 6c 61 74 65  |= .load_template|
000006c0  28 22 50 72 69 6e 74 22  29 0d 02 58 2b 77 69 64  |("Print")..X+wid|
000006d0  74 68 5f 77 69 6e 64 6f  77 25 20 3d 20 a4 6c 6f  |th_window% = .lo|
000006e0  61 64 5f 74 65 6d 70 6c  61 74 65 28 22 57 69 64  |ad_template("Wid|
000006f0  74 68 22 29 0d 02 62 2b  73 70 6f 6f 6c 5f 77 69  |th")..b+spool_wi|
00000700  6e 64 6f 77 25 20 3d 20  a4 6c 6f 61 64 5f 74 65  |ndow% = .load_te|
00000710  6d 70 6c 61 74 65 28 22  53 70 6f 6f 6c 22 29 0d  |mplate("Spool").|
00000720  02 6c 1b c8 99 20 22 57  69 6d 70 5f 43 6c 6f 73  |.l... "Wimp_Clos|
00000730  65 54 65 6d 70 6c 61 74  65 22 0d 02 76 05 3a 0d  |eTemplate"..v.:.|
00000740  02 80 49 69 63 6f 6e 5f  77 69 6e 64 6f 77 25 20  |..Iicon_window% |
00000750  3d 20 a4 63 72 65 61 74  65 5f 69 63 6f 6e 28 2d  |= .create_icon(-|
00000760  31 2c 30 2c 30 2c 36 38  2c 36 38 2c 26 30 30 30  |1,0,0,68,68,&000|
00000770  30 30 30 30 30 2c 32 2c  36 2c 22 21 62 61 73 70  |00000,2,6,"!basp|
00000780  72 69 6e 74 22 2c 31 29  0d 02 8a 0e 66 69 6e 69  |rint",1)....fini|
00000790  73 68 20 3d 20 a3 0d 02  94 15 70 6f 6c 6c 25 20  |sh = .....poll% |
000007a0  3d 20 26 30 30 30 30 30  30 30 31 0d 02 9e 05 f5  |= &00000001.....|
000007b0  0d 02 a8 2a 20 20 20 c8  99 20 22 57 69 6d 70 5f  |...*   .. "Wimp_|
000007c0  50 6f 6c 6c 22 2c 70 6f  6c 6c 25 2c 62 6c 6b 25  |Poll",poll%,blk%|
000007d0  20 b8 20 72 65 61 73 6f  6e 25 0d 02 b2 13 20 20  | . reason%....  |
000007e0  20 c8 8e 20 72 65 61 73  6f 6e 25 20 ca 0d 02 bc  | .. reason% ....|
000007f0  0a 20 20 20 c9 20 30 0d  02 c6 1e 20 20 20 20 20  |.   . 0....     |
00000800  20 f2 6e 75 6c 6c 5f 72  65 61 73 6f 6e 28 62 6c  | .null_reason(bl|
00000810  6b 25 21 30 29 0d 02 d0  0a 20 20 20 c9 20 32 0d  |k%!0)....   . 2.|
00000820  02 da 54 20 20 20 20 20  20 f2 6f 70 65 6e 5f 77  |..T      .open_w|
00000830  69 6e 64 6f 77 28 62 6c  6b 25 21 30 2c 62 6c 6b  |indow(blk%!0,blk|
00000840  25 21 34 2c 62 6c 6b 25  21 38 2c 62 6c 6b 25 21  |%!4,blk%!8,blk%!|
00000850  31 32 2c 62 6c 6b 25 21  31 36 2c 62 6c 6b 25 21  |12,blk%!16,blk%!|
00000860  32 30 2c 62 6c 6b 25 21  32 34 2c 62 6c 6b 25 21  |20,blk%!24,blk%!|
00000870  32 38 29 0d 02 e4 0a 20  20 20 c9 20 33 0d 02 ee  |28)....   . 3...|
00000880  1f 20 20 20 20 20 20 f2  63 6c 6f 73 65 5f 77 69  |.      .close_wi|
00000890  6e 64 6f 77 28 62 6c 6b  25 21 30 29 0d 02 f8 0a  |ndow(blk%!0)....|
000008a0  20 20 20 c9 20 36 0d 03  02 3c 20 20 20 20 20 20  |   . 6...<      |
000008b0  f2 6d 6f 75 73 65 5f 63  6c 69 63 6b 28 62 6c 6b  |.mouse_click(blk|
000008c0  25 21 30 2c 62 6c 6b 25  21 34 2c 62 6c 6b 25 21  |%!0,blk%!4,blk%!|
000008d0  38 2c 62 6c 6b 25 21 31  32 2c 62 6c 6b 25 21 31  |8,blk%!12,blk%!1|
000008e0  36 29 0d 03 0c 0a 20 20  20 c9 20 37 0d 03 16 36  |6)....   . 7...6|
000008f0  20 20 20 20 20 20 f2 75  73 65 72 5f 64 72 61 67  |      .user_drag|
00000900  5f 62 6f 78 28 62 6c 6b  25 21 30 2c 62 6c 6b 25  |_box(blk%!0,blk%|
00000910  21 34 2c 62 6c 6b 25 21  38 2c 62 6c 6b 25 21 31  |!4,blk%!8,blk%!1|
00000920  32 29 0d 03 20 0a 20 20  20 c9 20 38 0d 03 2a 2d  |2).. .   . 8..*-|
00000930  20 20 20 20 20 20 f2 6b  65 79 5f 70 72 65 73 73  |      .key_press|
00000940  65 64 28 62 6c 6b 25 21  30 2c 62 6c 6b 25 21 34  |ed(blk%!0,blk%!4|
00000950  2c 62 6c 6b 25 21 32 34  29 0d 03 34 0a 20 20 20  |,blk%!24)..4.   |
00000960  c9 20 39 0d 03 3e 1f 20  20 20 20 20 20 f2 6d 65  |. 9..>.      .me|
00000970  6e 75 5f 73 65 6c 65 63  74 69 6f 6e 28 62 6c 6b  |nu_selection(blk|
00000980  25 29 0d 03 48 0e 20 20  20 c9 20 31 37 2c 31 38  |%)..H.   . 17,18|
00000990  0d 03 52 17 20 20 20 20  20 20 f2 75 73 65 72 5f  |..R.      .user_|
000009a0  6d 65 73 73 61 67 65 0d  03 5c 08 20 20 20 cb 0d  |message..\.   ..|
000009b0  03 66 0c fd 20 66 69 6e  69 73 68 0d 03 70 09 f2  |.f.. finish..p..|
000009c0  71 75 69 74 0d 03 7a 05  3a 0d 03 84 1b dd 20 a4  |quit..z.:..... .|
000009d0  6c 6f 61 64 5f 74 65 6d  70 6c 61 74 65 28 6e 61  |load_template(na|
000009e0  6d 65 24 29 0d 03 8e 0d  ea 20 77 69 6e 64 6f 77  |me$)..... window|
000009f0  25 0d 03 98 47 c8 99 20  22 57 69 6d 70 5f 4c 6f  |%...G.. "Wimp_Lo|
00000a00  61 64 54 65 6d 70 6c 61  74 65 22 2c 2c 62 6c 6b  |adTemplate",,blk|
00000a10  25 2c 74 6d 70 70 74 72  25 2c 74 6d 70 6d 61 78  |%,tmpptr%,tmpmax|
00000a20  25 2c 2d 31 2c 6e 61 6d  65 24 2c 30 20 b8 20 2c  |%,-1,name$,0 . ,|
00000a30  2c 74 6d 70 70 74 72 25  0d 03 a2 2a c8 99 20 22  |,tmpptr%...*.. "|
00000a40  57 69 6d 70 5f 43 72 65  61 74 65 57 69 6e 64 6f  |Wimp_CreateWindo|
00000a50  77 22 2c 2c 62 6c 6b 25  20 b8 20 77 69 6e 64 6f  |w",,blk% . windo|
00000a60  77 25 0d 03 ac 0d 3d 20  77 69 6e 64 6f 77 25 0d  |w%....= window%.|
00000a70  03 b6 05 3a 0d 03 c0 1b  dd 20 f2 6e 75 6c 6c 5f  |...:..... .null_|
00000a80  72 65 61 73 6f 6e 28 77  69 6e 64 6f 77 25 29 0d  |reason(window%).|
00000a90  03 ca 13 e7 20 70 72 69  6e 74 5f 66 69 6c 65 25  |.... print_file%|
00000aa0  20 8c 0d 03 d4 16 20 20  20 70 72 69 6e 74 5f 69  | .....   print_i|
00000ab0  63 6f 6e 25 20 3d 20 30  0d 03 de 17 20 20 20 f2  |con% = 0....   .|
00000ac0  66 69 6e 64 5f 70 72 69  6e 74 5f 74 61 73 6b 0d  |find_print_task.|
00000ad0  03 e8 16 20 20 20 70 72  69 6e 74 5f 66 69 6c 65  |...   print_file|
00000ae0  25 20 3d 20 a3 0d 03 f2  20 20 20 20 70 6f 6c 6c  |% = ....    poll|
00000af0  25 20 3d 20 70 6f 6c 6c  25 20 84 20 26 30 30 30  |% = poll% . &000|
00000b00  30 30 30 30 31 0d 03 fc  05 cd 0d 04 06 05 e1 0d  |00001...........|
00000b10  04 10 05 3a 0d 04 1a 53  dd 20 f2 6f 70 65 6e 5f  |...:...S. .open_|
00000b20  77 69 6e 64 6f 77 28 77  69 6e 64 6f 77 25 2c 76  |window(window%,v|
00000b30  6d 69 6e 5f 78 25 2c 76  6d 69 6e 5f 79 25 2c 76  |min_x%,vmin_y%,v|
00000b40  6d 61 78 5f 78 25 2c 76  6d 61 78 5f 79 25 2c 73  |max_x%,vmax_y%,s|
00000b50  6f 66 66 5f 78 25 2c 73  6f 66 66 5f 79 25 2c 62  |off_x%,soff_y%,b|
00000b60  65 68 69 6e 64 25 29 0d  04 24 15 62 6c 6b 25 21  |ehind%)..$.blk%!|
00000b70  30 20 20 3d 20 77 69 6e  64 6f 77 25 0d 04 2e 15  |0  = window%....|
00000b80  62 6c 6b 25 21 34 20 20  3d 20 76 6d 69 6e 5f 78  |blk%!4  = vmin_x|
00000b90  25 0d 04 38 15 62 6c 6b  25 21 38 20 20 3d 20 76  |%..8.blk%!8  = v|
00000ba0  6d 69 6e 5f 79 25 0d 04  42 15 62 6c 6b 25 21 31  |min_y%..B.blk%!1|
00000bb0  32 20 3d 20 76 6d 61 78  5f 78 25 0d 04 4c 15 62  |2 = vmax_x%..L.b|
00000bc0  6c 6b 25 21 31 36 20 3d  20 76 6d 61 78 5f 79 25  |lk%!16 = vmax_y%|
00000bd0  0d 04 56 15 62 6c 6b 25  21 32 30 20 3d 20 73 6f  |..V.blk%!20 = so|
00000be0  66 66 5f 78 25 0d 04 60  15 62 6c 6b 25 21 32 34  |ff_x%..`.blk%!24|
00000bf0  20 3d 20 73 6f 66 66 5f  79 25 0d 04 6a 15 62 6c  | = soff_y%..j.bl|
00000c00  6b 25 21 32 38 20 3d 20  62 65 68 69 6e 64 25 0d  |k%!28 = behind%.|
00000c10  04 74 1e c8 99 20 22 57  69 6d 70 5f 4f 70 65 6e  |.t... "Wimp_Open|
00000c20  57 69 6e 64 6f 77 22 2c  2c 62 6c 6b 25 0d 04 7e  |Window",,blk%..~|
00000c30  05 e1 0d 04 88 05 3a 0d  04 92 20 dd 20 f2 67 65  |......:... . .ge|
00000c40  74 5f 77 69 6e 64 6f 77  5f 73 74 61 74 65 28 77  |t_window_state(w|
00000c50  69 6e 64 6f 77 25 29 0d  04 9c 15 62 6c 6b 25 21  |indow%)....blk%!|
00000c60  30 20 20 3d 20 77 69 6e  64 6f 77 25 0d 04 a6 22  |0  = window%..."|
00000c70  c8 99 20 22 57 69 6d 70  5f 47 65 74 57 69 6e 64  |.. "Wimp_GetWind|
00000c80  6f 77 53 74 61 74 65 22  2c 2c 62 6c 6b 25 0d 04  |owState",,blk%..|
00000c90  b0 14 76 6d 69 6e 5f 78  25 20 3d 20 62 6c 6b 25  |..vmin_x% = blk%|
00000ca0  21 34 0d 04 ba 14 76 6d  69 6e 5f 79 25 20 3d 20  |!4....vmin_y% = |
00000cb0  62 6c 6b 25 21 38 0d 04  c4 15 76 6d 61 78 5f 78  |blk%!8....vmax_x|
00000cc0  25 20 3d 20 62 6c 6b 25  21 31 32 0d 04 ce 15 76  |% = blk%!12....v|
00000cd0  6d 61 78 5f 79 25 20 3d  20 62 6c 6b 25 21 31 36  |max_y% = blk%!16|
00000ce0  0d 04 d8 15 73 6f 66 66  5f 78 25 20 3d 20 62 6c  |....soff_x% = bl|
00000cf0  6b 25 21 32 30 0d 04 e2  15 73 6f 66 66 5f 79 25  |k%!20....soff_y%|
00000d00  20 3d 20 62 6c 6b 25 21  32 34 0d 04 ec 05 e1 0d  | = blk%!24......|
00000d10  04 f6 05 3a 0d 05 00 1c  dd 20 f2 63 6c 6f 73 65  |...:..... .close|
00000d20  5f 77 69 6e 64 6f 77 28  77 69 6e 64 6f 77 25 29  |_window(window%)|
00000d30  0d 05 0a 14 62 6c 6b 25  21 30 20 3d 20 77 69 6e  |....blk%!0 = win|
00000d40  64 6f 77 25 0d 05 14 1f  c8 99 20 22 57 69 6d 70  |dow%...... "Wimp|
00000d50  5f 43 6c 6f 73 65 57 69  6e 64 6f 77 22 2c 2c 62  |_CloseWindow",,b|
00000d60  6c 6b 25 0d 05 1e 05 e1  0d 05 28 05 3a 0d 05 32  |lk%.......(.:..2|
00000d70  3b dd 20 f2 6d 6f 75 73  65 5f 63 6c 69 63 6b 28  |;. .mouse_click(|
00000d80  6d 6f 75 73 65 5f 78 25  2c 6d 6f 75 73 65 5f 79  |mouse_x%,mouse_y|
00000d90  25 2c 62 75 74 74 6f 6e  25 2c 77 69 6e 64 6f 77  |%,button%,window|
00000da0  25 2c 69 63 6f 6e 25 29  0d 05 3c 10 c8 8e 20 62  |%,icon%)..<... b|
00000db0  75 74 74 6f 6e 25 20 ca  0d 05 46 07 c9 20 32 0d  |utton% ...F.. 2.|
00000dc0  05 50 2e 20 20 20 e7 20  77 69 6e 64 6f 77 25 20  |.P.   . window% |
00000dd0  3d 20 2d 32 20 80 20 69  63 6f 6e 25 20 3d 20 69  |= -2 . icon% = i|
00000de0  63 6f 6e 5f 77 69 6e 64  6f 77 25 20 8c 0d 05 5a  |con_window% ...Z|
00000df0  7f 20 20 20 20 20 20 f2  64 69 73 70 6c 61 79 5f  |.      .display_|
00000e00  6d 65 6e 75 28 6d 6f 75  73 65 5f 78 25 2c 6d 6f  |menu(mouse_x%,mo|
00000e10  75 73 65 5f 79 25 2c 77  69 6e 64 6f 77 25 2c 22  |use_y%,window%,"|
00000e20  42 41 53 49 43 20 50 72  69 6e 74 22 2c 22 49 6e  |BASIC Print","In|
00000e30  66 6f 2c 48 65 6c 70 2c  50 72 69 6e 74 20 54 61  |fo,Help,Print Ta|
00000e40  73 6b 2c 41 75 74 6f 20  50 72 69 6e 74 2c 50 61  |sk,Auto Print,Pa|
00000e50  67 65 20 57 69 64 74 68  2c 53 61 76 65 20 43 68  |ge Width,Save Ch|
00000e60  6f 69 63 65 73 2c 51 75  69 74 22 29 0d 05 64 08  |oices,Quit")..d.|
00000e70  20 20 20 cd 0d 05 6e 07  c9 20 34 0d 05 78 22 20  |   ...n.. 4..x" |
00000e80  20 20 e7 20 77 69 6e 64  6f 77 25 20 3d 20 70 72  |  . window% = pr|
00000e90  69 6e 74 5f 77 69 6e 64  6f 77 25 20 8c 0d 05 82  |int_window% ....|
00000ea0  25 20 20 20 20 20 20 f2  6b 65 79 5f 70 72 65 73  |%      .key_pres|
00000eb0  73 65 64 28 77 69 6e 64  6f 77 25 2c 30 2c 26 30  |sed(window%,0,&0|
00000ec0  44 29 0d 05 8c 08 20 20  20 cd 0d 05 96 22 20 20  |D)....   ...."  |
00000ed0  20 e7 20 77 69 6e 64 6f  77 25 20 3d 20 77 69 64  | . window% = wid|
00000ee0  74 68 5f 77 69 6e 64 6f  77 25 20 8c 0d 05 a0 25  |th_window% ....%|
00000ef0  20 20 20 20 20 20 f2 6b  65 79 5f 70 72 65 73 73  |      .key_press|
00000f00  65 64 28 77 69 6e 64 6f  77 25 2c 30 2c 26 30 44  |ed(window%,0,&0D|
00000f10  29 0d 05 aa 08 20 20 20  cd 0d 05 b4 2e 20 20 20  |)....   .....   |
00000f20  e7 20 77 69 6e 64 6f 77  25 20 3d 20 73 70 6f 6f  |. window% = spoo|
00000f30  6c 5f 77 69 6e 64 6f 77  25 20 80 20 69 63 6f 6e  |l_window% . icon|
00000f40  25 20 3d 20 31 20 8c 0d  05 be 2a 20 20 20 20 20  |% = 1 ....*     |
00000f50  20 f2 67 65 74 5f 77 69  6e 64 6f 77 5f 73 74 61  | .get_window_sta|
00000f60  74 65 28 73 70 6f 6f 6c  5f 77 69 6e 64 6f 77 25  |te(spool_window%|
00000f70  29 0d 05 c8 2a 20 20 20  20 20 20 f2 67 65 74 5f  |)...*      .get_|
00000f80  69 63 6f 6e 5f 73 74 61  74 65 28 73 70 6f 6f 6c  |icon_state(spool|
00000f90  5f 77 69 6e 64 6f 77 25  2c 31 29 0d 05 d2 15 20  |_window%,1).... |
00000fa0  20 20 20 20 20 62 6c 6b  25 21 30 20 20 3d 20 30  |     blk%!0  = 0|
00000fb0  0d 05 dc 15 20 20 20 20  20 20 62 6c 6b 25 21 34  |....      blk%!4|
00000fc0  20 20 3d 20 35 0d 05 e6  2c 20 20 20 20 20 20 62  |  = 5...,      b|
00000fd0  6c 6b 25 21 38 20 20 3d  20 6d 69 6e 5f 78 25 2b  |lk%!8  = min_x%+|
00000fe0  28 76 6d 69 6e 5f 78 25  2d 73 6f 66 66 5f 78 25  |(vmin_x%-soff_x%|
00000ff0  29 0d 05 f0 2c 20 20 20  20 20 20 62 6c 6b 25 21  |)...,      blk%!|
00001000  31 32 20 3d 20 6d 69 6e  5f 79 25 2b 28 76 6d 61  |12 = min_y%+(vma|
00001010  78 5f 79 25 2d 73 6f 66  66 5f 79 25 29 0d 05 fa  |x_y%-soff_y%)...|
00001020  2c 20 20 20 20 20 20 62  6c 6b 25 21 31 36 20 3d  |,      blk%!16 =|
00001030  20 6d 61 78 5f 78 25 2b  28 76 6d 69 6e 5f 78 25  | max_x%+(vmin_x%|
00001040  2d 73 6f 66 66 5f 78 25  29 0d 06 04 2c 20 20 20  |-soff_x%)...,   |
00001050  20 20 20 62 6c 6b 25 21  32 30 20 3d 20 6d 61 78  |   blk%!20 = max|
00001060  5f 79 25 2b 28 76 6d 61  78 5f 79 25 2d 73 6f 66  |_y%+(vmax_y%-sof|
00001070  66 5f 79 25 29 0d 06 0e  15 20 20 20 20 20 20 62  |f_y%)....      b|
00001080  6c 6b 25 21 32 34 20 3d  20 30 0d 06 18 15 20 20  |lk%!24 = 0....  |
00001090  20 20 20 20 62 6c 6b 25  21 32 38 20 3d 20 30 0d  |    blk%!28 = 0.|
000010a0  06 22 1b 20 20 20 20 20  20 62 6c 6b 25 21 33 32  |.".      blk%!32|
000010b0  20 3d 20 77 73 69 7a 5f  78 25 0d 06 2c 1b 20 20  | = wsiz_x%..,.  |
000010c0  20 20 20 20 62 6c 6b 25  21 33 36 20 3d 20 77 73  |    blk%!36 = ws|
000010d0  69 7a 5f 79 25 0d 06 36  21 20 20 20 20 20 20 c8  |iz_y%..6!      .|
000010e0  99 20 22 57 69 6d 70 5f  44 72 61 67 42 6f 78 22  |. "Wimp_DragBox"|
000010f0  2c 2c 62 6c 6b 25 0d 06  40 0b 20 20 20 20 20 20  |,,blk%..@.      |
00001100  e1 0d 06 4a 08 20 20 20  cd 0d 06 54 05 cb 0d 06  |...J.   ...T....|
00001110  5e 05 e1 0d 06 68 05 3a  0d 06 72 3c dd 20 f2 64  |^....h.:..r<. .d|
00001120  69 73 70 6c 61 79 5f 6d  65 6e 75 28 6d 6f 75 73  |isplay_menu(mous|
00001130  65 5f 78 25 2c 6d 6f 75  73 65 5f 79 25 2c 77 69  |e_x%,mouse_y%,wi|
00001140  6e 64 6f 77 25 2c 74 69  74 6c 65 24 2c 69 74 65  |ndow%,title$,ite|
00001150  6d 73 24 29 0d 06 7c 1a  6d 65 6e 75 5f 77 69 6e  |ms$)..|.menu_win|
00001160  64 6f 77 25 20 3d 20 77  69 6e 64 6f 77 25 0d 06  |dow% = window%..|
00001170  86 17 6d 65 6e 75 5f 70  74 72 25 20 3d 20 6d 65  |..menu_ptr% = me|
00001180  6e 62 6c 6b 25 0d 06 90  19 24 28 6d 65 6e 75 5f  |nblk%....$(menu_|
00001190  70 74 72 25 29 20 3d 20  74 69 74 6c 65 24 0d 06  |ptr%) = title$..|
000011a0  9a 19 6d 65 6e 75 5f 70  74 72 25 3f 31 32 20 3d  |..menu_ptr%?12 =|
000011b0  20 60 62 6c 61 63 6b 0d  06 a4 19 6d 65 6e 75 5f  | `black....menu_|
000011c0  70 74 72 25 3f 31 33 20  3d 20 60 67 72 65 79 32  |ptr%?13 = `grey2|
000011d0  0d 06 ae 19 6d 65 6e 75  5f 70 74 72 25 3f 31 34  |....menu_ptr%?14|
000011e0  20 3d 20 60 62 6c 61 63  6b 0d 06 b8 19 6d 65 6e  | = `black....men|
000011f0  75 5f 70 74 72 25 3f 31  35 20 3d 20 60 67 72 65  |u_ptr%?15 = `gre|
00001200  79 33 0d 06 c2 16 6d 65  6e 75 5f 70 74 72 25 21  |y3....menu_ptr%!|
00001210  31 36 20 3d 20 32 30 30  0d 06 cc 15 6d 65 6e 75  |16 = 200....menu|
00001220  5f 70 74 72 25 21 32 30  20 3d 20 34 30 0d 06 d6  |_ptr%!20 = 40...|
00001230  14 6d 65 6e 75 5f 70 74  72 25 21 32 34 20 3d 20  |.menu_ptr%!24 = |
00001240  30 0d 06 e0 12 6d 65 6e  75 5f 70 74 72 25 20 2b  |0....menu_ptr% +|
00001250  3d 20 34 0d 06 ea 0a 69  25 20 3d 20 30 0d 06 f4  |= 4....i% = 0...|
00001260  05 f5 0d 06 fe 10 20 20  20 6a 25 20 3d 20 69 25  |......   j% = i%|
00001270  2b 31 0d 07 08 1f 20 20  20 69 25 20 3d 20 a7 69  |+1....   i% = .i|
00001280  74 65 6d 73 24 2b 22 2c  22 2c 22 2c 22 2c 6a 25  |tems$+",",",",j%|
00001290  29 0d 07 12 20 20 20 20  69 74 65 6d 24 20 3d 20  |)...    item$ = |
000012a0  c1 69 74 65 6d 73 24 2c  6a 25 2c 69 25 2d 6a 25  |.items$,j%,i%-j%|
000012b0  29 0d 07 1c 16 20 20 20  e7 20 69 74 65 6d 24 20  |)....   . item$ |
000012c0  3c 3e 20 22 22 20 8c 0d  07 26 19 20 20 20 20 20  |<> "" ...&.     |
000012d0  20 6d 65 6e 75 5f 70 74  72 25 20 2b 3d 20 32 34  | menu_ptr% += 24|
000012e0  0d 07 30 1b 20 20 20 20  20 20 6d 65 6e 75 5f 70  |..0.      menu_p|
000012f0  74 72 25 21 30 20 3d 20  26 30 30 0d 07 3a 1a 20  |tr%!0 = &00..:. |
00001300  20 20 20 20 20 6d 65 6e  75 5f 70 74 72 25 21 34  |     menu_ptr%!4|
00001310  20 3d 20 2d 31 0d 07 44  14 20 20 20 20 20 20 c8  | = -1..D.      .|
00001320  8e 20 69 74 65 6d 24 20  ca 0d 07 4e 12 20 20 20  |. item$ ...N.   |
00001330  20 20 20 c9 20 22 49 6e  66 6f 22 0d 07 58 27 20  |   . "Info"..X' |
00001340  20 20 20 20 20 20 20 20  6d 65 6e 75 5f 70 74 72  |        menu_ptr|
00001350  25 21 34 20 3d 20 69 6e  66 6f 5f 77 69 6e 64 6f  |%!4 = info_windo|
00001360  77 25 0d 07 62 18 20 20  20 20 20 20 c9 20 22 50  |w%..b.      . "P|
00001370  72 69 6e 74 20 54 61 73  6b 22 0d 07 6c 28 20 20  |rint Task"..l(  |
00001380  20 20 20 20 20 20 20 6d  65 6e 75 5f 70 74 72 25  |       menu_ptr%|
00001390  21 34 20 3d 20 70 72 69  6e 74 5f 77 69 6e 64 6f  |!4 = print_windo|
000013a0  77 25 0d 07 76 38 20 20  20 20 20 20 20 20 20 f2  |w%..v8         .|
000013b0  70 75 74 5f 69 63 6f 6e  5f 74 65 78 74 28 70 72  |put_icon_text(pr|
000013c0  69 6e 74 5f 77 69 6e 64  6f 77 25 2c 30 2c 70 72  |int_window%,0,pr|
000013d0  69 6e 74 5f 74 61 73 6b  24 29 0d 07 80 18 20 20  |int_task$)....  |
000013e0  20 20 20 20 c9 20 22 41  75 74 6f 20 50 72 69 6e  |    . "Auto Prin|
000013f0  74 22 0d 07 8a 20 20 20  20 20 20 20 20 20 20 70  |t"...          p|
00001400  72 74 70 74 72 25 20 3d  20 6d 65 6e 75 5f 70 74  |rtptr% = menu_pt|
00001410  72 25 0d 07 94 2c 20 20  20 20 20 20 20 20 20 e7  |r%...,         .|
00001420  20 61 75 74 6f 5f 70 72  69 6e 74 25 20 8c 20 70  | auto_print% . p|
00001430  72 74 70 74 72 25 21 30  20 3d 20 26 30 31 0d 07  |rtptr%!0 = &01..|
00001440  9e 18 20 20 20 20 20 20  c9 20 22 50 61 67 65 20  |..      . "Page |
00001450  57 69 64 74 68 22 0d 07  a8 28 20 20 20 20 20 20  |Width"...(      |
00001460  20 20 20 6d 65 6e 75 5f  70 74 72 25 21 34 20 3d  |   menu_ptr%!4 =|
00001470  20 77 69 64 74 68 5f 77  69 6e 64 6f 77 25 0d 07  | width_window%..|
00001480  b2 3b 20 20 20 20 20 20  20 20 20 f2 70 75 74 5f  |.;         .put_|
00001490  69 63 6f 6e 5f 74 65 78  74 28 77 69 64 74 68 5f  |icon_text(width_|
000014a0  77 69 6e 64 6f 77 25 2c  30 2c c3 28 70 61 67 65  |window%,0,.(page|
000014b0  5f 77 69 64 74 68 25 29  29 0d 07 bc 0b 20 20 20  |_width%))....   |
000014c0  20 20 20 cb 0d 07 c6 21  20 20 20 20 20 20 6d 65  |   ....!      me|
000014d0  6e 75 5f 70 74 72 25 21  38 20 3d 20 26 30 37 30  |nu_ptr%!8 = &070|
000014e0  30 30 30 32 31 0d 07 d0  21 20 20 20 20 20 20 24  |00021...!      $|
000014f0  28 6d 65 6e 75 5f 70 74  72 25 2b 31 32 29 20 3d  |(menu_ptr%+12) =|
00001500  20 69 74 65 6d 24 0d 07  da 08 20 20 20 cd 0d 07  | item$....   ...|
00001510  e4 10 fd 20 69 74 65 6d  24 20 3d 20 22 22 0d 07  |... item$ = ""..|
00001520  ee 25 6d 65 6e 75 5f 70  74 72 25 21 30 20 3d 20  |.%menu_ptr%!0 = |
00001530  28 6d 65 6e 75 5f 70 74  72 25 21 30 29 20 84 20  |(menu_ptr%!0) . |
00001540  26 38 30 0d 07 f8 3b c8  99 20 22 57 69 6d 70 5f  |&80...;.. "Wimp_|
00001550  43 72 65 61 74 65 4d 65  6e 75 22 2c 2c 6d 65 6e  |CreateMenu",,men|
00001560  62 6c 6b 25 2c 6d 6f 75  73 65 5f 78 25 2d 31 30  |blk%,mouse_x%-10|
00001570  30 2c 6d 6f 75 73 65 5f  79 25 2b 34 30 30 0d 08  |0,mouse_y%+400..|
00001580  02 05 e1 0d 08 0c 05 3a  0d 08 16 31 dd 20 f2 75  |.......:...1. .u|
00001590  73 65 72 5f 64 72 61 67  5f 62 6f 78 28 6d 69 6e  |ser_drag_box(min|
000015a0  5f 78 25 2c 6d 69 6e 5f  79 25 2c 6d 61 78 5f 78  |_x%,min_y%,max_x|
000015b0  25 2c 6d 61 78 5f 79 25  29 0d 08 20 22 c8 99 20  |%,max_y%).. ".. |
000015c0  22 57 69 6d 70 5f 47 65  74 50 6f 69 6e 74 65 72  |"Wimp_GetPointer|
000015d0  49 6e 66 6f 22 2c 2c 62  6c 6b 25 0d 08 2a 15 6d  |Info",,blk%..*.m|
000015e0  6f 75 73 65 5f 78 25 20  3d 20 62 6c 6b 25 21 30  |ouse_x% = blk%!0|
000015f0  0d 08 34 15 6d 6f 75 73  65 5f 79 25 20 3d 20 62  |..4.mouse_y% = b|
00001600  6c 6b 25 21 34 0d 08 3e  16 77 69 6e 64 6f 77 25  |lk%!4..>.window%|
00001610  20 20 3d 20 62 6c 6b 25  21 31 32 0d 08 48 16 69  |  = blk%!12..H.i|
00001620  63 6f 6e 25 20 20 20 20  3d 20 62 6c 6b 25 21 31  |con%    = blk%!1|
00001630  36 0d 08 52 31 73 70 6f  6f 6c 5f 6e 61 6d 65 24  |6..R1spool_name$|
00001640  20 3d 20 a4 67 65 74 5f  69 63 6f 6e 5f 74 65 78  | = .get_icon_tex|
00001650  74 28 73 70 6f 6f 6c 5f  77 69 6e 64 6f 77 25 2c  |t(spool_window%,|
00001660  30 29 0d 08 5c 50 f2 73  65 6e 64 5f 64 61 74 61  |0)..\P.send_data|
00001670  5f 73 61 76 65 28 30 2c  77 69 6e 64 6f 77 25 2c  |_save(0,window%,|
00001680  69 63 6f 6e 25 2c 6d 6f  75 73 65 5f 78 25 2c 6d  |icon%,mouse_x%,m|
00001690  6f 75 73 65 5f 79 25 2c  35 31 32 2c 74 79 70 5f  |ouse_y%,512,typ_|
000016a0  74 65 78 74 25 2c 73 70  6f 6f 6c 5f 6e 61 6d 65  |text%,spool_name|
000016b0  24 29 0d 08 66 05 e1 0d  08 70 05 3a 0d 08 7a 27  |$)..f....p.:..z'|
000016c0  dd 20 f2 6b 65 79 5f 70  72 65 73 73 65 64 28 77  |. .key_pressed(w|
000016d0  69 6e 64 6f 77 25 2c 69  63 6f 6e 25 2c 63 68 61  |indow%,icon%,cha|
000016e0  72 25 29 0d 08 84 10 c8  8e 20 77 69 6e 64 6f 77  |r%)...... window|
000016f0  25 20 ca 0d 08 8e 13 c9  20 70 72 69 6e 74 5f 77  |% ...... print_w|
00001700  69 6e 64 6f 77 25 0d 08  98 16 20 20 20 e7 20 63  |indow%....   . c|
00001710  68 61 72 25 20 3d 20 26  30 44 20 8c 0d 08 a2 37  |har% = &0D ....7|
00001720  20 20 20 20 20 20 70 72  69 6e 74 5f 74 61 73 6b  |      print_task|
00001730  24 20 3d 20 a4 67 65 74  5f 69 63 6f 6e 5f 74 65  |$ = .get_icon_te|
00001740  78 74 28 70 72 69 6e 74  5f 77 69 6e 64 6f 77 25  |xt(print_window%|
00001750  2c 30 29 0d 08 ac 0b 20  20 20 20 20 20 e1 0d 08  |,0)....      ...|
00001760  b6 08 20 20 20 cd 0d 08  c0 13 c9 20 77 69 64 74  |..   ...... widt|
00001770  68 5f 77 69 6e 64 6f 77  25 0d 08 ca 16 20 20 20  |h_window%....   |
00001780  e7 20 63 68 61 72 25 20  3d 20 26 30 44 20 8c 0d  |. char% = &0D ..|
00001790  08 d4 35 20 20 20 20 20  20 77 69 64 74 68 25 20  |..5      width% |
000017a0  3d 20 bb 28 a4 67 65 74  5f 69 63 6f 6e 5f 74 65  |= .(.get_icon_te|
000017b0  78 74 28 77 69 64 74 68  5f 77 69 6e 64 6f 77 25  |xt(width_window%|
000017c0  2c 30 29 29 0d 08 de 28  20 20 20 20 20 20 e7 20  |,0))...(      . |
000017d0  77 69 64 74 68 25 20 3c  20 33 32 20 84 20 77 69  |width% < 32 . wi|
000017e0  64 74 68 25 20 3e 20 32  35 36 20 8c 0d 08 e8 49  |dth% > 256 ....I|
000017f0  20 20 20 20 20 20 20 20  20 72 65 70 6c 79 25 20  |         reply% |
00001800  3d 20 a4 72 65 70 6f 72  74 5f 65 72 72 6f 72 28  |= .report_error(|
00001810  30 2c 22 49 6e 76 61 6c  69 64 20 70 61 67 65 20  |0,"Invalid page |
00001820  77 69 64 74 68 20 73 70  65 63 69 66 69 65 64 22  |width specified"|
00001830  2c 26 30 31 29 0d 08 f2  0b 20 20 20 20 20 20 cc  |,&01)....      .|
00001840  0d 08 fc 21 20 20 20 20  20 20 20 20 20 70 61 67  |...!         pag|
00001850  65 5f 77 69 64 74 68 25  20 3d 20 77 69 64 74 68  |e_width% = width|
00001860  25 0d 09 06 0b 20 20 20  20 20 20 cd 0d 09 10 0b  |%....      .....|
00001870  20 20 20 20 20 20 e1 0d  09 1a 08 20 20 20 cd 0d  |      .....   ..|
00001880  09 24 13 c9 20 73 70 6f  6f 6c 5f 77 69 6e 64 6f  |.$.. spool_windo|
00001890  77 25 0d 09 2e 16 20 20  20 e7 20 63 68 61 72 25  |w%....   . char%|
000018a0  20 3d 20 26 30 44 20 8c  0d 09 38 37 20 20 20 20  | = &0D ...87    |
000018b0  20 20 73 70 6f 6f 6c 5f  6e 61 6d 65 24 20 3d 20  |  spool_name$ = |
000018c0  a4 67 65 74 5f 69 63 6f  6e 5f 74 65 78 74 28 73  |.get_icon_text(s|
000018d0  70 6f 6f 6c 5f 77 69 6e  64 6f 77 25 2c 30 29 0d  |pool_window%,0).|
000018e0  09 42 1d 20 20 20 20 20  20 69 25 20 3d 20 a9 28  |.B.      i% = .(|
000018f0  62 61 73 69 63 5f 66 69  6c 65 24 29 0d 09 4c 2f  |basic_file$)..L/|
00001900  20 20 20 20 20 20 c8 95  20 69 25 20 3e 20 30 20  |      .. i% > 0 |
00001910  80 20 c1 62 61 73 69 63  5f 66 69 6c 65 24 2c 69  |. .basic_file$,i|
00001920  25 2c 31 29 20 3c 3e 20  22 2e 22 0d 09 56 14 20  |%,1) <> "."..V. |
00001930  20 20 20 20 20 20 20 20  69 25 20 2d 3d 20 31 0d  |        i% -= 1.|
00001940  09 60 0b 20 20 20 20 20  20 ce 0d 09 6a 34 20 20  |.`.      ...j4  |
00001950  20 20 20 20 73 70 6f 6f  6c 5f 66 69 6c 65 24 20  |    spool_file$ |
00001960  3d 20 c0 62 61 73 69 63  5f 66 69 6c 65 24 2c 69  |= .basic_file$,i|
00001970  25 29 2b 73 70 6f 6f 6c  5f 6e 61 6d 65 24 0d 09  |%)+spool_name$..|
00001980  74 17 20 20 20 20 20 20  f2 70 72 6f 63 65 73 73  |t.      .process|
00001990  5f 66 69 6c 65 0d 09 7e  0b 20 20 20 20 20 20 e1  |_file..~.      .|
000019a0  0d 09 88 08 20 20 20 cd  0d 09 92 05 cb 0d 09 9c  |....   .........|
000019b0  1e c8 99 20 22 57 69 6d  70 5f 50 72 6f 63 65 73  |... "Wimp_Proces|
000019c0  73 4b 65 79 22 2c 63 68  61 72 25 0d 09 a6 05 e1  |sKey",char%.....|
000019d0  0d 09 b0 05 3a 0d 09 ba  29 dd 20 f2 70 75 74 5f  |....:...). .put_|
000019e0  69 63 6f 6e 5f 74 65 78  74 28 77 69 6e 64 6f 77  |icon_text(window|
000019f0  25 2c 69 63 6f 6e 25 2c  74 65 78 74 24 29 0d 09  |%,icon%,text$)..|
00001a00  c4 17 69 63 6e 62 6c 6b  25 21 30 20 3d 20 77 69  |..icnblk%!0 = wi|
00001a10  6e 64 6f 77 25 0d 09 ce  15 69 63 6e 62 6c 6b 25  |ndow%....icnblk%|
00001a20  21 34 20 3d 20 69 63 6f  6e 25 0d 09 d8 23 c8 99  |!4 = icon%...#..|
00001a30  20 22 57 69 6d 70 5f 47  65 74 49 63 6f 6e 53 74  | "Wimp_GetIconSt|
00001a40  61 74 65 22 2c 2c 69 63  6e 62 6c 6b 25 0d 09 e2  |ate",,icnblk%...|
00001a50  17 69 63 6e 70 74 72 25  20 3d 20 69 63 6e 62 6c  |.icnptr% = icnbl|
00001a60  6b 25 2b 38 0d 09 ec 18  73 61 76 70 74 72 25 20  |k%+8....savptr% |
00001a70  3d 20 69 63 6e 70 74 72  25 21 32 30 0d 09 f6 16  |= icnptr%!20....|
00001a80  24 28 73 61 76 70 74 72  25 29 20 3d 20 74 65 78  |$(savptr%) = tex|
00001a90  74 24 0d 0a 00 05 e1 0d  0a 0a 05 3a 0d 0a 14 23  |t$.........:...#|
00001aa0  dd 20 a4 67 65 74 5f 69  63 6f 6e 5f 74 65 78 74  |. .get_icon_text|
00001ab0  28 77 69 6e 64 6f 77 25  2c 69 63 6f 6e 25 29 0d  |(window%,icon%).|
00001ac0  0a 1e 17 69 63 6e 62 6c  6b 25 21 30 20 3d 20 77  |...icnblk%!0 = w|
00001ad0  69 6e 64 6f 77 25 0d 0a  28 15 69 63 6e 62 6c 6b  |indow%..(.icnblk|
00001ae0  25 21 34 20 3d 20 69 63  6f 6e 25 0d 0a 32 23 c8  |%!4 = icon%..2#.|
00001af0  99 20 22 57 69 6d 70 5f  47 65 74 49 63 6f 6e 53  |. "Wimp_GetIconS|
00001b00  74 61 74 65 22 2c 2c 69  63 6e 62 6c 6b 25 0d 0a  |tate",,icnblk%..|
00001b10  3c 17 69 63 6e 70 74 72  25 20 3d 20 69 63 6e 62  |<.icnptr% = icnb|
00001b20  6c 6b 25 2b 38 0d 0a 46  18 73 61 76 70 74 72 25  |lk%+8..F.savptr%|
00001b30  20 3d 20 69 63 6e 70 74  72 25 21 32 30 0d 0a 50  | = icnptr%!20..P|
00001b40  10 3d 20 24 28 73 61 76  70 74 72 25 29 0d 0a 5a  |.= $(savptr%)..Z|
00001b50  05 3a 0d 0a 64 1e dd 20  f2 6d 65 6e 75 5f 73 65  |.:..d.. .menu_se|
00001b60  6c 65 63 74 69 6f 6e 28  73 65 6c 65 63 74 25 29  |lection(select%)|
00001b70  0d 0a 6e 25 c8 99 20 22  57 69 6d 70 5f 47 65 74  |..n%.. "Wimp_Get|
00001b80  50 6f 69 6e 74 65 72 49  6e 66 6f 22 2c 2c 74 6d  |PointerInfo",,tm|
00001b90  70 62 6c 6b 25 0d 0a 78  18 6d 6f 75 73 65 5f 78  |pblk%..x.mouse_x|
00001ba0  25 20 3d 20 74 6d 70 62  6c 6b 25 21 30 0d 0a 82  |% = tmpblk%!0...|
00001bb0  18 6d 6f 75 73 65 5f 79  25 20 3d 20 74 6d 70 62  |.mouse_y% = tmpb|
00001bc0  6c 6b 25 21 34 0d 0a 8c  18 20 62 75 74 74 6f 6e  |lk%!4.... button|
00001bd0  25 20 3d 20 74 6d 70 62  6c 6b 25 21 38 0d 0a 96  |% = tmpblk%!8...|
00001be0  3e c8 99 20 22 57 69 6d  70 5f 44 65 63 6f 64 65  |>.. "Wimp_Decode|
00001bf0  4d 65 6e 75 22 2c 2c 6d  65 6e 62 6c 6b 25 2c 73  |Menu",,menblk%,s|
00001c00  65 6c 65 63 74 25 2c c4  32 30 30 2c 22 20 22 29  |elect%,.200," ")|
00001c10  20 b8 20 2c 2c 2c 69 74  65 6d 24 0d 0a a0 0e c8  | . ,,,item$.....|
00001c20  8e 20 69 74 65 6d 24 20  ca 0d 0a aa 12 c9 20 22  |. item$ ...... "|
00001c30  41 75 74 6f 20 50 72 69  6e 74 22 0d 0a b4 22 20  |Auto Print"..." |
00001c40  20 20 61 75 74 6f 5f 70  72 69 6e 74 25 20 3d 20  |  auto_print% = |
00001c50  ac 20 61 75 74 6f 5f 70  72 69 6e 74 25 0d 0a be  |. auto_print%...|
00001c60  22 20 20 20 70 72 74 70  74 72 25 21 30 20 3d 20  |"   prtptr%!0 = |
00001c70  70 72 74 70 74 72 25 21  30 20 82 20 26 30 31 0d  |prtptr%!0 . &01.|
00001c80  0a c8 0c c9 20 22 48 65  6c 70 22 0d 0a d2 3f 20  |.... "Help"...? |
00001c90  20 20 e7 20 68 65 6c 70  5f 77 69 6e 64 6f 77 25  |  . help_window%|
00001ca0  20 3d 20 30 20 8c 20 f2  63 72 65 61 74 65 5f 68  | = 0 . .create_h|
00001cb0  65 6c 70 28 22 42 41 53  49 43 20 50 72 69 6e 74  |elp("BASIC Print|
00001cc0  20 55 74 69 6c 69 74 79  22 29 0d 0a dc 39 20 20  | Utility")...9  |
00001cd0  20 f2 6f 70 65 6e 5f 77  69 6e 64 6f 77 28 68 65  | .open_window(he|
00001ce0  6c 70 5f 77 69 6e 64 6f  77 25 2c 31 32 38 2c 32  |lp_window%,128,2|
00001cf0  35 36 2c 31 31 35 32 2c  37 36 38 2c 30 2c 30 2c  |56,1152,768,0,0,|
00001d00  2d 31 29 0d 0a e6 14 c9  20 22 53 61 76 65 20 43  |-1)..... "Save C|
00001d10  68 6f 69 63 65 73 22 0d  0a f0 29 20 20 20 63 68  |hoices"...)   ch|
00001d20  61 6e 25 20 3d 20 ae 20  22 3c 42 61 73 50 72 69  |an% = . "<BasPri|
00001d30  6e 74 24 44 69 72 3e 2e  43 68 6f 69 63 65 73 22  |nt$Dir>.Choices"|
00001d40  0d 0a fa 32 20 20 20 f1  23 63 68 61 6e 25 2c 70  |...2   .#chan%,p|
00001d50  72 69 6e 74 5f 74 61 73  6b 24 2c 61 75 74 6f 5f  |rint_task$,auto_|
00001d60  70 72 69 6e 74 25 2c 70  61 67 65 5f 77 69 64 74  |print%,page_widt|
00001d70  68 25 0d 0b 04 0e 20 20  20 d9 23 63 68 61 6e 25  |h%....   .#chan%|
00001d80  0d 0b 0e 0c c9 20 22 51  75 69 74 22 0d 0b 18 0c  |..... "Quit"....|
00001d90  20 20 20 f2 71 75 69 74  0d 0b 22 05 cb 0d 0b 2c  |   .quit.."....,|
00001da0  13 e7 20 62 75 74 74 6f  6e 25 20 3d 20 31 20 8c  |.. button% = 1 .|
00001db0  0d 0b 36 3d 20 20 20 c8  99 20 22 57 69 6d 70 5f  |..6=   .. "Wimp_|
00001dc0  43 72 65 61 74 65 4d 65  6e 75 22 2c 2c 6d 65 6e  |CreateMenu",,men|
00001dd0  62 6c 6b 25 2c 6d 6f 75  73 65 5f 78 25 2d 34 30  |blk%,mouse_x%-40|
00001de0  2c 6d 6f 75 73 65 5f 79  25 2b 32 30 30 0d 0b 40  |,mouse_y%+200..@|
00001df0  05 cd 0d 0b 4a 05 e1 0d  0b 54 05 3a 0d 0b 5e 19  |....J....T.:..^.|
00001e00  dd 20 a4 74 65 78 74 5f  62 75 66 66 65 72 28 74  |. .text_buffer(t|
00001e10  65 78 74 24 29 0d 0b 68  15 73 61 76 70 74 72 25  |ext$)..h.savptr%|
00001e20  20 3d 20 74 78 74 70 74  72 25 0d 0b 72 19 74 78  | = txtptr%..r.tx|
00001e30  74 70 74 72 25 20 2b 3d  20 a9 28 74 65 78 74 24  |tptr% += .(text$|
00001e40  29 2b 31 0d 0b 7c 19 e7  20 74 78 74 70 74 72 25  |)+1..|.. txtptr%|
00001e50  20 3e 20 74 78 74 6d 61  78 25 20 8c 0d 0b 86 2d  | > txtmax% ....-|
00001e60  20 20 20 85 20 31 30 30  2c 22 49 6e 73 75 66 66  |   . 100,"Insuff|
00001e70  69 63 69 65 6e 74 20 74  65 78 74 20 62 75 66 66  |icient text buff|
00001e80  65 72 20 73 70 61 63 65  22 0d 0b 90 05 cd 0d 0b  |er space".......|
00001e90  9a 16 24 28 73 61 76 70  74 72 25 29 20 3d 20 74  |..$(savptr%) = t|
00001ea0  65 78 74 24 0d 0b a4 0d  3d 20 73 61 76 70 74 72  |ext$....= savptr|
00001eb0  25 0d 0b ae 05 3a 0d 0b  b8 1a dd 20 f2 63 72 65  |%....:..... .cre|
00001ec0  61 74 65 5f 68 65 6c 70  28 74 69 74 6c 65 24 29  |ate_help(title$)|
00001ed0  0d 0b c2 12 68 6c 70 62  6c 6b 25 21 30 20 20 3d  |....hlpblk%!0  =|
00001ee0  20 30 0d 0b cc 15 68 6c  70 62 6c 6b 25 21 34 20  | 0....hlpblk%!4 |
00001ef0  20 3d 20 2d 35 31 32 0d  0b d6 15 68 6c 70 62 6c  | = -512....hlpbl|
00001f00  6b 25 21 38 20 20 3d 20  31 30 32 34 0d 0b e0 12  |k%!8  = 1024....|
00001f10  68 6c 70 62 6c 6b 25 21  31 32 20 3d 20 30 0d 0b  |hlpblk%!12 = 0..|
00001f20  ea 12 68 6c 70 62 6c 6b  25 21 31 36 20 3d 20 30  |..hlpblk%!16 = 0|
00001f30  0d 0b f4 12 68 6c 70 62  6c 6b 25 21 32 30 20 3d  |....hlpblk%!20 =|
00001f40  20 30 0d 0b fe 13 68 6c  70 62 6c 6b 25 21 32 34  | 0....hlpblk%!24|
00001f50  20 3d 20 2d 31 0d 0c 08  1a 68 6c 70 62 6c 6b 25  | = -1....hlpblk%|
00001f60  21 32 38 20 3d 20 26 42  46 30 30 30 30 31 32 0d  |!28 = &BF000012.|
00001f70  0c 12 17 68 6c 70 62 6c  6b 25 3f 33 32 20 3d 20  |...hlpblk%?32 = |
00001f80  60 62 6c 61 63 6b 0d 0c  1c 17 68 6c 70 62 6c 6b  |`black....hlpblk|
00001f90  25 3f 33 33 20 3d 20 60  67 72 65 79 32 0d 0c 26  |%?33 = `grey2..&|
00001fa0  18 68 6c 70 62 6c 6b 25  3f 33 34 20 3d 20 60 6f  |.hlpblk%?34 = `o|
00001fb0  72 61 6e 67 65 0d 0c 30  17 68 6c 70 62 6c 6b 25  |range..0.hlpblk%|
00001fc0  3f 33 35 20 3d 20 60 63  72 65 61 6d 0d 0c 3a 17  |?35 = `cream..:.|
00001fd0  68 6c 70 62 6c 6b 25 3f  33 36 20 3d 20 60 67 72  |hlpblk%?36 = `gr|
00001fe0  65 79 33 0d 0c 44 17 68  6c 70 62 6c 6b 25 3f 33  |ey3..D.hlpblk%?3|
00001ff0  37 20 3d 20 60 67 72 65  79 31 0d 0c 4e 17 68 6c  |7 = `grey1..N.hl|
00002000  70 62 6c 6b 25 3f 33 38  20 3d 20 60 63 72 65 61  |pblk%?38 = `crea|
00002010  6d 0d 0c 58 12 68 6c 70  62 6c 6b 25 3f 33 39 20  |m..X.hlpblk%?39 |
00002020  3d 20 30 0d 0c 62 12 68  6c 70 62 6c 6b 25 21 34  |= 0..b.hlpblk%!4|
00002030  30 20 3d 20 30 0d 0c 6c  12 68 6c 70 62 6c 6b 25  |0 = 0..l.hlpblk%|
00002040  21 34 34 20 3d 20 30 0d  0c 76 14 68 6c 70 62 6c  |!44 = 0..v.hlpbl|
00002050  6b 25 21 34 38 20 3d 20  39 39 36 0d 0c 80 12 68  |k%!48 = 996....h|
00002060  6c 70 62 6c 6b 25 21 35  32 20 3d 20 30 0d 0c 8a  |lpblk%!52 = 0...|
00002070  16 68 6c 70 62 6c 6b 25  21 35 36 20 3d 20 26 30  |.hlpblk%!56 = &0|
00002080  31 30 39 0d 0c 94 16 68  6c 70 62 6c 6b 25 21 36  |109....hlpblk%!6|
00002090  30 20 3d 20 26 30 30 30  30 0d 0c 9e 12 68 6c 70  |0 = &0000....hlp|
000020a0  62 6c 6b 25 21 36 34 20  3d 20 31 0d 0c a8 12 68  |blk%!64 = 1....h|
000020b0  6c 70 62 6c 6b 25 21 36  38 20 3d 20 30 0d 0c b2  |lpblk%!68 = 0...|
000020c0  22 68 65 6c 70 5f 74 69  74 6c 65 24 20 3d 20 22  |"help_title$ = "|
000020d0  48 45 4c 50 20 2d 20 22  2b 74 69 74 6c 65 24 0d  |HELP - "+title$.|
000020e0  0c bc 2a 68 6c 70 62 6c  6b 25 21 37 32 20 3d 20  |..*hlpblk%!72 = |
000020f0  a4 74 65 78 74 5f 62 75  66 66 65 72 28 68 65 6c  |.text_buffer(hel|
00002100  70 5f 74 69 74 6c 65 24  29 0d 0c c6 13 68 6c 70  |p_title$)....hlp|
00002110  62 6c 6b 25 21 37 36 20  3d 20 2d 31 0d 0c d0 1f  |blk%!76 = -1....|
00002120  68 6c 70 62 6c 6b 25 21  38 30 20 3d 20 a9 28 68  |hlpblk%!80 = .(h|
00002130  65 6c 70 5f 74 69 74 6c  65 24 29 0d 0c da 12 68  |elp_title$)....h|
00002140  6c 70 62 6c 6b 25 21 38  34 20 3d 20 30 0d 0c e4  |lpblk%!84 = 0...|
00002150  18 68 6c 70 70 74 72 25  20 3d 20 68 6c 70 62 6c  |.hlpptr% = hlpbl|
00002160  6b 25 2b 38 38 0d 0c ee  37 6d 69 6e 5f 78 25 20  |k%+88...7min_x% |
00002170  3d 20 38 3a 20 6d 69 6e  5f 79 25 20 3d 20 2d 33  |= 8: min_y% = -3|
00002180  36 3a 20 6d 61 78 5f 79  25 20 3d 20 30 3a 20 6d  |6: max_y% = 0: m|
00002190  61 78 5f 78 25 20 3d 20  31 30 32 34 0d 0c f8 27  |ax_x% = 1024...'|
000021a0  63 68 61 6e 25 20 3d 20  8e 20 22 3c 42 61 73 50  |chan% = . "<BasP|
000021b0  72 69 6e 74 24 44 69 72  3e 2e 48 65 6c 70 54 65  |rint$Dir>.HelpTe|
000021c0  78 74 22 0d 0d 02 10 c8  95 20 ac 20 c5 23 63 68  |xt"...... . .#ch|
000021d0  61 6e 25 0d 0d 0c 1f 20  20 20 e7 20 68 6c 70 70  |an%....   . hlpp|
000021e0  74 72 25 20 3e 20 68 6c  70 6d 61 78 25 2d 33 32  |tr% > hlpmax%-32|
000021f0  20 8c 0d 0d 16 30 20 20  20 20 20 20 85 20 31 30  | ....0      . 10|
00002200  31 2c 22 49 6e 73 75 66  66 69 63 69 65 6e 74 20  |1,"Insufficient |
00002210  48 45 4c 50 20 77 69 6e  64 6f 77 20 73 70 61 63  |HELP window spac|
00002220  65 22 0d 0d 20 08 20 20  20 cd 0d 0d 2a 16 20 20  |e".. .   ...*.  |
00002230  20 6c 69 6e 65 24 20 3d  20 be 23 63 68 61 6e 25  | line$ = .#chan%|
00002240  0d 0d 34 19 20 20 20 68  6c 70 70 74 72 25 21 30  |..4.   hlpptr%!0|
00002250  20 3d 20 6d 69 6e 5f 78  25 0d 0d 3e 19 20 20 20  | = min_x%..>.   |
00002260  68 6c 70 70 74 72 25 21  34 20 3d 20 6d 69 6e 5f  |hlpptr%!4 = min_|
00002270  79 25 0d 0d 48 19 20 20  20 68 6c 70 70 74 72 25  |y%..H.   hlpptr%|
00002280  21 38 20 3d 20 6d 61 78  5f 78 25 0d 0d 52 1a 20  |!8 = max_x%..R. |
00002290  20 20 68 6c 70 70 74 72  25 21 31 32 20 3d 20 6d  |  hlpptr%!12 = m|
000022a0  61 78 5f 79 25 0d 0d 5c  1a 20 20 20 e7 20 c0 6c  |ax_y%..\.   . .l|
000022b0  69 6e 65 24 2c 31 29 20  3d 20 22 a4 22 20 8c 0d  |ine$,1) = "." ..|
000022c0  0d 66 24 20 20 20 20 20  20 6c 69 6e 65 24 20 3d  |.f$      line$ =|
000022d0  20 c2 6c 69 6e 65 24 2c  a9 28 6c 69 6e 65 24 29  | .line$,.(line$)|
000022e0  2d 31 29 0d 0d 70 20 20  20 20 20 20 20 68 6c 70  |-1)..p       hlp|
000022f0  70 74 72 25 21 31 36 20  3d 20 26 30 42 30 30 30  |ptr%!16 = &0B000|
00002300  31 31 31 0d 0d 7a 08 20  20 20 cc 0d 0d 84 20 20  |111..z.   ....  |
00002310  20 20 20 20 20 68 6c 70  70 74 72 25 21 31 36 20  |     hlpptr%!16 |
00002320  3d 20 26 30 44 30 30 30  31 31 31 0d 0d 8e 08 20  |= &0D000111.... |
00002330  20 20 cd 0d 0d 98 27 20  20 20 68 6c 70 70 74 72  |  ....'   hlpptr|
00002340  25 21 32 30 20 3d 20 a4  74 65 78 74 5f 62 75 66  |%!20 = .text_buf|
00002350  66 65 72 28 6c 69 6e 65  24 29 0d 0d a2 16 20 20  |fer(line$)....  |
00002360  20 68 6c 70 70 74 72 25  21 32 34 20 3d 20 2d 31  | hlpptr%!24 = -1|
00002370  0d 0d ac 1c 20 20 20 68  6c 70 70 74 72 25 21 32  |....   hlpptr%!2|
00002380  38 20 3d 20 a9 28 6c 69  6e 65 24 29 0d 0d b6 16  |8 = .(line$)....|
00002390  20 20 20 68 6c 70 62 6c  6b 25 21 38 34 20 2b 3d  |   hlpblk%!84 +=|
000023a0  20 31 0d 0d c0 14 20 20  20 68 6c 70 70 74 72 25  | 1....   hlpptr%|
000023b0  20 2b 3d 20 33 32 0d 0d  ca 21 20 20 20 6d 69 6e  | += 32...!   min|
000023c0  5f 79 25 20 2d 3d 20 33  36 3a 20 6d 61 78 5f 79  |_y% -= 36: max_y|
000023d0  25 20 2d 3d 20 33 36 0d  0d d4 05 ce 0d 0d de 0b  |% -= 36.........|
000023e0  d9 23 63 68 61 6e 25 0d  0d e8 28 e7 20 6d 69 6e  |.#chan%...(. min|
000023f0  5f 79 25 20 3c 20 35 31  32 20 8c 20 68 6c 70 62  |_y% < 512 . hlpb|
00002400  6c 6b 25 21 34 34 20 3d  20 6d 69 6e 5f 79 25 0d  |lk%!44 = min_y%.|
00002410  0d f2 32 c8 99 20 22 57  69 6d 70 5f 43 72 65 61  |..2.. "Wimp_Crea|
00002420  74 65 57 69 6e 64 6f 77  22 2c 2c 68 6c 70 62 6c  |teWindow",,hlpbl|
00002430  6b 25 20 b8 20 68 65 6c  70 5f 77 69 6e 64 6f 77  |k% . help_window|
00002440  25 0d 0d fc 05 e1 0d 0e  06 05 3a 0d 0e 10 55 dd  |%.........:...U.|
00002450  20 a4 63 72 65 61 74 65  5f 69 63 6f 6e 28 77 69  | .create_icon(wi|
00002460  6e 64 6f 77 25 2c 6d 69  6e 5f 78 25 2c 6d 69 6e  |ndow%,min_x%,min|
00002470  5f 79 25 2c 6d 61 78 5f  78 25 2c 6d 61 78 5f 79  |_y%,max_x%,max_y|
00002480  25 2c 66 6c 61 67 25 2c  74 79 70 65 25 2c 64 61  |%,flag%,type%,da|
00002490  74 61 25 2c 6e 61 6d 65  24 2c 70 6e 74 72 25 29  |ta%,name$,pntr%)|
000024a0  0d 0e 1a 15 62 6c 6b 25  21 30 20 20 3d 20 77 69  |....blk%!0  = wi|
000024b0  6e 64 6f 77 25 0d 0e 24  14 62 6c 6b 25 21 34 20  |ndow%..$.blk%!4 |
000024c0  20 3d 20 6d 69 6e 5f 78  25 0d 0e 2e 14 62 6c 6b  | = min_x%....blk|
000024d0  25 21 38 20 20 3d 20 6d  69 6e 5f 79 25 0d 0e 38  |%!8  = min_y%..8|
000024e0  14 62 6c 6b 25 21 31 32  20 3d 20 6d 61 78 5f 78  |.blk%!12 = max_x|
000024f0  25 0d 0e 42 14 62 6c 6b  25 21 31 36 20 3d 20 6d  |%..B.blk%!16 = m|
00002500  61 78 5f 79 25 0d 0e 4c  42 62 6c 6b 25 21 32 30  |ax_y%..LBblk%!20|
00002510  20 3d 20 66 6c 61 67 25  20 84 20 28 74 79 70 65  | = flag% . (type|
00002520  25 3c 3c 31 32 29 20 84  20 28 64 61 74 61 25 20  |%<<12) . (data% |
00002530  80 20 33 29 20 84 20 28  28 64 61 74 61 25 20 80  |. 3) . ((data% .|
00002540  20 34 29 3c 3c 36 29 0d  0e 56 0e c8 8e 20 64 61  | 4)<<6)..V... da|
00002550  74 61 25 20 ca 0d 0e 60  0b c9 20 31 2c 32 2c 33  |ta% ...`.. 1,2,3|
00002560  0d 0e 6a 1e 20 20 20 24  28 62 6c 6b 25 2b 32 34  |..j.   $(blk%+24|
00002570  29 20 3d 20 c0 6e 61 6d  65 24 2c 31 31 29 0d 0e  |) = .name$,11)..|
00002580  74 0b c9 20 35 2c 36 2c  37 0d 0e 7e 24 20 20 20  |t.. 5,6,7..~$   |
00002590  62 6c 6b 25 21 32 34 20  3d 20 a4 74 65 78 74 5f  |blk%!24 = .text_|
000025a0  62 75 66 66 65 72 28 6e  61 6d 65 24 29 0d 0e 88  |buffer(name$)...|
000025b0  16 20 20 20 62 6c 6b 25  21 32 38 20 3d 20 70 6e  |.   blk%!28 = pn|
000025c0  74 72 25 0d 0e 92 19 20  20 20 62 6c 6b 25 21 33  |tr%....   blk%!3|
000025d0  32 20 3d 20 a9 28 6e 61  6d 65 24 29 0d 0e 9c 05  |2 = .(name$)....|
000025e0  cb 0d 0e a6 26 c8 99 20  22 57 69 6d 70 5f 43 72  |....&.. "Wimp_Cr|
000025f0  65 61 74 65 49 63 6f 6e  22 2c 2c 62 6c 6b 25 20  |eateIcon",,blk% |
00002600  b8 20 69 63 6f 6e 25 0d  0e b0 0b 3d 20 69 63 6f  |. icon%....= ico|
00002610  6e 25 0d 0e ba 05 3a 0d  0e c4 24 dd 20 f2 67 65  |n%....:...$. .ge|
00002620  74 5f 69 63 6f 6e 5f 73  74 61 74 65 28 77 69 6e  |t_icon_state(win|
00002630  64 6f 77 25 2c 69 63 6f  6e 25 29 0d 0e ce 17 69  |dow%,icon%)....i|
00002640  63 6e 62 6c 6b 25 21 30  20 3d 20 77 69 6e 64 6f  |cnblk%!0 = windo|
00002650  77 25 0d 0e d8 15 69 63  6e 62 6c 6b 25 21 34 20  |w%....icnblk%!4 |
00002660  3d 20 69 63 6f 6e 25 0d  0e e2 23 c8 99 20 22 57  |= icon%...#.. "W|
00002670  69 6d 70 5f 47 65 74 49  63 6f 6e 53 74 61 74 65  |imp_GetIconState|
00002680  22 2c 2c 69 63 6e 62 6c  6b 25 0d 0e ec 16 6d 69  |",,icnblk%....mi|
00002690  6e 5f 78 25 20 3d 20 69  63 6e 62 6c 6b 25 21 38  |n_x% = icnblk%!8|
000026a0  0d 0e f6 17 6d 69 6e 5f  79 25 20 3d 20 69 63 6e  |....min_y% = icn|
000026b0  62 6c 6b 25 21 31 32 0d  0f 00 17 6d 61 78 5f 78  |blk%!12....max_x|
000026c0  25 20 3d 20 69 63 6e 62  6c 6b 25 21 31 36 0d 0f  |% = icnblk%!16..|
000026d0  0a 17 6d 61 78 5f 79 25  20 3d 20 69 63 6e 62 6c  |..max_y% = icnbl|
000026e0  6b 25 21 32 30 0d 0f 14  05 e1 0d 0f 1e 05 3a 0d  |k%!20.........:.|
000026f0  0f 28 13 dd 20 f2 75 73  65 72 5f 6d 65 73 73 61  |.(.. .user_messa|
00002700  67 65 0d 0f 32 08 ea 20  69 25 0d 0f 3c 34 e3 20  |ge..2.. i%..<4. |
00002710  69 25 20 3d 20 30 20 b8  20 32 35 35 20 88 20 34  |i% = 0 . 255 . 4|
00002720  20 3a 20 6d 73 67 62 6c  6b 25 21 69 25 20 3d 20  | : msgblk%!i% = |
00002730  62 6c 6b 25 21 69 25 20  3a 20 ed 20 69 25 0d 0f  |blk%!i% : . i%..|
00002740  46 13 c8 8e 20 6d 73 67  62 6c 6b 25 21 31 36 20  |F... msgblk%!16 |
00002750  ca 0d 0f 50 0f c9 20 6d  73 67 5f 71 75 69 74 25  |...P.. msg_quit%|
00002760  0d 0f 5a 0c 20 20 20 f2  71 75 69 74 0d 0f 64 13  |..Z.   .quit..d.|
00002770  c9 20 6d 73 67 5f 64 61  74 61 73 61 76 65 25 0d  |. msg_datasave%.|
00002780  0f 6e 11 20 20 20 f2 64  61 74 61 5f 73 61 76 65  |.n.   .data_save|
00002790  0d 0f 78 13 c9 20 6d 73  67 5f 64 73 61 76 65 41  |..x.. msg_dsaveA|
000027a0  43 4b 25 0d 0f 82 15 20  20 20 f2 64 61 74 61 5f  |CK%....   .data_|
000027b0  73 61 76 65 5f 41 43 4b  0d 0f 8c 13 c9 20 6d 73  |save_ACK..... ms|
000027c0  67 5f 64 61 74 61 6c 6f  61 64 25 0d 0f 96 11 20  |g_dataload%.... |
000027d0  20 20 f2 64 61 74 61 5f  6c 6f 61 64 0d 0f a0 13  |  .data_load....|
000027e0  c9 20 6d 73 67 5f 64 6c  6f 61 64 41 43 4b 25 0d  |. msg_dloadACK%.|
000027f0  0f aa 15 20 20 20 f2 64  61 74 61 5f 6c 6f 61 64  |...   .data_load|
00002800  5f 41 43 4b 0d 0f b4 13  c9 20 6d 73 67 5f 6d 6f  |_ACK..... msg_mo|
00002810  64 65 63 68 6e 67 25 0d  0f be 13 20 20 20 f2 6d  |dechng%....   .m|
00002820  6f 64 65 5f 63 68 61 6e  67 65 0d 0f c8 13 c9 20  |ode_change..... |
00002830  6d 73 67 5f 74 73 6b 6e  61 6d 69 73 25 0d 0f d2  |msg_tsknamis%...|
00002840  14 20 20 20 f2 74 61 73  6b 5f 6e 61 6d 65 5f 69  |.   .task_name_i|
00002850  73 0d 0f dc 0f c9 20 6d  73 67 5f 68 65 6c 70 25  |s..... msg_help%|
00002860  0d 0f e6 0c 20 20 20 f2  68 65 6c 70 0d 0f f0 05  |....   .help....|
00002870  cb 0d 0f fa 05 e1 0d 10  04 05 3a 0d 10 0e 0b dd  |..........:.....|
00002880  20 f2 71 75 69 74 0d 10  18 17 c8 99 20 22 57 69  | .quit...... "Wi|
00002890  6d 70 5f 43 6c 6f 73 65  44 6f 77 6e 22 0d 10 22  |mp_CloseDown".."|
000028a0  05 e0 0d 10 2c 05 e1 0d  10 36 05 3a 0d 10 40 10  |....,....6.:..@.|
000028b0  dd 20 f2 64 61 74 61 5f  73 61 76 65 0d 10 4a 05  |. .data_save..J.|
000028c0  e1 0d 10 54 05 3a 0d 10  5e 14 dd 20 f2 64 61 74  |...T.:..^.. .dat|
000028d0  61 5f 73 61 76 65 5f 41  43 4b 0d 10 68 0e f2 70  |a_save_ACK..h..p|
000028e0  61 74 68 5f 6e 61 6d 65  0d 10 72 19 e7 20 74 79  |ath_name..r.. ty|
000028f0  70 65 25 20 3d 20 74 79  70 5f 74 65 78 74 25 20  |pe% = typ_text% |
00002900  8c 0d 10 7c 1a 20 20 20  73 70 6f 6f 6c 5f 66 69  |...|.   spool_fi|
00002910  6c 65 24 20 3d 20 66 69  6c 65 24 0d 10 86 14 20  |le$ = file$.... |
00002920  20 20 f2 70 72 6f 63 65  73 73 5f 66 69 6c 65 0d  |  .process_file.|
00002930  10 90 05 cc 0d 10 9a 0a  20 20 20 ef 20 37 0d 10  |........   . 7..|
00002940  a4 05 cd 0d 10 ae 13 f2  73 65 6e 64 5f 64 61 74  |........send_dat|
00002950  61 5f 6c 6f 61 64 0d 10  b8 05 e1 0d 10 c2 05 3a  |a_load.........:|
00002960  0d 10 cc 10 dd 20 f2 64  61 74 61 5f 6c 6f 61 64  |..... .data_load|
00002970  0d 10 d6 0e f2 70 61 74  68 5f 6e 61 6d 65 0d 10  |.....path_name..|
00002980  e0 0e c8 8e 20 74 79 70  65 25 20 ca 0d 10 ea 10  |.... type% .....|
00002990  c9 20 74 79 70 5f 62 61  73 69 63 25 0d 10 f4 2c  |. typ_basic%...,|
000029a0  20 20 20 c8 99 20 22 4f  53 5f 46 69 6c 65 22 2c  |   .. "OS_File",|
000029b0  35 2c 66 69 6c 65 24 20  b8 20 2c 2c 2c 2c 66 69  |5,file$ . ,,,,fi|
000029c0  6c 65 5f 73 69 7a 65 25  0d 10 fe 1b 20 20 20 f2  |le_size%....   .|
000029d0  70 72 65 70 61 72 65 5f  66 69 6c 65 28 66 69 6c  |prepare_file(fil|
000029e0  65 24 29 0d 11 08 13 c9  20 74 79 70 5f 61 70 70  |e$)..... typ_app|
000029f0  6c 69 63 74 6e 25 0d 11  12 10 20 20 20 66 69 6c  |lictn%....   fil|
00002a00  65 25 20 3d 20 30 0d 11  1c 23 20 20 20 c8 95 20  |e% = 0...#   .. |
00002a10  c1 66 69 6c 65 24 2c 66  69 6c 65 25 2b 31 2c 31  |.file$,file%+1,1|
00002a20  29 20 3c 3e 20 bd 28 30  29 0d 11 26 14 20 20 20  |) <> .(0)..&.   |
00002a30  20 20 20 66 69 6c 65 25  20 2b 3d 20 31 0d 11 30  |   file% += 1..0|
00002a40  08 20 20 20 ce 0d 11 3a  29 20 20 20 66 69 6c 65  |.   ...:)   file|
00002a50  24 20 3d 20 c0 66 69 6c  65 24 2c 66 69 6c 65 25  |$ = .file$,file%|
00002a60  29 2b 22 2e 21 52 75 6e  49 6d 61 67 65 22 0d 11  |)+".!RunImage"..|
00002a70  44 40 20 20 20 c8 99 20  22 4f 53 5f 46 69 6c 65  |D@   .. "OS_File|
00002a80  22 2c 35 2c 66 69 6c 65  24 20 b8 20 2c 2c 6c 6f  |",5,file$ . ,,lo|
00002a90  61 64 5f 61 64 64 72 25  2c 65 78 65 63 5f 61 64  |ad_addr%,exec_ad|
00002aa0  64 72 25 2c 66 69 6c 65  5f 73 69 7a 65 25 0d 11  |dr%,file_size%..|
00002ab0  4e 2a 20 20 20 74 79 70  65 25 20 3d 20 28 26 30  |N*   type% = (&0|
00002ac0  30 30 46 46 46 30 30 20  80 20 6c 6f 61 64 5f 61  |00FFF00 . load_a|
00002ad0  64 64 72 25 29 3e 3e 38  0d 11 58 1d 20 20 20 e7  |ddr%)>>8..X.   .|
00002ae0  20 74 79 70 65 25 20 3d  20 74 79 70 5f 62 61 73  | type% = typ_bas|
00002af0  69 63 25 20 8c 0d 11 62  1e 20 20 20 20 20 20 f2  |ic% ...b.      .|
00002b00  70 72 65 70 61 72 65 5f  66 69 6c 65 28 66 69 6c  |prepare_file(fil|
00002b10  65 24 29 0d 11 6c 08 20  20 20 cc 0d 11 76 0d 20  |e$)..l.   ...v. |
00002b20  20 20 20 20 20 ef 20 37  0d 11 80 08 20 20 20 cd  |     . 7....   .|
00002b30  0d 11 8a 05 7f 0d 11 94  0a 20 20 20 ef 20 37 0d  |.........   . 7.|
00002b40  11 9e 05 cb 0d 11 a8 17  f2 73 65 6e 64 5f 64 61  |.........send_da|
00002b50  74 61 5f 6c 6f 61 64 5f  41 43 4b 0d 11 b2 05 e1  |ta_load_ACK.....|
00002b60  0d 11 bc 05 3a 0d 11 c6  14 dd 20 f2 64 61 74 61  |....:..... .data|
00002b70  5f 6c 6f 61 64 5f 41 43  4b 0d 11 d0 05 e1 0d 11  |_load_ACK.......|
00002b80  da 05 3a 0d 11 e4 4d dd  20 f2 73 65 6e 64 5f 64  |..:...M. .send_d|
00002b90  61 74 61 5f 73 61 76 65  28 72 65 66 25 2c 77 69  |ata_save(ref%,wi|
00002ba0  6e 64 6f 77 25 2c 69 63  6f 6e 25 2c 6d 6f 75 73  |ndow%,icon%,mous|
00002bb0  65 5f 78 25 2c 6d 6f 75  73 65 5f 79 25 2c 73 69  |e_x%,mouse_y%,si|
00002bc0  7a 65 25 2c 74 79 70 65  25 2c 66 69 6c 65 24 29  |ze%,type%,file$)|
00002bd0  0d 11 ee 2a 6d 73 67 62  6c 6b 25 21 30 20 20 3d  |...*msgblk%!0  =|
00002be0  20 28 a9 28 66 69 6c 65  24 29 2b 34 38 29 20 80  | (.(file$)+48) .|
00002bf0  20 26 46 46 46 46 46 46  46 43 0d 11 f8 12 6d 73  | &FFFFFFFC....ms|
00002c00  67 62 6c 6b 25 21 34 20  20 3d 20 30 0d 12 02 12  |gblk%!4  = 0....|
00002c10  6d 73 67 62 6c 6b 25 21  38 20 20 3d 20 30 0d 12  |msgblk%!8  = 0..|
00002c20  0c 15 6d 73 67 62 6c 6b  25 21 31 32 20 3d 20 72  |..msgblk%!12 = r|
00002c30  65 66 25 0d 12 16 1e 6d  73 67 62 6c 6b 25 21 31  |ef%....msgblk%!1|
00002c40  36 20 3d 20 6d 73 67 5f  64 61 74 61 73 61 76 65  |6 = msg_datasave|
00002c50  25 0d 12 20 18 6d 73 67  62 6c 6b 25 21 32 30 20  |%.. .msgblk%!20 |
00002c60  3d 20 77 69 6e 64 6f 77  25 0d 12 2a 16 6d 73 67  |= window%..*.msg|
00002c70  62 6c 6b 25 21 32 34 20  3d 20 69 63 6f 6e 25 0d  |blk%!24 = icon%.|
00002c80  12 34 19 6d 73 67 62 6c  6b 25 21 32 38 20 3d 20  |.4.msgblk%!28 = |
00002c90  6d 6f 75 73 65 5f 78 25  0d 12 3e 19 6d 73 67 62  |mouse_x%..>.msgb|
00002ca0  6c 6b 25 21 33 32 20 3d  20 6d 6f 75 73 65 5f 79  |lk%!32 = mouse_y|
00002cb0  25 0d 12 48 16 6d 73 67  62 6c 6b 25 21 33 36 20  |%..H.msgblk%!36 |
00002cc0  3d 20 73 69 7a 65 25 0d  12 52 16 6d 73 67 62 6c  |= size%..R.msgbl|
00002cd0  6b 25 21 34 30 20 3d 20  74 79 70 65 25 0d 12 5c  |k%!40 = type%..\|
00002ce0  19 24 28 6d 73 67 62 6c  6b 25 2b 34 34 29 20 3d  |.$(msgblk%+44) =|
00002cf0  20 66 69 6c 65 24 0d 12  66 2c c8 99 20 22 57 69  | file$..f,.. "Wi|
00002d00  6d 70 5f 53 65 6e 64 4d  65 73 73 61 67 65 22 2c  |mp_SendMessage",|
00002d10  31 37 2c 6d 73 67 62 6c  6b 25 2c 77 69 6e 64 6f  |17,msgblk%,windo|
00002d20  77 25 0d 12 70 05 e1 0d  12 7a 05 3a 0d 12 84 19  |w%..p....z.:....|
00002d30  dd 20 f2 73 65 6e 64 5f  64 61 74 61 5f 73 61 76  |. .send_data_sav|
00002d40  65 5f 41 43 4b 0d 12 8e  05 e1 0d 12 98 05 3a 0d  |e_ACK.........:.|
00002d50  12 a2 15 dd 20 f2 73 65  6e 64 5f 64 61 74 61 5f  |.... .send_data_|
00002d60  6c 6f 61 64 0d 12 ac 1a  6d 73 67 62 6c 6b 25 21  |load....msgblk%!|
00002d70  31 32 20 3d 20 6d 73 67  62 6c 6b 25 21 38 0d 12  |12 = msgblk%!8..|
00002d80  b6 1e 6d 73 67 62 6c 6b  25 21 31 36 20 3d 20 6d  |..msgblk%!16 = m|
00002d90  73 67 5f 64 61 74 61 6c  6f 61 64 25 0d 12 c0 2e  |sg_dataload%....|
00002da0  c8 99 20 22 57 69 6d 70  5f 53 65 6e 64 4d 65 73  |.. "Wimp_SendMes|
00002db0  73 61 67 65 22 2c 31 37  2c 6d 73 67 62 6c 6b 25  |sage",17,msgblk%|
00002dc0  2c 6d 73 67 62 6c 6b 25  21 34 0d 12 ca 05 e1 0d  |,msgblk%!4......|
00002dd0  12 d4 05 3a 0d 12 de 19  dd 20 f2 73 65 6e 64 5f  |...:..... .send_|
00002de0  64 61 74 61 5f 6c 6f 61  64 5f 41 43 4b 0d 12 e8  |data_load_ACK...|
00002df0  1a 6d 73 67 62 6c 6b 25  21 31 32 20 3d 20 6d 73  |.msgblk%!12 = ms|
00002e00  67 62 6c 6b 25 21 38 0d  12 f2 1e 6d 73 67 62 6c  |gblk%!8....msgbl|
00002e10  6b 25 21 31 36 20 3d 20  6d 73 67 5f 64 6c 6f 61  |k%!16 = msg_dloa|
00002e20  64 41 43 4b 25 0d 12 fc  2e c8 99 20 22 57 69 6d  |dACK%...... "Wim|
00002e30  70 5f 53 65 6e 64 4d 65  73 73 61 67 65 22 2c 31  |p_SendMessage",1|
00002e40  37 2c 6d 73 67 62 6c 6b  25 2c 6d 73 67 62 6c 6b  |7,msgblk%,msgblk|
00002e50  25 21 34 0d 13 06 05 e1  0d 13 10 05 3a 0d 13 1a  |%!4.........:...|
00002e60  0b dd 20 f2 68 65 6c 70  0d 13 24 29 6d 73 67 62  |.. .help..$)msgb|
00002e70  6c 6b 25 21 30 20 3d 20  28 a9 28 68 65 6c 70 24  |lk%!0 = (.(help$|
00002e80  29 2b 32 34 29 20 80 20  26 46 46 46 46 46 46 46  |)+24) . &FFFFFFF|
00002e90  43 0d 13 2e 1a 6d 73 67  62 6c 6b 25 21 31 32 20  |C....msgblk%!12 |
00002ea0  3d 20 6d 73 67 62 6c 6b  25 21 38 0d 13 38 1d 6d  |= msgblk%!8..8.m|
00002eb0  73 67 62 6c 6b 25 21 31  36 20 3d 20 6d 73 67 5f  |sgblk%!16 = msg_|
00002ec0  68 65 6c 70 41 43 4b 25  0d 13 42 19 24 28 6d 73  |helpACK%..B.$(ms|
00002ed0  67 62 6c 6b 25 2b 32 30  29 20 3d 20 68 65 6c 70  |gblk%+20) = help|
00002ee0  24 0d 13 4c 2e c8 99 20  22 57 69 6d 70 5f 53 65  |$..L... "Wimp_Se|
00002ef0  6e 64 4d 65 73 73 61 67  65 22 2c 31 37 2c 6d 73  |ndMessage",17,ms|
00002f00  67 62 6c 6b 25 2c 6d 73  67 62 6c 6b 25 21 34 0d  |gblk%,msgblk%!4.|
00002f10  13 56 05 e1 0d 13 60 05  3a 0d 13 6a 12 dd 20 f2  |.V....`.:..j.. .|
00002f20  6d 6f 64 65 5f 63 68 61  6e 67 65 0d 13 74 13 6d  |mode_change..t.m|
00002f30  73 67 62 6c 6b 25 21 30  20 3d 20 31 33 30 0d 13  |sgblk%!0 = 130..|
00002f40  7e 13 6d 73 67 62 6c 6b  25 21 34 20 3d 20 31 33  |~.msgblk%!4 = 13|
00002f50  31 0d 13 88 12 6d 73 67  62 6c 6b 25 21 38 20 3d  |1....msgblk%!8 =|
00002f60  20 2d 31 0d 13 92 2f c8  99 20 22 4f 53 5f 52 65  | -1.../.. "OS_Re|
00002f70  61 64 56 64 75 56 61 72  69 61 62 6c 65 73 22 2c  |adVduVariables",|
00002f80  6d 73 67 62 6c 6b 25 2c  6d 73 67 62 6c 6b 25 2b  |msgblk%,msgblk%+|
00002f90  31 32 0d 13 9c 2c c8 99  20 22 4f 53 5f 52 65 61  |12...,.. "OS_Rea|
00002fa0  64 4d 6f 64 65 56 61 72  69 61 62 6c 65 22 2c 2d  |dModeVariable",-|
00002fb0  31 2c 34 20 b8 20 2c 2c  78 5f 70 69 78 25 0d 13  |1,4 . ,,x_pix%..|
00002fc0  a6 2c c8 99 20 22 4f 53  5f 52 65 61 64 4d 6f 64  |.,.. "OS_ReadMod|
00002fd0  65 56 61 72 69 61 62 6c  65 22 2c 2d 31 2c 35 20  |eVariable",-1,5 |
00002fe0  b8 20 2c 2c 79 5f 70 69  78 25 0d 13 b0 24 77 73  |. ,,y_pix%...$ws|
00002ff0  69 7a 5f 78 25 20 3d 20  28 6d 73 67 62 6c 6b 25  |iz_x% = (msgblk%|
00003000  21 31 32 2b 31 29 3c 3c  78 5f 70 69 78 25 0d 13  |!12+1)<<x_pix%..|
00003010  ba 24 77 73 69 7a 5f 79  25 20 3d 20 28 6d 73 67  |.$wsiz_y% = (msg|
00003020  62 6c 6b 25 21 31 36 2b  31 29 3c 3c 79 5f 70 69  |blk%!16+1)<<y_pi|
00003030  78 25 0d 13 c4 05 e1 0d  13 ce 05 3a 0d 13 d8 10  |x%.........:....|
00003040  dd 20 f2 70 61 74 68 5f  6e 61 6d 65 0d 13 e2 08  |. .path_name....|
00003050  ea 20 69 25 0d 13 ec 16  74 79 70 65 25 20 3d 20  |. i%....type% = |
00003060  6d 73 67 62 6c 6b 25 21  34 30 0d 13 f6 0e 66 69  |msgblk%!40....fi|
00003070  6c 65 24 20 3d 20 22 22  0d 14 00 0b 69 25 20 3d  |le$ = ""....i% =|
00003080  20 34 34 0d 14 0a 2a c8  95 20 69 25 20 3c 20 28  | 44...*.. i% < (|
00003090  6d 73 67 62 6c 6b 25 21  30 29 20 80 20 28 6d 73  |msgblk%!0) . (ms|
000030a0  67 62 6c 6b 25 3f 69 25  29 20 3e 20 30 0d 14 14  |gblk%?i%) > 0...|
000030b0  48 20 20 20 e7 20 28 6d  73 67 62 6c 6b 25 3f 69  |H   . (msgblk%?i|
000030c0  25 29 20 3e 20 33 32 20  80 20 28 6d 73 67 62 6c  |%) > 32 . (msgbl|
000030d0  6b 25 3f 69 25 29 20 3c  20 31 32 37 20 8c 20 66  |k%?i%) < 127 . f|
000030e0  69 6c 65 24 20 2b 3d 20  bd 28 6d 73 67 62 6c 6b  |ile$ += .(msgblk|
000030f0  25 3f 69 25 29 0d 14 1e  0e 20 20 20 69 25 20 2b  |%?i%)....   i% +|
00003100  3d 20 31 0d 14 28 05 ce  0d 14 32 11 66 69 6c 65  |= 1..(....2.file|
00003110  24 20 2b 3d 20 bd 28 30  29 0d 14 3c 05 e1 0d 14  |$ += .(0)..<....|
00003120  46 05 3a 0d 14 50 13 dd  20 f2 74 61 73 6b 5f 6e  |F.:..P.. .task_n|
00003130  61 6d 65 5f 69 73 0d 14  5a 23 f2 63 68 65 63 6b  |ame_is..Z#.check|
00003140  5f 74 61 73 6b 5f 6e 61  6d 65 28 24 28 6d 73 67  |_task_name($(msg|
00003150  62 6c 6b 25 2b 32 38 29  29 0d 14 64 05 e1 0d 14  |blk%+28))..d....|
00003160  6e 05 3a 0d 14 78 12 dd  20 f2 62 61 73 69 63 5f  |n.:..x.. .basic_|
00003170  65 72 72 6f 72 0d 14 82  35 72 65 70 6c 79 25 20  |error...5reply% |
00003180  3d 20 a4 72 65 70 6f 72  74 5f 65 72 72 6f 72 28  |= .report_error(|
00003190  9f 2c f6 24 2b 22 20 61  74 20 6c 69 6e 65 20 22  |.,.$+" at line "|
000031a0  2b c3 28 9e 29 2c 26 30  31 29 0d 14 8c 09 f2 71  |+.(.),&01).....q|
000031b0  75 69 74 0d 14 96 05 e1  0d 14 a0 05 3a 0d 14 aa  |uit.........:...|
000031c0  26 dd 20 a4 72 65 70 6f  72 74 5f 65 72 72 6f 72  |&. .report_error|
000031d0  28 63 6f 64 65 25 2c 74  65 78 74 24 2c 66 6c 61  |(code%,text$,fla|
000031e0  67 25 29 0d 14 b4 0f de  20 65 72 72 6f 72 25 20  |g%)..... error% |
000031f0  36 34 0d 14 be 19 c8 99  20 22 57 69 6d 70 5f 44  |64...... "Wimp_D|
00003200  72 61 67 42 6f 78 22 2c  2c 2d 31 0d 14 c8 13 21  |ragBox",,-1....!|
00003210  65 72 72 6f 72 25 20 3d  20 63 6f 64 65 25 0d 14  |error% = code%..|
00003220  d2 17 24 28 65 72 72 6f  72 25 2b 34 29 20 3d 20  |..$(error%+4) = |
00003230  74 65 78 74 24 0d 14 dc  3e c8 99 20 22 57 69 6d  |text$...>.. "Wim|
00003240  70 5f 52 65 70 6f 72 74  45 72 72 6f 72 22 2c 65  |p_ReportError",e|
00003250  72 72 6f 72 25 2c 66 6c  61 67 25 2c 22 42 41 53  |rror%,flag%,"BAS|
00003260  49 43 20 50 72 69 6e 74  22 20 b8 20 2c 72 65 70  |IC Print" . ,rep|
00003270  6c 79 25 0d 14 e6 0c 3d  20 72 65 70 6c 79 25 0d  |ly%....= reply%.|
00003280  14 f0 05 3a 0d 14 fa 11  dd 20 f2 69 6e 69 74 69  |...:..... .initi|
00003290  61 6c 69 73 65 0d 15 04  11 6d 69 6e 5f 43 36 25  |alise....min_C6%|
000032a0  20 3d 20 31 34 32 0d 15  0e 11 6d 61 78 5f 43 36  | = 142....max_C6|
000032b0  25 20 3d 20 31 34 33 0d  15 18 11 6d 69 6e 5f 43  |% = 143....min_C|
000032c0  37 25 20 3d 20 31 34 32  0d 15 22 11 6d 61 78 5f  |7% = 142..".max_|
000032d0  43 37 25 20 3d 20 31 35  35 0d 15 2c 11 6d 69 6e  |C7% = 155..,.min|
000032e0  5f 43 38 25 20 3d 20 31  34 32 0d 15 36 11 6d 61  |_C8% = 142..6.ma|
000032f0  78 5f 43 38 25 20 3d 20  31 36 33 0d 15 40 28 63  |x_C8% = 163..@(c|
00003300  68 61 6e 25 20 3d 20 8e  20 22 3c 42 61 73 50 72  |han% = . "<BasPr|
00003310  69 6e 74 24 44 69 72 3e  2e 54 6f 6b 65 6e 44 61  |int$Dir>.TokenDa|
00003320  74 61 22 0d 15 4a 10 c8  95 20 ac 20 c5 23 63 68  |ta"..J... . .#ch|
00003330  61 6e 25 0d 15 54 16 20  20 20 6c 69 6e 65 24 20  |an%..T.   line$ |
00003340  3d 20 be 23 63 68 61 6e  25 0d 15 5e 17 20 20 20  |= .#chan%..^.   |
00003350  68 65 78 24 20 3d 20 c0  6c 69 6e 65 24 2c 32 29  |hex$ = .line$,2)|
00003360  0d 15 68 35 20 20 20 c8  99 20 22 4f 53 5f 52 65  |..h5   .. "OS_Re|
00003370  61 64 55 6e 73 69 67 6e  65 64 22 2c 26 43 30 30  |adUnsigned",&C00|
00003380  30 30 30 31 30 2c 68 65  78 24 20 b8 20 2c 2c 74  |00010,hex$ . ,,t|
00003390  6f 6b 65 6e 25 0d 15 72  22 20 20 20 74 6f 6b 65  |oken%..r"   toke|
000033a0  6e 24 20 3d 20 c2 6c 69  6e 65 24 2c a9 28 6c 69  |n$ = .line$,.(li|
000033b0  6e 65 24 29 2d 36 29 0d  15 7c 12 20 20 20 c8 8e  |ne$)-6)..|.   ..|
000033c0  20 74 6f 6b 65 6e 25 20  ca 0d 15 86 0c 20 20 20  | token% .....   |
000033d0  c9 20 26 43 36 0d 15 90  1c 20 20 20 20 20 20 68  |. &C6....      h|
000033e0  65 78 24 20 3d 20 c1 6c  69 6e 65 24 2c 34 2c 32  |ex$ = .line$,4,2|
000033f0  29 0d 15 9a 38 20 20 20  20 20 20 c8 99 20 22 4f  |)...8      .. "O|
00003400  53 5f 52 65 61 64 55 6e  73 69 67 6e 65 64 22 2c  |S_ReadUnsigned",|
00003410  26 43 30 30 30 30 30 31  30 2c 68 65 78 24 20 b8  |&C0000010,hex$ .|
00003420  20 2c 2c 74 6f 6b 65 6e  25 0d 15 a4 28 20 20 20  | ,,token%...(   |
00003430  20 20 20 74 6f 6b 65 6e  5f 43 36 24 28 74 6f 6b  |   token_C6$(tok|
00003440  65 6e 25 2d 31 34 32 29  20 3d 20 74 6f 6b 65 6e  |en%-142) = token|
00003450  24 0d 15 ae 0c 20 20 20  c9 20 26 43 37 0d 15 b8  |$....   . &C7...|
00003460  1c 20 20 20 20 20 20 68  65 78 24 20 3d 20 c1 6c  |.      hex$ = .l|
00003470  69 6e 65 24 2c 34 2c 32  29 0d 15 c2 38 20 20 20  |ine$,4,2)...8   |
00003480  20 20 20 c8 99 20 22 4f  53 5f 52 65 61 64 55 6e  |   .. "OS_ReadUn|
00003490  73 69 67 6e 65 64 22 2c  26 43 30 30 30 30 30 31  |signed",&C000001|
000034a0  30 2c 68 65 78 24 20 b8  20 2c 2c 74 6f 6b 65 6e  |0,hex$ . ,,token|
000034b0  25 0d 15 cc 28 20 20 20  20 20 20 74 6f 6b 65 6e  |%...(      token|
000034c0  5f 43 37 24 28 74 6f 6b  65 6e 25 2d 31 34 32 29  |_C7$(token%-142)|
000034d0  20 3d 20 74 6f 6b 65 6e  24 0d 15 d6 0c 20 20 20  | = token$....   |
000034e0  c9 20 26 43 38 0d 15 e0  1c 20 20 20 20 20 20 68  |. &C8....      h|
000034f0  65 78 24 20 3d 20 c1 6c  69 6e 65 24 2c 34 2c 32  |ex$ = .line$,4,2|
00003500  29 0d 15 ea 38 20 20 20  20 20 20 c8 99 20 22 4f  |)...8      .. "O|
00003510  53 5f 52 65 61 64 55 6e  73 69 67 6e 65 64 22 2c  |S_ReadUnsigned",|
00003520  26 43 30 30 30 30 30 31  30 2c 68 65 78 24 20 b8  |&C0000010,hex$ .|
00003530  20 2c 2c 74 6f 6b 65 6e  25 0d 15 f4 28 20 20 20  | ,,token%...(   |
00003540  20 20 20 74 6f 6b 65 6e  5f 43 38 24 28 74 6f 6b  |   token_C8$(tok|
00003550  65 6e 25 2d 31 34 32 29  20 3d 20 74 6f 6b 65 6e  |en%-142) = token|
00003560  24 0d 15 fe 08 20 20 20  7f 0d 16 08 25 20 20 20  |$....   ....%   |
00003570  20 20 20 74 6f 6b 65 6e  24 28 74 6f 6b 65 6e 25  |   token$(token%|
00003580  2d 31 32 37 29 20 3d 20  74 6f 6b 65 6e 24 0d 16  |-127) = token$..|
00003590  12 08 20 20 20 cb 0d 16  1c 05 ce 0d 16 26 0b d9  |..   ........&..|
000035a0  23 63 68 61 6e 25 0d 16  30 26 63 68 61 6e 25 20  |#chan%..0&chan% |
000035b0  3d 20 8e 20 22 3c 42 61  73 50 72 69 6e 74 24 44  |= . "<BasPrint$D|
000035c0  69 72 3e 2e 43 68 6f 69  63 65 73 22 0d 16 3a 2f  |ir>.Choices"..:/|
000035d0  e8 23 63 68 61 6e 25 2c  70 72 69 6e 74 5f 74 61  |.#chan%,print_ta|
000035e0  73 6b 24 2c 61 75 74 6f  5f 70 72 69 6e 74 25 2c  |sk$,auto_print%,|
000035f0  70 61 67 65 5f 77 69 64  74 68 25 0d 16 44 0b d9  |page_width%..D..|
00003600  23 63 68 61 6e 25 0d 16  4e 10 f2 6d 6f 64 65 5f  |#chan%..N..mode_|
00003610  63 68 61 6e 67 65 0d 16  58 05 e1 0d 16 62 05 3a  |change..X....b.:|
00003620  0d 16 6c 1a dd 20 f2 70  72 65 70 61 72 65 5f 66  |..l.. .prepare_f|
00003630  69 6c 65 28 66 69 6c 65  24 29 0d 16 76 17 62 61  |ile(file$)..v.ba|
00003640  73 69 63 5f 66 69 6c 65  24 20 3d 20 66 69 6c 65  |sic_file$ = file|
00003650  24 0d 16 80 24 f2 67 65  74 5f 77 69 6e 64 6f 77  |$...$.get_window|
00003660  5f 73 74 61 74 65 28 73  70 6f 6f 6c 5f 77 69 6e  |_state(spool_win|
00003670  64 6f 77 25 29 0d 16 8a  52 f2 6f 70 65 6e 5f 77  |dow%)...R.open_w|
00003680  69 6e 64 6f 77 28 73 70  6f 6f 6c 5f 77 69 6e 64  |indow(spool_wind|
00003690  6f 77 25 2c 76 6d 69 6e  5f 78 25 2c 76 6d 69 6e  |ow%,vmin_x%,vmin|
000036a0  5f 79 25 2c 76 6d 61 78  5f 78 25 2c 76 6d 61 78  |_y%,vmax_x%,vmax|
000036b0  5f 79 25 2c 73 6f 66 66  5f 78 25 2c 73 6f 66 66  |_y%,soff_x%,soff|
000036c0  5f 79 25 2c 2d 31 29 0d  16 94 05 e1 0d 16 9e 05  |_y%,-1).........|
000036d0  3a 0d 16 a8 13 dd 20 f2  70 72 6f 63 65 73 73 5f  |:..... .process_|
000036e0  66 69 6c 65 0d 16 b2 07  ea 20 85 0d 16 bc 0e ee  |file..... ......|
000036f0  20 85 20 f2 65 72 72 6f  72 0d 16 c6 20 f2 63 6c  | . .error... .cl|
00003700  6f 73 65 5f 77 69 6e 64  6f 77 28 73 70 6f 6f 6c  |ose_window(spool|
00003710  5f 77 69 6e 64 6f 77 25  29 0d 16 d0 15 c8 99 20  |_window%)...... |
00003720  22 48 6f 75 72 67 6c 61  73 73 5f 4f 6e 22 0d 16  |"Hourglass_On"..|
00003730  da 0f 63 61 6e 63 65 6c  25 20 3d 20 a3 0d 16 e4  |..cancel% = ....|
00003740  0d 69 6e 63 68 25 20 3d  20 30 0d 16 ee 0d 6f 75  |.inch% = 0....ou|
00003750  63 68 25 20 3d 20 30 0d  16 f8 0e 73 74 61 67 65  |ch% = 0....stage|
00003760  25 20 3d 20 30 0d 17 02  05 f5 0d 17 0c 12 20 20  |% = 0.........  |
00003770  20 73 74 61 67 65 25 20  2b 3d 20 31 0d 17 16 12  | stage% += 1....|
00003780  20 20 20 c8 8e 20 73 74  61 67 65 25 20 ca 0d 17  |   .. stage% ...|
00003790  20 0a 20 20 20 c9 20 31  0d 17 2a 26 20 20 20 20  | .   . 1..*&    |
000037a0  20 20 69 6e 63 68 25 20  3d 20 a4 6f 70 65 6e 69  |  inch% = .openi|
000037b0  6e 28 62 61 73 69 63 5f  66 69 6c 65 24 29 0d 17  |n(basic_file$)..|
000037c0  34 13 20 20 20 20 20 20  73 69 7a 65 25 20 3d 20  |4.      size% = |
000037d0  30 0d 17 3e 0a 20 20 20  c9 20 32 0d 17 48 27 20  |0..>.   . 2..H' |
000037e0  20 20 20 20 20 6f 75 63  68 25 20 3d 20 a4 6f 70  |     ouch% = .op|
000037f0  65 6e 6f 75 74 28 73 70  6f 6f 6c 5f 66 69 6c 65  |enout(spool_file|
00003800  24 29 0d 17 52 0a 20 20  20 c9 20 33 0d 17 5c 16  |$)..R.   . 3..\.|
00003810  20 20 20 20 20 20 f2 62  61 73 69 63 5f 70 72 69  |      .basic_pri|
00003820  6e 74 0d 17 66 1c 20 20  20 20 20 20 d9 23 69 6e  |nt..f.      .#in|
00003830  63 68 25 3a 20 69 6e 63  68 25 20 3d 20 30 0d 17  |ch%: inch% = 0..|
00003840  70 1c 20 20 20 20 20 20  d9 23 6f 75 63 68 25 3a  |p.      .#ouch%:|
00003850  20 6f 75 63 68 25 20 3d  20 30 0d 17 7a 0a 20 20  | ouch% = 0..z.  |
00003860  20 c9 20 34 0d 17 84 30  20 20 20 20 20 20 e7 20  | . 4...0      . |
00003870  c0 73 70 6f 6f 6c 5f 66  69 6c 65 24 2c 31 32 29  |.spool_file$,12)|
00003880  20 3c 3e 20 22 3c 57 69  6d 70 24 53 63 72 61 70  | <> "<Wimp$Scrap|
00003890  3e 22 20 8c 0d 17 8e 2f  20 20 20 20 20 20 c8 99  |>" ..../      ..|
000038a0  20 22 4f 53 5f 46 69 6c  65 22 2c 31 38 2c 73 70  | "OS_File",18,sp|
000038b0  6f 6f 6c 5f 66 69 6c 65  24 2c 74 79 70 5f 74 65  |ool_file$,typ_te|
000038c0  78 74 25 0d 17 98 1c 20  20 20 20 20 20 20 20 20  |xt%....         |
000038d0  e7 20 61 75 74 6f 5f 70  72 69 6e 74 25 20 8c 0d  |. auto_print% ..|
000038e0  17 a2 1f 20 20 20 20 20  20 20 20 20 20 20 20 70  |...            p|
000038f0  72 69 6e 74 5f 66 69 6c  65 25 20 3d 20 b9 0d 17  |rint_file% = ...|
00003900  ac 29 20 20 20 20 20 20  20 20 20 20 20 20 70 6f  |.)            po|
00003910  6c 6c 25 20 3d 20 70 6f  6c 6c 25 20 80 20 26 46  |ll% = poll% . &F|
00003920  46 46 46 46 46 46 45 0d  17 b6 0e 20 20 20 20 20  |FFFFFFE....     |
00003930  20 20 20 20 cd 0d 17 c0  0b 20 20 20 20 20 20 cd  |    .....      .|
00003940  0d 17 ca 0a 20 20 20 c9  20 35 0d 17 d4 15 20 20  |....   . 5....  |
00003950  20 20 20 20 63 61 6e 63  65 6c 25 20 3d 20 b9 0d  |    cancel% = ..|
00003960  17 de 08 20 20 20 cb 0d  17 e8 0d fd 20 63 61 6e  |...   ...... can|
00003970  63 65 6c 25 0d 17 f2 21  e7 20 69 6e 63 68 25 20  |cel%...!. inch% |
00003980  8c 20 d9 23 69 6e 63 68  25 20 3a 20 69 6e 63 68  |. .#inch% : inch|
00003990  25 20 3d 20 30 0d 17 fc  21 e7 20 6f 75 63 68 25  |% = 0...!. ouch%|
000039a0  20 8c 20 d9 23 6f 75 63  68 25 20 3a 20 6f 75 63  | . .#ouch% : ouc|
000039b0  68 25 20 3d 20 30 0d 18  06 16 c8 99 20 22 48 6f  |h% = 0...... "Ho|
000039c0  75 72 67 6c 61 73 73 5f  4f 66 66 22 0d 18 10 05  |urglass_Off"....|
000039d0  e1 0d 18 1a 05 3a 0d 18  24 14 dd 20 a4 6f 70 65  |.....:..$.. .ope|
000039e0  6e 69 6e 28 66 69 6c 65  24 29 0d 18 2e 16 ee 20  |nin(file$)..... |
000039f0  85 20 ea 20 f2 65 72 72  6f 72 20 3a 20 3d 20 30  |. . .error : = 0|
00003a00  0d 18 38 13 63 68 61 6e  25 20 3d 20 8e 20 66 69  |..8.chan% = . fi|
00003a10  6c 65 24 0d 18 42 28 e7  20 63 68 61 6e 25 20 3d  |le$..B(. chan% =|
00003a20  20 30 20 8c 20 85 20 31  30 30 2c 22 46 69 6c 65  | 0 . . 100,"File|
00003a30  20 6e 6f 74 20 66 6f 75  6e 64 22 0d 18 4c 0b 3d  | not found"..L.=|
00003a40  20 63 68 61 6e 25 0d 18  56 05 3a 0d 18 60 15 dd  | chan%..V.:..`..|
00003a50  20 a4 6f 70 65 6e 6f 75  74 28 66 69 6c 65 24 29  | .openout(file$)|
00003a60  0d 18 6a 16 ee 20 85 20  ea 20 f2 65 72 72 6f 72  |..j.. . . .error|
00003a70  20 3a 20 3d 20 30 0d 18  74 13 63 68 61 6e 25 20  | : = 0..t.chan% |
00003a80  3d 20 ae 20 66 69 6c 65  24 0d 18 7e 0b 3d 20 63  |= . file$..~.= c|
00003a90  68 61 6e 25 0d 18 88 05  3a 0d 18 92 12 dd 20 f2  |han%....:..... .|
00003aa0  62 61 73 69 63 5f 70 72  69 6e 74 0d 18 9c 13 63  |basic_print....c|
00003ab0  68 61 72 25 20 3d 20 9a  23 69 6e 63 68 25 0d 18  |har% = .#inch%..|
00003ac0  a6 05 f5 0d 18 b0 16 20  20 20 63 68 61 72 25 20  |.......   char% |
00003ad0  3d 20 9a 23 69 6e 63 68  25 0d 18 ba 17 20 20 20  |= .#inch%....   |
00003ae0  e7 20 63 68 61 72 25 20  3c 3e 20 26 46 46 20 8c  |. char% <> &FF .|
00003af0  0d 18 c4 24 20 20 20 20  20 20 6c 69 6e 6f 25 20  |...$      lino% |
00003b00  3d 20 28 63 68 61 72 25  3c 3c 38 29 2b 9a 23 69  |= (char%<<8)+.#i|
00003b10  6e 63 68 25 0d 18 ce 1a  20 20 20 20 20 20 6c 69  |nch%....      li|
00003b20  6e 65 5f 6c 65 6e 67 74  68 25 20 3d 20 30 0d 18  |ne_length% = 0..|
00003b30  d8 28 20 20 20 20 20 20  f2 70 75 74 28 c2 22 20  |.(      .put(." |
00003b40  20 20 20 20 22 2b c3 28  6c 69 6e 6f 25 29 2c 35  |    "+.(lino%),5|
00003b50  29 2b 22 20 22 29 0d 18  e2 1d 20 20 20 20 20 20  |)+" ")....      |
00003b60  e7 20 6c 69 6e 6f 25 20  83 20 31 30 30 20 3d 20  |. lino% . 100 = |
00003b70  30 20 8c 0d 18 ec 27 20  20 20 20 20 20 20 20 20  |0 ....'         |
00003b80  70 63 25 20 3d 20 31 30  30 2a 73 69 7a 65 25 2f  |pc% = 100*size%/|
00003b90  66 69 6c 65 5f 73 69 7a  65 25 0d 18 f6 2a 20 20  |file_size%...*  |
00003ba0  20 20 20 20 20 20 20 c8  99 20 22 48 6f 75 72 67  |       .. "Hourg|
00003bb0  6c 61 73 73 5f 50 65 72  63 65 6e 74 61 67 65 22  |lass_Percentage"|
00003bc0  2c 70 63 25 0d 19 00 0b  20 20 20 20 20 20 cd 0d  |,pc%....      ..|
00003bd0  19 0a 19 20 20 20 20 20  20 63 68 61 72 25 20 3d  |...      char% =|
00003be0  20 9a 23 69 6e 63 68 25  0d 19 14 18 20 20 20 20  | .#inch%....    |
00003bf0  20 20 73 69 7a 65 25 20  2b 3d 20 63 68 61 72 25  |  size% += char%|
00003c00  0d 19 1e 19 20 20 20 20  20 20 6c 69 6e 65 24 20  |....      line$ |
00003c10  3d 20 be 23 69 6e 63 68  25 0d 19 28 13 20 20 20  |= .#inch%..(.   |
00003c20  20 20 20 6c 69 6e 65 25  20 3d 20 30 0d 19 32 15  |   line% = 0..2.|
00003c30  20 20 20 20 20 20 73 74  72 69 6e 67 25 20 3d 20  |      string% = |
00003c40  a3 0d 19 3c 1d 20 20 20  20 20 20 c8 95 20 6c 69  |...<.      .. li|
00003c50  6e 65 25 20 3c 20 a9 28  6c 69 6e 65 24 29 0d 19  |ne% < .(line$)..|
00003c60  46 17 20 20 20 20 20 20  20 20 20 6c 69 6e 65 25  |F.         line%|
00003c70  20 2b 3d 20 31 0d 19 50  27 20 20 20 20 20 20 20  | += 1..P'       |
00003c80  20 20 63 68 61 72 25 20  3d 20 97 28 c1 6c 69 6e  |  char% = .(.lin|
00003c90  65 24 2c 6c 69 6e 65 25  2c 31 29 29 0d 19 5a 19  |e$,line%,1))..Z.|
00003ca0  20 20 20 20 20 20 20 20  20 f2 74 6f 6b 65 6e 5f  |         .token_|
00003cb0  70 72 69 6e 74 0d 19 64  0b 20 20 20 20 20 20 ce  |print..d.      .|
00003cc0  0d 19 6e 16 20 20 20 20  20 20 f2 70 75 74 28 bd  |..n.      .put(.|
00003cd0  28 26 30 41 29 29 0d 19  78 08 20 20 20 cd 0d 19  |(&0A))..x.   ...|
00003ce0  82 25 fd 20 63 68 61 72  25 20 3d 20 26 46 46 20  |.%. char% = &FF |
00003cf0  84 20 c5 23 69 6e 63 68  25 20 84 20 63 61 6e 63  |. .#inch% . canc|
00003d00  65 6c 25 0d 19 8c 05 e1  0d 19 96 05 3a 0d 19 a0  |el%.........:...|
00003d10  12 dd 20 f2 74 6f 6b 65  6e 5f 70 72 69 6e 74 0d  |.. .token_print.|
00003d20  19 aa 27 e7 20 63 68 61  72 25 20 3d 20 26 32 32  |..'. char% = &22|
00003d30  20 8c 20 73 74 72 69 6e  67 25 20 3d 20 ac 20 73  | . string% = . s|
00003d40  74 72 69 6e 67 25 0d 19  b4 2f e7 20 63 68 61 72  |tring%.../. char|
00003d50  25 20 3c 20 31 32 37 20  84 20 73 74 72 69 6e 67  |% < 127 . string|
00003d60  25 20 8c 20 f2 70 75 74  28 bd 28 63 68 61 72 25  |% . .put(.(char%|
00003d70  29 29 3a 20 e1 0d 19 be  0e c8 8e 20 63 68 61 72  |)): ....... char|
00003d80  25 20 ca 0d 19 c8 09 c9  20 26 38 44 0d 19 d2 11  |% ...... &8D....|
00003d90  20 20 20 6c 69 6e 65 25  20 2b 3d 20 31 0d 19 dc  |   line% += 1...|
00003da0  20 20 20 20 6f 64 64 25  20 3d 20 97 28 c1 6c 69  |    odd% = .(.li|
00003db0  6e 65 24 2c 6c 69 6e 65  25 2c 31 29 29 0d 19 e6  |ne$,line%,1))...|
00003dc0  11 20 20 20 6c 69 6e 65  25 20 2b 3d 20 31 0d 19  |.   line% += 1..|
00003dd0  f0 20 20 20 20 6c 73 62  25 20 3d 20 97 28 c1 6c  |.    lsb% = .(.l|
00003de0  69 6e 65 24 2c 6c 69 6e  65 25 2c 31 29 29 0d 19  |ine$,line%,1))..|
00003df0  fa 11 20 20 20 6c 69 6e  65 25 20 2b 3d 20 31 0d  |..   line% += 1.|
00003e00  1a 04 20 20 20 20 6d 73  62 25 20 3d 20 97 28 c1  |..    msb% = .(.|
00003e10  6c 69 6e 65 24 2c 6c 69  6e 65 25 2c 31 29 29 0d  |line$,line%,1)).|
00003e20  1a 0e 44 20 20 20 6c 69  6e 6f 25 20 3d 20 28 6d  |..D   lino% = (m|
00003e30  73 62 25 3c 3c 38 20 84  20 6c 73 62 25 29 20 82  |sb%<<8 . lsb%) .|
00003e40  20 28 6f 64 64 25 20 80  20 26 33 30 29 3c 3c 32  | (odd% . &30)<<2|
00003e50  20 82 20 28 6f 64 64 25  20 80 20 26 30 43 29 3c  | . (odd% . &0C)<|
00003e60  3c 31 32 0d 1a 18 15 20  20 20 f2 70 75 74 28 c3  |<12....   .put(.|
00003e70  28 6c 69 6e 6f 25 29 29  0d 1a 22 09 c9 20 26 43  |(lino%))..".. &C|
00003e80  36 0d 1a 2c 11 20 20 20  6c 69 6e 65 25 20 2b 3d  |6..,.   line% +=|
00003e90  20 31 0d 1a 36 21 20 20  20 63 68 61 72 25 20 3d  | 1..6!   char% =|
00003ea0  20 97 28 c1 6c 69 6e 65  24 2c 6c 69 6e 65 25 2c  | .(.line$,line%,|
00003eb0  31 29 29 0d 1a 40 2c 20  20 20 e7 20 63 68 61 72  |1))..@,   . char|
00003ec0  25 20 3c 20 6d 69 6e 5f  43 36 25 20 84 20 63 68  |% < min_C6% . ch|
00003ed0  61 72 25 20 3e 20 6d 61  78 5f 43 36 25 20 8c 0d  |ar% > max_C6% ..|
00003ee0  1a 4a 21 20 20 20 20 20  20 f2 74 6f 6b 65 6e 5f  |.J!      .token_|
00003ef0  65 72 72 6f 72 28 26 43  36 2c 63 68 61 72 25 29  |error(&C6,char%)|
00003f00  0d 1a 54 08 20 20 20 cc  0d 1a 5e 28 20 20 20 20  |..T.   ...^(    |
00003f10  20 20 f2 70 75 74 28 74  6f 6b 65 6e 5f 43 36 24  |  .put(token_C6$|
00003f20  28 63 68 61 72 25 2d 6d  69 6e 5f 43 36 25 29 29  |(char%-min_C6%))|
00003f30  0d 1a 68 08 20 20 20 cd  0d 1a 72 09 c9 20 26 43  |..h.   ...r.. &C|
00003f40  37 0d 1a 7c 11 20 20 20  6c 69 6e 65 25 20 2b 3d  |7..|.   line% +=|
00003f50  20 31 0d 1a 86 21 20 20  20 63 68 61 72 25 20 3d  | 1...!   char% =|
00003f60  20 97 28 c1 6c 69 6e 65  24 2c 6c 69 6e 65 25 2c  | .(.line$,line%,|
00003f70  31 29 29 0d 1a 90 2c 20  20 20 e7 20 63 68 61 72  |1))...,   . char|
00003f80  25 20 3c 20 6d 69 6e 5f  43 37 25 20 84 20 63 68  |% < min_C7% . ch|
00003f90  61 72 25 20 3e 20 6d 61  78 5f 43 37 25 20 8c 0d  |ar% > max_C7% ..|
00003fa0  1a 9a 21 20 20 20 20 20  20 f2 74 6f 6b 65 6e 5f  |..!      .token_|
00003fb0  65 72 72 6f 72 28 26 43  37 2c 63 68 61 72 25 29  |error(&C7,char%)|
00003fc0  0d 1a a4 08 20 20 20 cc  0d 1a ae 28 20 20 20 20  |....   ....(    |
00003fd0  20 20 f2 70 75 74 28 74  6f 6b 65 6e 5f 43 37 24  |  .put(token_C7$|
00003fe0  28 63 68 61 72 25 2d 6d  69 6e 5f 43 37 25 29 29  |(char%-min_C7%))|
00003ff0  0d 1a b8 08 20 20 20 cd  0d 1a c2 09 c9 20 26 43  |....   ...... &C|
00004000  38 0d 1a cc 11 20 20 20  6c 69 6e 65 25 20 2b 3d  |8....   line% +=|
00004010  20 31 0d 1a d6 21 20 20  20 63 68 61 72 25 20 3d  | 1...!   char% =|
00004020  20 97 28 c1 6c 69 6e 65  24 2c 6c 69 6e 65 25 2c  | .(.line$,line%,|
00004030  31 29 29 0d 1a e0 2c 20  20 20 e7 20 63 68 61 72  |1))...,   . char|
00004040  25 20 3c 20 6d 69 6e 5f  43 38 25 20 84 20 63 68  |% < min_C8% . ch|
00004050  61 72 25 20 3e 20 6d 61  78 5f 43 38 25 20 8c 0d  |ar% > max_C8% ..|
00004060  1a ea 21 20 20 20 20 20  20 f2 74 6f 6b 65 6e 5f  |..!      .token_|
00004070  65 72 72 6f 72 28 26 43  38 2c 63 68 61 72 25 29  |error(&C8,char%)|
00004080  0d 1a f4 08 20 20 20 cc  0d 1a fe 28 20 20 20 20  |....   ....(    |
00004090  20 20 f2 70 75 74 28 74  6f 6b 65 6e 5f 43 38 24  |  .put(token_C8$|
000040a0  28 63 68 61 72 25 2d 6d  69 6e 5f 43 38 25 29 29  |(char%-min_C8%))|
000040b0  0d 1b 08 08 20 20 20 cd  0d 1b 12 05 7f 0d 1b 1c  |....   .........|
000040c0  21 20 20 20 74 6f 6b 65  6e 24 20 3d 20 74 6f 6b  |!   token$ = tok|
000040d0  65 6e 24 28 63 68 61 72  25 2d 31 32 37 29 0d 1b  |en$(char%-127)..|
000040e0  26 16 20 20 20 e7 20 74  6f 6b 65 6e 24 20 3d 20  |&.   . token$ = |
000040f0  22 22 20 8c 0d 1b 30 1f  20 20 20 20 20 20 f2 74  |"" ...0.      .t|
00004100  6f 6b 65 6e 5f 65 72 72  6f 72 28 30 2c 63 68 61  |oken_error(0,cha|
00004110  72 25 29 0d 1b 3a 08 20  20 20 cc 0d 1b 44 16 20  |r%)..:.   ...D. |
00004120  20 20 20 20 20 f2 70 75  74 28 74 6f 6b 65 6e 24  |     .put(token$|
00004130  29 0d 1b 4e 08 20 20 20  cd 0d 1b 58 05 cb 0d 1b  |)..N.   ...X....|
00004140  62 05 e1 0d 1b 6c 05 3a  0d 1b 76 11 dd 20 f2 70  |b....l.:..v.. .p|
00004150  75 74 28 74 65 78 74 24  29 0d 1b 80 1b 74 65 78  |ut(text$)....tex|
00004160  74 5f 6c 65 6e 67 74 68  25 20 3d 20 a9 28 74 65  |t_length% = .(te|
00004170  78 74 24 29 0d 1b 8a 2f  e7 20 6c 69 6e 65 5f 6c  |xt$).../. line_l|
00004180  65 6e 67 74 68 25 2b 74  65 78 74 5f 6c 65 6e 67  |ength%+text_leng|
00004190  74 68 25 20 3e 20 70 61  67 65 5f 77 69 64 74 68  |th% > page_width|
000041a0  25 20 8c 0d 1b 94 12 20  20 20 d5 23 6f 75 63 68  |% .....   .#ouch|
000041b0  25 2c 26 30 41 0d 1b 9e  1b 20 20 20 d5 23 6f 75  |%,&0A....   .#ou|
000041c0  63 68 25 2c 22 2e 2e 2e  20 20 20 20 20 20 22 3b  |ch%,"...      ";|
000041d0  0d 1b a8 17 20 20 20 6c  69 6e 65 5f 6c 65 6e 67  |....   line_leng|
000041e0  74 68 25 20 3d 20 39 0d  1b b2 05 cd 0d 1b bc 12  |th% = 9.........|
000041f0  d5 23 6f 75 63 68 25 2c  74 65 78 74 24 3b 0d 1b  |.#ouch%,text$;..|
00004200  c6 20 6c 69 6e 65 5f 6c  65 6e 67 74 68 25 20 2b  |. line_length% +|
00004210  3d 20 74 65 78 74 5f 6c  65 6e 67 74 68 25 0d 1b  |= text_length%..|
00004220  d0 05 e1 0d 1b da 05 3a  0d 1b e4 21 dd 20 f2 74  |.......:...!. .t|
00004230  6f 6b 65 6e 5f 65 72 72  6f 72 28 63 68 61 72 31  |oken_error(char1|
00004240  25 2c 63 68 61 72 32 25  29 0d 1b ee 17 65 72 72  |%,char2%)....err|
00004250  6f 72 24 20 3d 20 22 54  6f 6b 65 6e 20 5b 26 22  |or$ = "Token [&"|
00004260  0d 1b f8 2c e7 20 63 68  61 72 31 25 20 3e 20 30  |...,. char1% > 0|
00004270  20 8c 20 65 72 72 6f 72  24 20 2b 3d 20 c3 7e 28  | . error$ += .~(|
00004280  63 68 61 72 31 25 29 2b  22 2c 26 22 0d 1c 02 35  |char1%)+",&"...5|
00004290  65 72 72 6f 72 24 20 2b  3d 20 c3 7e 28 63 68 61  |error$ += .~(cha|
000042a0  72 32 25 29 2b 22 5d 3b  20 45 72 72 6f 72 20 61  |r2%)+"]; Error a|
000042b0  74 20 6c 69 6e 65 20 22  2b c3 28 6c 69 6e 6f 25  |t line "+.(lino%|
000042c0  29 0d 1c 0c 12 f2 71 75  65 72 79 28 65 72 72 6f  |).....query(erro|
000042d0  72 24 29 0d 1c 16 05 cd  0d 1c 20 05 e1 0d 1c 2a  |r$)....... ....*|
000042e0  05 3a 0d 1c 34 0c dd 20  f2 65 72 72 6f 72 0d 1c  |.:..4.. .error..|
000042f0  3e 35 72 65 70 6c 79 25  20 3d 20 a4 72 65 70 6f  |>5reply% = .repo|
00004300  72 74 5f 65 72 72 6f 72  28 9f 2c f6 24 2b 22 20  |rt_error(.,.$+" |
00004310  61 74 20 6c 69 6e 65 20  22 2b c3 28 9e 29 2c 26  |at line "+.(.),&|
00004320  30 31 29 0d 1c 48 0f 63  61 6e 63 65 6c 25 20 3d  |01)..H.cancel% =|
00004330  20 b9 0d 1c 52 05 e1 0d  1c 5c 05 3a 0d 1c 66 13  | ...R....\.:..f.|
00004340  dd 20 f2 71 75 65 72 79  28 74 65 78 74 24 29 0d  |. .query(text$).|
00004350  1c 70 2e 63 61 6e 63 65  6c 25 20 3d 20 28 a4 72  |.p.cancel% = (.r|
00004360  65 70 6f 72 74 5f 65 72  72 6f 72 28 30 2c 74 65  |eport_error(0,te|
00004370  78 74 24 2c 26 30 37 29  20 3d 20 32 29 0d 1c 7a  |xt$,&07) = 2)..z|
00004380  05 e1 0d 1c 84 05 3a 0d  1c 8e 16 dd 20 f2 66 69  |......:..... .fi|
00004390  6e 64 5f 70 72 69 6e 74  5f 74 61 73 6b 0d 1c 98  |nd_print_task...|
000043a0  13 70 72 69 6e 74 5f 74  61 73 6b 25 20 3d 20 30  |.print_task% = 0|
000043b0  0d 1c a2 29 c8 95 20 70  72 69 6e 74 5f 69 63 6f  |...).. print_ico|
000043c0  6e 25 20 3c 20 31 36 20  80 20 70 72 69 6e 74 5f  |n% < 16 . print_|
000043d0  74 61 73 6b 25 20 3d 20  30 0d 1c ac 17 20 20 20  |task% = 0....   |
000043e0  70 72 69 6e 74 5f 69 63  6f 6e 25 20 2b 3d 20 31  |print_icon% += 1|
000043f0  0d 1c b6 17 20 20 20 6d  73 67 62 6c 6b 25 21 30  |....   msgblk%!0|
00004400  20 20 3d 20 31 32 38 0d  1c c0 15 20 20 20 6d 73  |  = 128....   ms|
00004410  67 62 6c 6b 25 21 31 32  20 3d 20 30 0d 1c ca 46  |gblk%!12 = 0...F|
00004420  20 20 20 c8 99 20 22 57  69 6d 70 5f 53 65 6e 64  |   .. "Wimp_Send|
00004430  4d 65 73 73 61 67 65 22  2c 31 39 2c 6d 73 67 62  |Message",19,msgb|
00004440  6c 6b 25 2c 2d 32 2c 70  72 69 6e 74 5f 69 63 6f  |lk%,-2,print_ico|
00004450  6e 25 20 b8 20 2c 2c 70  72 69 6e 74 5f 74 61 73  |n% . ,,print_tas|
00004460  6b 25 0d 1c d4 05 ce 0d  1c de 18 e7 20 70 72 69  |k%.......... pri|
00004470  6e 74 5f 74 61 73 6b 25  20 3c 3e 20 30 20 8c 0d  |nt_task% <> 0 ..|
00004480  1c e8 17 20 20 20 6d 73  67 62 6c 6b 25 21 30 20  |...   msgblk%!0 |
00004490  20 3d 20 31 32 38 0d 1c  f2 15 20 20 20 6d 73 67  | = 128....   msg|
000044a0  62 6c 6b 25 21 31 32 20  3d 20 30 0d 1c fc 21 20  |blk%!12 = 0...! |
000044b0  20 20 6d 73 67 62 6c 6b  25 21 31 36 20 3d 20 6d  |  msgblk%!16 = m|
000044c0  73 67 5f 74 73 6b 6e 61  6d 72 71 25 0d 1d 06 1f  |sg_tsknamrq%....|
000044d0  20 20 20 6d 73 67 62 6c  6b 25 21 32 30 20 3d 20  |   msgblk%!20 = |
000044e0  70 72 69 6e 74 5f 74 61  73 6b 25 0d 1d 10 29 20  |print_task%...) |
000044f0  20 20 c8 99 20 22 57 69  6d 70 5f 53 65 6e 64 4d  |  .. "Wimp_SendM|
00004500  65 73 73 61 67 65 22 2c  31 37 2c 6d 73 67 62 6c  |essage",17,msgbl|
00004510  6b 25 2c 30 0d 1d 1a 05  cd 0d 1d 24 05 e1 0d 1d  |k%,0.......$....|
00004520  2e 05 3a 0d 1d 38 1d dd  20 f2 63 68 65 63 6b 5f  |..:..8.. .check_|
00004530  74 61 73 6b 5f 6e 61 6d  65 28 6e 61 6d 65 24 29  |task_name(name$)|
00004540  0d 1d 42 2c e7 20 c0 6e  61 6d 65 24 2c a9 28 70  |..B,. .name$,.(p|
00004550  72 69 6e 74 5f 74 61 73  6b 24 29 29 20 3d 20 70  |rint_task$)) = p|
00004560  72 69 6e 74 5f 74 61 73  6b 24 20 8c 0d 1d 4c 33  |rint_task$ ...L3|
00004570  20 20 20 6d 73 67 62 6c  6b 25 21 30 20 20 3d 20  |   msgblk%!0  = |
00004580  28 a9 28 73 70 6f 6f 6c  5f 66 69 6c 65 24 29 2b  |(.(spool_file$)+|
00004590  34 38 29 20 80 20 26 46  46 46 46 46 46 46 43 0d  |48) . &FFFFFFFC.|
000045a0  1d 56 15 20 20 20 6d 73  67 62 6c 6b 25 21 34 20  |.V.   msgblk%!4 |
000045b0  20 3d 20 30 0d 1d 60 15  20 20 20 6d 73 67 62 6c  | = 0..`.   msgbl|
000045c0  6b 25 21 38 20 20 3d 20  30 0d 1d 6a 15 20 20 20  |k%!8  = 0..j.   |
000045d0  6d 73 67 62 6c 6b 25 21  31 32 20 3d 20 30 0d 1d  |msgblk%!12 = 0..|
000045e0  74 21 20 20 20 6d 73 67  62 6c 6b 25 21 31 36 20  |t!   msgblk%!16 |
000045f0  3d 20 6d 73 67 5f 64 61  74 61 6c 6f 61 64 25 0d  |= msg_dataload%.|
00004600  1d 7e 16 20 20 20 6d 73  67 62 6c 6b 25 21 32 30  |.~.   msgblk%!20|
00004610  20 3d 20 2d 32 0d 1d 88  1f 20 20 20 6d 73 67 62  | = -2....   msgb|
00004620  6c 6b 25 21 32 34 20 3d  20 70 72 69 6e 74 5f 69  |lk%!24 = print_i|
00004630  63 6f 6e 25 0d 1d 92 15  20 20 20 6d 73 67 62 6c  |con%....   msgbl|
00004640  6b 25 21 32 38 20 3d 20  30 0d 1d 9c 15 20 20 20  |k%!28 = 0....   |
00004650  6d 73 67 62 6c 6b 25 21  33 32 20 3d 20 30 0d 1d  |msgblk%!32 = 0..|
00004660  a6 16 20 20 20 6d 73 67  62 6c 6b 25 21 33 36 20  |..   msgblk%!36 |
00004670  3d 20 2d 31 0d 1d b0 1d  20 20 20 6d 73 67 62 6c  |= -1....   msgbl|
00004680  6b 25 21 34 30 20 3d 20  74 79 70 5f 74 65 78 74  |k%!40 = typ_text|
00004690  25 0d 1d ba 22 20 20 20  24 28 6d 73 67 62 6c 6b  |%..."   $(msgblk|
000046a0  25 2b 34 34 29 20 3d 20  73 70 6f 6f 6c 5f 66 69  |%+44) = spool_fi|
000046b0  6c 65 24 0d 1d c4 33 20  20 20 c8 99 20 22 57 69  |le$...3   .. "Wi|
000046c0  6d 70 5f 53 65 6e 64 4d  65 73 73 61 67 65 22 2c  |mp_SendMessage",|
000046d0  31 37 2c 6d 73 67 62 6c  6b 25 2c 70 72 69 6e 74  |17,msgblk%,print|
000046e0  5f 74 61 73 6b 25 0d 1d  ce 05 cc 0d 1d d8 17 20  |_task%......... |
000046f0  20 20 f2 66 69 6e 64 5f  70 72 69 6e 74 5f 74 61  |  .find_print_ta|
00004700  73 6b 0d 1d e2 05 cd 0d  1d ec 05 e1 0d 1d f6 05  |sk..............|
00004710  3a 0d ff                                          |:..|
00004713