Home » Archimedes archive » Micro User » MU 1990-11.adf » PD-Stuff » Graphics/!Translatr/!RunImage
Graphics/!Translatr/!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 » Micro User » MU 1990-11.adf » PD-Stuff |
Filename: | Graphics/!Translatr/!RunImage |
Read OK: | ✔ |
File size: | 113F5 bytes |
Load address: | 0000 |
Exec address: | 0000 |
Duplicates
There is 1 duplicate copy of this file in the archive:
- Archimedes archive » Micro User » MU 1990-11.adf » PD-Stuff » Graphics/!Translatr/!RunImage
- Archimedes archive » Micro User » MU 1991-02.adf » PD-Stuff » Pictures/!Translatr/!RunImage
File contents
� >!RunImage K�������������������������������������������������������������������� K� Converts foreign graphics files to Archimedes (RISCWARE) (-� Version date : Sat,07 Jul 1990.11:59:46 2� � 1990 Zeridajh software <� by John Kortink FK�������������������������������������������������������������������� P1� � �0:�'"Error"''"'";�$;"' (code ";�;")"'':� Z:� menu1 &400,submenu1 &400,submenu2 &400,submenu3 &400 d,� window1 &100,window2 &100,window3 &200 n,� window4 &400,window5 &600,window6 &200 x/� iconsprites 2048,icondata 4096,icondend 0 �D� poll 256,block 256,err 256,wimppal 256,pointer 512,stroff 4096 �E� InPal%(256),ImgPal%(256),ShowPal%(256),UserModeSet%(4),File(10) �'� arg% 1024,dum% 1024,transtab% 256 �5� palrgb% 1024,hambas% 64,freq% 1024,outpal% 1024 �LProgneed%=120*1024:� Estimated space needed for program+vars (no sprbuf) �7Totalfree%=�-�:� Total free for program+vars+sprbuf �=Spritesize%=Totalfree%-Progneed%:� Free for sprite buffer �E�Spritesize%<1024 � � 1,"No room to start up Translator properly" �)� Sprite% Spritesize%:� Sprite buffer �(�initialise:� Initialise application �4�mode_change(-1):� Reselect current mode to tidy �-� � �error(�,�$+" (code "+Þ+")"):�iclose ���Spritesize%<80*1024 � �error(0,"WARNING ! I have only "+�(Spritesize%)+" bytes free for image handling. Press OK to continue with this tricky situation or CANCEL to quit (and reserve some more memory !)") � � Poll and action D�DataLoadRef% � pollmask%=48 � pollmask%=49:� No nulls if wasted Ȏ �poll(pollmask%) � "0 � 0 : �null:� Nothing to do, perform checks ,* � 1 : �redraw:� Redraw window request 6& � 2 : �open:� Open window request @( � 3 : �close:� Close window request J& � 6 : �mouseclick:� Mouse clicked T? � 7 : �dragdrop:� User has dropped drag box of file window ^ � 8 : �key:� Key pressed h1 � 9 : �menuselect:� Menu selection from user r+ � 17,18 : �message:� Message from WIMP |� �� � � ���menuselect �?ș WDecodeM%,,menu1,poll,�100," ") � ,,,select$:� Selection �-� Decode main/sub/subsub selection string �*menupath$=select$:� Remember menu path �Pselect2=�:select3=�:select4=�:select2$="":select3$="":select4$="":� Defaults ̽p%=�select$,"."):�p%>0 � select2=�:select2$=�select$,p%+1):select$=�select$,p%-1):p%=�select2$,"."):�p%>0 � select3=�:select3$=�select2$,p%+1):select2$=�select2$,p%-1):p%=�select3$,".") �G�p%>0 � select4=�:select4$=�select3$,p%+1):select3$=�select3$,p%-1) �4� Filter clicks on roots of entries with submenu �Ȏ menupath$ � �s � "Image info","Pop up","Processing","Zoom image","Mirror image","Save image","Status" : �select2 � select$="" �� � "Processing.Output mode","Processing.Output palette","Processing.Image number","Pop up.Mode set","Zoom.In","Zoom.Out","Processing.Scaling" : �select3 � select$="" L � "Processing.Scaling.x","Processing.Scaling.y" : �select4 � select$="" � Ȏ select$ � & � "" : � Do nothing 0 � "Quit" : � Quit program : �die:� Tidy up and exit D" � "Pop up" : � Pop up options N Ȏ select2$ � X: � "Auto mode" : � Toggle auto mode selection on/off b# AutoMode=�AutoMode:� Toggle l@ � "Auto palette" : � Toggle auto palette selection on/off v! AutoPal=�AutoPal:� Toggle �+ � "Mode set" : � Select new mode set � Ȏ �select3$,4) � �) � "Root" : � No selection (root) �+ � "None" : ModeSet=0:� No mode set �7 � "Norm" : ModeSet=1:� Normal monitor mode set �: � "Mult" : ModeSet=2:� Multisync monitor mode set �5 : � User mode set, check and if ok, change Ƙ s$=select3$:p%=�s$,","):�p%>0 � m1%=�s$:s$=�s$,p%+1):p%=�s$,","):�p%>0 � m2%=�s$:s$=�s$,p%+1):p%=�s$,","):�p%>0 � m3%=�s$:s$=�s$,p%+1):m4%=�s$ �� �p%>0 � UserModeSet%(1)=m1%:UserModeSet%(2)=m2%:UserModeSet%(3)=m3%:UserModeSet%(4)=m4%:ModeSet=3 � �error(-1,"Bad user mode set. Please use '<2colmode>,<4colmode>,<16colmode>,<256colmode>', e.g. '1,2,3,4'.") � � �% �submenu("Pop up.Mode set",�) �) � "Auto zoom" : � Toggle auto zoom �# AutoZoom=�AutoZoom:� Toggle � �submenu("Pop up",�) * � "Processing" : � Processing options Ȏ select2$ � *1 � "Clear output" : � Clear output file off 4: �ClearFile � ș "OS_File",6,ClearSave$:ClearFile=� >7 � "Output mode" : � Change output mode selection H0 �select3$="Auto" � OutMode=1 � OutMode=2 R, �submenu("Processing.Output mode",�) \= � "Output palette" : � Change output palette selection fR �select3$="Current" � OutPal=1 � �select3$="Default" � OutPal=2 � OutPal=3 p/ �submenu("Processing.Output palette",�) z+ � "Scaling" : � Change scale factors � Ȏ select3$ � �2 � "1:1" : XMul%=1:YMul%=1:XDiv%=1:YDiv%=1 �u � "x","y" : mul%=-1:div%=-1:s$=select4$:p%=�s$,":"):�p%>0 � mul%=�s$:s$=�s$,p%+1):div%=�s$:� Get new factors �, �(mul%<=0)�(div%<=0)�(mul%>div%) � �W �error(-1,"Please enter <mul>:<div>, where <mul> is not greater than <div>") �b � �select3$="x" � XMul%=mul%:XDiv%=div% � YMul%=mul%:YDiv%=div%:� Update scaling factors � � � � �( �submenu("Processing.Scaling",�) �< � "Error spreading" : � Toggle error spreading on/off �% ErrSpread=�ErrSpread:� Toggle �5 � "Black and white" : � Toggle black and white � BlackWhite=�BlackWhite % � "Zig zag" : � Toggle zig zag ZigZag=�ZigZag 5 � "Screen blanking" : � Toggle screen blanking $ Blanking=�Blanking .. � "Invert RGB" : � Toggle RGB inverting 8 InvertRGB=�InvertRGB B' � "GIF scan" : � Toggle GIF scan L GIFScan=�GIFScan V( � "Image number" : � Image number `9 ImageNr%=�(select3$):� New value for image number j- �submenu("Processing.Image number",�) t � ~ �submenu("Processing",�) �1 � "Zoom image" : � Zoom in, out, normal size �? OldZoomX=ZoomX:OldZoomY=ZoomY:� Remember old zoom factors � Ȏ select2$ � �} � "In": �select3$="Both" � ZoomX=ZoomX*2:ZoomY=ZoomY*2 � �select3$="x" � ZoomX=ZoomX*2 � �select3$="y" � ZoomY=ZoomY*2 �~ � "Out": �select3$="Both" � ZoomX=ZoomX/2:ZoomY=ZoomY/2 � �select3$="x" � ZoomX=ZoomX/2 � �select3$="y" � ZoomY=ZoomY/2 � � "1:1": ZoomX=1:ZoomY=1 � � �J � Set image window extent and title according to current zoom factor �A !block=0:block!4=0:block!8=�sprW*ZoomX:block!12=�sprH*ZoomY �A ș WSetE%,win_img%,block:� Set window extent to zoomed size �& $IMWtt%=�image_title:� New title �@ !block=win_img%:ș WGetWS%,,block:� Read window's position J dx%=(block!12-block!4)/2:dy%=(block!16-block!8)/2:� Half window size F vx%=block!20+dx%:vy%=block!24-dy%:� Vector from centre to origin G � Calculate new scroll offsets by scaling vector and re-transpose E block!20=vx%*ZoomX/OldZoomX-dx%:block!24=vy%*ZoomY/OldZoomY+dy% (: �close_window(win_img%):�open_window(win_img%,block) 2 �submenu("Zoom image",�) <3 � "Save image" : � Save whole or part of image F0 SaveKind$=select2$:� Remember type of save PF $SAVfn%=SaveSpr$:$SAVsn%="file_ff9":� Set file window for sprite Z2 �open_window(win_file%,0):� Open file window d7 � "Include palette" : � Toggle save-palette on/off n! Palonoff=�Palonoff:� Toggle x/ � "Image palette" : � Select image palette � �set_palette(1) �' � "Rotate image" : � Rotate sprite � �hour_on:� Hourglass on �4 ș "Translator_Rotate",SprPtr%:� Rotate sprite � �hour_off:� Hourglass off �> �sprite_header(1):Ȕ SprH%,SprW%:� Set sprite info right �@ �new_image_window:�new_window(win_img%):� New image window �& � "Mirror image" : � Mirror image �9 �var("widt",SprW%):�var("heig",SprH%):� Module info � �hour_on:� Hourglass on �g �select2$="x" � ș "Translator_MirrorX",SprPtr% � ș "Translator_MirrorY",SprPtr%:� Mirror sprite � �hour_off:� Hourglass off �2 �new_window(win_img%):� Freshen image window ' � "Status" : � Manipulate defaults Ȏ select2$ � � � "Save" : Status=�("<Translator$Dir>.Status"):�#Status,AutoMode,AutoPal,ModeSet,ErrSpread,Palonoff,UserModeSet%(1),UserModeSet%(2),UserModeSet%(3),UserModeSet%(4),AutoZoom,BlackWhite,GIFScan,Blanking,InvertRGB " �#Status,ZigZag:�#Status ,b � "Load" : �load_status � �error(-1,"I cannot find my status file ! Have you saved one ?") 6: � "Kill" : ș "OS_File",6,"<Translator$Dir>.Status" @ � J� T(ș WGetPI%,,block:� Get pointer info ^;�((block!8)�1)>0 � �options_menu(�):� Adjust -> re-open h� r |��close �win%=poll!0:� Window handle �&�close_window(win%):� Close window �O�win%=win_img% � �invalidate_image:�set_palette(0):�close_window(win_file%) �� � � ��open ��open_window(0,poll) �� � ���redraw ��redraw_window(poll!0,�) �� � ��null �DataLoadRef% � D DataLoadRef%=�:ș "OS_File",6,Save$:� Delete file saved/created &C �error(-1,"Bad data transfer, receiver dead"):� No DataLoadAck 0� :� D N ��key XEwin%=poll!0:ico%=poll!4:char%=poll!24:� Window, icon, key pressed b"�(win%=win_file%) � (ico%=1) � l Ȏ char% � v � 13 : � Return pressed �J �error(-1,"Please drag the sprite file icon to a directory viewer") � � 27 : � Escape pressed � �close_window(win_file%) � � �� �� � � ��message �-� Ignore messages originating from myself �6�(poll!4)=TaskHandle% � msgnr%=-1 � msgnr%=poll!16 �Ȏ msgnr% � � � -1 : � Don't react �+ � 0 : �die:� Request to terminate task . � 1 : � DataSave, transfer via scrap file 7 scrap$=�OSvar("Wimp$Scrap"):� Read scrap filename � �scrap$<>"" � poll!12=poll!8:poll!16=2:poll!36=-1:$(poll+44)=scrap$+�0:poll!0=44+(�scrap$+1+3)��3:ș WSendMsg%,18,poll,poll!4 � �error(-1,"Wimp$Scrap not defined"):� Send DataSaveAck if scrap file defined # � 2 : � DataSaveAck, save file * �poll!12=DataSaveRef% � 4I Save$=�string(poll+44):� Full pathname of file to be saved/created >. � Save sprite file or 'open' Clear file H� �$SAVsn%="file_ff9" � SprSave$=Save$:�save_sprite(SprSave$) � ClearSave$=Save$:ș "OS_File",11,ClearSave$,&690,0,0:ClearFile=� R? poll!12=poll!8:poll!16=3:� Amend data block for DataLoad \2 ș WSendMsg%,18,poll,poll!4:� Send DataLoad f@ DataLoadRef%=poll!8:� Await a DataLoadAck, remember myref p � z. � 3,5 : � DataLoad/Open : attempt to load � type%=poll!40:� Filetype �' name$=�string(poll+44):� Filename � Ȏ type% � �O � &690,&691,&692,&693,&694,&695,&696,&697,&698,&FF0 : �load(type%,name$) �B � &FF9,&DE2,&DFA,&D58,&004 : �msgnr%=3 � �load(type%,name$) �@ : � Filetype not recognized, look at contents if dragged � �msgnr%=3 � �S Head=�(name$):id$="":� i%=1 � 12:id$+=�(�#Head):�:�#Head:� Get head of file �) type%=-1:� No recognized type yet �Z �id$,6)="GIF87a" � type%=&695 � �(�id$,4)="FORM") � (�id$,4)="ILBM") � type%=&693 �m �type%=-1 � �id$,4)=�&59+�&A6+�&6A+�&95 � type%=&696 � �(�id$,2)="II") � (�id$,2)="MM") � type%=&FF0 � �type%>0 � ș "OS_CLI","SetType "+name$+" "+�~(type%):�load(type%,name$) � �error(-1,"I don't recognize this file. Please filetype it appropiately."):� Filetype and load or complain � � � ) � 4 : � DataLoadAck, check or ignore < �DataLoadRef% � �poll!12=DataLoadRef% � DataLoadRef%=� $! � &400C0 : � Submenu warning .G pointer%=poll!20:x%=poll!24:y%=poll!28:� Get pointer/proposed x/y 8A ș WDecodeM%,,menu1,poll+32,�100," ") � ,,,path$:� Get path B Ȏ path$ � L� � "Processing.Clear output" : $SAVfn%=SaveClear$:$SAVsn%="file_690":ș WCreateSM%,,pointer%,x%,y%:� Open file window for Clear file Vd � "Image info","Info","Filetypes","Processing.RGB resolution" : ș WCreateSM%,,pointer%,x%,y% ` : �submenu(path$,�) j � t@ � &400C1 : � Mode has changed (and it may not have been me) ~ �mode_change(-1):� Tidy up �6 � &CCE00 : � Other Translator asks to kill module �> poll!12=poll!8:ș WSendMsg%,19,poll,poll!4:� Hands off ! �� �� � ���mouseclick �?but%=poll!8:win%=poll!12:ico%=poll!16:� Buttons/window/icon � Ȏ win% � � � -2 : � Click on iconbar � �ico%=Iiconbar% � � � Iconbar icon clicked � Ȏ but% � 7 � � � 2 : �create_menu(-1,0,"Translator",10*16,40,0," Info"+"#"+�(win_info%)+"| Filetypes"+"#"+�(win_filet%)+"| Quit|","",�) � 1,4 : �options_menu(�) � � () � win_img% : � Click on image window 2 Ȏ but% � 7 � <8 � 2 : �options_menu(�):� Menu button, pop up menu F � P) � win_file% : � Click on file window Z �ico%=0 � d Ȏ but% � &7F � n9 � 16,64 : � Drag,calculate drag box and create it x� !block=win%:ș WGetWS%,,block:x%=block!4:y%=block!8:block!4=ico%:ș WGetIS%,,block:!block=win%:block!4=5:block!8+=x%:block!12+=y%:block!16=block!8+68:block!20=block!12+68:block!24=0:block!28=0:block!32=ScrW%:block!36=ScrH% �, ș WDragB%,,block:� Create drag box � � � � �/ � win_rgbbits% : � RGB slider manipulation �� !block=win%:ș WGetWS%,,block:x%=block!4:y%=block!8:block!4=ico%:ș WGetIS%,,block:x%+=block!8+2:y%+=block!12+8:� Position in slider icon �F mx%=!poll:dx%=mx%-x%-8:val%=dx% � 16:�val%>8 � val%=8:� Position �� �ico%=3 � col%=11:sn$="R":bit%=16 � �ico%=4 � col%=10:sn$="G":bit%=8 � col%=8:sn$="B":bit%=0:� Slider colours, names, bitoffsets �$ � Plot slider in slider sprite �~ ș OSSpop%,60+256,iconsprites,"slider"+sn$,0 � r0,r1,r2,r3:�0,0:ȓ Ȑ 2,8,8*16,16:�0,col%:�val%>0 � ȓ Ȑ 2,8,val%*16,16 �2 ș OSSpop%,r0,r1,r2,r3:� Restore VDU context � RGBbits%=(RGBbits% � � (255<<bit%)) � (val%<<bit%):!block=win%:block!4=ico%:block!8=0:block!12=0:ș WSetIS%,,block:� Update code and icon �� �� ��dragdrop !ș WCreateM%,,-1:� Close menu ",ș WGetPI%,,block:� Get pointer position ,Gdropwin%=block!12:dropico%=block!16:� Window/icon where box dropped 6(save$=�string(SAVfn%):� Get leafname @o�$SAVsn%="file_ff9" � SaveSpr$=save$:ft%=&FF9 � SaveClear$=save$:ft%=&690:� Remember leafname, set filetype J�block!20=block!12:block!24=block!16:block!28=block!0:block!32=block!4:block!12=0:block!16=1:block!36=0:block!40=ft%:$(block+44)=save$+�0:!block=(44+�save$+4)��3 T;ș WSendMsg%,17,block,dropwin%,dropico%:� Send DataSave ^6DataSaveRef%=block!8:� Remember myref for DataSave h0�close_window(win_file%):� Close file window r� | ���load(type%,name$) �� Loads image file �Kpoll!12=poll!8:poll!16=4:ș WSendMsg%,17,poll,poll!4:� Send DataLoadAck �Load$=name$:� Filename �{pos%=�Load$:� pos%-=1:period=(�Load$,pos%,1)="."):� (pos%=1) � period:�period � Leaf$=�Load$,�Load$-pos%) � Leaf$=Load$ �5ș "OS_File",17,Load$ � ,,,,Flen%:� File's length � File(1)=�(Load$):� Open file �9�var("fhan",File(1)):�var("fptr",0):� REM Module info �'iType%=0:� Default input byte order ��hour_on:� Hourglass on �?�win_img%>0 � �close_window(win_img%):� Old image discarded �?�invalidate_image:� New image to come, invalidate old image �Ȏ type% � � � &FF9 : p%=�"."+�upstring(name$),".HIP."):�p%>0 � loppath$=name$:�loppath$,p%,3)="LOP":File(2)=�(loppath$):�File(2)=0 � �error(-1,"I cannot find the ArVis LOP file !"):� b �p%=0 � Ok=�pic_ARC � �var("fha2",File(2)):�var("fpt2",0):Ok=�pic_ARVIS:� What's this then ? � &DE2 : Ok=�pic_PROART & � &DFA : Ok=�pic_WATFORD 0 � &D58 : Ok=�pic_RENDER : � &004 : Ok=�pic_AIM D � &690 : Ok=�pic_CLEAR N � &691 : Ok=�pic_DEGAS X � &692 : Ok=�pic_IMG b � &693 : Ok=�pic_IFF l � &694 : Ok=�pic_MAC v � &695 : Ok=�pic_GIF � � &696 : Ok=�pic_SUN � � &697 : Ok=�pic_PCX � � &698 : Ok=�pic_QRT � � &FF0 : Ok=�pic_TIFF �� �$Img=Ok:� Image ok if all is well ��hour_off:� Hourglass off ��iclose:� Close input files � �Img � �, �set_mode(ImgMode%):� Select image mode �) ZoomX=1:ZoomY=1:� Reset zoom factors �A �AutoPal � �set_palette(1):� Select image palette if enabled �- �new_image_window:� Open window on image � � ��save_sprite(out$) *� Saves image as spritefile 4Ȏ SaveKind$ � >1 � "Full" : � Full resolution sprite, no edit H � "Whole" : �edit_part(�,�) R) � "Whole (scaled)" : �edit_part(�,�) \ � "Part" : �edit_part(�,�) f( � "Part (scaled)" : �edit_part(�,�) p� z�hour_on:� Hourglass on ��SaveKind$="Full" � �8 � Full sprite, save image with palette (optionally) �# Out=�(out$):� Open output file �- spr%=Sprite%+Sprite%!8:� Start of sprite �, cols%=2^SprColbits%:� Colours in sprite � �Palonoff � (cols%<>256) � �" � Save with palette included �. extra%=cols%*8:� Extra bytes for palette �E ș "OS_GBPB",1,Out,Sprite%+4,8,0:� Output part of control block �D !arg%=extra%+Sprite%!12:ș "OS_GBPB",2,Out,arg%,4:� New offset �? !arg%=extra%+!spr%:ș "OS_GBPB",2,Out,arg%,4:� New offset �A ș "OS_GBPB",2,Out,spr%+4,28:� Output part of sprite header �A !arg%=extra%+spr%!32:ș "OS_GBPB",2,Out,arg%,4:� New offset A !arg%=extra%+spr%!36:ș "OS_GBPB",2,Out,arg%,4:� New offset 9 ș "OS_GBPB",2,Out,spr%+40,4:� Output sprite's mode � � c%=1 � cols%:arg%!(c%*8-8)=�readpalval(ImgPal%(c%)):arg%!(c%*8-4)=arg%!(c%*8-8):�:ș "OS_GBPB",2,Out,arg%,cols%*8:� Output palette $F ș "OS_GBPB",2,Out,spr%+spr%!32,(spr%!16+1)*(spr%!20+1)*4:� Data .) � � No palette, output the whole lot 8> ș "OS_GBPB",1,Out,Sprite%+4,Sprite%!12-4,0:� Output all B � L? �#Out:ș "OS_CLI","SetType "+out$+" Sprite":� Close & type V0� � Edited part in window on screen, save it `( �invalidate_screen:� Screen invalid j �Palonoff � pal%=1 � pal%=0 t4 ș OSSpop%,2,,out$,pal%:� Save screen in window ~/ �24,0;0;ScrW%;ScrH%;:� Reset screen window �� ��hour_off:� Hourglass off �� � �ݤpic_DEGAS �/� Makes Atari Degas image (PI1/2/3,PC1/2/3) �+iType%=0:� Set low-to-high type of data �9compr%=�i1(1):res%=�i1(1):� Flags, resolution (1/2/3) �7compressed=((compr%�%10000000)>0):� Compressed flag �#total%=32000:� Total data bytes � Ȏ res% � �) � 0 : xres%=320:yres%=200:colbits%=4 ) � 1 : xres%=640:yres%=200:colbits%=2 ) � 2 : xres%=640:yres%=400:colbits%=1 � +colours%=2^colbits%:� Number of colours (6mode%=�mode(xres%,yres%,colours%):� Determine mode 2)�new_image(mode%,xres%,yres%,0) � =� <-�iget(1,dum%,32):� Read palette from file F�InPal%(0)=colbits%:� c%=0 � colours%-1:v%=dum%!(c%*2):r%=(v%�7)*32:g%=((v%>>12)�7)*32:b%=((v%>>8)�7)*32:InPal%(colours%-c%)=(r%<<16)+(g%<<8)+b%:� P[�compressed � compr$="Run length":type$="PC"+�(res%+1) � compr$="":type$="PI"+�(res%+1) Z\�image_info("Atari Degas "+type$,xres%,yres%,0,colbits%,mode%,compr$,"",Flen%-34,total%) du�var("comp",compressed):�var("rest",res%):�var("widt",xres%):�var("heig",yres%):�var("fptr",&22):�unpack("DEGAS") nImgMode%=mode%:=� x � ݤpic_IMG �� Makes Atari IMG image �+iType%=1:� Set high-to-low type of data �Qversion%=�i2(1):headlen%=�i2(1):nplanes%=�i2(1):� Version, headlength, planes �Qpatlen%=�i2(1):pw%=�i2(1):ph%=�i2(1):� Pattern length, pixel width and height �=width%=�i2(1):height%=�i2(1):� Width and height in pixels �+colours%=2^nplanes%:� Number of colours ��colours%<>2 � patlen%<>2 � �error(-1,"I cannot display Atari IMG images with more than 2 colours or patternlength<>2 !"):� �9mode%=�mode(width%,height%,colours%):� Determine mode �,�new_image(mode%,width%,height%,0) � =� �BInPal%(0)=nplanes%:InPal%(1)=0:InPal%(2)=&FFFFFF:� Set palette �{�image_info("Atari IMG",width%,height%,0,nplanes%,mode%,"Several ways","",Flen%-headlen%*2,(width%*height%*nplanes%)�8) �S�var("widt",width%):�var("heig",height%):�var("fptr",headlen%*2):�unpack("IMG") ImgMode%=mode%:=� ݤpic_MAC "$� Makes MacIntosh MacPaint image ,2width%=576:height%=720:colbits%=1:� Resolution 6;mode%=�mode(width%,height%,2^colbits%):� Determine mode @,�new_image(mode%,width%,height%,0) � =� JBInPal%(0)=colbits%:InPal%(1)=0:InPal%(2)=&FFFFFF:� Set palette Tk�image_info("MacIntosh MacPaint",width%,height%,0,colbits%,mode%,"Run length","",Flen%-640,(576*720)�8) ^L�var("widt",width%):�var("heig",height%):�var("fptr",640):�unpack("MAC") hImgMode%=mode%:=� r | ݤpic_IFF �� Makes Amiga IFF image �%bmhd=�:cmap=�:body=�:� Init flags �2ham=�:lace=�:hires=�:halfbright=�:� Init flags �+iType%=1:� Set high-to-low type of data �2� Check if this is a standard IFF picture file ��form$=�istring(1,4):�iskip(1,4):form$+=�istring(1,4):�form$<>"FORMILBM" � �error(-1,"This screen file is not an IFF screen file !"):=� �)� � Follow BMHD,CMAP and BODY headers �7head$=�istring(1,4):hlen%=�i4(1):startptr%=�iptr(1) �Ȏ head$ � �& � "BMHD" : bmhd=�:� Bitmap header �= � Read picture/screen width, height, colours, etc. �N width%=�i2(1):height%=�i2(1):�iskip(1,4):planes%=�i1(1):�iskip(1,1) �M compressed=(�i1(1)=1):�iskip(1,5):s_width%=�i2(1):s_height%=�i2(1) @ � "CAMG" : flags%=�i4(1):� Get flag bits, set flags from it 5 ham=((flags%�&800)>0):lace=((flags%�&4)>0) ? hires=((flags%�&8000)>0):halfbright=((flags%�&80)>0) &- � "CMAP" : cmap=�:� Colour map (palette) 0B paldefs%=hlen%�3:� Number of palette colour definitions :4 � _%=0 � paldefs%-1:InPal%(_%+1)=�i3(1):� D$ � "BODY" : body=�:� Screen data N) � Check if all parts are there X� �bmhd � �error(-1,"IFF error : I did not find a 'BMHD' block. Cannot proceed !"):� �:=� � �cmap � �error(-1,"IFF error : I did not find a 'CMAP' block. Cannot proceed !"):� �:=� b6 � Determine suitable Archimedes screen mode l �ham � v� mode%=�mode(320,s_height%,256):colbits%=12:info$="HAM (Hold And Modify)":InPal%(0)=colbits%:� c%=0 � 15:hambas%!(c%<<2)=InPal%(c%+1):�:�var("hamb",hambas%) �t � colours%=2^planes%:mode%=�mode(s_width%,s_height%,colours%):colbits%=planes%:InPal%(0)=planes%:info$="" �x �halfbright � info$="Half-bright":half%=colours%�2:� c%=1 � half%:InPal%(c%+half%)=(InPal%(c%)�&E0E0E0)>>1:� � � �3 �new_image(mode%,width%,height%,0) � =� �8 �compressed � compr$="Run length" � compr$="" �& �colbits%>8 � ci%=2 � ci%=0 �| �image_info("Amiga IFF",width%,height%,ci%,colbits%,mode%,compr$,info$,Flen%-�iptr(1),(width%*height%*planes%)�8) �1 �ham � �var("scty",1) � �var("scty",0) Ѕ �var("fptr",�iptr(1)):�var("plan",planes%):�var("widt",width%):�var("heig",height%):�var("comp",compressed):�unpack("IFF") � ImgMode%=mode% �� �9�iskip(1,hlen%-(�iptr(1)-startptr%)):� To next header � � body =� ݤpic_GIF 3� Makes GIF (Graphics Interchange Format) image *&� g_InPal%(),Pic_ptr%(),Pic_len%() 4/� g_InPal%(256),Pic_ptr%(256),Pic_len%(256) >+iType%=0:� Set low-to-high type of data H1signature$=�istring(1,6):� Read GIF signature RX�signature$,3)<>"GIF" � �error(-1,"This screen file is not a GIF screen file !"):=� \$� Read data in Screen Descriptor f2r_width%=�i2(1):r_height%=�i2(1):� Raster size pDflags%=�i1(1):backgr%=�i1(1):�iskip(1,1):� Flags and back colour z;global=((flags%�&80)>0):� Global colour map following ? �3g_pixbits%=(flags%�7)+1:� Global bits per pixel �:colbits%=((flags%>>4)�7)+1:� Bits of colour resolution � �global � �j � c%=1 � 2^g_pixbits%:g_InPal%(c%)=(�i1(1)<<16)+(�i1(1)<<8)+�i1(1):�:� Read Global Colour Map palette �- g_InPal%(0)=g_pixbits%:� Palette entries �%� InPal%(0)=-1:� No palette found �� �)� Scan data for pictures, make a list �picture%=0:� �?�skip_GIF_extension:� Skip extension blocks preceding Image �&� Search for next Image Descriptor �F� _%=�i1(1):image=(_%=�","):end=(_%=�";"):� image � end � �ieof(1) �~�image � �end � �error(-1,"Warning ! GIF file is not properly terminated !"):end=�:�hour_off:�hour_on:� Read beyond file �image � " � Register picture's position . picture%+=1:Pic_ptr%(picture%)=�iptr(1)-1 $j �iskip(1,8):_%=�i1(1):�(_%�&80)>0 � �iskip(1,3*2^((_%�7)+1)):� If there's a local colour map, skip it . �GIFScan � 80 � Determine picture data length, skip data B1 �iskip(1,1):� c%=�i1(1):�iskip(1,c%):� c%=0 L4 Pic_len%(picture%)=�iptr(1)-Pic_ptr%(picture%) V; � Pic_len%(picture%)=�ilen(1)-Pic_ptr%(picture%):end=� ` � j� t � end ~1pictures%=picture%:� Number of pictures found �N�pictures%>0 � �error(-1,"I cannot find any images in this GIF file !"):=� ��GIFScan � �� �(ImageNr%>0) � (ImageNr%<=pictures%) � picture%=ImageNr% � �error(-1,"This file contains "+�(pictures%)+" images. Select '1'-'"+�(pictures%)+"' in the 'Image number' submenu !"):=� �� picture%=1 �� �I�iptr(1,Pic_ptr%(picture%)+1):len%=Pic_len%(picture%):� Pic pos & len � � Read Image Descriptor data �4i_left%=�i2(1):i_top%=�i2(1):� Position in frame �Ci_width%=�i2(1):i_height%=�i2(1):flags%=�i1(1):� Size and flags �7local=(flags%�&80)>0:� Local colour map following ? �<ibit=(flags%�&40)>0:� Image stored in interlaced order ? �2l_pixbits%=(flags%�7)+1:� Local bits per pixel �local � @ pixbits%=l_pixbits%:� Read and use Local Colour Map palette V � c%=1 � 2^l_pixbits%:InPal%(c%)=(�i1(1)<<16)+(�i1(1)<<8)+�i1(1):�:� Read palette + InPal%(0)=l_pixbits%:� Palette entries (?� pixbits%=g_pixbits%:InPal%()=g_InPal%():� Use Global data 2� <N�InPal%(0)=-1 � �error(-1,"I cannot find a palette in this GIF file !"):=� F+colours%=2^pixbits%:� Number of colours P/� Determine suitable Archimedes screen mode Z=mode%=�mode(r_width%,r_height%,colours%):� Determine mode d;� Room needed for decompression data and de-interlacing nd�pixbits%<=2 � rbits%=pixbits% � �pixbits%<=4 � rbits%=4 � rbits%=8:� Round up bpp to sprite bpp xEroom%=(((i_width%*rbits%+31)>>5)<<2)*i_height%+1024:� Room needed �4�new_image(mode%,i_width%,i_height%,room%) � =� �'�GIFScan � np$=�pictures% � np$="?" ���image_info(signature$,i_width%,i_height%,0,pixbits%,mode%,"LZW",np$+" pics (this is "+�times(picture%)+")",len%,(i_height%*i_width%*pixbits%)�8) �+�ibit � �var("lace",1) � �var("lace",0) �U�var("fptr",�iptr(1)):�var("widt",i_width%):�var("heig",i_height%):�unpack("GIF") �ImgMode%=mode%:=� � ���skip_GIF_extension �?� Skips a GIF Extension Block if present at current pointer �� _% ��(�i1(1))=�"!" � �% �iskip(1,1):� Skip function code �< � _%=�i1(1):�iskip(1,_%):� _%=0:� Skip data byte blocks � �iskip(1,-1) � � " , ݤpic_ARC 6#� Loads Archimedes sprite image @+iType%=0:� Set low-to-high type of data JHpictures%=�i4(1):ofirst%=�i4(1):� Number of sprites, offset to first T��(ImageNr%>0) � (ImageNr%<=pictures%) � picture%=ImageNr% � �error(-1,"This file contains "+�(pictures%)+" images. Select '1'-'"+�(pictures%)+"' in the 'Image number' submenu !"):=� ^1�iskip(1,ofirst%-8-4):� Start of first sprite hEskip%=pictures%-picture%:ȕ skip%>0:�iskip(1,�i4(1)-4):skip%-=1:� rGstart%=�iptr(1):�iskip(1,16):� Remember start, skip offset and name |Fwords%=�i4(1)+1:height%=�i4(1)+1:� Width in words, height in lines �7bfirst%=�i4(1):blast%=�i4(1):� First/last bits used �Foimage%=�i4(1):�iskip(1,4):sprmode%=�i4(1):� Offset to image, mode �Bcolbits%=2^�mode_var(sprmode%,9):colours%=2^colbits%:� Colours �#�(oimage%<=44)�(colours%=256) � �> � No palette or 256-colour palette : set standard palette �) �standard_palette(InPal%(),colbits%) � InPal%(0)=colbits%:� c%=1 � colours%:p%=�i4(1):InPal%(c%)=((p%�&FF00)<<8)+((p%�&FF0000)>>8)+(p%>>>24):�iskip(1,4):�:� Read palette �� �Bxres%=(words%*32-bfirst%-(31-blast%)) � colbits%:yres%=height% ��available_mode(sprmode%) � mode%=sprmode% � mode%=�mode(xres%,yres%,colours%):� Determine other mode if sprite's mode won't do �)�new_image(mode%,xres%,yres%,0) � =� �}�image_info("Archimedes sprite",xres%,yres%,0,colbits%,mode%,"",�pictures%+" sprites (this is "+�times(picture%)+")",1,1) ��var("fptr",start%+oimage%):�var("widt",xres%):�var("heig",height%):�var("wrds",words%):�var("bfir",bfirst%):�unpack("ARC") ImgMode%=mode%:=� ݤpic_PROART &� Makes ProArtisan image 0+width%=640:height%=256:� Set resolution :4mode%=�mode(width%,height%,256):� Determine mode DCroom%=(width%*height%+3)��3:� Room needed for unpack (coltable) N0�new_image(mode%,width%,height%,room%) � =� X+iType%=0:� Set low-to-high type of data bGcollen%=�i4(1):comflag%=�i4(1):� Length of colour table/compression l5coltable%=Lomem%-collen%:� Space for colour table v2�iget(1,coltable%,collen%):� Read colour table �?�standard_palette(InPal%(),8):� Standard 256 colour palette �]�image_info("ProArtisan",width%,height%,0,8,mode%,"Run length","",Flen%-8,width%*height%) ���var("fptr",�iptr(1)):�var("prot",coltable%):�var("comp",comflag%):�var("widt",width%):�var("heig",height%):�unpack("PROART") �ImgMode%=mode%:=� � �ݤpic_WATFORD �#� Makes Watford digitiser image �+width%=512:height%=256:� Set resolution �4mode%=�mode(width%,height%,256):� Determine mode �,�new_image(mode%,width%,height%,0) � =� �>InPal%()=0:InPal%(0)=8:� Palette is 64 greys, linear scale �8� c%=0 � 63:InPal%(c%+1)=(c%<<18)+(c%<<10)+(c%<<2):� �h�image_info("Watford digitiser",width%,height%,1,6,mode%,"Run length","",Flen%,(width%*height%*6)�8) N�var("widt",width%):�var("heig",height%):�var("fptr",0):�unpack("WATFORD") ImgMode%=mode%:=� ݤpic_RENDER *� Makes Render Bender image 4iType%=0:� >$mode%=�i1(1):� Read image's mode H��mode_var(mode%,9)<>3 � �error(-1,"This Render Bender image was not defined in a 256 colour mode !") � width%=�mode_var(mode%,11)+1:height%=�mode_var(mode%,12)+1 R4mode%=�mode(width%,height%,256):� Determine mode \,�new_image(mode%,width%,height%,0) � =� f?�standard_palette(InPal%(),8):� Standard 256 colour palette p`�image_info("Render Bender",width%,height%,0,8,mode%,"Run length","",Flen%-1,width%*height%) zM�var("fptr",1):�var("widt",width%):�var("heig",height%):�unpack("RENDER") �ImgMode%=mode%:=� � � ݤpic_AIM �� Makes AIM image �+width%=256:height%=256:� Set resolution �4mode%=�mode(width%,height%,256):� Determine mode �,�new_image(mode%,width%,height%,0) � =� �4InPal%(0)=8:� Palette is 256 greys, linear scale �3� c%=0 � 255:InPal%(c%+1)=(c%<<16)+(c%<<8)+c%:� �C�image_info("AIM",width%,height%,1,8,mode%,"","",Flen%,256*256) �J�var("widt",width%):�var("heig",height%):�var("fptr",0):�unpack("AIM") �ImgMode%=mode%:=� � ݤpic_SUN � Makes SUN image +iType%=1:� Set high-to-low type of data $\magic%=�i4(1):�magic%<>&59A66A95 � �error(-1,"This is no standard SUN raster file !"):=� .Bwidth%=�i4(1):height%=�height%=�h1):colbits%=�i4(1):� Read resolution 8Nlength%=�i4(1):type%=�i4(1):maptype%=�i4(1):maplength%=�i4(1):� Extra info BH�type%>1 � �error(-1,"I can only read uncompressed Sun images !"):=� L+colours%=2^colbits%:� Number of colours VȎ colbits% � `, � 1,8 : �(maptype%<>1)�(maplength%=0) � jm �colbits%>1 � �error(-1,"This SUN image file contains no palette ! I will use a greyscale.") t* �grey_palette(colbits%,1) ~v � InPal%()=0:� i%=1 � 3:� c%=1 � maplength%�3:InPal%(c%)=(InPal%(c%)<<8)+�i1(1):�:�:InPal%(0)=colbits% � � �L : �error(-1,"I can only read 1- and 8-bit per pixel Sun images !"):=� �� �9mode%=�mode(width%,height%,colours%):� Determine mode �,�new_image(mode%,width%,height%,0) � =� �H�image_info("SUN",width%,height%,0,colbits%,mode%,"","",Flen%,Flen%) �V�var("fptr",32+maplength%):�var("widt",width%):�var("heig",height%):�unpack("SUN") �ImgMode%=mode%:=� � � ݤpic_PCX �� Makes PCX image �+iType%=0:� Set low-to-high type of data 1man%=�i1(1):� Manufacture code (should be 10) >�man%<>10 � �error(-1,"This is no standard PCX file !"):=� ,version%=�i1(1):� Version code (0/2/3/5) Y�version%<5 � �error(-1,"I cannot handle old PCX files (only version 5 and up) !"):=� (Gencoding%=�i1(1):� Encoding code (0-none, 1-PCX runlength encoding) 23bits%=�i1(1):� Bits per 'pixel' (1-EGA, 8-MCGA) <Pwxmin%=�i2(1):wymin%=�i2(1):wxmax%=�i2(1):wymax%=�i2(1):� Window coordinates FIwidth%=wxmax%-wxmin%+1:height%=wymax%-wymin%+1:� Resolution in pixels P �iskip(1,4):� Skip Hres/Vres ZInPal%()=0:� Clear palette dl� i%=1 � 16:rgb%=�i3(1):InPal%(i%)=((rgb%�&FF)<<16)+(rgb%�&FF00)+(rgb%>>16):�:� Read colourmap in header n$�iskip(1,1):� Skip reserved byte x!planes%=�i1(1):� Colourplanes �$linelen%=�i2(1):� Bytes per line ��roundlen%=((width%*bits%+7)�8):�roundlen%<>linelen% � width%=linelen%*8/bits%:� Correct width if window and linelength data conflict �+pixbits%=bits%*planes%:� Bits per pixel ���(pixbits%=1) � (pixbits%=2) � (pixbits%=4) � (pixbits%=8) � �error(-1,"I cannot handle "+�(2^pixbits%)+" colour EGA PCX files !"):=� �+colours%=2^pixbits%:� Number of colours �~�var("fptr",128):�var("totl",linelen%*planes%*height%):�var("comp",encoding%):�unpack_phase("PCX",2):� Get (packed) length �Alen%=�var("pakl"):�iptr(1,128+len%):� Go to end of image data �?code%=�i1(1):� Get code (12 indicates palette info follows) �t�code%=12 � � i%=1 � colours%:rgb%=�i3(1):InPal%(i%)=((rgb%�&FF)<<16)+(rgb%�&FF00)+(rgb%>>16):�:� Read colourmap �.grey=�:� Flag to indicate forced greyscale ��bits%=8 � �code%<>12 � �error(-1,"I cannot find the palette in this 256-colour PCX image ! I will use a greyscale."):grey=� �}�grey � �Ǝ(InPal%())=0 � �error(-1,"I cannot find a decent palette in this PCX image ! I will use a greyscale."):grey=� �:�grey � �grey_palette(pixbits%,1) � InPal%(0)=pixbits% 9mode%=�mode(width%,height%,colours%):� Determine mode ,�new_image(mode%,width%,height%,0) � =� 2�encoding%=1 � compr$="Run length" � compr$="" "f�image_info("PCX",width%,height%,0,pixbits%,mode%,compr$,"",Flen%-128,(width%*height%*pixbits%)�8) ,c�var("fptr",128):�var("widt",width%):�var("heig",height%):�var("comp",encoding%):�unpack("PCX") 6ImgMode%=mode%:=� @ Jݤpic_TIFF T� Makes TIFF image ^+id$=�istring(1,2):� TIFF identification hȎ id$ � r5 � "II" : iType%=0:� Set low-to-high type of data |5 � "MM" : iType%=1:� Set high-to-low type of data �2 : �error(-1,"This is not a TIFF file !"):=� �� �+version%=�tiff(3):� TIFF version number �G�version%<>42 � �error(-1,"I cannot handle this TIFF version !"):=� �+offFIFD%=�tiff(4):� Offset to first IFD �'�iptr(1,offFIFD%):� Go to first IFD �-entries%=�tiff(3):� Number of IFD entries �InPal%()=0:� No palette yet �1ok=�:� Flag indicating if TIFF can be handled �rrowsperstrip%=-1:bits%=1:colours%=2:compression%=1:planar%=1:fillorder%=1:greyunit%=3:pixsamples%=1:� Defaults �� e%=1 � entries% �@tag%=�tiff(3):type%=�tiff(3):length%=�tiff(4):� Tag and info �r�type%=1 � value%=�tiff(1):�iskip(1,3) � �type%=3 � value%=�tiff(3):�iskip(1,2) � value%=�tiff(4):� Read value 6cptr%=�iptr(1):� Remember current position in file Ȏ tag% � � 256 : width%=value% & � 257 : height%=value% 0* � 258 : bits%=value%:colours%=2^bits% : � 259 : compression%=value% D � 262 : photometric%=value% N � 266 : fillorder%=value% X� � 273 : !stroff=length%:�length%=1 � stroff!4=value% � �iptr(1,value%):p%=stroff+4:� s%=1 � length%:!p%=�tiff(type%):p%+=4:�:�iptr(1,cptr%) b � 277 : pixsamples%=value% l! � 278 : rowsperstrip%=value% v � 284 : planar%=value% � � 290 : greyunit%=value% �� � 291 : �iptr(1,value%):div%=2*10^greyunit%:� g%=1 � length%:c%=�tiff(type%)*255:i%=c%/div%:InPal%(g%)=i%+(i%<<8)+(i%<<16):�:InPal%(0)=bits%:�iptr(1,cptr%) �� � 320 : �iptr(1,value%):InPal%()=0:� p%=1 � 3:� c%=1 � length%�3:v%=�tiff(type%):InPal%(c%)=(InPal%(c%)<<8)+(v%>>8):�:�:InPal%(0)=bits%:�iptr(1,cptr%) �� �� �-�rowsperstrip%=-1 � rowsperstrip%=height% �O�compression%<>1 � �error(-1,"I cannot handle compressed TIFF images !"):=� �}�(bits%=1)�(bits%=2)�(bits%=4)�(bits%=8) � �error(-1,"I can only handle TIFF images with 1,2,4 or 8 bits per pixel !"):=� �T�planar%<>1 � �error(-1,"I cannot handle TIFF images with multiple planes !"):=� �g�pixsamples%<>1 � �error(-1,"I cannot handle TIFF images with more than one sample per pixel !"):=� �V�InPal%(0)<>0 � �photometric%=0 � �grey_palette(bits%,-1) � �grey_palette(bits%,1) �9mode%=�mode(width%,height%,colours%):� Determine mode �,�new_image(mode%,width%,height%,0) � =� 8�photometric%=3 � code%=0 � code%=1:� Colour or grey J�image_info("TIFF",width%,height%,code%,bits%,mode%,"","",Flen%,Flen%) ��var("fptr",0):�var("widt",width%):�var("heig",height%):�var("map1",stroff):�var("rops",rowsperstrip%):�var("bito",fillorder%):�unpack("TIFF") ImgMode%=mode%:=� * 4ݤtiff(type%) >� Returns tiff data type H� i$,b% RȎ type% � \ � 1 : =�i1(1) f; � 2 : i$="":b%=�i1(1):ȕ b%<>0:i$+=�b%:b%=�i1(1):�:=i$ p � 3 : =�i2(1) z � 4 : =�i4(1) � � 5 : =0 �� �=0 � � ݤpic_QRT �� Makes QRT image �+iType%=0:� Set low-to-high type of data �2width%=�i2(1):height%=�i2(1):� Read resolution �4mode%=�mode(width%,height%,256):� Determine mode �,�new_image(mode%,width%,height%,0) � =� �.InPal%(0)=24:� No palette, pure 24-bit RGB �F�image_info("QRT RAW",width%,height%,2,24,mode%,"","",Flen%,Flen%) �J�var("fptr",4):�var("widt",width%):�var("heig",height%):�unpack("QRT") ImgMode%=mode%:=� ݤpic_ARVIS $� Makes ArVis image .+iType%=0:� Set low-to-high type of data 8g�iptr(1,4):�iptr(1,�,�,1)-4):�iskip(1,16):width%=�i4(1)*4+4:height%=�height%=�h1)+1:� Get width and height Bu�iskip(1,8):�iskip(1,�,�,1)-36):�iptr(2,4):�iptr(2,�,�,2)-4):�iskip(2,32):�iskip(2,�,�,2)-36):� Go to sprite data L-colbits%=15:colours%=2^colbits%:� Colours V4mode%=�mode(width%,height%,256):� Determine mode `,�new_image(mode%,width%,height%,0) � =� j.InPal%(0)=15:� No palette, pure 15-bit RGB tD�image_info("ArVis",width%,height%,2,15,mode%,"","",Flen%,Flen%) ~i�var("fptr",�iptr(1)):�var("fpt2",�iptr(2)):�var("widt",width%):�var("heig",height%):�unpack("ARVIS") �ImgMode%=mode%:=� � �ݤpic_CLEAR �� Makes Clear image �+iType%=0:� Set low-to-high type of data �?maker$=�istring(1,-1):version%=�i4(1):� Creator information �Bwidth%=�i4(1):height%=�height%=�h1):bits%=�i4(1):� Width, height, bpp �~�bits%<=8 � colbits%=bits%:� c%=1 � 2^bits%:rgb%=�i3(1):InPal%(c%)=(rgb%�&FF00)+(rgb%>>16)+((rgb%�&FF)<<16):� � colbits%=8 �$InPal%(0)=bits%:� Bits per pixel �;mode%=�mode(width%,height%,2^colbits%):� Determine mode �,�new_image(mode%,width%,height%,0) � =� ���image_info("Clear",width%,height%,code%,bits%,mode%,"","by "+maker$+" "+�(version%�100)+"."+�"0"+�(version%�100),2),Flen%,Flen%) S�var("fptr",�iptr(1)):�var("widt",width%):�var("heig",height%):�unpack("CLEAR") ImgMode%=mode%:=� Y��image_info(type$,width%,height%,code%,colbits%,mode%,compr$,info$,datalen%,piclen%) (&� Sets information about the image 2� factor%,w%,h%,c%,i%,id$ <FImgW%=width%:ImgH%=height%:ImgBits%=colbits%:� Register resolution F$IMIfn%=Leaf$:$IMIit%=type$ P+�info$="" � $IMIin%="-" � $IMIin%=info$ Z$IMIif%=�Flen%+" bytes" dn�compr$="" � $IMIco%="None (0%)" � factor%=100-�(100*(datalen%/piclen%)):$IMIco%=compr$+" ("+�factor%+"%)" n,$IMIwh%=�width%+" x "+�height%+" pixels" x]�(width%>SprW%)�(height%>SprH%) � $IMIsc%="to "+�SprW%+" x "+�SprH% � $IMIsc%="Full size" �C$IMIbp%=�(colbits%)+"-bit "+�"colour grey RGB",1+code%*8,8) �J�mode_info(mode%,w%,h%,c%):$IMIsm%=�mode%+" ("+�w%+"x"+�h%+"x"+�c%+")" �� � ���new_image_window �A� Creates new image window of appropiate size in current mode �� w% �$�autozoom:� Auto zoom if enabled �?!block=win_img%:ș WDeleteW%,,block:� Delete old definition ܑw%=window1:!w%=0:w%!4=0:w%!8=�sprW:w%!12=�sprH:w%!20=�sprH:w%!40=0:w%!44=0:w%!48=�sprW*ZoomX:w%!52=�sprH*ZoomY:$IMWtt%=�image_title:� Rewrite �8ș WCreateW%,,window1 � win_img%:� Create new window �#�Img � �open_window(win_img%,0) �� ݤimage_title :� Returns image window title depending on zoom factors "� title$ ,title$="Image":� Base 6K�ZoomX<1 � title$+=" x/"+�(1/ZoomX) � �ZoomX>1 � title$+=" x*"+�(ZoomX) @K�ZoomY<1 � title$+=" y/"+�(1/ZoomY) � �ZoomY>1 � title$+=" y*"+�(ZoomY) J=title$+" "+Load$ T ^(ݤnew_image(mode%,xres%,yres%,room%) hA� Creates room for picture sprite of specific resolution/mode rG� and partitions memory (at least room% from sprite start to lomem) |-� Returns TRUE if all is well, else FALSE �8� bits%,words%,end%,size%,colbits%,sprdoff%,sprfoff% �:yres%=yres%*(YMul%/YDiv%):� Apply scaling factor for Y �:xres%=xres%*(XMul%/XDiv%):� Apply scaling factor for X �`�(yres%<=0)�(xres%<=0) � �error(-1,"There are no pixels left with the current scaling !"):=� �2colbits%=2^�mode_var(mode%,9):� Bits per pixel �?bits%=xres%*colbits%:bitsrot%=yres%*colbits%:� Bits per row �Cwords%=(bits%+31)>>5:wordsrot%=(bitsrot%+31)>>5:� Words per row �,sprdoff%=44:sprfoff%=Sprite%!8:� Offsets �)sptr%=Sprite%+sprfoff%:� Sprite start �Fsizeup%=words%*yres%<<2:sizerot%=wordsrot%*xres%<<2:� Sprite sizes �Kdatasize%=�max(sizeup%,sizerot%):� Maximum sprite size (normal/rotated) �8datasize%=�max(datasize%,room%):� More room needed ? �Fend%=sptr%+sprdoff%+datasize%:� Address of first byte after sprite ��(end%+1024)>Himem% � �error(-1,"I cannot handle this image. I need about "+�((end%+1024-Himem%+1023)�1024)+"K more memory."):=� 4sptr%!0=sprdoff%+sizeup%:� Offset to next sprite ,�sprite_header(1):� Update sprite header &0$(sptr%+4)=ImageSpr$+�12,�0):� Sprite's name 0(sptr%!16=words%-1:� Width in words-1 :,sptr%!20=yres%-1:� Height in scanlines-1 D=sptr%!24=0:sptr%!28=31-(words%*32-bits%):� Start/end bits NDsptr%!32=sprdoff%:sptr%!36=sptr%!32:� Offset to sprite data/mask X#sptr%!40=mode%:� Mode of sprite bHș "Translator_WriteWords",sptr%+sprdoff%,0,sizeup%>>2:� Wipe sprite l4Lomem%=end%:� End of sprite, start of free space v9�var("lome",Lomem%):�var("hime",Himem%):� Module info �(�var("rowl",words%<<2):� Module info �'�var("outb",colbits%):� Module info �-�var("spri",sptr%+sptr%!32):� Module info �JSprColbits%=colbits%:SprPtr%=sptr%:SprMode%=mode%:� Global sprite info �DSprW%=xres%:SprH%=yres%:� Remember sprite's resolution in pixels �Isize%=((Himem%-Lomem%)�256)*256:� Size of free space in sprite buffer �=� � ���sprite_header(code%) �H� Initialises (0) or updates (1) sprite area header (sprite changed) �Ȏ code% � �6 � 0 : Sprite%!0=Spritesize%:� Size of sprite area �D Sprite%!4=0:Sprite%!8=16:Sprite%!12=16:� No sprite yet !? Himem%=Sprite%+Spritesize%:� End of sprite buffer !@ � 1 : Sprite%!4=1:Sprite%!12=Sprite%!8+!(Sprite%+Sprite%!8) !� ! � !* !4 ��hour_on !>� Turns hourglass on !Hș "Hourglass_Start",4 !R� !\ !f��hour_off !p� Turns hourglass off !zș "Hourglass_Off" !�� !� !���edit_part(size,part) !�7� Edits image size and part (if enabled with flags) !�C� Returns with (scaled) image in graphics window ready for save !�A� _%,ox%,oy%,x%,y%,but%,x1%,x2%,y1%,y2%,xs%,ys%,sizex%,sizey% !�"� sprW%,sprH%,ptr$,r0,r1,r2,r3 !ʓ!pointer=512:pointer!4=0:pointer!8=16:pointer!12=16:ptr$="ptr":ș "OS_SpriteOp",15+256,pointer,ptr$,0,32,32,11:� Initialise pointer sprite area !Եș OSSpop%,60+256,pointer,ptr$,0 � r0,r1,r2,r3:� 0,124:�0,3:�1,0,-32:�0,0,32:�1,40,0:�0,-40,0:�1,60,-30:�0,-60,26:�1,60,-30:ș OSSpop%,r0,r1,r2,r3:� Plot arrow in pointer sprite !�?�24,0;0;ScrW%;ScrH%;:� Whole screen window for image sprite !�:sprW%=�sprW:sprH%=�sprH:� True OS size of image sprite !�,xs%=2^�mode_var(�,4):� X coordinate step !�,ys%=2^�mode_var(�,5):� Y coordinate step ">�ScrW%>sprW% � sizex%=sprW% � sizex%=ScrW%:� Initial width "?�ScrH%>sprH% � sizey%=sprH% � sizey%=ScrH%:� Initial height "K!arg%=sizex%:arg%!4=sizey%:arg%!8=sprW%:arg%!12=sprH%:� Initial scaling "$/�:�plot_image(0,0,0,arg%):� Initial display ".�size � "8? ȗ ȓ 0,0,ScrW%-xs%,ScrH%-ys%:� Restrict pointer to screen "B6 ox%=sizex%-xs%:oy%=sizey%-ys%:� 'Old' coordinates "L0 ȗ � ox%,oy%:� Pointer to upper left corner "V? � �rmouse(_%,_%,but%):� but%=0:� Wait for buttons released "`( � �value_ptr(sizex%�xs%,sizey%�ys%) "j: � �rmouse(x%,y%,but%):� (x%<>ox%)�(y%<>oy%)�(but%<>0) "t �but%=0 � "~> �oy%>y% � � 0,y%:� 103,�max(x%,ox%),oy%:� Wipe Y-portion "�> �ox%>x% � � x%,0:� 103,ox%,�max(y%,oy%):� Wipe X-portion "�: sizex%=x%+xs%:sizey%=y%+ys%:� True scaled image size "�; !arg%=sizex%:arg%!4=sizey%:arg%!8=sprW%:arg%!12=sprH% "� �plot_image(0,0,0,arg%) "�. ox%=x%:oy%=y%:� Remember old coordinates "� � "� � but%<>0 "�6 ș "OS_CLI","Pointer 1":� Restore default pointer "�� "��part � "�> � �mouse(_%,_%,but%):� but%=0:� Wait for buttons released "�@ ȗ ȓ 0,0,sizex%-xs%,sizey%-ys%:� Restrict pointer to image #< ȗ � 0,sizey%-ys%:� Mouse to top right of scaled sprite # 8 � �rmouse(x1%,y2%,but%):�value_ptr(x1%�xs%,y2%�ys%) ## � but%<>0:� Get top left point #> � �mouse(_%,_%,but%):� but%=0:� Wait for buttons released #(, x2%=x1%:y1%=y2%:� Initial window corner #2> ȗ ȓ x1%,0,sizex%-xs%-x1%,y2%:� Trap mouse to down/right #<3 ș WSetCol%,(4<<4)+0:� Invert colour on screen #FA ox%=x2%:oy%=y1%:ȓ x1%,y1%,x2%-x1%,y2%-y1%:� First rectangle #P � �rmouse(x2%,y1%,but%) #Z0 �value_ptr((x2%-x1%)�xs%+1,(y2%-y1%)�ys%+1) #d �(x2%<>ox%)�(y1%<>oy%) � #n5 ȓ x1%,oy%,ox%-x1%,y2%-oy%:� Wipe old rectangle #x0 ȓ x1%,y1%,x2%-x1%,y2%-y1%:� New rectangle #�* ox%=x2%:oy%=y1%:� Old mouse position #� � #�* � but%<>0:� Until second button press #�B ȗ ȓ 0,0,ScrW%,ScrH%:� Reset mouse rectangle to whole screen #�0 ȓ x1%,y1%,x2%-x1%,y2%-y1%:� Wipe rectangle #�" � 0,0:� Wipe surrounding area #�: _%=x1%-xs%:�_%>=0 � � 103,_%,1024-ys% � � _%,1024-ys% #�= _%=y2%+ys%:�_%<ScrH% � � 103,1280-xs%,_% � � 1280-xs%,_% #�/ _%=x2%+xs%:�_%<ScrW% � � 103,_%,0 � � _%,0 #�8 _%=y1%-ys%:�_%>=0 � � 103,x1%-xs%,_% � � x1%-xs%,_% #�6 ș "OS_CLI","Pointer 1":� Restore default pointer #�E� x1%=0:y1%=0:x2%=sizex%-xs%:y2%=sizey%-ys%:� Whole sprite window #�� $&�24,x1%;y1%;x2%;y2%;:� Clip window $� $ $"��rmouse(� x%,� y%,� but%) $,J� Returns mouse coordinates and buttons, rounded to exact pixel coords $6$�mouse(x%,y%,but%):� Mouse state $@*x%-=x% � xs%:y%-=y% � ys%:� Round down $J� $T $^��value_ptr(val1%,val2%) $h� Puts values in pointer $rEș OSSpop%,60+256,pointer,ptr$,0 � r0,r1,r2,r3:� Output to sprite $|w�129:�2:�0,2);�" "+�val1%,4)'�" "+�val2%,4);:ș OSSpop%,36+256,pointer,ptr$,%0000010:� Print values and define $�5ș OSSpop%,r0,r1,r2,r3:� Restore output to screen $�� $� $���options_menu(create) $�4� (Re)writes options menu, optionally creates it $� � i1$,i2$ $�9i1$=�sel(0,1,0,�Img,0)+"Image info#"+�win_iminfo%+"|" $�-i1$+=�sel(0,1,0,0,0)+"Pop up#"+�sub1%+"|" $�1i1$+=�sel(0,1,0,0,0)+"Processing#"+�sub1%+"|" $�,i1$+=�sel(0,0,0,�Img,0)+"Image palette|" $�4i2$+=�sel(0,0,0,�Img,0)+"Zoom image#"+�sub1%+"|" $�+i2$+=�sel(0,0,0,�Img,0)+"Rotate image|" $�6i2$+=�sel(0,1,0,�Img,0)+"Mirror image#"+�sub1%+"|" %2i2$+=�sel(Palonoff,0,0,0,0)+"Include palette|" %4i2$+=�sel(0,1,0,�Img,0)+"Save image#"+�sub1%+"|" %i2$+=" Status#"+�sub1%+"|" %&;�create_menu(-1,0,"Translator",260,40,0,i1$,i2$,create) %0� %: %D��submenu(path$,create) %N5� (Re)writes submenu path$, optionally creates it %X� i$,i2$ %b2CurrSub$=path$:� Remember current submenu path %lȎ path$ � %v� � "Pop up" : i$=�sel(AutoMode,0,0,0,0)+"Auto mode|"+�sel(AutoPal,0,0,0,0)+"Auto palette|"+�sel(AutoZoom,0,0,0,0)+"Auto zoom|"+�sel((ModeSet>0),0,0,�AutoMode,0)+"Mode set#"+�sub2%+"|" %�@ �create_menu(x%,y%,"^1Pop up",13*16,40,0,i$,"",create) %�� � "Pop up.Mode set" : i$=�sel((ModeSet=0),0,0,0,0)+"None|"+�sel((ModeSet=1),0,0,0,0)+"Normal|"+�sel((ModeSet=2),0,0,�MultiSync,0)+"Multisync|"+�sel((ModeSet=3),0,1,0,0)+�ums+"&a0-9,|" %�B �create_menu(x%,y%,"^2Mode set",10*16,40,0,i$,"",create) %�� � "Processing" : i$=�sel(ClearFile,0,0,0,0)+"Clear output#"+�win_file%+"| Output mode#"+�sub2%+"|"+�sel(0,0,0,(OutMode=1),0)+"Output palette#"+�sub2%+"|" %�� i$+=�sel(((XMul%<>XDiv%)�(YMul%<>YDiv%)),0,0,0,0)+"Scaling#"+�sub2%+"|"+�sel(ErrSpread,0,0,0,0)+"Error spreading|"+�sel(BlackWhite,0,0,0,0)+"Black and white|" %�� i2$=�sel(ZigZag,0,0,0,0)+"Zig zag|"+" RGB resolution#"+�win_rgbbits%+"|"+�sel(InvertRGB,1,0,0,0)+"Invert RGB|"+�sel(Blanking,0,0,0,0)+"Screen blanking|"+�sel(GIFScan,0,0,0,0)+"GIF scan| Image number#"+�sub2%+"|" %�E �create_menu(x%,y%,"^1Processing",16*16,40,0,i$,i2$,create) %ƙ � "Processing.Output mode" : �create_menu(x%,y%,"^2Mode",8*16,40,0,�sel((OutMode=1),0,0,0,0)+"Auto|"+�sel((OutMode=2),0,0,0,0)+"Current|","",create) %�� � "Processing.Output palette" : �create_menu(x%,y%,"^2Palette",10*16,40,0,�sel((OutPal=1),0,0,0,0)+"Current|"+�sel((OutPal=2),0,0,0,0)+"Default|"+�sel((OutPal=3),0,0,0,0)+"Greyscale|","",create) %ڰ � "Processing.Scaling" : �create_menu(x%,y%,"^2Scaling",5*16,40,0,�sel((XMul%<>XDiv%),0,0,0,0)+"x#"+�sub3%+"|"+�sel((YMul%<>YDiv%),0,0,0,0)+"y#"+�sub3%+"| 1:1|","",create) %�r � "Processing.Scaling.x" : �create_menu(x%,y%,"^3X",10*16,40,0,"$"+�(XMul%)+":"+�(XDiv%)+"&a0-9:|","",create) %�r � "Processing.Scaling.y" : �create_menu(x%,y%,"^3Y",10*16,40,0,"$"+�(YMul%)+":"+�(YDiv%)+"&a0-9:|","",create) %�n � "Processing.Image number" : �create_menu(x%,y%,"^2Number",6*16,40,0,"$"+�(ImageNr%)+"&a0-9|","",create) &� � "Zoom image" : �create_menu(x%,y%,"^1Zoom",4*16,40,0," In#"+�sub2%+"| Out#"+�sub2%+"|"+�sel(((ZoomX=1)�(ZoomY=1)),0,0,0,0)+"1:1|","",create) &p � "Zoom image.In","Zoom image.Out" : �create_menu(x%,y%,"^2"+�path$,12),5*16,40,0," Both| x| y|","",create) &S � "Mirror image" : �create_menu(x%,y%,"^1Mirror",6*16,40,0," x| y|","",create) & Y � "Status" : �create_menu(x%,y%,"^1Status",5*16,40,0," Save| Load| Kill|","",create) &*� � "Save image" : �create_menu(x%,y%,"^1Save image",15*16,40,0," Full| Whole| Whole (scaled)| Part| Part (scaled)|","",create) &4 : CurrSub$="" &>� &H� &R &\��set_mode(mode%) &f2� Sets new mode (if enabled) for image display &p� log2bpp% &z>�AutoMode � �set_trans:�:� Auto mode selection not enabled &�)log2bpp%=�mode_var(mode%,9):� Log2BPP &�Ȏ ModeSet � &�4 � 0 : � No mode set : no change of display mode &�: � 1 : mode%=��" 0 81215",log2bpp%*2+1,2):� Normal set &�= � 2 : mode%=��"18192021",log2bpp%*2+1,2):� Multisync set &�4 � 3 : mode%=UserModeSet%(log2bpp%+1):� User set &�� &�}�MultiSync � �(mode%>=18)�(mode%<=28) � mode%=�(�"0008121515002400081215",(mode%-18)*2+1,2)):� Map to non-multisync mode &�%�mode_change(mode%):� Select mode &�� &� &���mode_change(mode%) &�)� Mode has changed or select new mode ')� If mode%>=0, mode mode% is selected 'J� _%,xwind%,ywind%,othermode,colours%,pos%,altmode$,modecols%,sprcols% '3ș WReadP%,,wimppal:� Read current WIMP palette '$�(mode%>=0) � (mode%<>�) � '." ș WSetM%,mode%:� Change mode '8 �mode%<>� � 'BG � 1,-10,180,1:� Alert user that 'ideal' mode couldn't be selected 'L: colours%=2^(2^�mode_var(mode%,9)):� Colours required 'V� �colours%=2 � altmode$="|1800" � �colours%=4 � altmode$="|1908|0801" � �colours%=16 � altmode$="|2012|1612|1209" � �colours%=256 � altmode$="|2115|2415|1513|1310" '` � 'j� ��=mode% � pos%=�altmode$,"|"+�"0"+�mode%,2)):�pos%>0 � mode%=�(�altmode$,pos%+3)) � �error(-1,"I failed to select the ideal mode, nor any alternative mode ! Now you try it !"):mode%=-1 't# ș WSetM%,mode%:� Change mode '~ � (�=mode%) � (mode%<0) '� � '�� '�@othermode=(�<>CurrMode%):CurrMode%=�:� Mode other than old ? '�AXeig%=�mode_var(�,4):Yeig%=�mode_var(�,5):� Read X/YEigFactor '�Bxwind%=�mode_var(�,11)+1:ywind%=�mode_var(�,12)+1:� Resolution '�AScrW%=(1<<Xeig%)*xwind%:ScrH%=(1<<Yeig%)*ywind%:� Screen size '� �Img � '�+ �set_trans:� Re-set sprite translation '�A �AutoPal � �set_palette(1):� Select image palette if enabled '�# �othermode � �new_image_window '�� '�� ( ( ��set_trans (C� Sets translation factors (transtab & palette) for sprite plot (!� mc%,sc%,v%,c%,gv%,gi%,i%,p% ((<mc%=2^(2^�log2BPP):sc%=2^SprColbits%:� Colours available (2GShowPal%()=ImgPal%():ShowPal%(0)=2^ShowPal%(0):� Copy image palette (<%�mc%=sc% � TransTabId=�:�:� Ideal (F%TransTabId=�:� Always translation (P�mc%>sc% � (Z: �mc%<=16 � � c%=0 � sc%-1:transtab%?c%=c%�(mc%-1):�:� (d; ș "Translator_Palette",8,dum%,1:� Get current palette (n_ � c%=0 � sc%-1:ș "Translator_ClosestToRGB",ShowPal%(c%+1),256,dum% � v%:transtab%?c%=v%:� (x1� � Less colours than required, so compromise (�� �FreqCalc � �hour_on:ș "Translator_PixelFreq",SprPtr%,freq%:�hour_off:FreqCalc=�:� Calculate pixel frequencies in image sprite (� �hour_on:� Hourglass on (�C p%=dum%:� c%=1 � sc%:!p%=ImgPal%(c%):p%+=4:�:� Image's palette (�: � Calculate translation table and palette for display (�K ș "Translator_CalcTrans",sc%,freq%,dum%,mc%,transtab%,arg% � ,,,used% (�C p%=arg%:� c%=1 � used%:ShowPal%(c%)=!p%:p%+=4:�:� Read palette (�8 ShowPal%(0)=used%:� Colours used in display palette (� �hour_off:� Hourglass off (�� (�� (� (���autozoom (�3� Adjust zoom factor for auto zoom (if enabled) )� _% )�AutoZoom � )7 _%=�sprW*ZoomX:ȕ _%>ScrW%:ZoomX=ZoomX/2:_%=_%/2:� )"6 �ZoomX<1 � ȕ _%*2<=ScrW%:ZoomX=ZoomX*2:_%=_%*2:� ),7 _%=�sprH*ZoomY:ȕ _%>ScrH%:ZoomY=ZoomY/2:_%=_%/2:� )66 �ZoomY<1 � ȕ _%*2<=ScrH%:ZoomY=ZoomY*2:_%=_%*2:� )@� )J� )T )^#��plot_image(x%,y%,act%,scale%) )h/� Plots image sprite with translation table )r�TransTabId � ș OSSpop%,564,Sprite%,SprPtr%,x%,y%,act%,scale% � ș OSSpop%,564,Sprite%,SprPtr%,x%,y%,act%,scale%,transtab% )|� )� )���unpack(type$) )�+� Unpacks image (final unpacking phase) )�� c%,bpp%,pc% )�)bpp%=InPal%(0):� Bits per pixel input )�4�var("inbi",bpp%):� Input (image) bits per pixel )�&�var("bwhi",BlackWhite):� B/w flag )�1�var("espr",ErrSpread):� Error spreading flag )�&�var("zigz",ZigZag):� Zig zag flag )�,�var("invt",InvertRGB):� Invert RGB flag )�*�var("phas",1):� Final unpacking phase )�&�var("rgbb",RGBbits%):� R/G/B bits )�=�var("ymul",YMul%):�var("ydiv",YDiv%):� Scaling factors Y *=�var("xmul",XMul%):�var("xdiv",XDiv%):� Scaling factors X *8� Set palette (if relevant, i.e. not pure RGB input) *?�bpp%<=8 � � c%=0 � 2^bpp%-1:palrgb%!(c%<<2)=InPal%(c%+1):� *&9�OutMode=1 � pc%=0 � pc%=OutPal:� Select palette code *0�ClearFile � *:9 Out=�(ClearSave$):�var("capt",Out):� Open Clear file *Du �ostring(Out,"Translator"):�o(Out,0,1):�o(Out,600,4):�o(Out,SprW%,4):�o(Out,SprH%,4):�o(Out,ImgBits%,4):� Header *Nk �ImgBits%<=8 � � c%=1 � 2^ImgBits%:rgb%=InPal%(c%):�#Out,rgb%>>16:�#Out,rgb%>>8:�#Out,rgb%:�:� Palette *X� *b:ș "Translator_UnpackPre",palrgb%,pc%:� Init unpacking *lhImgPal%(0)=SprColbits%:� c%=0 � 2^SprColbits%-1:ImgPal%(c%+1)=palrgb%!(c%<<2):�:� Read image palette *v7�unpack_phase(type$,1):� Execute final unpack phase *��ClearFile � *�� ClearFile=�:�#Out:�var("capt")=0 � ș "OS_File",6,ClearSave$:�error(-1,"Error during output to Clear file : "+�string(�var("erro")+4)):� Remove Clear file if error *�� *�� *� *� ��unpack_phase(type$,phase%) *�5� Executes unpack phase, blanks screen if enabled *�-�var("phas",phase%):� Set unpacking phase *�+$dum%=�type$+" ",4):� Type to unpack *�=�Blanking � ș "Translator_VideoDMA",0:� Blank if enabled *�7ș "Translator_Unpack",!dum%:� Execute unpack phase *�A�Blanking � ș "Translator_VideoDMA",1:� Re-enable if blanked *�� + +��set_palette(palette%) +*� Sets a palette according to palette% + � 0 - Desktop palette +*I� 1 - Image's own palette (when possible, else desktop palette used) +4� c% +>Ȏ palette% � +H � 0 : ș WSetP%,,wimppal +Rt � 1 : �c256 � � c%=0 � ShowPal%(0)-1:dum%!(c%<<2)=ShowPal%(c%+1):�:ș "Translator_SetPalette",ShowPal%(0),dum% +\� +f� +p +z%��standard_palette(� Pal%(),bpp%) +�H� Sets a palette to standard Archimedes 2,4,16 or 256 colour palette +�� c%,p% +�Dș "Translator_Palette",bpp%,dum%,2:� Calculate standard palette +�=p%=dum%:� c%=1 � 2^bpp%:Pal%(c%)=!p%:p%+=4:�:Pal%(0)=bpp% +�� +� +���grey_palette(bpp%,dir%) +�=� Sets input palette to greyscale for bpp% bits per pixel +�?� dir%=1 gives black to white, dir%=-1 gives white to black +�� code%,c%,p% +��dir%=1 � code%=3 � code%=4 +�Aș "Translator_Palette",bpp%,dum%,code%:� Calculate greyscale +�Ap%=dum%:� c%=1 � 2^bpp%:InPal%(c%)=!p%:p%+=4:�:InPal%(0)=bpp% ,� , ,4��mode_info(mode%,� width%,� height%,� colours%) ,$1� Returns information about a particular mode ,.ncolours%=2^(2^�mode_var(mode%,9)):width%=1+�mode_var(mode%,11):height%=1+�mode_var(mode%,12):� Return info ,8� ,B ,L��invalidate_screen ,V� Invalidates entire screen ,`=ș WForce%,-1,0,0,ScrW%,ScrH%:� Force redraw whole screen ,j� ,t ,~��invalidate_image ,�� Invalidates image ,�Img=�:FreqCalc=�: ,�� ,� ,���new_window(handle%) ,� � Redraws entire window area ,��redraw_window(handle%,�) ,�� ,� ,�"��redraw_window(handle%,force) ,�(� Redraws window with handle handle% ,�<� If force=TRUE the window's entire work area is updated -+� more%,nx%,ny%,vw%,vh%,small%,x%,y%,s% - (!block=handle%:� Set window's handle -x�force � block!4=0:block!8=0:block!12=&7FFF:block!16=&7FFF:ș WUpdateW%,,block � more% � ș WRedrawW%,,block � more% -Fnx%=(block!4-block!20):ny%=(block!16-block!24):� Get sprite origin -(Avw%=block!12-block!4:vh%=block!16-block!8:� Visible area size -2Ȏ handle% � -<' � win_img% : � Redraw image window -F? �ZoomX>=1 � !arg%=ZoomX:arg%!8=1 � !arg%=1:arg%!8=1/ZoomX -PC �ZoomY>=1 � arg%!4=ZoomY:arg%!12=1 � arg%!4=1:arg%!12=1/ZoomY -Z@ small%=((vw%<=160)�(vh%<=160)):� Window possibly too small -dD �small% � x%=block!4:y%=block!8:s%=�max(vw%,vh%):ș WSetCol%,0 -n* ȕ more%:�small% � ȓ Ȑ x%,y%,s%,s% -x8 �plot_image(nx%,ny%,0,arg%):� Display image sprite -�5 ș WGetR%,,block � more%:�:� Get next rectangle -�� -�� -� -���open_window(handle%,info) -�&� Opens window with handle handle% -�:� If info<>0 then info is ready at info, else get info -�� b%,px%,py%,_%,xs%,ys% -��info<>0 � -�' � b%=0 � 31 � 4:block!b%=info!b%:� -�&� !block=handle%:ș WGetWS%,,block -�� �handle%<>win_img% � �mouse(px%,py%,_%):xs%=block!12-block!4:ys%=block!16-block!8:block!4=px%-64:block!8=py%-ys%+16:block!12=block!4+xs%:block!16=block!8+ys%:� Pop up at mouse if not image window -�� .ș WOpenW%,,block .� . ."��close_window(handle%) .,'� Closes window with handle handle% .6%!block=handle%:ș WCloseW%,,block .@� .J .Tݤpoll(mask%) .^@� Returns poll reason code, masking with mask%, data at poll .h� reasoncode .r%ș WPoll%,mask%,poll � reasoncode .|=reasoncode .� .���initialise .�� Initialises program .�>ș "Wimp_ReadPalette",,wimppal:� Read current WIMP palette .�7�hour_on:�init_module:�hour_off:� Initialise module .�Dș "OS_CheckModeValid",18 � _%:MultiSync=(_%<>-1):� Monitor type .�0applname$="Translator":� Name of application .�Fș "Wimp_Initialise",200,&4B534154,applname$ � version,TaskHandle% .�9�version<200 � � 1,"I cannot work with WIMP pre-2.00" .�6W%=�swi_to_nr("Wimp_Initialise"):� Base SWI number .�WCreateW%=W%+1:WCreateI%=W%+2:WDeleteW%=W%+3:WOpenW%=W%+5:WCloseW%=W%+6:WPoll%=W%+7:WRedrawW%=W%+8:WUpdateW%=W%+9:WGetR%=W%+10:WGetWS%=W%+11:WSetIS%=W%+13 .�WGetIS%=W%+14:WGetPI%=W%+15:WDragB%=W%+16:WForce%=W%+17:WCreateM%=W%+20:WDecodeM%=W%+21:WSetE%=W%+23:WLoadT%=W%+27:WReport%=W%+31:WSetM%=W%+35 .�NWSetP%=W%+36:WReadP%=W%+37:WSetCol%=W%+38:WSendMsg%=W%+39:WCreateSM%=W%+40 /}OSSpop%=�swi_to_nr("OS_SpriteOp"):OSReadVV%=�swi_to_nr("OS_ReadVduVariables"):OSReadMV%=�swi_to_nr("OS_ReadModeVariable") /3ș WReadP%,,wimppal:� Read current WIMP palette /=tf%=7:tb%=2:wf%=7:wb%=0:si%=1:so%=3:� Window/menu colours /&�!block=-1:block!4=0:block!8=0:block!12=68:block!16=68:block!20=&27003002:$(block+24)="!translatr":ș WCreateI%,,block � Iiconbar%:� Iconbar icon /0� Load sprites for icons /:H!iconsprites=2048:iconsprites!4=0:iconsprites!8=16:iconsprites!12=16 /D<ș OSSpop%,10+256,iconsprites,"<Translator$Dir>.Sprites" /N� Load templates /X8ș "Wimp_OpenTemplate",,"<Translator$Dir>.Templates" /b<ic=icondata:ie=icondend:� Indirected icon data workspace /l;$dum%="save":ș WLoadT%,,window2,ic,ie,-1,dum%,0 � ,,ic /v$window2!(88+24)=1:� WIMP areaptr /�%ș WCreateW%,,window2 � win_file% /�?SAVsn%=�iconaddr(win_file%,0):SAVfn%=�iconaddr(win_file%,1) /�;$dum%="info":ș WLoadT%,,window3,ic,ie,-1,dum%,0 � ,,ic /�%ș WCreateW%,,window3 � win_info% /�@$dum%="filetypes":ș WLoadT%,,window5,ic,ie,-1,dum%,0 � ,,ic /�&ș WCreateW%,,window5 � win_filet% /�@$dum%="imageinfo":ș WLoadT%,,window4,ic,ie,-1,dum%,0 � ,,ic /�'ș WCreateW%,,window4 � win_iminfo% /Љw%=win_iminfo%:IMIfn%=�iconaddr(w%,9):IMIit%=�iconaddr(w%,10):IMIin%=�iconaddr(w%,11):IMIif%=�iconaddr(w%,12):IMIco%=�iconaddr(w%,13) /�cIMIwh%=�iconaddr(w%,14):IMIsc%=�iconaddr(w%,15):IMIbp%=�iconaddr(w%,16):IMIsm%=�iconaddr(w%,17) /�>$dum%="rgbbits":ș WLoadT%,,window6,ic,ie,-1,dum%,0 � ,,ic /�D� i%=3 � 5:ap%=window6+88+i%*32+24:!ap%=iconsprites:�:� Areaptrs /�(ș WCreateW%,,window6 � win_rgbbits% 0F$dum%="image":IMWtt%=ic:ș WLoadT%,,window1,ic,ie,-1,dum%,0 � ,,ic 0+window1?35=&FF:� Transparent background 0$ș WCreateW%,,window1 � win_img% 0 ș "Wimp_CloseTemplate" 0*� Init variables 04�SaveKind$="":Img=�:Palonoff=�:ZoomX=1:ZoomY=1:sub1%=submenu1:sub2%=submenu2:sub3%=submenu3:ImageSpr$="image":CurrSub$="":Flen%=0:Load$="" 0>�DataSaveRef%=-1:DataLoadRef%=�:YMul%=1:YDiv%=1:XMul%=1:XDiv%=1:ClearFile=�:SaveSpr$="Image":SaveClear$="Clear":SprSave$="":ClearSave$="" 0H�File()=0:SprW%=0:SprH%=0:ImageNr%=1:AutoMode=�:AutoPal=�:CurrMode%=-1:ErrSpread=�:ModeSet=0:UserModeSet%()=0,0,8,12,15:AutoZoom=� 0R�BlackWhite=�:TransTabId=�:ImgMode%=0:GIFScan=�:RGBbits%=&080808:Blanking=�:ZigZag=�:InvertRGB=�:FreqCalc=�:OutMode=1:OutPal=1 0\0�load_status:� Load default status (if any) 0f.�sprite_header(0):� Initialise sprite area 0p� 0z 0�ݤiconaddr(win%,ico%) 0�,� Returns indirected icon's data address 0�>!block=win%:block!4=ico%:ș WGetIS%,,block:� Get icon info 0� =block!28 0� 0�ݤload_status 0�#� Loads default status (if any) 0�H� Returns TRUE if succesful, else FALSE (i.e. status file not found) 0�6Status=�("<Translator$Dir>.Status"):�Status=0 � =� 0�8�#Status,AutoMode,AutoPal,ModeSet,ErrSpread,Palonoff 0���#Status � �#Status,UserModeSet%(1),UserModeSet%(2),UserModeSet%(3),UserModeSet%(4):��#Status � �#Status,AutoZoom:��#Status � �#Status,BlackWhite 0�}��#Status � �#Status,GIFScan:��#Status � �#Status,Blanking:��#Status � �#Status,InvertRGB:��#Status � �#Status,ZigZag 0��#Status:=� 1 1H��create_menu(x%,y%,title$,width%,height%,gap%,icon1$,icon2$,create) 16� Writes menu structure, creates it if create=TRUE 1$=� - If x%<0 then x/y coordinates are (mouseX-64),(mouseY) 1.J� - If title$ starts "^<nr>" then this becomes a <nr>'th submenu (1/2) 18A� - Menu icons in icon strings : ?<icon1>|?<icon2>|..... etc. 1B1� - ? is a character containing select bits : 1L� bit 0 : icon is ticked 1V1� bit 1 : icon is followed by a dotted line 1` � bit 2 : icon is writable 1j4� bit 3 : icon is shaded (i.e. not selectable) 1t>� bit 4 : writable icon has 40 characters room (else 16) 1~� bit 5 : always 1 1�A� - icons of form '?<str>&<val>' have validation string <val> 1�F� - icons of form '?<str>#<val>' have sub-window with handle <val> 1�4� also, the 'menu warning message' is selected 1�9� i$,ptr%,ix%,dataptr%,ilen%,p%,it$,type%,data$,menu% 1�"� valid$,sub,call%,tick%,writ% 1�4� butty%,shaded%,dotted%,sub%,subwarn%,icon%,nr% 1�?�x%<0 � �mouse(x%,y%,_%):x%-=64:� Get coordinates via mouse 1��title$,1)="^" � 1� sub=�:nr%=�(�title$,2,1)) 1�G �nr%=1 � menu%=submenu1 � �nr%=2 � menu%=submenu2 � menu%=submenu3 1� title$=�title$,3) 1�� sub=�:menu%=menu1 2� 2 t$menu%=title$:menu%?12=tf%:menu%?13=tb%:menu%?14=wf%:menu%?15=wb%:menu%!16=width%:menu%!20=height%:menu%!24=gap% 2� Define icons 2)i$=icon1$:icon%=1:� First icon string 2(5ptr%=menu%+28:ix%=0:dataptr%=menu%+512:� Pointers 22ȕ i$<>"":p%=�i$,"|") 2<�p%=0 � 2F i$="" 2P� � Define icon 2Z! it$=�i$,p%-1):i$=�i$,�i$-p%) 2d& type%=��it$,1):data$=�it$,�it$-1) 2n� tick%=(type%�%000001):dotted%=(type%�%000010)>>1:writ%=(type%�%000100)>>2:shaded%=(type%�%001000)>>3:long%=(type%�%010000)>>4 2xq valid$="":p%=�data$,"&"):�p%>0 � valid$=�data$,p%+1):data$=�data$,p%-1):� Extract validation string (if any) 2�� sub%=-1:subwarn%=0:p%=�data$,"#"):�p%>0 � sub%=�(�data$,p%+1)):subwarn%=1:data$=�data$,p%-1):� Extract subwindow handle (if any) 2�> �writ%=0 � ilen%=�data$+1 ��long%=0 � ilen%=16 � ilen%=40 2�C !ptr%=(subwarn%<<3)+(writ%<<2)+(dotted%<<1)+tick%:� Menu flags 2�" ptr%!4=sub%:� Sub menu/window 2�> ptr%!8=(wb%<<28)+(wf%<<24)+(shaded%<<22)+(1<<8)+1:� Flags 2�E $dataptr%=data$:ptr%!12=dataptr%:ptr%!20=ilen%:dataptr%+=ilen%+1 2�T �valid$="" � ptr%!16=-1 � $dataptr%=valid$:ptr%!16=dataptr%:dataptr%+=�valid$+1 2� ptr%+=24:ix%+=1 2�� 2�*�i$="" � �icon%=1 � i$=icon2$:icon%+=1 2�� 2�2ptr%!-24=(ptr%!-24)�&80:� Indicate 'last icon' 2��create � � 3A�sub � ș WCreateSM%,,menu%,x%,y% � ș WCreateM%,,menu%,x%,y% 3� 3 3"ݤsel(t%,d%,w%,s%,r%) 3,2� Returns select character for icon attributes 36E=�((1<<5)+((r%�1)<<4)+((s%�1)<<3)+((w%�1)<<2)+((d%�1)<<1)+(t%�1)) 3@ 3J ݤums 3T7� Returns string representing current user mode set 3^\=�(UserModeSet%(1))+","+�(UserModeSet%(2))+","+�(UserModeSet%(3))+","+�(UserModeSet%(4)) 3h 3rݤavailable_mode(mode%) 3|C� Checks if mode% is a valid WIMP mode and available on monitor 3�0�mode%=3 � mode%=6 � mode%=7 � mode%=23 � =� 3��mode%<0 � mode%>28 � =� 3�*�mode%=24 � mode%<18 � =� � =MultiSync 3� 3�ݤalign(val%) 3�0� Returns next-up word aligned value of val% 3�=(val%+3)��3 3� 3�ݤreadpalval(rgb%) 3�3� Returns 'OS_ReadPalette' word from &RGB value 3�?=((rgb%�&FF)<<24)+((rgb%�&FF00)<<8)+((rgb%�&FF0000)>>8)+&10 3� 3�ݤstring(addr%) 42� Returns CTRL-char terminated string at addr% 4� _%,_c%,_$ 4_%=-1:� _%+=1:� addr%?_%<32 4&3_c%=addr%?_%:addr%?_%=13:_$=$addr%:addr%?_%=_c% 40=_$ 4: 4Dݤupstring(m$) 4N� Returns upper case m$ 4X� c%,v%,u$ 4bRu$=m$:� c%=1 � � m$:v%=��m$,c%,1):�(v%<=�"z")�(v%>=�"a") � �u$,c%,1)=�(v%�&5F) 4l �:=u$ 4v 4���mouse(� x%,� y%,� but%) 4�+� Returns x,y and button state of mouse 4�ȗ x%,y%,but% 4�� 4� 4� ݤc256 4�5� Returns TRUE if current mode is 256 colour mode 4�=(�log2BPP=3) 4� 4� ݤlog2BPP 4�&� Returns Log2BPP for current mode 4�=�mode_var(�,9) 4� 5ݤvdu_var(varnr%) 5!� Returns VDU variable varnr% 5;!arg%=varnr%:arg%!4=-1:ș OSReadVV%,arg%,arg%+8:=arg%!8 5 5*ݤmode_var(mode%,varnr%) 54(� Returns mode mode% variable varnr% 5> � result% 5H2ș OSReadMV%,mode%,varnr% � ,,result%:=result% 5R 5\ݤOS_var(_$) 5f.� Attempts to return OS-var's string value 5p � _r$,_l% 5z7ș "XOS_ReadVarVal",_$,�100," "),100,0,3 � ,_r$,_l% 5�_r$=�_r$,_l%):=_r$ 5� 5�ݤswi_to_nr(swi$) 5�)� Returns SWI number of SWI call swi$ 5�� swinr% 5�/ș "XOS_SWINumberFromString",,swi$ � swinr% 5�=swinr% 5� 5���error(errnr,errmsg$) 5�� Handles errors 5�� but%,oldpal,opt% 5�9ș "Translator_VideoDMA",1:� Ensure video DMA enabled 5�'�errnr=-1 � errnr=1:opt%=1 � opt%=3 6!err=errnr:$(err+4)=errmsg$ 6Dș "Translator_Palette",2^�log2BPP,dum%,1:� Read current palette 6)�set_palette(0):� Select WIMP palette 6$*ș WReport%,err,opt%,applname$ � ,but% 6.�but%<>1 � �die 68Bș "Translator_SetPalette",2^(2^�log2BPP),dum%:� Reset palette 6B� 6L 6V ݤsprW 6`?� Returns image sprite's width in OS pixels in current mode 6j=SprW%*2^�mode_var(�,4) 6t 6~ ݤsprH 6�@� Returns image sprite's height in OS pixels in current mode 6�=SprH%*2^�mode_var(�,5) 6� 6�ݤmax(v1%,v2%) 6�$� Returns maximum of v1% and v2% 6��v1%>v2% � =v1% � =v2% 6� 6� ��die 6�� Tidies up and exits 6��finish:� Tidy up 6�ș "OS_Exit" 6�� 7 7 ��finish 7� Tidies up 71� Send message to ask if module can be killed 7(�!block=20:block!12=0:block!16=&CCE00:ș WSendMsg%,18,block,0:kill=�:� listen%=�poll(0):kill=kill � ((listen%=19)�(poll!16=&CCE00)�(poll!12=0)):� listen%=0:�kill � ș "OS_Module",4,"Translator" 72&ș WSetP%,,wimppal:� Reset palette 7<-ș "Wimp_CloseDown",TaskHandle%,&4B534154 7F� 7P 7Z#ݤmode(width%,height%,colours%) 7dL� Returns, if possible, a standard screen mode that is most suitable for 7nK� displaying a picture of (width%)x(height%) pixels in colours% colours 7x6� Returns -1 if number of colours greater than 256 7�)� arccols%,arcwidth%,archeight%,mode% 7��OutMode=2 � =� 7�/� Range check for colours, width and height 7�&�colours%>256 � =-1:� Impossible ! 7�,� Determine closest colours/width/height 7�c�colours%>16 � arccols%=256 � �colours%>4 � arccols%=16 � �colours%>2 � arccols%=4 � arccols%=2 7�N�width%>640 � arcwidth%=1056 � �width%>320 � arcwidth%=640 � arcwidth%=320 7�3�height%<=256 � archeight%=256 � archeight%=512 7�Ȏ arccols% � 7�/ � 2 : �archeight%=512 � mode%=18 � mode%=0 7�K � 4 : �archeight%=512 � mode%=19 � �arcwidth%<=320 � mode%=1 � mode%=8 7�i � 16 : �archeight%=512 � mode%=20 � �arcwidth%<=320 � mode%=9 � �arcwidth%=640 � mode%=12 � mode%=16 7�� � 256 : �archeight%=512 � mode%=21 � �arcwidth%=160 � mode%=10 � �arcwidth%=320 � mode%=13 � �arcwidth%=640 � mode%=15 � mode%=24 8� 8 =mode% 8 8"ݤtimes(value%) 8,0� Returns STR$value% with 'plural extension' 86 � _d% 8@3_d%=value%�10:� Last digit determines extension 8J:�(((value%�100)�10)=1)�(_d%>3)�(_d%=0) � =�value%+"th" 8TȎ _d% � 8^ � 1 : =�value%+"st" 8h � 2 : =�value%+"nd" 8r � 3 : =�value%+"rd" 8|� 8� 8�ݤistring(fn%,len%) 8�!� Returns string of from file 8�0� If len%>0 the number of characters is len% 8�8� If len%=-1 the string is CTRL-character terminated 8�� _%,r$,c% 8�l_$="":�len%>0 � � _%=1 � len%:r$+=��i1(fn%):� � �len%=-1 � c%=�i1(fn%):ȕ c%>=�" ":r$+=�c%:c%=�i1(fn%):� 8�=r$ 8� 8���iskip(fn%,amount%) 8�!� Skips amount% bytes in file 8�#�#File(fn%)=amount%+�#File(fn%) 8�� 9 9��iptr(fn%,newptr%) 9� Sets new offset in file 9&�#File(fn%)=newptr% 90� 9: 9Dݤiptr(fn%) 9N$� Returns current offset in file 9X=�#File(fn%) 9b 9lݤilen(fn%) 9v� Returns length of file 9�=�#File(fn%) 9� 9�ݤieof(fn%) 9�(� Returns end-of-file status of file 9�=�#File(fn%) 9� 9���iclose 9�� Closes all input files 9�� f% 9�3� f%=1 � 10:�File(f%)>0 � �#File(f%):File(f%)=0 9�� 9�� 9� :��iget(fn%,adr%,amount%) :-� Returns amount% bytes at adr% from file :)ș "OS_GBPB",4,File(fn%),adr%,amount% : � :* :4ݤi1(fn%):=�i(fn%,1) :>ݤi2(fn%):=�i(fn%,2) :Hݤi3(fn%):=�i(fn%,3) :Rݤi4(fn%):=�i(fn%,4) :\ :fݤi(fn%,len%) :p'� Returns len%-byte value from file :z� _%,_r% :�_r%=0:� _%=1 � len% :�Ȏ iType% � :�# � 1 : _r%=(_r%<<8)+�#File(fn%) :�( : _r%+=((�#File(fn%))<<(_%-1)*8) :��:� :�=_r% :� :���o(fh%,val%,bytes%) :�+� Outputs value of bytes% bytes to file :�� i% :�-� i%=1 � bytes%:�#fh%,val%:val%=val%>>8:� :�� :� ;��ostring(fh%,v$) ;� Outputs string to file ;� i% ;$#� i%=1 � �v$:�#fh%,��v$,i%,1):� ;.� ;8 ;B��init_module ;L� Initialises module ;V.ș "Translator_MakeMaps":� Initialise maps ;`� ;j ;t��var(varname$,value%) ;~� Writes module variable ;�;$dum%=varname$:ș "Translator_SetVariable",!dum%,value% ;�� ;� ;�ݤvar(varname$) ;�� Reads module variable ;�� value% ;�>$dum%=varname$:ș "Translator_ReadVariable",!dum% � value% ;�=value% ;� ;�ݤOSvar(name$) ;�.� Attempts to return OS-var's string value ;� � _r$,_l% <C_r$=�100," "):ș "XOS_ReadVarVal",name$,_r$,�_r$,0,3 � ,_r
00000000 0d 00 0a 10 f4 20 3e 21 52 75 6e 49 6d 61 67 65 |..... >!RunImage| 00000010 0d 00 14 4b f4 ab ab ab ab ab ab ab ab ab ab ab |...K............| 00000020 ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab |................| * 00000050 ab ab ab ab ab ab ab ab ab ab ab 0d 00 1e 4b f4 |..............K.| 00000060 20 43 6f 6e 76 65 72 74 73 20 66 6f 72 65 69 67 | Converts foreig| 00000070 6e 20 67 72 61 70 68 69 63 73 20 66 69 6c 65 73 |n graphics files| 00000080 20 74 6f 20 41 72 63 68 69 6d 65 64 65 73 20 20 | to Archimedes | 00000090 20 20 20 20 20 20 20 20 20 20 20 20 28 52 49 53 | (RIS| 000000a0 43 57 41 52 45 29 0d 00 28 2d f4 20 56 65 72 73 |CWARE)..(-. Vers| 000000b0 69 6f 6e 20 64 61 74 65 20 3a 20 53 61 74 2c 30 |ion date : Sat,0| 000000c0 37 20 4a 75 6c 20 31 39 39 30 2e 31 31 3a 35 39 |7 Jul 1990.11:59| 000000d0 3a 34 36 0d 00 32 1e f4 20 a9 20 31 39 39 30 20 |:46..2.. . 1990 | 000000e0 5a 65 72 69 64 61 6a 68 20 73 6f 66 74 77 61 72 |Zeridajh softwar| 000000f0 65 0d 00 3c 15 f4 20 62 79 20 4a 6f 68 6e 20 4b |e..<.. by John K| 00000100 6f 72 74 69 6e 6b 0d 00 46 4b f4 ab ab ab ab ab |ortink..FK......| 00000110 ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab |................| * 00000150 ab 0d 00 50 31 ee 20 85 20 eb 30 3a f1 27 22 45 |...P1. . .0:.'"E| 00000160 72 72 6f 72 22 27 27 22 27 22 3b f6 24 3b 22 27 |rror"''"'";.$;"'| 00000170 20 28 63 6f 64 65 20 22 3b 9e 3b 22 29 22 27 27 | (code ";.;")"''| 00000180 3a e0 0d 00 5a 3a de 20 6d 65 6e 75 31 20 26 34 |:...Z:. menu1 &4| 00000190 30 30 2c 73 75 62 6d 65 6e 75 31 20 26 34 30 30 |00,submenu1 &400| 000001a0 2c 73 75 62 6d 65 6e 75 32 20 26 34 30 30 2c 73 |,submenu2 &400,s| 000001b0 75 62 6d 65 6e 75 33 20 26 34 30 30 0d 00 64 2c |ubmenu3 &400..d,| 000001c0 de 20 77 69 6e 64 6f 77 31 20 26 31 30 30 2c 77 |. window1 &100,w| 000001d0 69 6e 64 6f 77 32 20 26 31 30 30 2c 77 69 6e 64 |indow2 &100,wind| 000001e0 6f 77 33 20 26 32 30 30 0d 00 6e 2c de 20 77 69 |ow3 &200..n,. wi| 000001f0 6e 64 6f 77 34 20 26 34 30 30 2c 77 69 6e 64 6f |ndow4 &400,windo| 00000200 77 35 20 26 36 30 30 2c 77 69 6e 64 6f 77 36 20 |w5 &600,window6 | 00000210 26 32 30 30 0d 00 78 2f de 20 69 63 6f 6e 73 70 |&200..x/. iconsp| 00000220 72 69 74 65 73 20 32 30 34 38 2c 69 63 6f 6e 64 |rites 2048,icond| 00000230 61 74 61 20 34 30 39 36 2c 69 63 6f 6e 64 65 6e |ata 4096,iconden| 00000240 64 20 30 0d 00 82 44 de 20 70 6f 6c 6c 20 32 35 |d 0...D. poll 25| 00000250 36 2c 62 6c 6f 63 6b 20 32 35 36 2c 65 72 72 20 |6,block 256,err | 00000260 32 35 36 2c 77 69 6d 70 70 61 6c 20 32 35 36 2c |256,wimppal 256,| 00000270 70 6f 69 6e 74 65 72 20 35 31 32 2c 73 74 72 6f |pointer 512,stro| 00000280 66 66 20 34 30 39 36 0d 00 8c 45 de 20 49 6e 50 |ff 4096...E. InP| 00000290 61 6c 25 28 32 35 36 29 2c 49 6d 67 50 61 6c 25 |al%(256),ImgPal%| 000002a0 28 32 35 36 29 2c 53 68 6f 77 50 61 6c 25 28 32 |(256),ShowPal%(2| 000002b0 35 36 29 2c 55 73 65 72 4d 6f 64 65 53 65 74 25 |56),UserModeSet%| 000002c0 28 34 29 2c 46 69 6c 65 28 31 30 29 0d 00 96 27 |(4),File(10)...'| 000002d0 de 20 61 72 67 25 20 31 30 32 34 2c 64 75 6d 25 |. arg% 1024,dum%| 000002e0 20 31 30 32 34 2c 74 72 61 6e 73 74 61 62 25 20 | 1024,transtab% | 000002f0 32 35 36 0d 00 a0 35 de 20 70 61 6c 72 67 62 25 |256...5. palrgb%| 00000300 20 31 30 32 34 2c 68 61 6d 62 61 73 25 20 36 34 | 1024,hambas% 64| 00000310 2c 66 72 65 71 25 20 31 30 32 34 2c 6f 75 74 70 |,freq% 1024,outp| 00000320 61 6c 25 20 31 30 32 34 0d 00 aa 4c 50 72 6f 67 |al% 1024...LProg| 00000330 6e 65 65 64 25 3d 31 32 30 2a 31 30 32 34 3a f4 |need%=120*1024:.| 00000340 20 45 73 74 69 6d 61 74 65 64 20 73 70 61 63 65 | Estimated space| 00000350 20 6e 65 65 64 65 64 20 66 6f 72 20 70 72 6f 67 | needed for prog| 00000360 72 61 6d 2b 76 61 72 73 20 28 6e 6f 20 73 70 72 |ram+vars (no spr| 00000370 62 75 66 29 0d 00 b4 37 54 6f 74 61 6c 66 72 65 |buf)...7Totalfre| 00000380 65 25 3d 93 2d 90 3a f4 20 54 6f 74 61 6c 20 66 |e%=.-.:. Total f| 00000390 72 65 65 20 66 6f 72 20 70 72 6f 67 72 61 6d 2b |ree for program+| 000003a0 76 61 72 73 2b 73 70 72 62 75 66 0d 00 be 3d 53 |vars+sprbuf...=S| 000003b0 70 72 69 74 65 73 69 7a 65 25 3d 54 6f 74 61 6c |pritesize%=Total| 000003c0 66 72 65 65 25 2d 50 72 6f 67 6e 65 65 64 25 3a |free%-Progneed%:| 000003d0 f4 20 46 72 65 65 20 66 6f 72 20 73 70 72 69 74 |. Free for sprit| 000003e0 65 20 62 75 66 66 65 72 0d 00 c8 45 e7 53 70 72 |e buffer...E.Spr| 000003f0 69 74 65 73 69 7a 65 25 3c 31 30 32 34 20 8c 20 |itesize%<1024 . | 00000400 85 20 31 2c 22 4e 6f 20 72 6f 6f 6d 20 74 6f 20 |. 1,"No room to | 00000410 73 74 61 72 74 20 75 70 20 54 72 61 6e 73 6c 61 |start up Transla| 00000420 74 6f 72 20 70 72 6f 70 65 72 6c 79 22 0d 00 d2 |tor properly"...| 00000430 29 de 20 53 70 72 69 74 65 25 20 53 70 72 69 74 |). Sprite% Sprit| 00000440 65 73 69 7a 65 25 3a f4 20 53 70 72 69 74 65 20 |esize%:. Sprite | 00000450 62 75 66 66 65 72 0d 00 dc 28 f2 69 6e 69 74 69 |buffer...(.initi| 00000460 61 6c 69 73 65 3a f4 20 49 6e 69 74 69 61 6c 69 |alise:. Initiali| 00000470 73 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 00 |se application..| 00000480 e6 34 f2 6d 6f 64 65 5f 63 68 61 6e 67 65 28 2d |.4.mode_change(-| 00000490 31 29 3a f4 20 52 65 73 65 6c 65 63 74 20 63 75 |1):. Reselect cu| 000004a0 72 72 65 6e 74 20 6d 6f 64 65 20 74 6f 20 74 69 |rrent mode to ti| 000004b0 64 79 0d 00 f0 2d ee 20 85 20 f2 65 72 72 6f 72 |dy...-. . .error| 000004c0 28 9f 2c f6 24 2b 22 20 28 63 6f 64 65 20 22 2b |(.,.$+" (code "+| 000004d0 c3 9e 2b 22 29 22 29 3a f2 69 63 6c 6f 73 65 0d |..+")"):.iclose.| 000004e0 00 fa d1 e7 53 70 72 69 74 65 73 69 7a 65 25 3c |....Spritesize%<| 000004f0 38 30 2a 31 30 32 34 20 8c 20 f2 65 72 72 6f 72 |80*1024 . .error| 00000500 28 30 2c 22 57 41 52 4e 49 4e 47 20 21 20 49 20 |(0,"WARNING ! I | 00000510 68 61 76 65 20 6f 6e 6c 79 20 22 2b c3 28 53 70 |have only "+.(Sp| 00000520 72 69 74 65 73 69 7a 65 25 29 2b 22 20 62 79 74 |ritesize%)+" byt| 00000530 65 73 20 66 72 65 65 20 66 6f 72 20 69 6d 61 67 |es free for imag| 00000540 65 20 68 61 6e 64 6c 69 6e 67 2e 20 50 72 65 73 |e handling. Pres| 00000550 73 20 4f 4b 20 74 6f 20 63 6f 6e 74 69 6e 75 65 |s OK to continue| 00000560 20 77 69 74 68 20 74 68 69 73 20 74 72 69 63 6b | with this trick| 00000570 79 20 73 69 74 75 61 74 69 6f 6e 20 6f 72 20 43 |y situation or C| 00000580 41 4e 43 45 4c 20 74 6f 20 71 75 69 74 20 28 61 |ANCEL to quit (a| 00000590 6e 64 20 72 65 73 65 72 76 65 20 73 6f 6d 65 20 |nd reserve some | 000005a0 6d 6f 72 65 20 6d 65 6d 6f 72 79 20 21 29 22 29 |more memory !)")| 000005b0 0d 01 04 17 f5 20 f4 20 50 6f 6c 6c 20 61 6e 64 |..... . Poll and| 000005c0 20 61 63 74 69 6f 6e 0d 01 0e 44 e7 44 61 74 61 | action...D.Data| 000005d0 4c 6f 61 64 52 65 66 25 20 8c 20 70 6f 6c 6c 6d |LoadRef% . pollm| 000005e0 61 73 6b 25 3d 34 38 20 8b 20 70 6f 6c 6c 6d 61 |ask%=48 . pollma| 000005f0 73 6b 25 3d 34 39 3a f4 20 4e 6f 20 6e 75 6c 6c |sk%=49:. No null| 00000600 73 20 69 66 20 77 61 73 74 65 64 0d 01 18 19 c8 |s if wasted.....| 00000610 8e 20 a4 70 6f 6c 6c 28 70 6f 6c 6c 6d 61 73 6b |. .poll(pollmask| 00000620 25 29 20 ca 0d 01 22 30 20 c9 20 30 20 3a 20 f2 |%) ..."0 . 0 : .| 00000630 6e 75 6c 6c 3a f4 20 4e 6f 74 68 69 6e 67 20 74 |null:. Nothing t| 00000640 6f 20 64 6f 2c 20 70 65 72 66 6f 72 6d 20 63 68 |o do, perform ch| 00000650 65 63 6b 73 0d 01 2c 2a 20 c9 20 31 20 3a 20 f2 |ecks..,* . 1 : .| 00000660 72 65 64 72 61 77 3a f4 20 52 65 64 72 61 77 20 |redraw:. Redraw | 00000670 77 69 6e 64 6f 77 20 72 65 71 75 65 73 74 0d 01 |window request..| 00000680 36 26 20 c9 20 32 20 3a 20 f2 6f 70 65 6e 3a f4 |6& . 2 : .open:.| 00000690 20 4f 70 65 6e 20 77 69 6e 64 6f 77 20 72 65 71 | Open window req| 000006a0 75 65 73 74 0d 01 40 28 20 c9 20 33 20 3a 20 f2 |uest..@( . 3 : .| 000006b0 63 6c 6f 73 65 3a f4 20 43 6c 6f 73 65 20 77 69 |close:. Close wi| 000006c0 6e 64 6f 77 20 72 65 71 75 65 73 74 0d 01 4a 26 |ndow request..J&| 000006d0 20 c9 20 36 20 3a 20 f2 6d 6f 75 73 65 63 6c 69 | . 6 : .mousecli| 000006e0 63 6b 3a f4 20 4d 6f 75 73 65 20 63 6c 69 63 6b |ck:. Mouse click| 000006f0 65 64 0d 01 54 3f 20 c9 20 37 20 3a 20 f2 64 72 |ed..T? . 7 : .dr| 00000700 61 67 64 72 6f 70 3a f4 20 55 73 65 72 20 68 61 |agdrop:. User ha| 00000710 73 20 64 72 6f 70 70 65 64 20 64 72 61 67 20 62 |s dropped drag b| 00000720 6f 78 20 6f 66 20 66 69 6c 65 20 77 69 6e 64 6f |ox of file windo| 00000730 77 0d 01 5e 1d 20 c9 20 38 20 3a 20 f2 6b 65 79 |w..^. . 8 : .key| 00000740 3a f4 20 4b 65 79 20 70 72 65 73 73 65 64 0d 01 |:. Key pressed..| 00000750 68 31 20 c9 20 39 20 3a 20 f2 6d 65 6e 75 73 65 |h1 . 9 : .menuse| 00000760 6c 65 63 74 3a f4 20 4d 65 6e 75 20 73 65 6c 65 |lect:. Menu sele| 00000770 63 74 69 6f 6e 20 66 72 6f 6d 20 75 73 65 72 0d |ction from user.| 00000780 01 72 2b 20 c9 20 31 37 2c 31 38 20 3a 20 f2 6d |.r+ . 17,18 : .m| 00000790 65 73 73 61 67 65 3a f4 20 4d 65 73 73 61 67 65 |essage:. Message| 000007a0 20 66 72 6f 6d 20 57 49 4d 50 0d 01 7c 05 cb 0d | from WIMP..|...| 000007b0 01 86 07 fd 20 a3 0d 01 90 04 0d 01 9a 10 dd f2 |.... ...........| 000007c0 6d 65 6e 75 73 65 6c 65 63 74 0d 01 a4 3f c8 99 |menuselect...?..| 000007d0 20 57 44 65 63 6f 64 65 4d 25 2c 2c 6d 65 6e 75 | WDecodeM%,,menu| 000007e0 31 2c 70 6f 6c 6c 2c c4 31 30 30 2c 22 20 22 29 |1,poll,.100," ")| 000007f0 20 b8 20 2c 2c 2c 73 65 6c 65 63 74 24 3a f4 20 | . ,,,select$:. | 00000800 53 65 6c 65 63 74 69 6f 6e 0d 01 ae 2d f4 20 44 |Selection...-. D| 00000810 65 63 6f 64 65 20 6d 61 69 6e 2f 73 75 62 2f 73 |ecode main/sub/s| 00000820 75 62 73 75 62 20 73 65 6c 65 63 74 69 6f 6e 20 |ubsub selection | 00000830 73 74 72 69 6e 67 0d 01 b8 2a 6d 65 6e 75 70 61 |string...*menupa| 00000840 74 68 24 3d 73 65 6c 65 63 74 24 3a f4 20 52 65 |th$=select$:. Re| 00000850 6d 65 6d 62 65 72 20 6d 65 6e 75 20 70 61 74 68 |member menu path| 00000860 0d 01 c2 50 73 65 6c 65 63 74 32 3d a3 3a 73 65 |...Pselect2=.:se| 00000870 6c 65 63 74 33 3d a3 3a 73 65 6c 65 63 74 34 3d |lect3=.:select4=| 00000880 a3 3a 73 65 6c 65 63 74 32 24 3d 22 22 3a 73 65 |.:select2$="":se| 00000890 6c 65 63 74 33 24 3d 22 22 3a 73 65 6c 65 63 74 |lect3$="":select| 000008a0 34 24 3d 22 22 3a f4 20 44 65 66 61 75 6c 74 73 |4$="":. Defaults| 000008b0 0d 01 cc bd 70 25 3d a7 73 65 6c 65 63 74 24 2c |....p%=.select$,| 000008c0 22 2e 22 29 3a e7 70 25 3e 30 20 8c 20 73 65 6c |"."):.p%>0 . sel| 000008d0 65 63 74 32 3d b9 3a 73 65 6c 65 63 74 32 24 3d |ect2=.:select2$=| 000008e0 c1 73 65 6c 65 63 74 24 2c 70 25 2b 31 29 3a 73 |.select$,p%+1):s| 000008f0 65 6c 65 63 74 24 3d c0 73 65 6c 65 63 74 24 2c |elect$=.select$,| 00000900 70 25 2d 31 29 3a 70 25 3d a7 73 65 6c 65 63 74 |p%-1):p%=.select| 00000910 32 24 2c 22 2e 22 29 3a e7 70 25 3e 30 20 8c 20 |2$,"."):.p%>0 . | 00000920 73 65 6c 65 63 74 33 3d b9 3a 73 65 6c 65 63 74 |select3=.:select| 00000930 33 24 3d c1 73 65 6c 65 63 74 32 24 2c 70 25 2b |3$=.select2$,p%+| 00000940 31 29 3a 73 65 6c 65 63 74 32 24 3d c0 73 65 6c |1):select2$=.sel| 00000950 65 63 74 32 24 2c 70 25 2d 31 29 3a 70 25 3d a7 |ect2$,p%-1):p%=.| 00000960 73 65 6c 65 63 74 33 24 2c 22 2e 22 29 0d 01 d6 |select3$,".")...| 00000970 47 e7 70 25 3e 30 20 8c 20 73 65 6c 65 63 74 34 |G.p%>0 . select4| 00000980 3d b9 3a 73 65 6c 65 63 74 34 24 3d c1 73 65 6c |=.:select4$=.sel| 00000990 65 63 74 33 24 2c 70 25 2b 31 29 3a 73 65 6c 65 |ect3$,p%+1):sele| 000009a0 63 74 33 24 3d c0 73 65 6c 65 63 74 33 24 2c 70 |ct3$=.select3$,p| 000009b0 25 2d 31 29 0d 01 e0 34 f4 20 46 69 6c 74 65 72 |%-1)...4. Filter| 000009c0 20 63 6c 69 63 6b 73 20 6f 6e 20 72 6f 6f 74 73 | clicks on roots| 000009d0 20 6f 66 20 65 6e 74 72 69 65 73 20 77 69 74 68 | of entries with| 000009e0 20 73 75 62 6d 65 6e 75 0d 01 ea 12 c8 8e 20 6d | submenu...... m| 000009f0 65 6e 75 70 61 74 68 24 20 ca 0d 01 f4 73 20 c9 |enupath$ ....s .| 00000a00 20 22 49 6d 61 67 65 20 69 6e 66 6f 22 2c 22 50 | "Image info","P| 00000a10 6f 70 20 75 70 22 2c 22 50 72 6f 63 65 73 73 69 |op up","Processi| 00000a20 6e 67 22 2c 22 5a 6f 6f 6d 20 69 6d 61 67 65 22 |ng","Zoom image"| 00000a30 2c 22 4d 69 72 72 6f 72 20 69 6d 61 67 65 22 2c |,"Mirror image",| 00000a40 22 53 61 76 65 20 69 6d 61 67 65 22 2c 22 53 74 |"Save image","St| 00000a50 61 74 75 73 22 20 3a 20 e7 73 65 6c 65 63 74 32 |atus" : .select2| 00000a60 20 8b 20 73 65 6c 65 63 74 24 3d 22 22 0d 01 fe | . select$=""...| 00000a70 a9 20 c9 20 22 50 72 6f 63 65 73 73 69 6e 67 2e |. . "Processing.| 00000a80 4f 75 74 70 75 74 20 6d 6f 64 65 22 2c 22 50 72 |Output mode","Pr| 00000a90 6f 63 65 73 73 69 6e 67 2e 4f 75 74 70 75 74 20 |ocessing.Output | 00000aa0 70 61 6c 65 74 74 65 22 2c 22 50 72 6f 63 65 73 |palette","Proces| 00000ab0 73 69 6e 67 2e 49 6d 61 67 65 20 6e 75 6d 62 65 |sing.Image numbe| 00000ac0 72 22 2c 22 50 6f 70 20 75 70 2e 4d 6f 64 65 20 |r","Pop up.Mode | 00000ad0 73 65 74 22 2c 22 5a 6f 6f 6d 2e 49 6e 22 2c 22 |set","Zoom.In","| 00000ae0 5a 6f 6f 6d 2e 4f 75 74 22 2c 22 50 72 6f 63 65 |Zoom.Out","Proce| 00000af0 73 73 69 6e 67 2e 53 63 61 6c 69 6e 67 22 20 3a |ssing.Scaling" :| 00000b00 20 e7 73 65 6c 65 63 74 33 20 8b 20 73 65 6c 65 | .select3 . sele| 00000b10 63 74 24 3d 22 22 0d 02 08 4c 20 c9 20 22 50 72 |ct$=""...L . "Pr| 00000b20 6f 63 65 73 73 69 6e 67 2e 53 63 61 6c 69 6e 67 |ocessing.Scaling| 00000b30 2e 78 22 2c 22 50 72 6f 63 65 73 73 69 6e 67 2e |.x","Processing.| 00000b40 53 63 61 6c 69 6e 67 2e 79 22 20 3a 20 e7 73 65 |Scaling.y" : .se| 00000b50 6c 65 63 74 34 20 8b 20 73 65 6c 65 63 74 24 3d |lect4 . select$=| 00000b60 22 22 0d 02 12 05 cb 0d 02 1c 10 c8 8e 20 73 65 |""........... se| 00000b70 6c 65 63 74 24 20 ca 0d 02 26 18 20 c9 20 22 22 |lect$ ...&. . ""| 00000b80 20 3a 20 f4 20 44 6f 20 6e 6f 74 68 69 6e 67 0d | : . Do nothing.| 00000b90 02 30 1e 20 c9 20 22 51 75 69 74 22 20 3a 20 f4 |.0. . "Quit" : .| 00000ba0 20 51 75 69 74 20 70 72 6f 67 72 61 6d 0d 02 3a | Quit program..:| 00000bb0 1d 20 20 f2 64 69 65 3a f4 20 54 69 64 79 20 75 |. .die:. Tidy u| 00000bc0 70 20 61 6e 64 20 65 78 69 74 0d 02 44 22 20 c9 |p and exit..D" .| 00000bd0 20 22 50 6f 70 20 75 70 22 20 3a 20 f4 20 50 6f | "Pop up" : . Po| 00000be0 70 20 75 70 20 6f 70 74 69 6f 6e 73 0d 02 4e 13 |p up options..N.| 00000bf0 20 20 c8 8e 20 73 65 6c 65 63 74 32 24 20 ca 0d | .. select2$ ..| 00000c00 02 58 3a 20 20 20 c9 20 22 41 75 74 6f 20 6d 6f |.X: . "Auto mo| 00000c10 64 65 22 20 3a 20 f4 20 54 6f 67 67 6c 65 20 61 |de" : . Toggle a| 00000c20 75 74 6f 20 6d 6f 64 65 20 73 65 6c 65 63 74 69 |uto mode selecti| 00000c30 6f 6e 20 6f 6e 2f 6f 66 66 0d 02 62 23 20 20 20 |on on/off..b# | 00000c40 20 41 75 74 6f 4d 6f 64 65 3d ac 41 75 74 6f 4d | AutoMode=.AutoM| 00000c50 6f 64 65 3a f4 20 54 6f 67 67 6c 65 0d 02 6c 40 |ode:. Toggle..l@| 00000c60 20 20 20 c9 20 22 41 75 74 6f 20 70 61 6c 65 74 | . "Auto palet| 00000c70 74 65 22 20 3a 20 f4 20 54 6f 67 67 6c 65 20 61 |te" : . Toggle a| 00000c80 75 74 6f 20 70 61 6c 65 74 74 65 20 73 65 6c 65 |uto palette sele| 00000c90 63 74 69 6f 6e 20 6f 6e 2f 6f 66 66 0d 02 76 21 |ction on/off..v!| 00000ca0 20 20 20 20 41 75 74 6f 50 61 6c 3d ac 41 75 74 | AutoPal=.Aut| 00000cb0 6f 50 61 6c 3a f4 20 54 6f 67 67 6c 65 0d 02 80 |oPal:. Toggle...| 00000cc0 2b 20 20 20 c9 20 22 4d 6f 64 65 20 73 65 74 22 |+ . "Mode set"| 00000cd0 20 3a 20 f4 20 53 65 6c 65 63 74 20 6e 65 77 20 | : . Select new | 00000ce0 6d 6f 64 65 20 73 65 74 0d 02 8a 19 20 20 20 20 |mode set.... | 00000cf0 c8 8e 20 c0 73 65 6c 65 63 74 33 24 2c 34 29 20 |.. .select3$,4) | 00000d00 ca 0d 02 94 29 20 20 20 20 20 c9 20 22 52 6f 6f |....) . "Roo| 00000d10 74 22 20 3a 20 f4 20 4e 6f 20 73 65 6c 65 63 74 |t" : . No select| 00000d20 69 6f 6e 20 28 72 6f 6f 74 29 0d 02 9e 2b 20 20 |ion (root)...+ | 00000d30 20 20 20 c9 20 22 4e 6f 6e 65 22 20 3a 20 4d 6f | . "None" : Mo| 00000d40 64 65 53 65 74 3d 30 3a f4 20 4e 6f 20 6d 6f 64 |deSet=0:. No mod| 00000d50 65 20 73 65 74 0d 02 a8 37 20 20 20 20 20 c9 20 |e set...7 . | 00000d60 22 4e 6f 72 6d 22 20 3a 20 4d 6f 64 65 53 65 74 |"Norm" : ModeSet| 00000d70 3d 31 3a f4 20 4e 6f 72 6d 61 6c 20 6d 6f 6e 69 |=1:. Normal moni| 00000d80 74 6f 72 20 6d 6f 64 65 20 73 65 74 0d 02 b2 3a |tor mode set...:| 00000d90 20 20 20 20 20 c9 20 22 4d 75 6c 74 22 20 3a 20 | . "Mult" : | 00000da0 4d 6f 64 65 53 65 74 3d 32 3a f4 20 4d 75 6c 74 |ModeSet=2:. Mult| 00000db0 69 73 79 6e 63 20 6d 6f 6e 69 74 6f 72 20 6d 6f |isync monitor mo| 00000dc0 64 65 20 73 65 74 0d 02 bc 35 20 20 20 20 20 7f |de set...5 .| 00000dd0 20 3a 20 f4 20 55 73 65 72 20 6d 6f 64 65 20 73 | : . User mode s| 00000de0 65 74 2c 20 63 68 65 63 6b 20 61 6e 64 20 69 66 |et, check and if| 00000df0 20 6f 6b 2c 20 63 68 61 6e 67 65 0d 02 c6 98 20 | ok, change.... | 00000e00 20 20 20 20 20 73 24 3d 73 65 6c 65 63 74 33 24 | s$=select3$| 00000e10 3a 70 25 3d a7 73 24 2c 22 2c 22 29 3a e7 70 25 |:p%=.s$,","):.p%| 00000e20 3e 30 20 8c 20 6d 31 25 3d bb 73 24 3a 73 24 3d |>0 . m1%=.s$:s$=| 00000e30 c1 73 24 2c 70 25 2b 31 29 3a 70 25 3d a7 73 24 |.s$,p%+1):p%=.s$| 00000e40 2c 22 2c 22 29 3a e7 70 25 3e 30 20 8c 20 6d 32 |,","):.p%>0 . m2| 00000e50 25 3d bb 73 24 3a 73 24 3d c1 73 24 2c 70 25 2b |%=.s$:s$=.s$,p%+| 00000e60 31 29 3a 70 25 3d a7 73 24 2c 22 2c 22 29 3a e7 |1):p%=.s$,","):.| 00000e70 70 25 3e 30 20 8c 20 6d 33 25 3d bb 73 24 3a 73 |p%>0 . m3%=.s$:s| 00000e80 24 3d c1 73 24 2c 70 25 2b 31 29 3a 6d 34 25 3d |$=.s$,p%+1):m4%=| 00000e90 bb 73 24 0d 02 d0 da 20 20 20 20 20 20 e7 70 25 |.s$.... .p%| 00000ea0 3e 30 20 8c 20 55 73 65 72 4d 6f 64 65 53 65 74 |>0 . UserModeSet| 00000eb0 25 28 31 29 3d 6d 31 25 3a 55 73 65 72 4d 6f 64 |%(1)=m1%:UserMod| 00000ec0 65 53 65 74 25 28 32 29 3d 6d 32 25 3a 55 73 65 |eSet%(2)=m2%:Use| 00000ed0 72 4d 6f 64 65 53 65 74 25 28 33 29 3d 6d 33 25 |rModeSet%(3)=m3%| 00000ee0 3a 55 73 65 72 4d 6f 64 65 53 65 74 25 28 34 29 |:UserModeSet%(4)| 00000ef0 3d 6d 34 25 3a 4d 6f 64 65 53 65 74 3d 33 20 8b |=m4%:ModeSet=3 .| 00000f00 20 f2 65 72 72 6f 72 28 2d 31 2c 22 42 61 64 20 | .error(-1,"Bad | 00000f10 75 73 65 72 20 6d 6f 64 65 20 73 65 74 2e 20 50 |user mode set. P| 00000f20 6c 65 61 73 65 20 75 73 65 20 27 3c 32 63 6f 6c |lease use '<2col| 00000f30 6d 6f 64 65 3e 2c 3c 34 63 6f 6c 6d 6f 64 65 3e |mode>,<4colmode>| 00000f40 2c 3c 31 36 63 6f 6c 6d 6f 64 65 3e 2c 3c 32 35 |,<16colmode>,<25| 00000f50 36 63 6f 6c 6d 6f 64 65 3e 27 2c 20 65 2e 67 2e |6colmode>', e.g.| 00000f60 20 27 31 2c 32 2c 33 2c 34 27 2e 22 29 0d 02 da | '1,2,3,4'.")...| 00000f70 09 20 20 20 20 cb 0d 02 e4 25 20 20 20 20 f2 73 |. ....% .s| 00000f80 75 62 6d 65 6e 75 28 22 50 6f 70 20 75 70 2e 4d |ubmenu("Pop up.M| 00000f90 6f 64 65 20 73 65 74 22 2c a3 29 0d 02 ee 29 20 |ode set",.)...) | 00000fa0 20 20 c9 20 22 41 75 74 6f 20 7a 6f 6f 6d 22 20 | . "Auto zoom" | 00000fb0 3a 20 f4 20 54 6f 67 67 6c 65 20 61 75 74 6f 20 |: . Toggle auto | 00000fc0 7a 6f 6f 6d 0d 02 f8 23 20 20 20 20 41 75 74 6f |zoom...# Auto| 00000fd0 5a 6f 6f 6d 3d ac 41 75 74 6f 5a 6f 6f 6d 3a f4 |Zoom=.AutoZoom:.| 00000fe0 20 54 6f 67 67 6c 65 0d 03 02 07 20 20 cb 0d 03 | Toggle.... ...| 00000ff0 0c 1a 20 20 f2 73 75 62 6d 65 6e 75 28 22 50 6f |.. .submenu("Po| 00001000 70 20 75 70 22 2c a3 29 0d 03 16 2a 20 c9 20 22 |p up",.)...* . "| 00001010 50 72 6f 63 65 73 73 69 6e 67 22 20 3a 20 f4 20 |Processing" : . | 00001020 50 72 6f 63 65 73 73 69 6e 67 20 6f 70 74 69 6f |Processing optio| 00001030 6e 73 0d 03 20 13 20 20 c8 8e 20 73 65 6c 65 63 |ns.. . .. selec| 00001040 74 32 24 20 ca 0d 03 2a 31 20 20 20 c9 20 22 43 |t2$ ...*1 . "C| 00001050 6c 65 61 72 20 6f 75 74 70 75 74 22 20 3a 20 f4 |lear output" : .| 00001060 20 43 6c 65 61 72 20 6f 75 74 70 75 74 20 66 69 | Clear output fi| 00001070 6c 65 20 6f 66 66 0d 03 34 3a 20 20 20 20 e7 43 |le off..4: .C| 00001080 6c 65 61 72 46 69 6c 65 20 8c 20 c8 99 20 22 4f |learFile . .. "O| 00001090 53 5f 46 69 6c 65 22 2c 36 2c 43 6c 65 61 72 53 |S_File",6,ClearS| 000010a0 61 76 65 24 3a 43 6c 65 61 72 46 69 6c 65 3d a3 |ave$:ClearFile=.| 000010b0 0d 03 3e 37 20 20 20 c9 20 22 4f 75 74 70 75 74 |..>7 . "Output| 000010c0 20 6d 6f 64 65 22 20 3a 20 f4 20 43 68 61 6e 67 | mode" : . Chang| 000010d0 65 20 6f 75 74 70 75 74 20 6d 6f 64 65 20 73 65 |e output mode se| 000010e0 6c 65 63 74 69 6f 6e 0d 03 48 30 20 20 20 20 e7 |lection..H0 .| 000010f0 73 65 6c 65 63 74 33 24 3d 22 41 75 74 6f 22 20 |select3$="Auto" | 00001100 8c 20 4f 75 74 4d 6f 64 65 3d 31 20 8b 20 4f 75 |. OutMode=1 . Ou| 00001110 74 4d 6f 64 65 3d 32 0d 03 52 2c 20 20 20 20 f2 |tMode=2..R, .| 00001120 73 75 62 6d 65 6e 75 28 22 50 72 6f 63 65 73 73 |submenu("Process| 00001130 69 6e 67 2e 4f 75 74 70 75 74 20 6d 6f 64 65 22 |ing.Output mode"| 00001140 2c a3 29 0d 03 5c 3d 20 20 20 c9 20 22 4f 75 74 |,.)..\= . "Out| 00001150 70 75 74 20 70 61 6c 65 74 74 65 22 20 3a 20 f4 |put palette" : .| 00001160 20 43 68 61 6e 67 65 20 6f 75 74 70 75 74 20 70 | Change output p| 00001170 61 6c 65 74 74 65 20 73 65 6c 65 63 74 69 6f 6e |alette selection| 00001180 0d 03 66 52 20 20 20 20 e7 73 65 6c 65 63 74 33 |..fR .select3| 00001190 24 3d 22 43 75 72 72 65 6e 74 22 20 8c 20 4f 75 |$="Current" . Ou| 000011a0 74 50 61 6c 3d 31 20 8b 20 e7 73 65 6c 65 63 74 |tPal=1 . .select| 000011b0 33 24 3d 22 44 65 66 61 75 6c 74 22 20 8c 20 4f |3$="Default" . O| 000011c0 75 74 50 61 6c 3d 32 20 8b 20 4f 75 74 50 61 6c |utPal=2 . OutPal| 000011d0 3d 33 0d 03 70 2f 20 20 20 20 f2 73 75 62 6d 65 |=3..p/ .subme| 000011e0 6e 75 28 22 50 72 6f 63 65 73 73 69 6e 67 2e 4f |nu("Processing.O| 000011f0 75 74 70 75 74 20 70 61 6c 65 74 74 65 22 2c a3 |utput palette",.| 00001200 29 0d 03 7a 2b 20 20 20 c9 20 22 53 63 61 6c 69 |)..z+ . "Scali| 00001210 6e 67 22 20 3a 20 f4 20 43 68 61 6e 67 65 20 73 |ng" : . Change s| 00001220 63 61 6c 65 20 66 61 63 74 6f 72 73 0d 03 84 15 |cale factors....| 00001230 20 20 20 20 c8 8e 20 73 65 6c 65 63 74 33 24 20 | .. select3$ | 00001240 ca 0d 03 8e 32 20 20 20 20 20 c9 20 22 31 3a 31 |....2 . "1:1| 00001250 22 20 3a 20 58 4d 75 6c 25 3d 31 3a 59 4d 75 6c |" : XMul%=1:YMul| 00001260 25 3d 31 3a 58 44 69 76 25 3d 31 3a 59 44 69 76 |%=1:XDiv%=1:YDiv| 00001270 25 3d 31 0d 03 98 75 20 20 20 20 20 c9 20 22 78 |%=1...u . "x| 00001280 22 2c 22 79 22 20 3a 20 6d 75 6c 25 3d 2d 31 3a |","y" : mul%=-1:| 00001290 64 69 76 25 3d 2d 31 3a 73 24 3d 73 65 6c 65 63 |div%=-1:s$=selec| 000012a0 74 34 24 3a 70 25 3d a7 73 24 2c 22 3a 22 29 3a |t4$:p%=.s$,":"):| 000012b0 e7 70 25 3e 30 20 8c 20 6d 75 6c 25 3d bb 73 24 |.p%>0 . mul%=.s$| 000012c0 3a 73 24 3d c1 73 24 2c 70 25 2b 31 29 3a 64 69 |:s$=.s$,p%+1):di| 000012d0 76 25 3d bb 73 24 3a f4 20 47 65 74 20 6e 65 77 |v%=.s$:. Get new| 000012e0 20 66 61 63 74 6f 72 73 0d 03 a2 2c 20 20 20 20 | factors..., | 000012f0 20 20 e7 28 6d 75 6c 25 3c 3d 30 29 84 28 64 69 | .(mul%<=0).(di| 00001300 76 25 3c 3d 30 29 84 28 6d 75 6c 25 3e 64 69 76 |v%<=0).(mul%>div| 00001310 25 29 20 8c 0d 03 ac 57 20 20 20 20 20 20 20 f2 |%) ....W .| 00001320 65 72 72 6f 72 28 2d 31 2c 22 50 6c 65 61 73 65 |error(-1,"Please| 00001330 20 65 6e 74 65 72 20 3c 6d 75 6c 3e 3a 3c 64 69 | enter <mul>:<di| 00001340 76 3e 2c 20 77 68 65 72 65 20 3c 6d 75 6c 3e 20 |v>, where <mul> | 00001350 69 73 20 6e 6f 74 20 67 72 65 61 74 65 72 20 74 |is not greater t| 00001360 68 61 6e 20 3c 64 69 76 3e 22 29 0d 03 b6 62 20 |han <div>")...b | 00001370 20 20 20 20 20 cc 20 e7 73 65 6c 65 63 74 33 24 | . .select3$| 00001380 3d 22 78 22 20 8c 20 58 4d 75 6c 25 3d 6d 75 6c |="x" . XMul%=mul| 00001390 25 3a 58 44 69 76 25 3d 64 69 76 25 20 8b 20 59 |%:XDiv%=div% . Y| 000013a0 4d 75 6c 25 3d 6d 75 6c 25 3a 59 44 69 76 25 3d |Mul%=mul%:YDiv%=| 000013b0 64 69 76 25 3a f4 20 55 70 64 61 74 65 20 73 63 |div%:. Update sc| 000013c0 61 6c 69 6e 67 20 66 61 63 74 6f 72 73 0d 03 c0 |aling factors...| 000013d0 0b 20 20 20 20 20 20 cd 0d 03 ca 09 20 20 20 20 |. ..... | 000013e0 cb 0d 03 d4 28 20 20 20 20 f2 73 75 62 6d 65 6e |....( .submen| 000013f0 75 28 22 50 72 6f 63 65 73 73 69 6e 67 2e 53 63 |u("Processing.Sc| 00001400 61 6c 69 6e 67 22 2c a3 29 0d 03 de 3c 20 20 20 |aling",.)...< | 00001410 c9 20 22 45 72 72 6f 72 20 73 70 72 65 61 64 69 |. "Error spreadi| 00001420 6e 67 22 20 3a 20 f4 20 54 6f 67 67 6c 65 20 65 |ng" : . Toggle e| 00001430 72 72 6f 72 20 73 70 72 65 61 64 69 6e 67 20 6f |rror spreading o| 00001440 6e 2f 6f 66 66 0d 03 e8 25 20 20 20 20 45 72 72 |n/off...% Err| 00001450 53 70 72 65 61 64 3d ac 45 72 72 53 70 72 65 61 |Spread=.ErrSprea| 00001460 64 3a f4 20 54 6f 67 67 6c 65 0d 03 f2 35 20 20 |d:. Toggle...5 | 00001470 20 c9 20 22 42 6c 61 63 6b 20 61 6e 64 20 77 68 | . "Black and wh| 00001480 69 74 65 22 20 3a 20 f4 20 54 6f 67 67 6c 65 20 |ite" : . Toggle | 00001490 62 6c 61 63 6b 20 61 6e 64 20 77 68 69 74 65 0d |black and white.| 000014a0 03 fc 1e 20 20 20 20 42 6c 61 63 6b 57 68 69 74 |... BlackWhit| 000014b0 65 3d ac 42 6c 61 63 6b 57 68 69 74 65 0d 04 06 |e=.BlackWhite...| 000014c0 25 20 20 20 c9 20 22 5a 69 67 20 7a 61 67 22 20 |% . "Zig zag" | 000014d0 3a 20 f4 20 54 6f 67 67 6c 65 20 7a 69 67 20 7a |: . Toggle zig z| 000014e0 61 67 0d 04 10 16 20 20 20 20 5a 69 67 5a 61 67 |ag.... ZigZag| 000014f0 3d ac 5a 69 67 5a 61 67 0d 04 1a 35 20 20 20 c9 |=.ZigZag...5 .| 00001500 20 22 53 63 72 65 65 6e 20 62 6c 61 6e 6b 69 6e | "Screen blankin| 00001510 67 22 20 3a 20 f4 20 54 6f 67 67 6c 65 20 73 63 |g" : . Toggle sc| 00001520 72 65 65 6e 20 62 6c 61 6e 6b 69 6e 67 0d 04 24 |reen blanking..$| 00001530 1a 20 20 20 20 42 6c 61 6e 6b 69 6e 67 3d ac 42 |. Blanking=.B| 00001540 6c 61 6e 6b 69 6e 67 0d 04 2e 2e 20 20 20 c9 20 |lanking.... . | 00001550 22 49 6e 76 65 72 74 20 52 47 42 22 20 3a 20 f4 |"Invert RGB" : .| 00001560 20 54 6f 67 67 6c 65 20 52 47 42 20 69 6e 76 65 | Toggle RGB inve| 00001570 72 74 69 6e 67 0d 04 38 1c 20 20 20 20 49 6e 76 |rting..8. Inv| 00001580 65 72 74 52 47 42 3d ac 49 6e 76 65 72 74 52 47 |ertRGB=.InvertRG| 00001590 42 0d 04 42 27 20 20 20 c9 20 22 47 49 46 20 73 |B..B' . "GIF s| 000015a0 63 61 6e 22 20 3a 20 f4 20 54 6f 67 67 6c 65 20 |can" : . Toggle | 000015b0 47 49 46 20 73 63 61 6e 0d 04 4c 18 20 20 20 20 |GIF scan..L. | 000015c0 47 49 46 53 63 61 6e 3d ac 47 49 46 53 63 61 6e |GIFScan=.GIFScan| 000015d0 0d 04 56 28 20 20 20 c9 20 22 49 6d 61 67 65 20 |..V( . "Image | 000015e0 6e 75 6d 62 65 72 22 20 3a 20 f4 20 49 6d 61 67 |number" : . Imag| 000015f0 65 20 6e 75 6d 62 65 72 0d 04 60 39 20 20 20 20 |e number..`9 | 00001600 49 6d 61 67 65 4e 72 25 3d bb 28 73 65 6c 65 63 |ImageNr%=.(selec| 00001610 74 33 24 29 3a f4 20 4e 65 77 20 76 61 6c 75 65 |t3$):. New value| 00001620 20 66 6f 72 20 69 6d 61 67 65 20 6e 75 6d 62 65 | for image numbe| 00001630 72 0d 04 6a 2d 20 20 20 20 f2 73 75 62 6d 65 6e |r..j- .submen| 00001640 75 28 22 50 72 6f 63 65 73 73 69 6e 67 2e 49 6d |u("Processing.Im| 00001650 61 67 65 20 6e 75 6d 62 65 72 22 2c a3 29 0d 04 |age number",.)..| 00001660 74 07 20 20 cb 0d 04 7e 1e 20 20 f2 73 75 62 6d |t. ...~. .subm| 00001670 65 6e 75 28 22 50 72 6f 63 65 73 73 69 6e 67 22 |enu("Processing"| 00001680 2c a3 29 0d 04 88 31 20 c9 20 22 5a 6f 6f 6d 20 |,.)...1 . "Zoom | 00001690 69 6d 61 67 65 22 20 3a 20 f4 20 5a 6f 6f 6d 20 |image" : . Zoom | 000016a0 69 6e 2c 20 6f 75 74 2c 20 6e 6f 72 6d 61 6c 20 |in, out, normal | 000016b0 73 69 7a 65 0d 04 92 3f 20 20 4f 6c 64 5a 6f 6f |size...? OldZoo| 000016c0 6d 58 3d 5a 6f 6f 6d 58 3a 4f 6c 64 5a 6f 6f 6d |mX=ZoomX:OldZoom| 000016d0 59 3d 5a 6f 6f 6d 59 3a f4 20 52 65 6d 65 6d 62 |Y=ZoomY:. Rememb| 000016e0 65 72 20 6f 6c 64 20 7a 6f 6f 6d 20 66 61 63 74 |er old zoom fact| 000016f0 6f 72 73 0d 04 9c 13 20 20 c8 8e 20 73 65 6c 65 |ors.... .. sele| 00001700 63 74 32 24 20 ca 0d 04 a6 7d 20 20 20 c9 20 22 |ct2$ ....} . "| 00001710 49 6e 22 3a 20 e7 73 65 6c 65 63 74 33 24 3d 22 |In": .select3$="| 00001720 42 6f 74 68 22 20 8c 20 5a 6f 6f 6d 58 3d 5a 6f |Both" . ZoomX=Zo| 00001730 6f 6d 58 2a 32 3a 5a 6f 6f 6d 59 3d 5a 6f 6f 6d |omX*2:ZoomY=Zoom| 00001740 59 2a 32 20 8b 20 e7 73 65 6c 65 63 74 33 24 3d |Y*2 . .select3$=| 00001750 22 78 22 20 8c 20 5a 6f 6f 6d 58 3d 5a 6f 6f 6d |"x" . ZoomX=Zoom| 00001760 58 2a 32 20 8b 20 e7 73 65 6c 65 63 74 33 24 3d |X*2 . .select3$=| 00001770 22 79 22 20 8c 20 5a 6f 6f 6d 59 3d 5a 6f 6f 6d |"y" . ZoomY=Zoom| 00001780 59 2a 32 0d 04 b0 7e 20 20 20 c9 20 22 4f 75 74 |Y*2...~ . "Out| 00001790 22 3a 20 e7 73 65 6c 65 63 74 33 24 3d 22 42 6f |": .select3$="Bo| 000017a0 74 68 22 20 8c 20 5a 6f 6f 6d 58 3d 5a 6f 6f 6d |th" . ZoomX=Zoom| 000017b0 58 2f 32 3a 5a 6f 6f 6d 59 3d 5a 6f 6f 6d 59 2f |X/2:ZoomY=ZoomY/| 000017c0 32 20 8b 20 e7 73 65 6c 65 63 74 33 24 3d 22 78 |2 . .select3$="x| 000017d0 22 20 8c 20 5a 6f 6f 6d 58 3d 5a 6f 6f 6d 58 2f |" . ZoomX=ZoomX/| 000017e0 32 20 8b 20 e7 73 65 6c 65 63 74 33 24 3d 22 79 |2 . .select3$="y| 000017f0 22 20 8c 20 5a 6f 6f 6d 59 3d 5a 6f 6f 6d 59 2f |" . ZoomY=ZoomY/| 00001800 32 0d 04 ba 1f 20 20 20 c9 20 22 31 3a 31 22 3a |2.... . "1:1":| 00001810 20 5a 6f 6f 6d 58 3d 31 3a 5a 6f 6f 6d 59 3d 31 | ZoomX=1:ZoomY=1| 00001820 0d 04 c4 07 20 20 cb 0d 04 ce 4a 20 20 f4 20 53 |.... ....J . S| 00001830 65 74 20 69 6d 61 67 65 20 77 69 6e 64 6f 77 20 |et image window | 00001840 65 78 74 65 6e 74 20 61 6e 64 20 74 69 74 6c 65 |extent and title| 00001850 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 63 75 | according to cu| 00001860 72 72 65 6e 74 20 7a 6f 6f 6d 20 66 61 63 74 6f |rrent zoom facto| 00001870 72 0d 04 d8 41 20 20 21 62 6c 6f 63 6b 3d 30 3a |r...A !block=0:| 00001880 62 6c 6f 63 6b 21 34 3d 30 3a 62 6c 6f 63 6b 21 |block!4=0:block!| 00001890 38 3d a4 73 70 72 57 2a 5a 6f 6f 6d 58 3a 62 6c |8=.sprW*ZoomX:bl| 000018a0 6f 63 6b 21 31 32 3d a4 73 70 72 48 2a 5a 6f 6f |ock!12=.sprH*Zoo| 000018b0 6d 59 0d 04 e2 41 20 20 c8 99 20 57 53 65 74 45 |mY...A .. WSetE| 000018c0 25 2c 77 69 6e 5f 69 6d 67 25 2c 62 6c 6f 63 6b |%,win_img%,block| 000018d0 3a f4 20 53 65 74 20 77 69 6e 64 6f 77 20 65 78 |:. Set window ex| 000018e0 74 65 6e 74 20 74 6f 20 7a 6f 6f 6d 65 64 20 73 |tent to zoomed s| 000018f0 69 7a 65 0d 04 ec 26 20 20 24 49 4d 57 74 74 25 |ize...& $IMWtt%| 00001900 3d a4 69 6d 61 67 65 5f 74 69 74 6c 65 3a f4 20 |=.image_title:. | 00001910 4e 65 77 20 74 69 74 6c 65 0d 04 f6 40 20 20 21 |New title...@ !| 00001920 62 6c 6f 63 6b 3d 77 69 6e 5f 69 6d 67 25 3a c8 |block=win_img%:.| 00001930 99 20 57 47 65 74 57 53 25 2c 2c 62 6c 6f 63 6b |. WGetWS%,,block| 00001940 3a f4 20 52 65 61 64 20 77 69 6e 64 6f 77 27 73 |:. Read window's| 00001950 20 70 6f 73 69 74 69 6f 6e 0d 05 00 4a 20 20 64 | position...J d| 00001960 78 25 3d 28 62 6c 6f 63 6b 21 31 32 2d 62 6c 6f |x%=(block!12-blo| 00001970 63 6b 21 34 29 2f 32 3a 64 79 25 3d 28 62 6c 6f |ck!4)/2:dy%=(blo| 00001980 63 6b 21 31 36 2d 62 6c 6f 63 6b 21 38 29 2f 32 |ck!16-block!8)/2| 00001990 3a f4 20 48 61 6c 66 20 77 69 6e 64 6f 77 20 73 |:. Half window s| 000019a0 69 7a 65 0d 05 0a 46 20 20 76 78 25 3d 62 6c 6f |ize...F vx%=blo| 000019b0 63 6b 21 32 30 2b 64 78 25 3a 76 79 25 3d 62 6c |ck!20+dx%:vy%=bl| 000019c0 6f 63 6b 21 32 34 2d 64 79 25 3a f4 20 56 65 63 |ock!24-dy%:. Vec| 000019d0 74 6f 72 20 66 72 6f 6d 20 63 65 6e 74 72 65 20 |tor from centre | 000019e0 74 6f 20 6f 72 69 67 69 6e 0d 05 14 47 20 20 f4 |to origin...G .| 000019f0 20 43 61 6c 63 75 6c 61 74 65 20 6e 65 77 20 73 | Calculate new s| 00001a00 63 72 6f 6c 6c 20 6f 66 66 73 65 74 73 20 62 79 |croll offsets by| 00001a10 20 73 63 61 6c 69 6e 67 20 76 65 63 74 6f 72 20 | scaling vector | 00001a20 61 6e 64 20 72 65 2d 74 72 61 6e 73 70 6f 73 65 |and re-transpose| 00001a30 0d 05 1e 45 20 20 62 6c 6f 63 6b 21 32 30 3d 76 |...E block!20=v| 00001a40 78 25 2a 5a 6f 6f 6d 58 2f 4f 6c 64 5a 6f 6f 6d |x%*ZoomX/OldZoom| 00001a50 58 2d 64 78 25 3a 62 6c 6f 63 6b 21 32 34 3d 76 |X-dx%:block!24=v| 00001a60 79 25 2a 5a 6f 6f 6d 59 2f 4f 6c 64 5a 6f 6f 6d |y%*ZoomY/OldZoom| 00001a70 59 2b 64 79 25 0d 05 28 3a 20 20 f2 63 6c 6f 73 |Y+dy%..(: .clos| 00001a80 65 5f 77 69 6e 64 6f 77 28 77 69 6e 5f 69 6d 67 |e_window(win_img| 00001a90 25 29 3a f2 6f 70 65 6e 5f 77 69 6e 64 6f 77 28 |%):.open_window(| 00001aa0 77 69 6e 5f 69 6d 67 25 2c 62 6c 6f 63 6b 29 0d |win_img%,block).| 00001ab0 05 32 1e 20 20 f2 73 75 62 6d 65 6e 75 28 22 5a |.2. .submenu("Z| 00001ac0 6f 6f 6d 20 69 6d 61 67 65 22 2c a3 29 0d 05 3c |oom image",.)..<| 00001ad0 33 20 c9 20 22 53 61 76 65 20 69 6d 61 67 65 22 |3 . "Save image"| 00001ae0 20 3a 20 f4 20 53 61 76 65 20 77 68 6f 6c 65 20 | : . Save whole | 00001af0 6f 72 20 70 61 72 74 20 6f 66 20 69 6d 61 67 65 |or part of image| 00001b00 0d 05 46 30 20 20 53 61 76 65 4b 69 6e 64 24 3d |..F0 SaveKind$=| 00001b10 73 65 6c 65 63 74 32 24 3a f4 20 52 65 6d 65 6d |select2$:. Remem| 00001b20 62 65 72 20 74 79 70 65 20 6f 66 20 73 61 76 65 |ber type of save| 00001b30 0d 05 50 46 20 20 24 53 41 56 66 6e 25 3d 53 61 |..PF $SAVfn%=Sa| 00001b40 76 65 53 70 72 24 3a 24 53 41 56 73 6e 25 3d 22 |veSpr$:$SAVsn%="| 00001b50 66 69 6c 65 5f 66 66 39 22 3a f4 20 53 65 74 20 |file_ff9":. Set | 00001b60 66 69 6c 65 20 77 69 6e 64 6f 77 20 66 6f 72 20 |file window for | 00001b70 73 70 72 69 74 65 0d 05 5a 32 20 20 f2 6f 70 65 |sprite..Z2 .ope| 00001b80 6e 5f 77 69 6e 64 6f 77 28 77 69 6e 5f 66 69 6c |n_window(win_fil| 00001b90 65 25 2c 30 29 3a f4 20 4f 70 65 6e 20 66 69 6c |e%,0):. Open fil| 00001ba0 65 20 77 69 6e 64 6f 77 0d 05 64 37 20 c9 20 22 |e window..d7 . "| 00001bb0 49 6e 63 6c 75 64 65 20 70 61 6c 65 74 74 65 22 |Include palette"| 00001bc0 20 3a 20 f4 20 54 6f 67 67 6c 65 20 73 61 76 65 | : . Toggle save| 00001bd0 2d 70 61 6c 65 74 74 65 20 6f 6e 2f 6f 66 66 0d |-palette on/off.| 00001be0 05 6e 21 20 20 50 61 6c 6f 6e 6f 66 66 3d ac 50 |.n! Palonoff=.P| 00001bf0 61 6c 6f 6e 6f 66 66 3a f4 20 54 6f 67 67 6c 65 |alonoff:. Toggle| 00001c00 0d 05 78 2f 20 c9 20 22 49 6d 61 67 65 20 70 61 |..x/ . "Image pa| 00001c10 6c 65 74 74 65 22 20 3a 20 f4 20 53 65 6c 65 63 |lette" : . Selec| 00001c20 74 20 69 6d 61 67 65 20 70 61 6c 65 74 74 65 0d |t image palette.| 00001c30 05 82 15 20 20 f2 73 65 74 5f 70 61 6c 65 74 74 |... .set_palett| 00001c40 65 28 31 29 0d 05 8c 27 20 c9 20 22 52 6f 74 61 |e(1)...' . "Rota| 00001c50 74 65 20 69 6d 61 67 65 22 20 3a 20 f4 20 52 6f |te image" : . Ro| 00001c60 74 61 74 65 20 73 70 72 69 74 65 0d 05 96 1d 20 |tate sprite.... | 00001c70 20 f2 68 6f 75 72 5f 6f 6e 3a f4 20 48 6f 75 72 | .hour_on:. Hour| 00001c80 67 6c 61 73 73 20 6f 6e 0d 05 a0 34 20 20 c8 99 |glass on...4 ..| 00001c90 20 22 54 72 61 6e 73 6c 61 74 6f 72 5f 52 6f 74 | "Translator_Rot| 00001ca0 61 74 65 22 2c 53 70 72 50 74 72 25 3a f4 20 52 |ate",SprPtr%:. R| 00001cb0 6f 74 61 74 65 20 73 70 72 69 74 65 0d 05 aa 1f |otate sprite....| 00001cc0 20 20 f2 68 6f 75 72 5f 6f 66 66 3a f4 20 48 6f | .hour_off:. Ho| 00001cd0 75 72 67 6c 61 73 73 20 6f 66 66 0d 05 b4 3e 20 |urglass off...> | 00001ce0 20 f2 73 70 72 69 74 65 5f 68 65 61 64 65 72 28 | .sprite_header(| 00001cf0 31 29 3a c8 94 20 53 70 72 48 25 2c 53 70 72 57 |1):.. SprH%,SprW| 00001d00 25 3a f4 20 53 65 74 20 73 70 72 69 74 65 20 69 |%:. Set sprite i| 00001d10 6e 66 6f 20 72 69 67 68 74 0d 05 be 40 20 20 f2 |nfo right...@ .| 00001d20 6e 65 77 5f 69 6d 61 67 65 5f 77 69 6e 64 6f 77 |new_image_window| 00001d30 3a f2 6e 65 77 5f 77 69 6e 64 6f 77 28 77 69 6e |:.new_window(win| 00001d40 5f 69 6d 67 25 29 3a f4 20 4e 65 77 20 69 6d 61 |_img%):. New ima| 00001d50 67 65 20 77 69 6e 64 6f 77 0d 05 c8 26 20 c9 20 |ge window...& . | 00001d60 22 4d 69 72 72 6f 72 20 69 6d 61 67 65 22 20 3a |"Mirror image" :| 00001d70 20 f4 20 4d 69 72 72 6f 72 20 69 6d 61 67 65 0d | . Mirror image.| 00001d80 05 d2 39 20 20 f2 76 61 72 28 22 77 69 64 74 22 |..9 .var("widt"| 00001d90 2c 53 70 72 57 25 29 3a f2 76 61 72 28 22 68 65 |,SprW%):.var("he| 00001da0 69 67 22 2c 53 70 72 48 25 29 3a f4 20 4d 6f 64 |ig",SprH%):. Mod| 00001db0 75 6c 65 20 69 6e 66 6f 0d 05 dc 1d 20 20 f2 68 |ule info.... .h| 00001dc0 6f 75 72 5f 6f 6e 3a f4 20 48 6f 75 72 67 6c 61 |our_on:. Hourgla| 00001dd0 73 73 20 6f 6e 0d 05 e6 67 20 20 e7 73 65 6c 65 |ss on...g .sele| 00001de0 63 74 32 24 3d 22 78 22 20 8c 20 c8 99 20 22 54 |ct2$="x" . .. "T| 00001df0 72 61 6e 73 6c 61 74 6f 72 5f 4d 69 72 72 6f 72 |ranslator_Mirror| 00001e00 58 22 2c 53 70 72 50 74 72 25 20 8b 20 c8 99 20 |X",SprPtr% . .. | 00001e10 22 54 72 61 6e 73 6c 61 74 6f 72 5f 4d 69 72 72 |"Translator_Mirr| 00001e20 6f 72 59 22 2c 53 70 72 50 74 72 25 3a f4 20 4d |orY",SprPtr%:. M| 00001e30 69 72 72 6f 72 20 73 70 72 69 74 65 0d 05 f0 1f |irror sprite....| 00001e40 20 20 f2 68 6f 75 72 5f 6f 66 66 3a f4 20 48 6f | .hour_off:. Ho| 00001e50 75 72 67 6c 61 73 73 20 6f 66 66 0d 05 fa 32 20 |urglass off...2 | 00001e60 20 f2 6e 65 77 5f 77 69 6e 64 6f 77 28 77 69 6e | .new_window(win| 00001e70 5f 69 6d 67 25 29 3a f4 20 46 72 65 73 68 65 6e |_img%):. Freshen| 00001e80 20 69 6d 61 67 65 20 77 69 6e 64 6f 77 0d 06 04 | image window...| 00001e90 27 20 c9 20 22 53 74 61 74 75 73 22 20 3a 20 f4 |' . "Status" : .| 00001ea0 20 4d 61 6e 69 70 75 6c 61 74 65 20 64 65 66 61 | Manipulate defa| 00001eb0 75 6c 74 73 0d 06 0e 13 20 20 c8 8e 20 73 65 6c |ults.... .. sel| 00001ec0 65 63 74 32 24 20 ca 0d 06 18 d9 20 20 20 c9 20 |ect2$ ..... . | 00001ed0 22 53 61 76 65 22 20 3a 20 53 74 61 74 75 73 3d |"Save" : Status=| 00001ee0 ae 28 22 3c 54 72 61 6e 73 6c 61 74 6f 72 24 44 |.("<Translator$D| 00001ef0 69 72 3e 2e 53 74 61 74 75 73 22 29 3a f1 23 53 |ir>.Status"):.#S| 00001f00 74 61 74 75 73 2c 41 75 74 6f 4d 6f 64 65 2c 41 |tatus,AutoMode,A| 00001f10 75 74 6f 50 61 6c 2c 4d 6f 64 65 53 65 74 2c 45 |utoPal,ModeSet,E| 00001f20 72 72 53 70 72 65 61 64 2c 50 61 6c 6f 6e 6f 66 |rrSpread,Palonof| 00001f30 66 2c 55 73 65 72 4d 6f 64 65 53 65 74 25 28 31 |f,UserModeSet%(1| 00001f40 29 2c 55 73 65 72 4d 6f 64 65 53 65 74 25 28 32 |),UserModeSet%(2| 00001f50 29 2c 55 73 65 72 4d 6f 64 65 53 65 74 25 28 33 |),UserModeSet%(3| 00001f60 29 2c 55 73 65 72 4d 6f 64 65 53 65 74 25 28 34 |),UserModeSet%(4| 00001f70 29 2c 41 75 74 6f 5a 6f 6f 6d 2c 42 6c 61 63 6b |),AutoZoom,Black| 00001f80 57 68 69 74 65 2c 47 49 46 53 63 61 6e 2c 42 6c |White,GIFScan,Bl| 00001f90 61 6e 6b 69 6e 67 2c 49 6e 76 65 72 74 52 47 42 |anking,InvertRGB| 00001fa0 0d 06 22 20 20 20 20 20 f1 23 53 74 61 74 75 73 |.." .#Status| 00001fb0 2c 5a 69 67 5a 61 67 3a d9 23 53 74 61 74 75 73 |,ZigZag:.#Status| 00001fc0 0d 06 2c 62 20 20 20 c9 20 22 4c 6f 61 64 22 20 |..,b . "Load" | 00001fd0 3a 20 e7 a4 6c 6f 61 64 5f 73 74 61 74 75 73 20 |: ..load_status | 00001fe0 8b 20 f2 65 72 72 6f 72 28 2d 31 2c 22 49 20 63 |. .error(-1,"I c| 00001ff0 61 6e 6e 6f 74 20 66 69 6e 64 20 6d 79 20 73 74 |annot find my st| 00002000 61 74 75 73 20 66 69 6c 65 20 21 20 48 61 76 65 |atus file ! Have| 00002010 20 79 6f 75 20 73 61 76 65 64 20 6f 6e 65 20 3f | you saved one ?| 00002020 22 29 0d 06 36 3a 20 20 20 c9 20 22 4b 69 6c 6c |")..6: . "Kill| 00002030 22 20 3a 20 c8 99 20 22 4f 53 5f 46 69 6c 65 22 |" : .. "OS_File"| 00002040 2c 36 2c 22 3c 54 72 61 6e 73 6c 61 74 6f 72 24 |,6,"<Translator$| 00002050 44 69 72 3e 2e 53 74 61 74 75 73 22 0d 06 40 07 |Dir>.Status"..@.| 00002060 20 20 cb 0d 06 4a 05 cb 0d 06 54 28 c8 99 20 57 | ...J....T(.. W| 00002070 47 65 74 50 49 25 2c 2c 62 6c 6f 63 6b 3a f4 20 |GetPI%,,block:. | 00002080 47 65 74 20 70 6f 69 6e 74 65 72 20 69 6e 66 6f |Get pointer info| 00002090 0d 06 5e 3b e7 28 28 62 6c 6f 63 6b 21 38 29 80 |..^;.((block!8).| 000020a0 31 29 3e 30 20 8c 20 f2 6f 70 74 69 6f 6e 73 5f |1)>0 . .options_| 000020b0 6d 65 6e 75 28 b9 29 3a f4 20 41 64 6a 75 73 74 |menu(.):. Adjust| 000020c0 20 2d 3e 20 72 65 2d 6f 70 65 6e 0d 06 68 05 e1 | -> re-open..h..| 000020d0 0d 06 72 04 0d 06 7c 0b dd f2 63 6c 6f 73 65 0d |..r...|...close.| 000020e0 06 86 1f 77 69 6e 25 3d 70 6f 6c 6c 21 30 3a f4 |...win%=poll!0:.| 000020f0 20 57 69 6e 64 6f 77 20 68 61 6e 64 6c 65 0d 06 | Window handle..| 00002100 90 26 f2 63 6c 6f 73 65 5f 77 69 6e 64 6f 77 28 |.&.close_window(| 00002110 77 69 6e 25 29 3a f4 20 43 6c 6f 73 65 20 77 69 |win%):. Close wi| 00002120 6e 64 6f 77 0d 06 9a 4f e7 77 69 6e 25 3d 77 69 |ndow...O.win%=wi| 00002130 6e 5f 69 6d 67 25 20 8c 20 f2 69 6e 76 61 6c 69 |n_img% . .invali| 00002140 64 61 74 65 5f 69 6d 61 67 65 3a f2 73 65 74 5f |date_image:.set_| 00002150 70 61 6c 65 74 74 65 28 30 29 3a f2 63 6c 6f 73 |palette(0):.clos| 00002160 65 5f 77 69 6e 64 6f 77 28 77 69 6e 5f 66 69 6c |e_window(win_fil| 00002170 65 25 29 0d 06 a4 05 e1 0d 06 ae 04 0d 06 b8 0a |e%).............| 00002180 dd f2 6f 70 65 6e 0d 06 c2 18 f2 6f 70 65 6e 5f |..open.....open_| 00002190 77 69 6e 64 6f 77 28 30 2c 70 6f 6c 6c 29 0d 06 |window(0,poll)..| 000021a0 cc 05 e1 0d 06 d6 04 0d 06 e0 0c dd f2 72 65 64 |.............red| 000021b0 72 61 77 0d 06 ea 1c f2 72 65 64 72 61 77 5f 77 |raw.....redraw_w| 000021c0 69 6e 64 6f 77 28 70 6f 6c 6c 21 30 2c a3 29 0d |indow(poll!0,.).| 000021d0 06 f4 05 e1 0d 06 fe 04 0d 07 08 0a dd f2 6e 75 |..............nu| 000021e0 6c 6c 0d 07 12 13 e7 44 61 74 61 4c 6f 61 64 52 |ll.....DataLoadR| 000021f0 65 66 25 20 8c 0d 07 1c 44 20 44 61 74 61 4c 6f |ef% ....D DataLo| 00002200 61 64 52 65 66 25 3d a3 3a c8 99 20 22 4f 53 5f |adRef%=.:.. "OS_| 00002210 46 69 6c 65 22 2c 36 2c 53 61 76 65 24 3a f4 20 |File",6,Save$:. | 00002220 44 65 6c 65 74 65 20 66 69 6c 65 20 73 61 76 65 |Delete file save| 00002230 64 2f 63 72 65 61 74 65 64 0d 07 26 43 20 f2 65 |d/created..&C .e| 00002240 72 72 6f 72 28 2d 31 2c 22 42 61 64 20 64 61 74 |rror(-1,"Bad dat| 00002250 61 20 74 72 61 6e 73 66 65 72 2c 20 72 65 63 65 |a transfer, rece| 00002260 69 76 65 72 20 64 65 61 64 22 29 3a f4 20 4e 6f |iver dead"):. No| 00002270 20 44 61 74 61 4c 6f 61 64 41 63 6b 0d 07 30 05 | DataLoadAck..0.| 00002280 cd 0d 07 3a 05 e1 0d 07 44 04 0d 07 4e 09 dd f2 |...:....D...N...| 00002290 6b 65 79 0d 07 58 45 77 69 6e 25 3d 70 6f 6c 6c |key..XEwin%=poll| 000022a0 21 30 3a 69 63 6f 25 3d 70 6f 6c 6c 21 34 3a 63 |!0:ico%=poll!4:c| 000022b0 68 61 72 25 3d 70 6f 6c 6c 21 32 34 3a f4 20 57 |har%=poll!24:. W| 000022c0 69 6e 64 6f 77 2c 20 69 63 6f 6e 2c 20 6b 65 79 |indow, icon, key| 000022d0 20 70 72 65 73 73 65 64 0d 07 62 22 e7 28 77 69 | pressed..b".(wi| 000022e0 6e 25 3d 77 69 6e 5f 66 69 6c 65 25 29 20 80 20 |n%=win_file%) . | 000022f0 28 69 63 6f 25 3d 31 29 20 8c 0d 07 6c 0f 20 c8 |(ico%=1) ...l. .| 00002300 8e 20 63 68 61 72 25 20 ca 0d 07 76 1d 20 20 c9 |. char% ...v. .| 00002310 20 31 33 20 3a 20 f4 20 52 65 74 75 72 6e 20 70 | 13 : . Return p| 00002320 72 65 73 73 65 64 0d 07 80 4a 20 20 20 f2 65 72 |ressed...J .er| 00002330 72 6f 72 28 2d 31 2c 22 50 6c 65 61 73 65 20 64 |ror(-1,"Please d| 00002340 72 61 67 20 74 68 65 20 73 70 72 69 74 65 20 66 |rag the sprite f| 00002350 69 6c 65 20 69 63 6f 6e 20 74 6f 20 61 20 64 69 |ile icon to a di| 00002360 72 65 63 74 6f 72 79 20 76 69 65 77 65 72 22 29 |rectory viewer")| 00002370 0d 07 8a 1d 20 20 c9 20 32 37 20 3a 20 f4 20 45 |.... . 27 : . E| 00002380 73 63 61 70 65 20 70 72 65 73 73 65 64 0d 07 94 |scape pressed...| 00002390 1f 20 20 20 f2 63 6c 6f 73 65 5f 77 69 6e 64 6f |. .close_windo| 000023a0 77 28 77 69 6e 5f 66 69 6c 65 25 29 0d 07 9e 06 |w(win_file%)....| 000023b0 20 cb 0d 07 a8 05 cd 0d 07 b2 05 e1 0d 07 bc 04 | ...............| 000023c0 0d 07 c6 0d dd f2 6d 65 73 73 61 67 65 0d 07 d0 |......message...| 000023d0 2d f4 20 49 67 6e 6f 72 65 20 6d 65 73 73 61 67 |-. Ignore messag| 000023e0 65 73 20 6f 72 69 67 69 6e 61 74 69 6e 67 20 66 |es originating f| 000023f0 72 6f 6d 20 6d 79 73 65 6c 66 0d 07 da 36 e7 28 |rom myself...6.(| 00002400 70 6f 6c 6c 21 34 29 3d 54 61 73 6b 48 61 6e 64 |poll!4)=TaskHand| 00002410 6c 65 25 20 8c 20 6d 73 67 6e 72 25 3d 2d 31 20 |le% . msgnr%=-1 | 00002420 8b 20 6d 73 67 6e 72 25 3d 70 6f 6c 6c 21 31 36 |. msgnr%=poll!16| 00002430 0d 07 e4 0f c8 8e 20 6d 73 67 6e 72 25 20 ca 0d |...... msgnr% ..| 00002440 07 ee 19 20 c9 20 2d 31 20 3a 20 f4 20 44 6f 6e |... . -1 : . Don| 00002450 27 74 20 72 65 61 63 74 0d 07 f8 2b 20 c9 20 30 |'t react...+ . 0| 00002460 20 3a 20 f2 64 69 65 3a f4 20 52 65 71 75 65 73 | : .die:. Reques| 00002470 74 20 74 6f 20 74 65 72 6d 69 6e 61 74 65 20 74 |t to terminate t| 00002480 61 73 6b 0d 08 02 2e 20 c9 20 31 20 3a 20 f4 20 |ask.... . 1 : . | 00002490 44 61 74 61 53 61 76 65 2c 20 74 72 61 6e 73 66 |DataSave, transf| 000024a0 65 72 20 76 69 61 20 73 63 72 61 70 20 66 69 6c |er via scrap fil| 000024b0 65 0d 08 0c 37 20 20 73 63 72 61 70 24 3d a4 4f |e...7 scrap$=.O| 000024c0 53 76 61 72 28 22 57 69 6d 70 24 53 63 72 61 70 |Svar("Wimp$Scrap| 000024d0 22 29 3a f4 20 52 65 61 64 20 73 63 72 61 70 20 |"):. Read scrap | 000024e0 66 69 6c 65 6e 61 6d 65 0d 08 16 d2 20 20 e7 73 |filename.... .s| 000024f0 63 72 61 70 24 3c 3e 22 22 20 8c 20 70 6f 6c 6c |crap$<>"" . poll| 00002500 21 31 32 3d 70 6f 6c 6c 21 38 3a 70 6f 6c 6c 21 |!12=poll!8:poll!| 00002510 31 36 3d 32 3a 70 6f 6c 6c 21 33 36 3d 2d 31 3a |16=2:poll!36=-1:| 00002520 24 28 70 6f 6c 6c 2b 34 34 29 3d 73 63 72 61 70 |$(poll+44)=scrap| 00002530 24 2b bd 30 3a 70 6f 6c 6c 21 30 3d 34 34 2b 28 |$+.0:poll!0=44+(| 00002540 a9 73 63 72 61 70 24 2b 31 2b 33 29 80 ac 33 3a |.scrap$+1+3)..3:| 00002550 c8 99 20 57 53 65 6e 64 4d 73 67 25 2c 31 38 2c |.. WSendMsg%,18,| 00002560 70 6f 6c 6c 2c 70 6f 6c 6c 21 34 20 8b 20 f2 65 |poll,poll!4 . .e| 00002570 72 72 6f 72 28 2d 31 2c 22 57 69 6d 70 24 53 63 |rror(-1,"Wimp$Sc| 00002580 72 61 70 20 6e 6f 74 20 64 65 66 69 6e 65 64 22 |rap not defined"| 00002590 29 3a f4 20 53 65 6e 64 20 44 61 74 61 53 61 76 |):. Send DataSav| 000025a0 65 41 63 6b 20 69 66 20 73 63 72 61 70 20 66 69 |eAck if scrap fi| 000025b0 6c 65 20 64 65 66 69 6e 65 64 0d 08 20 23 20 c9 |le defined.. # .| 000025c0 20 32 20 3a 20 f4 20 44 61 74 61 53 61 76 65 41 | 2 : . DataSaveA| 000025d0 63 6b 2c 20 73 61 76 65 20 66 69 6c 65 0d 08 2a |ck, save file..*| 000025e0 1d 20 20 e7 70 6f 6c 6c 21 31 32 3d 44 61 74 61 |. .poll!12=Data| 000025f0 53 61 76 65 52 65 66 25 20 8c 0d 08 34 49 20 20 |SaveRef% ...4I | 00002600 20 53 61 76 65 24 3d a4 73 74 72 69 6e 67 28 70 | Save$=.string(p| 00002610 6f 6c 6c 2b 34 34 29 3a f4 20 46 75 6c 6c 20 70 |oll+44):. Full p| 00002620 61 74 68 6e 61 6d 65 20 6f 66 20 66 69 6c 65 20 |athname of file | 00002630 74 6f 20 62 65 20 73 61 76 65 64 2f 63 72 65 61 |to be saved/crea| 00002640 74 65 64 0d 08 3e 2e 20 20 20 f4 20 53 61 76 65 |ted..>. . Save| 00002650 20 73 70 72 69 74 65 20 66 69 6c 65 20 6f 72 20 | sprite file or | 00002660 27 6f 70 65 6e 27 20 43 6c 65 61 72 20 66 69 6c |'open' Clear fil| 00002670 65 0d 08 48 85 20 20 20 e7 24 53 41 56 73 6e 25 |e..H. .$SAVsn%| 00002680 3d 22 66 69 6c 65 5f 66 66 39 22 20 8c 20 53 70 |="file_ff9" . Sp| 00002690 72 53 61 76 65 24 3d 53 61 76 65 24 3a f2 73 61 |rSave$=Save$:.sa| 000026a0 76 65 5f 73 70 72 69 74 65 28 53 70 72 53 61 76 |ve_sprite(SprSav| 000026b0 65 24 29 20 8b 20 43 6c 65 61 72 53 61 76 65 24 |e$) . ClearSave$| 000026c0 3d 53 61 76 65 24 3a c8 99 20 22 4f 53 5f 46 69 |=Save$:.. "OS_Fi| 000026d0 6c 65 22 2c 31 31 2c 43 6c 65 61 72 53 61 76 65 |le",11,ClearSave| 000026e0 24 2c 26 36 39 30 2c 30 2c 30 3a 43 6c 65 61 72 |$,&690,0,0:Clear| 000026f0 46 69 6c 65 3d b9 0d 08 52 3f 20 20 20 70 6f 6c |File=...R? pol| 00002700 6c 21 31 32 3d 70 6f 6c 6c 21 38 3a 70 6f 6c 6c |l!12=poll!8:poll| 00002710 21 31 36 3d 33 3a f4 20 41 6d 65 6e 64 20 64 61 |!16=3:. Amend da| 00002720 74 61 20 62 6c 6f 63 6b 20 66 6f 72 20 44 61 74 |ta block for Dat| 00002730 61 4c 6f 61 64 0d 08 5c 32 20 20 20 c8 99 20 57 |aLoad..\2 .. W| 00002740 53 65 6e 64 4d 73 67 25 2c 31 38 2c 70 6f 6c 6c |SendMsg%,18,poll| 00002750 2c 70 6f 6c 6c 21 34 3a f4 20 53 65 6e 64 20 44 |,poll!4:. Send D| 00002760 61 74 61 4c 6f 61 64 0d 08 66 40 20 20 20 44 61 |ataLoad..f@ Da| 00002770 74 61 4c 6f 61 64 52 65 66 25 3d 70 6f 6c 6c 21 |taLoadRef%=poll!| 00002780 38 3a f4 20 41 77 61 69 74 20 61 20 44 61 74 61 |8:. Await a Data| 00002790 4c 6f 61 64 41 63 6b 2c 20 72 65 6d 65 6d 62 65 |LoadAck, remembe| 000027a0 72 20 6d 79 72 65 66 0d 08 70 07 20 20 cd 0d 08 |r myref..p. ...| 000027b0 7a 2e 20 c9 20 33 2c 35 20 3a 20 f4 20 44 61 74 |z. . 3,5 : . Dat| 000027c0 61 4c 6f 61 64 2f 4f 70 65 6e 20 3a 20 61 74 74 |aLoad/Open : att| 000027d0 65 6d 70 74 20 74 6f 20 6c 6f 61 64 0d 08 84 1e |empt to load....| 000027e0 20 20 74 79 70 65 25 3d 70 6f 6c 6c 21 34 30 3a | type%=poll!40:| 000027f0 f4 20 46 69 6c 65 74 79 70 65 0d 08 8e 27 20 20 |. Filetype...' | 00002800 6e 61 6d 65 24 3d a4 73 74 72 69 6e 67 28 70 6f |name$=.string(po| 00002810 6c 6c 2b 34 34 29 3a f4 20 46 69 6c 65 6e 61 6d |ll+44):. Filenam| 00002820 65 0d 08 98 10 20 20 c8 8e 20 74 79 70 65 25 20 |e.... .. type% | 00002830 ca 0d 08 a2 4f 20 20 20 c9 20 26 36 39 30 2c 26 |....O . &690,&| 00002840 36 39 31 2c 26 36 39 32 2c 26 36 39 33 2c 26 36 |691,&692,&693,&6| 00002850 39 34 2c 26 36 39 35 2c 26 36 39 36 2c 26 36 39 |94,&695,&696,&69| 00002860 37 2c 26 36 39 38 2c 26 46 46 30 20 3a 20 f2 6c |7,&698,&FF0 : .l| 00002870 6f 61 64 28 74 79 70 65 25 2c 6e 61 6d 65 24 29 |oad(type%,name$)| 00002880 0d 08 ac 42 20 20 20 c9 20 26 46 46 39 2c 26 44 |...B . &FF9,&D| 00002890 45 32 2c 26 44 46 41 2c 26 44 35 38 2c 26 30 30 |E2,&DFA,&D58,&00| 000028a0 34 20 3a 20 e7 6d 73 67 6e 72 25 3d 33 20 8c 20 |4 : .msgnr%=3 . | 000028b0 f2 6c 6f 61 64 28 74 79 70 65 25 2c 6e 61 6d 65 |.load(type%,name| 000028c0 24 29 0d 08 b6 40 20 20 7f 20 3a 20 f4 20 46 69 |$)...@ . : . Fi| 000028d0 6c 65 74 79 70 65 20 6e 6f 74 20 72 65 63 6f 67 |letype not recog| 000028e0 6e 69 7a 65 64 2c 20 6c 6f 6f 6b 20 61 74 20 63 |nized, look at c| 000028f0 6f 6e 74 65 6e 74 73 20 69 66 20 64 72 61 67 67 |ontents if dragg| 00002900 65 64 0d 08 c0 12 20 20 20 e7 6d 73 67 6e 72 25 |ed.... .msgnr%| 00002910 3d 33 20 8c 0d 08 ca 53 20 20 20 20 48 65 61 64 |=3 ....S Head| 00002920 3d 8e 28 6e 61 6d 65 24 29 3a 69 64 24 3d 22 22 |=.(name$):id$=""| 00002930 3a e3 20 69 25 3d 31 20 b8 20 31 32 3a 69 64 24 |:. i%=1 . 12:id$| 00002940 2b 3d bd 28 9a 23 48 65 61 64 29 3a ed 3a d9 23 |+=.(.#Head):.:.#| 00002950 48 65 61 64 3a f4 20 47 65 74 20 68 65 61 64 20 |Head:. Get head | 00002960 6f 66 20 66 69 6c 65 0d 08 d4 29 20 20 20 20 74 |of file...) t| 00002970 79 70 65 25 3d 2d 31 3a f4 20 4e 6f 20 72 65 63 |ype%=-1:. No rec| 00002980 6f 67 6e 69 7a 65 64 20 74 79 70 65 20 79 65 74 |ognized type yet| 00002990 0d 08 de 5a 20 20 20 20 e7 c0 69 64 24 2c 36 29 |...Z ..id$,6)| 000029a0 3d 22 47 49 46 38 37 61 22 20 8c 20 74 79 70 65 |="GIF87a" . type| 000029b0 25 3d 26 36 39 35 20 8b 20 e7 28 c0 69 64 24 2c |%=&695 . .(.id$,| 000029c0 34 29 3d 22 46 4f 52 4d 22 29 20 80 20 28 c2 69 |4)="FORM") . (.i| 000029d0 64 24 2c 34 29 3d 22 49 4c 42 4d 22 29 20 8c 20 |d$,4)="ILBM") . | 000029e0 74 79 70 65 25 3d 26 36 39 33 0d 08 e8 6d 20 20 |type%=&693...m | 000029f0 20 20 e7 74 79 70 65 25 3d 2d 31 20 8c 20 e7 c0 | .type%=-1 . ..| 00002a00 69 64 24 2c 34 29 3d bd 26 35 39 2b bd 26 41 36 |id$,4)=.&59+.&A6| 00002a10 2b bd 26 36 41 2b bd 26 39 35 20 8c 20 74 79 70 |+.&6A+.&95 . typ| 00002a20 65 25 3d 26 36 39 36 20 8b 20 e7 28 c0 69 64 24 |e%=&696 . .(.id$| 00002a30 2c 32 29 3d 22 49 49 22 29 20 84 20 28 c0 69 64 |,2)="II") . (.id| 00002a40 24 2c 32 29 3d 22 4d 4d 22 29 20 8c 20 74 79 70 |$,2)="MM") . typ| 00002a50 65 25 3d 26 46 46 30 0d 08 f2 bd 20 20 20 20 e7 |e%=&FF0.... .| 00002a60 74 79 70 65 25 3e 30 20 8c 20 c8 99 20 22 4f 53 |type%>0 . .. "OS| 00002a70 5f 43 4c 49 22 2c 22 53 65 74 54 79 70 65 20 22 |_CLI","SetType "| 00002a80 2b 6e 61 6d 65 24 2b 22 20 22 2b c3 7e 28 74 79 |+name$+" "+.~(ty| 00002a90 70 65 25 29 3a f2 6c 6f 61 64 28 74 79 70 65 25 |pe%):.load(type%| 00002aa0 2c 6e 61 6d 65 24 29 20 8b 20 f2 65 72 72 6f 72 |,name$) . .error| 00002ab0 28 2d 31 2c 22 49 20 64 6f 6e 27 74 20 72 65 63 |(-1,"I don't rec| 00002ac0 6f 67 6e 69 7a 65 20 74 68 69 73 20 66 69 6c 65 |ognize this file| 00002ad0 2e 20 50 6c 65 61 73 65 20 66 69 6c 65 74 79 70 |. Please filetyp| 00002ae0 65 20 69 74 20 61 70 70 72 6f 70 69 61 74 65 6c |e it appropiatel| 00002af0 79 2e 22 29 3a f4 20 46 69 6c 65 74 79 70 65 20 |y."):. Filetype | 00002b00 61 6e 64 20 6c 6f 61 64 20 6f 72 20 63 6f 6d 70 |and load or comp| 00002b10 6c 61 69 6e 0d 08 fc 08 20 20 20 cd 0d 09 06 07 |lain.... .....| 00002b20 20 20 cb 0d 09 10 29 20 c9 20 34 20 3a 20 f4 20 | ....) . 4 : . | 00002b30 44 61 74 61 4c 6f 61 64 41 63 6b 2c 20 63 68 65 |DataLoadAck, che| 00002b40 63 6b 20 6f 72 20 69 67 6e 6f 72 65 0d 09 1a 3c |ck or ignore...<| 00002b50 20 20 e7 44 61 74 61 4c 6f 61 64 52 65 66 25 20 | .DataLoadRef% | 00002b60 8c 20 e7 70 6f 6c 6c 21 31 32 3d 44 61 74 61 4c |. .poll!12=DataL| 00002b70 6f 61 64 52 65 66 25 20 8c 20 44 61 74 61 4c 6f |oadRef% . DataLo| 00002b80 61 64 52 65 66 25 3d a3 0d 09 24 21 20 c9 20 26 |adRef%=...$! . &| 00002b90 34 30 30 43 30 20 3a 20 f4 20 53 75 62 6d 65 6e |400C0 : . Submen| 00002ba0 75 20 77 61 72 6e 69 6e 67 0d 09 2e 47 20 20 70 |u warning...G p| 00002bb0 6f 69 6e 74 65 72 25 3d 70 6f 6c 6c 21 32 30 3a |ointer%=poll!20:| 00002bc0 78 25 3d 70 6f 6c 6c 21 32 34 3a 79 25 3d 70 6f |x%=poll!24:y%=po| 00002bd0 6c 6c 21 32 38 3a f4 20 47 65 74 20 70 6f 69 6e |ll!28:. Get poin| 00002be0 74 65 72 2f 70 72 6f 70 6f 73 65 64 20 78 2f 79 |ter/proposed x/y| 00002bf0 0d 09 38 41 20 20 c8 99 20 57 44 65 63 6f 64 65 |..8A .. WDecode| 00002c00 4d 25 2c 2c 6d 65 6e 75 31 2c 70 6f 6c 6c 2b 33 |M%,,menu1,poll+3| 00002c10 32 2c c4 31 30 30 2c 22 20 22 29 20 b8 20 2c 2c |2,.100," ") . ,,| 00002c20 2c 70 61 74 68 24 3a f4 20 47 65 74 20 70 61 74 |,path$:. Get pat| 00002c30 68 0d 09 42 10 20 20 c8 8e 20 70 61 74 68 24 20 |h..B. .. path$ | 00002c40 ca 0d 09 4c 8a 20 20 20 c9 20 22 50 72 6f 63 65 |...L. . "Proce| 00002c50 73 73 69 6e 67 2e 43 6c 65 61 72 20 6f 75 74 70 |ssing.Clear outp| 00002c60 75 74 22 20 3a 20 24 53 41 56 66 6e 25 3d 53 61 |ut" : $SAVfn%=Sa| 00002c70 76 65 43 6c 65 61 72 24 3a 24 53 41 56 73 6e 25 |veClear$:$SAVsn%| 00002c80 3d 22 66 69 6c 65 5f 36 39 30 22 3a c8 99 20 57 |="file_690":.. W| 00002c90 43 72 65 61 74 65 53 4d 25 2c 2c 70 6f 69 6e 74 |CreateSM%,,point| 00002ca0 65 72 25 2c 78 25 2c 79 25 3a f4 20 4f 70 65 6e |er%,x%,y%:. Open| 00002cb0 20 66 69 6c 65 20 77 69 6e 64 6f 77 20 66 6f 72 | file window for| 00002cc0 20 43 6c 65 61 72 20 66 69 6c 65 0d 09 56 64 20 | Clear file..Vd | 00002cd0 20 20 c9 20 22 49 6d 61 67 65 20 69 6e 66 6f 22 | . "Image info"| 00002ce0 2c 22 49 6e 66 6f 22 2c 22 46 69 6c 65 74 79 70 |,"Info","Filetyp| 00002cf0 65 73 22 2c 22 50 72 6f 63 65 73 73 69 6e 67 2e |es","Processing.| 00002d00 52 47 42 20 72 65 73 6f 6c 75 74 69 6f 6e 22 20 |RGB resolution" | 00002d10 3a 20 c8 99 20 57 43 72 65 61 74 65 53 4d 25 2c |: .. WCreateSM%,| 00002d20 2c 70 6f 69 6e 74 65 72 25 2c 78 25 2c 79 25 0d |,pointer%,x%,y%.| 00002d30 09 60 1c 20 20 20 7f 20 3a 20 f2 73 75 62 6d 65 |.`. . : .subme| 00002d40 6e 75 28 70 61 74 68 24 2c b9 29 0d 09 6a 07 20 |nu(path$,.)..j. | 00002d50 20 cb 0d 09 74 40 20 c9 20 26 34 30 30 43 31 20 | ...t@ . &400C1 | 00002d60 3a 20 f4 20 4d 6f 64 65 20 68 61 73 20 63 68 61 |: . Mode has cha| 00002d70 6e 67 65 64 20 28 61 6e 64 20 69 74 20 6d 61 79 |nged (and it may| 00002d80 20 6e 6f 74 20 68 61 76 65 20 62 65 65 6e 20 6d | not have been m| 00002d90 65 29 0d 09 7e 20 20 20 f2 6d 6f 64 65 5f 63 68 |e)..~ .mode_ch| 00002da0 61 6e 67 65 28 2d 31 29 3a f4 20 54 69 64 79 20 |ange(-1):. Tidy | 00002db0 75 70 0d 09 88 36 20 c9 20 26 43 43 45 30 30 20 |up...6 . &CCE00 | 00002dc0 3a 20 f4 20 4f 74 68 65 72 20 54 72 61 6e 73 6c |: . Other Transl| 00002dd0 61 74 6f 72 20 61 73 6b 73 20 74 6f 20 6b 69 6c |ator asks to kil| 00002de0 6c 20 6d 6f 64 75 6c 65 0d 09 92 3e 20 20 70 6f |l module...> po| 00002df0 6c 6c 21 31 32 3d 70 6f 6c 6c 21 38 3a c8 99 20 |ll!12=poll!8:.. | 00002e00 57 53 65 6e 64 4d 73 67 25 2c 31 39 2c 70 6f 6c |WSendMsg%,19,pol| 00002e10 6c 2c 70 6f 6c 6c 21 34 3a f4 20 48 61 6e 64 73 |l,poll!4:. Hands| 00002e20 20 6f 66 66 20 21 0d 09 9c 05 cb 0d 09 a6 05 e1 | off !..........| 00002e30 0d 09 b0 05 20 0d 09 ba 10 dd f2 6d 6f 75 73 65 |.... ......mouse| 00002e40 63 6c 69 63 6b 0d 09 c4 3f 62 75 74 25 3d 70 6f |click...?but%=po| 00002e50 6c 6c 21 38 3a 77 69 6e 25 3d 70 6f 6c 6c 21 31 |ll!8:win%=poll!1| 00002e60 32 3a 69 63 6f 25 3d 70 6f 6c 6c 21 31 36 3a f4 |2:ico%=poll!16:.| 00002e70 20 42 75 74 74 6f 6e 73 2f 77 69 6e 64 6f 77 2f | Buttons/window/| 00002e80 69 63 6f 6e 0d 09 ce 0d c8 8e 20 77 69 6e 25 20 |icon...... win% | 00002e90 ca 0d 09 d8 1e 20 c9 20 2d 32 20 3a 20 f4 20 43 |..... . -2 : . C| 00002ea0 6c 69 63 6b 20 6f 6e 20 69 63 6f 6e 62 61 72 0d |lick on iconbar.| 00002eb0 09 e2 17 20 20 e7 69 63 6f 25 3d 49 69 63 6f 6e |... .ico%=Iicon| 00002ec0 62 61 72 25 20 8c 0d 09 ec 1d 20 20 20 f4 20 49 |bar% ..... . I| 00002ed0 63 6f 6e 62 61 72 20 69 63 6f 6e 20 63 6c 69 63 |conbar icon clic| 00002ee0 6b 65 64 0d 09 f6 14 20 20 20 c8 8e 20 62 75 74 |ked.... .. but| 00002ef0 25 20 80 20 37 20 ca 0d 0a 00 80 20 20 20 20 c9 |% . 7 ..... .| 00002f00 20 32 20 3a 20 f2 63 72 65 61 74 65 5f 6d 65 6e | 2 : .create_men| 00002f10 75 28 2d 31 2c 30 2c 22 54 72 61 6e 73 6c 61 74 |u(-1,0,"Translat| 00002f20 6f 72 22 2c 31 30 2a 31 36 2c 34 30 2c 30 2c 22 |or",10*16,40,0,"| 00002f30 20 49 6e 66 6f 22 2b 22 23 22 2b c3 28 77 69 6e | Info"+"#"+.(win| 00002f40 5f 69 6e 66 6f 25 29 2b 22 7c 20 46 69 6c 65 74 |_info%)+"| Filet| 00002f50 79 70 65 73 22 2b 22 23 22 2b c3 28 77 69 6e 5f |ypes"+"#"+.(win_| 00002f60 66 69 6c 65 74 25 29 2b 22 7c 20 51 75 69 74 7c |filet%)+"| Quit|| 00002f70 22 2c 22 22 2c b9 29 0d 0a 0a 20 20 20 20 20 c9 |","",.)... .| 00002f80 20 31 2c 34 20 3a 20 f2 6f 70 74 69 6f 6e 73 5f | 1,4 : .options_| 00002f90 6d 65 6e 75 28 b9 29 0d 0a 14 08 20 20 20 cb 0d |menu(.).... ..| 00002fa0 0a 1e 07 20 20 cd 0d 0a 28 29 20 c9 20 77 69 6e |... ...() . win| 00002fb0 5f 69 6d 67 25 20 3a 20 f4 20 43 6c 69 63 6b 20 |_img% : . Click | 00002fc0 6f 6e 20 69 6d 61 67 65 20 77 69 6e 64 6f 77 0d |on image window.| 00002fd0 0a 32 13 20 20 c8 8e 20 62 75 74 25 20 80 20 37 |.2. .. but% . 7| 00002fe0 20 ca 0d 0a 3c 38 20 20 20 c9 20 32 20 3a 20 f2 | ...<8 . 2 : .| 00002ff0 6f 70 74 69 6f 6e 73 5f 6d 65 6e 75 28 b9 29 3a |options_menu(.):| 00003000 f4 20 4d 65 6e 75 20 62 75 74 74 6f 6e 2c 20 70 |. Menu button, p| 00003010 6f 70 20 75 70 20 6d 65 6e 75 0d 0a 46 07 20 20 |op up menu..F. | 00003020 cb 0d 0a 50 29 20 c9 20 77 69 6e 5f 66 69 6c 65 |...P) . win_file| 00003030 25 20 3a 20 f4 20 43 6c 69 63 6b 20 6f 6e 20 66 |% : . Click on f| 00003040 69 6c 65 20 77 69 6e 64 6f 77 0d 0a 5a 0f 20 20 |ile window..Z. | 00003050 e7 69 63 6f 25 3d 30 20 8c 0d 0a 64 16 20 20 20 |.ico%=0 ...d. | 00003060 c8 8e 20 62 75 74 25 20 80 20 26 37 46 20 ca 0d |.. but% . &7F ..| 00003070 0a 6e 39 20 20 20 20 c9 20 31 36 2c 36 34 20 3a |.n9 . 16,64 :| 00003080 20 f4 20 44 72 61 67 2c 63 61 6c 63 75 6c 61 74 | . Drag,calculat| 00003090 65 20 64 72 61 67 20 62 6f 78 20 61 6e 64 20 63 |e drag box and c| 000030a0 72 65 61 74 65 20 69 74 0d 0a 78 e7 20 20 20 20 |reate it..x. | 000030b0 20 21 62 6c 6f 63 6b 3d 77 69 6e 25 3a c8 99 20 | !block=win%:.. | 000030c0 57 47 65 74 57 53 25 2c 2c 62 6c 6f 63 6b 3a 78 |WGetWS%,,block:x| 000030d0 25 3d 62 6c 6f 63 6b 21 34 3a 79 25 3d 62 6c 6f |%=block!4:y%=blo| 000030e0 63 6b 21 38 3a 62 6c 6f 63 6b 21 34 3d 69 63 6f |ck!8:block!4=ico| 000030f0 25 3a c8 99 20 57 47 65 74 49 53 25 2c 2c 62 6c |%:.. WGetIS%,,bl| 00003100 6f 63 6b 3a 21 62 6c 6f 63 6b 3d 77 69 6e 25 3a |ock:!block=win%:| 00003110 62 6c 6f 63 6b 21 34 3d 35 3a 62 6c 6f 63 6b 21 |block!4=5:block!| 00003120 38 2b 3d 78 25 3a 62 6c 6f 63 6b 21 31 32 2b 3d |8+=x%:block!12+=| 00003130 79 25 3a 62 6c 6f 63 6b 21 31 36 3d 62 6c 6f 63 |y%:block!16=bloc| 00003140 6b 21 38 2b 36 38 3a 62 6c 6f 63 6b 21 32 30 3d |k!8+68:block!20=| 00003150 62 6c 6f 63 6b 21 31 32 2b 36 38 3a 62 6c 6f 63 |block!12+68:bloc| 00003160 6b 21 32 34 3d 30 3a 62 6c 6f 63 6b 21 32 38 3d |k!24=0:block!28=| 00003170 30 3a 62 6c 6f 63 6b 21 33 32 3d 53 63 72 57 25 |0:block!32=ScrW%| 00003180 3a 62 6c 6f 63 6b 21 33 36 3d 53 63 72 48 25 0d |:block!36=ScrH%.| 00003190 0a 82 2c 20 20 20 20 20 c8 99 20 57 44 72 61 67 |.., .. WDrag| 000031a0 42 25 2c 2c 62 6c 6f 63 6b 3a f4 20 43 72 65 61 |B%,,block:. Crea| 000031b0 74 65 20 64 72 61 67 20 62 6f 78 0d 0a 8c 08 20 |te drag box.... | 000031c0 20 20 cb 0d 0a 96 07 20 20 cd 0d 0a a0 2f 20 c9 | ..... ..../ .| 000031d0 20 77 69 6e 5f 72 67 62 62 69 74 73 25 20 3a 20 | win_rgbbits% : | 000031e0 f4 20 52 47 42 20 73 6c 69 64 65 72 20 6d 61 6e |. RGB slider man| 000031f0 69 70 75 6c 61 74 69 6f 6e 0d 0a aa 8f 20 20 21 |ipulation.... !| 00003200 62 6c 6f 63 6b 3d 77 69 6e 25 3a c8 99 20 57 47 |block=win%:.. WG| 00003210 65 74 57 53 25 2c 2c 62 6c 6f 63 6b 3a 78 25 3d |etWS%,,block:x%=| 00003220 62 6c 6f 63 6b 21 34 3a 79 25 3d 62 6c 6f 63 6b |block!4:y%=block| 00003230 21 38 3a 62 6c 6f 63 6b 21 34 3d 69 63 6f 25 3a |!8:block!4=ico%:| 00003240 c8 99 20 57 47 65 74 49 53 25 2c 2c 62 6c 6f 63 |.. WGetIS%,,bloc| 00003250 6b 3a 78 25 2b 3d 62 6c 6f 63 6b 21 38 2b 32 3a |k:x%+=block!8+2:| 00003260 79 25 2b 3d 62 6c 6f 63 6b 21 31 32 2b 38 3a f4 |y%+=block!12+8:.| 00003270 20 50 6f 73 69 74 69 6f 6e 20 69 6e 20 73 6c 69 | Position in sli| 00003280 64 65 72 20 69 63 6f 6e 0d 0a b4 46 20 20 6d 78 |der icon...F mx| 00003290 25 3d 21 70 6f 6c 6c 3a 64 78 25 3d 6d 78 25 2d |%=!poll:dx%=mx%-| 000032a0 78 25 2d 38 3a 76 61 6c 25 3d 64 78 25 20 81 20 |x%-8:val%=dx% . | 000032b0 31 36 3a e7 76 61 6c 25 3e 38 20 8c 20 76 61 6c |16:.val%>8 . val| 000032c0 25 3d 38 3a f4 20 50 6f 73 69 74 69 6f 6e 0d 0a |%=8:. Position..| 000032d0 be 86 20 20 e7 69 63 6f 25 3d 33 20 8c 20 63 6f |.. .ico%=3 . co| 000032e0 6c 25 3d 31 31 3a 73 6e 24 3d 22 52 22 3a 62 69 |l%=11:sn$="R":bi| 000032f0 74 25 3d 31 36 20 8b 20 e7 69 63 6f 25 3d 34 20 |t%=16 . .ico%=4 | 00003300 8c 20 63 6f 6c 25 3d 31 30 3a 73 6e 24 3d 22 47 |. col%=10:sn$="G| 00003310 22 3a 62 69 74 25 3d 38 20 8b 20 63 6f 6c 25 3d |":bit%=8 . col%=| 00003320 38 3a 73 6e 24 3d 22 42 22 3a 62 69 74 25 3d 30 |8:sn$="B":bit%=0| 00003330 3a f4 20 53 6c 69 64 65 72 20 63 6f 6c 6f 75 72 |:. Slider colour| 00003340 73 2c 20 6e 61 6d 65 73 2c 20 62 69 74 6f 66 66 |s, names, bitoff| 00003350 73 65 74 73 0d 0a c8 24 20 20 f4 20 50 6c 6f 74 |sets...$ . Plot| 00003360 20 73 6c 69 64 65 72 20 69 6e 20 73 6c 69 64 65 | slider in slide| 00003370 72 20 73 70 72 69 74 65 0d 0a d2 7e 20 20 c8 99 |r sprite...~ ..| 00003380 20 4f 53 53 70 6f 70 25 2c 36 30 2b 32 35 36 2c | OSSpop%,60+256,| 00003390 69 63 6f 6e 73 70 72 69 74 65 73 2c 22 73 6c 69 |iconsprites,"sli| 000033a0 64 65 72 22 2b 73 6e 24 2c 30 20 b8 20 72 30 2c |der"+sn$,0 . r0,| 000033b0 72 31 2c 72 32 2c 72 33 3a e6 30 2c 30 3a c8 93 |r1,r2,r3:.0,0:..| 000033c0 20 c8 90 20 32 2c 38 2c 38 2a 31 36 2c 31 36 3a | .. 2,8,8*16,16:| 000033d0 e6 30 2c 63 6f 6c 25 3a e7 76 61 6c 25 3e 30 20 |.0,col%:.val%>0 | 000033e0 8c 20 c8 93 20 c8 90 20 32 2c 38 2c 76 61 6c 25 |. .. .. 2,8,val%| 000033f0 2a 31 36 2c 31 36 0d 0a dc 32 20 20 c8 99 20 4f |*16,16...2 .. O| 00003400 53 53 70 6f 70 25 2c 72 30 2c 72 31 2c 72 32 2c |SSpop%,r0,r1,r2,| 00003410 72 33 3a f4 20 52 65 73 74 6f 72 65 20 56 44 55 |r3:. Restore VDU| 00003420 20 63 6f 6e 74 65 78 74 0d 0a e6 8f 20 20 52 47 | context.... RG| 00003430 42 62 69 74 73 25 3d 28 52 47 42 62 69 74 73 25 |Bbits%=(RGBbits%| 00003440 20 80 20 ac 20 28 32 35 35 3c 3c 62 69 74 25 29 | . . (255<<bit%)| 00003450 29 20 84 20 28 76 61 6c 25 3c 3c 62 69 74 25 29 |) . (val%<<bit%)| 00003460 3a 21 62 6c 6f 63 6b 3d 77 69 6e 25 3a 62 6c 6f |:!block=win%:blo| 00003470 63 6b 21 34 3d 69 63 6f 25 3a 62 6c 6f 63 6b 21 |ck!4=ico%:block!| 00003480 38 3d 30 3a 62 6c 6f 63 6b 21 31 32 3d 30 3a c8 |8=0:block!12=0:.| 00003490 99 20 57 53 65 74 49 53 25 2c 2c 62 6c 6f 63 6b |. WSetIS%,,block| 000034a0 3a f4 20 55 70 64 61 74 65 20 63 6f 64 65 20 61 |:. Update code a| 000034b0 6e 64 20 69 63 6f 6e 0d 0a f0 05 cb 0d 0a fa 05 |nd icon.........| 000034c0 e1 0d 0b 04 04 0d 0b 0e 0e dd f2 64 72 61 67 64 |...........dragd| 000034d0 72 6f 70 0d 0b 18 21 c8 99 20 57 43 72 65 61 74 |rop...!.. WCreat| 000034e0 65 4d 25 2c 2c 2d 31 3a f4 20 43 6c 6f 73 65 20 |eM%,,-1:. Close | 000034f0 6d 65 6e 75 0d 0b 22 2c c8 99 20 57 47 65 74 50 |menu..",.. WGetP| 00003500 49 25 2c 2c 62 6c 6f 63 6b 3a f4 20 47 65 74 20 |I%,,block:. Get | 00003510 70 6f 69 6e 74 65 72 20 70 6f 73 69 74 69 6f 6e |pointer position| 00003520 0d 0b 2c 47 64 72 6f 70 77 69 6e 25 3d 62 6c 6f |..,Gdropwin%=blo| 00003530 63 6b 21 31 32 3a 64 72 6f 70 69 63 6f 25 3d 62 |ck!12:dropico%=b| 00003540 6c 6f 63 6b 21 31 36 3a f4 20 57 69 6e 64 6f 77 |lock!16:. Window| 00003550 2f 69 63 6f 6e 20 77 68 65 72 65 20 62 6f 78 20 |/icon where box | 00003560 64 72 6f 70 70 65 64 0d 0b 36 28 73 61 76 65 24 |dropped..6(save$| 00003570 3d a4 73 74 72 69 6e 67 28 53 41 56 66 6e 25 29 |=.string(SAVfn%)| 00003580 3a f4 20 47 65 74 20 6c 65 61 66 6e 61 6d 65 0d |:. Get leafname.| 00003590 0b 40 6f e7 24 53 41 56 73 6e 25 3d 22 66 69 6c |.@o.$SAVsn%="fil| 000035a0 65 5f 66 66 39 22 20 8c 20 53 61 76 65 53 70 72 |e_ff9" . SaveSpr| 000035b0 24 3d 73 61 76 65 24 3a 66 74 25 3d 26 46 46 39 |$=save$:ft%=&FF9| 000035c0 20 8b 20 53 61 76 65 43 6c 65 61 72 24 3d 73 61 | . SaveClear$=sa| 000035d0 76 65 24 3a 66 74 25 3d 26 36 39 30 3a f4 20 52 |ve$:ft%=&690:. R| 000035e0 65 6d 65 6d 62 65 72 20 6c 65 61 66 6e 61 6d 65 |emember leafname| 000035f0 2c 20 73 65 74 20 66 69 6c 65 74 79 70 65 0d 0b |, set filetype..| 00003600 4a a4 62 6c 6f 63 6b 21 32 30 3d 62 6c 6f 63 6b |J.block!20=block| 00003610 21 31 32 3a 62 6c 6f 63 6b 21 32 34 3d 62 6c 6f |!12:block!24=blo| 00003620 63 6b 21 31 36 3a 62 6c 6f 63 6b 21 32 38 3d 62 |ck!16:block!28=b| 00003630 6c 6f 63 6b 21 30 3a 62 6c 6f 63 6b 21 33 32 3d |lock!0:block!32=| 00003640 62 6c 6f 63 6b 21 34 3a 62 6c 6f 63 6b 21 31 32 |block!4:block!12| 00003650 3d 30 3a 62 6c 6f 63 6b 21 31 36 3d 31 3a 62 6c |=0:block!16=1:bl| 00003660 6f 63 6b 21 33 36 3d 30 3a 62 6c 6f 63 6b 21 34 |ock!36=0:block!4| 00003670 30 3d 66 74 25 3a 24 28 62 6c 6f 63 6b 2b 34 34 |0=ft%:$(block+44| 00003680 29 3d 73 61 76 65 24 2b bd 30 3a 21 62 6c 6f 63 |)=save$+.0:!bloc| 00003690 6b 3d 28 34 34 2b a9 73 61 76 65 24 2b 34 29 80 |k=(44+.save$+4).| 000036a0 ac 33 0d 0b 54 3b c8 99 20 57 53 65 6e 64 4d 73 |.3..T;.. WSendMs| 000036b0 67 25 2c 31 37 2c 62 6c 6f 63 6b 2c 64 72 6f 70 |g%,17,block,drop| 000036c0 77 69 6e 25 2c 64 72 6f 70 69 63 6f 25 3a f4 20 |win%,dropico%:. | 000036d0 53 65 6e 64 20 44 61 74 61 53 61 76 65 0d 0b 5e |Send DataSave..^| 000036e0 36 44 61 74 61 53 61 76 65 52 65 66 25 3d 62 6c |6DataSaveRef%=bl| 000036f0 6f 63 6b 21 38 3a f4 20 52 65 6d 65 6d 62 65 72 |ock!8:. Remember| 00003700 20 6d 79 72 65 66 20 66 6f 72 20 44 61 74 61 53 | myref for DataS| 00003710 61 76 65 0d 0b 68 30 f2 63 6c 6f 73 65 5f 77 69 |ave..h0.close_wi| 00003720 6e 64 6f 77 28 77 69 6e 5f 66 69 6c 65 25 29 3a |ndow(win_file%):| 00003730 f4 20 43 6c 6f 73 65 20 66 69 6c 65 20 77 69 6e |. Close file win| 00003740 64 6f 77 0d 0b 72 05 e1 0d 0b 7c 05 20 0d 0b 86 |dow..r....|. ...| 00003750 17 dd f2 6c 6f 61 64 28 74 79 70 65 25 2c 6e 61 |...load(type%,na| 00003760 6d 65 24 29 0d 0b 90 16 f4 20 4c 6f 61 64 73 20 |me$)..... Loads | 00003770 69 6d 61 67 65 20 66 69 6c 65 0d 0b 9a 4b 70 6f |image file...Kpo| 00003780 6c 6c 21 31 32 3d 70 6f 6c 6c 21 38 3a 70 6f 6c |ll!12=poll!8:pol| 00003790 6c 21 31 36 3d 34 3a c8 99 20 57 53 65 6e 64 4d |l!16=4:.. WSendM| 000037a0 73 67 25 2c 31 37 2c 70 6f 6c 6c 2c 70 6f 6c 6c |sg%,17,poll,poll| 000037b0 21 34 3a f4 20 53 65 6e 64 20 44 61 74 61 4c 6f |!4:. Send DataLo| 000037c0 61 64 41 63 6b 0d 0b a4 1a 4c 6f 61 64 24 3d 6e |adAck....Load$=n| 000037d0 61 6d 65 24 3a f4 20 46 69 6c 65 6e 61 6d 65 0d |ame$:. Filename.| 000037e0 0b ae 7b 70 6f 73 25 3d a9 4c 6f 61 64 24 3a f5 |..{pos%=.Load$:.| 000037f0 20 70 6f 73 25 2d 3d 31 3a 70 65 72 69 6f 64 3d | pos%-=1:period=| 00003800 28 c1 4c 6f 61 64 24 2c 70 6f 73 25 2c 31 29 3d |(.Load$,pos%,1)=| 00003810 22 2e 22 29 3a fd 20 28 70 6f 73 25 3d 31 29 20 |"."):. (pos%=1) | 00003820 84 20 70 65 72 69 6f 64 3a e7 70 65 72 69 6f 64 |. period:.period| 00003830 20 8c 20 4c 65 61 66 24 3d c2 4c 6f 61 64 24 2c | . Leaf$=.Load$,| 00003840 a9 4c 6f 61 64 24 2d 70 6f 73 25 29 20 8b 20 4c |.Load$-pos%) . L| 00003850 65 61 66 24 3d 4c 6f 61 64 24 0d 0b b8 35 c8 99 |eaf$=Load$...5..| 00003860 20 22 4f 53 5f 46 69 6c 65 22 2c 31 37 2c 4c 6f | "OS_File",17,Lo| 00003870 61 64 24 20 b8 20 2c 2c 2c 2c 46 6c 65 6e 25 3a |ad$ . ,,,,Flen%:| 00003880 f4 20 46 69 6c 65 27 73 20 6c 65 6e 67 74 68 0d |. File's length.| 00003890 0b c2 20 46 69 6c 65 28 31 29 3d 8e 28 4c 6f 61 |.. File(1)=.(Loa| 000038a0 64 24 29 3a f4 20 4f 70 65 6e 20 66 69 6c 65 0d |d$):. Open file.| 000038b0 0b cc 39 f2 76 61 72 28 22 66 68 61 6e 22 2c 46 |..9.var("fhan",F| 000038c0 69 6c 65 28 31 29 29 3a f2 76 61 72 28 22 66 70 |ile(1)):.var("fp| 000038d0 74 72 22 2c 30 29 3a f4 20 52 45 4d 20 4d 6f 64 |tr",0):. REM Mod| 000038e0 75 6c 65 20 69 6e 66 6f 0d 0b d6 27 69 54 79 70 |ule info...'iTyp| 000038f0 65 25 3d 30 3a f4 20 44 65 66 61 75 6c 74 20 69 |e%=0:. Default i| 00003900 6e 70 75 74 20 62 79 74 65 20 6f 72 64 65 72 0d |nput byte order.| 00003910 0b e0 1b f2 68 6f 75 72 5f 6f 6e 3a f4 20 48 6f |....hour_on:. Ho| 00003920 75 72 67 6c 61 73 73 20 6f 6e 0d 0b ea 3f e7 77 |urglass on...?.w| 00003930 69 6e 5f 69 6d 67 25 3e 30 20 8c 20 f2 63 6c 6f |in_img%>0 . .clo| 00003940 73 65 5f 77 69 6e 64 6f 77 28 77 69 6e 5f 69 6d |se_window(win_im| 00003950 67 25 29 3a f4 20 4f 6c 64 20 69 6d 61 67 65 20 |g%):. Old image | 00003960 64 69 73 63 61 72 64 65 64 0d 0b f4 3f f2 69 6e |discarded...?.in| 00003970 76 61 6c 69 64 61 74 65 5f 69 6d 61 67 65 3a f4 |validate_image:.| 00003980 20 4e 65 77 20 69 6d 61 67 65 20 74 6f 20 63 6f | New image to co| 00003990 6d 65 2c 20 69 6e 76 61 6c 69 64 61 74 65 20 6f |me, invalidate o| 000039a0 6c 64 20 69 6d 61 67 65 0d 0b fe 0e c8 8e 20 74 |ld image...... t| 000039b0 79 70 65 25 20 ca 0d 0c 08 af 20 c9 20 26 46 46 |ype% ..... . &FF| 000039c0 39 20 3a 20 70 25 3d a7 22 2e 22 2b a4 75 70 73 |9 : p%=."."+.ups| 000039d0 74 72 69 6e 67 28 6e 61 6d 65 24 29 2c 22 2e 48 |tring(name$),".H| 000039e0 49 50 2e 22 29 3a e7 70 25 3e 30 20 8c 20 6c 6f |IP."):.p%>0 . lo| 000039f0 70 70 61 74 68 24 3d 6e 61 6d 65 24 3a c1 6c 6f |ppath$=name$:.lo| 00003a00 70 70 61 74 68 24 2c 70 25 2c 33 29 3d 22 4c 4f |ppath$,p%,3)="LO| 00003a10 50 22 3a 46 69 6c 65 28 32 29 3d 8e 28 6c 6f 70 |P":File(2)=.(lop| 00003a20 70 61 74 68 24 29 3a e7 46 69 6c 65 28 32 29 3d |path$):.File(2)=| 00003a30 30 20 8c 20 f2 65 72 72 6f 72 28 2d 31 2c 22 49 |0 . .error(-1,"I| 00003a40 20 63 61 6e 6e 6f 74 20 66 69 6e 64 20 74 68 65 | cannot find the| 00003a50 20 41 72 56 69 73 20 4c 4f 50 20 66 69 6c 65 20 | ArVis LOP file | 00003a60 21 22 29 3a e1 0d 0c 12 62 20 20 e7 70 25 3d 30 |!"):....b .p%=0| 00003a70 20 8c 20 4f 6b 3d a4 70 69 63 5f 41 52 43 20 8b | . Ok=.pic_ARC .| 00003a80 20 f2 76 61 72 28 22 66 68 61 32 22 2c 46 69 6c | .var("fha2",Fil| 00003a90 65 28 32 29 29 3a f2 76 61 72 28 22 66 70 74 32 |e(2)):.var("fpt2| 00003aa0 22 2c 30 29 3a 4f 6b 3d a4 70 69 63 5f 41 52 56 |",0):Ok=.pic_ARV| 00003ab0 49 53 3a f4 20 57 68 61 74 27 73 20 74 68 69 73 |IS:. What's this| 00003ac0 20 74 68 65 6e 20 3f 0d 0c 1c 1c 20 c9 20 26 44 | then ?.... . &D| 00003ad0 45 32 20 3a 20 4f 6b 3d a4 70 69 63 5f 50 52 4f |E2 : Ok=.pic_PRO| 00003ae0 41 52 54 0d 0c 26 1d 20 c9 20 26 44 46 41 20 3a |ART..&. . &DFA :| 00003af0 20 4f 6b 3d a4 70 69 63 5f 57 41 54 46 4f 52 44 | Ok=.pic_WATFORD| 00003b00 0d 0c 30 1c 20 c9 20 26 44 35 38 20 3a 20 4f 6b |..0. . &D58 : Ok| 00003b10 3d a4 70 69 63 5f 52 45 4e 44 45 52 0d 0c 3a 19 |=.pic_RENDER..:.| 00003b20 20 c9 20 26 30 30 34 20 3a 20 4f 6b 3d a4 70 69 | . &004 : Ok=.pi| 00003b30 63 5f 41 49 4d 0d 0c 44 1b 20 c9 20 26 36 39 30 |c_AIM..D. . &690| 00003b40 20 3a 20 4f 6b 3d a4 70 69 63 5f 43 4c 45 41 52 | : Ok=.pic_CLEAR| 00003b50 0d 0c 4e 1b 20 c9 20 26 36 39 31 20 3a 20 4f 6b |..N. . &691 : Ok| 00003b60 3d a4 70 69 63 5f 44 45 47 41 53 0d 0c 58 19 20 |=.pic_DEGAS..X. | 00003b70 c9 20 26 36 39 32 20 3a 20 4f 6b 3d a4 70 69 63 |. &692 : Ok=.pic| 00003b80 5f 49 4d 47 0d 0c 62 19 20 c9 20 26 36 39 33 20 |_IMG..b. . &693 | 00003b90 3a 20 4f 6b 3d a4 70 69 63 5f 49 46 46 0d 0c 6c |: Ok=.pic_IFF..l| 00003ba0 19 20 c9 20 26 36 39 34 20 3a 20 4f 6b 3d a4 70 |. . &694 : Ok=.p| 00003bb0 69 63 5f 4d 41 43 0d 0c 76 19 20 c9 20 26 36 39 |ic_MAC..v. . &69| 00003bc0 35 20 3a 20 4f 6b 3d a4 70 69 63 5f 47 49 46 0d |5 : Ok=.pic_GIF.| 00003bd0 0c 80 19 20 c9 20 26 36 39 36 20 3a 20 4f 6b 3d |... . &696 : Ok=| 00003be0 a4 70 69 63 5f 53 55 4e 0d 0c 8a 19 20 c9 20 26 |.pic_SUN.... . &| 00003bf0 36 39 37 20 3a 20 4f 6b 3d a4 70 69 63 5f 50 43 |697 : Ok=.pic_PC| 00003c00 58 0d 0c 94 19 20 c9 20 26 36 39 38 20 3a 20 4f |X.... . &698 : O| 00003c10 6b 3d a4 70 69 63 5f 51 52 54 0d 0c 9e 1a 20 c9 |k=.pic_QRT.... .| 00003c20 20 26 46 46 30 20 3a 20 4f 6b 3d a4 70 69 63 5f | &FF0 : Ok=.pic_| 00003c30 54 49 46 46 0d 0c a8 05 cb 0d 0c b2 24 49 6d 67 |TIFF........$Img| 00003c40 3d 4f 6b 3a f4 20 49 6d 61 67 65 20 6f 6b 20 69 |=Ok:. Image ok i| 00003c50 66 20 61 6c 6c 20 69 73 20 77 65 6c 6c 0d 0c bc |f all is well...| 00003c60 1d f2 68 6f 75 72 5f 6f 66 66 3a f4 20 48 6f 75 |..hour_off:. Hou| 00003c70 72 67 6c 61 73 73 20 6f 66 66 0d 0c c6 1f f2 69 |rglass off.....i| 00003c80 63 6c 6f 73 65 3a f4 20 43 6c 6f 73 65 20 69 6e |close:. Close in| 00003c90 70 75 74 20 66 69 6c 65 73 0d 0c d0 0a e7 49 6d |put files.....Im| 00003ca0 67 20 8c 0d 0c da 2c 20 f2 73 65 74 5f 6d 6f 64 |g ...., .set_mod| 00003cb0 65 28 49 6d 67 4d 6f 64 65 25 29 3a f4 20 53 65 |e(ImgMode%):. Se| 00003cc0 6c 65 63 74 20 69 6d 61 67 65 20 6d 6f 64 65 0d |lect image mode.| 00003cd0 0c e4 29 20 5a 6f 6f 6d 58 3d 31 3a 5a 6f 6f 6d |..) ZoomX=1:Zoom| 00003ce0 59 3d 31 3a f4 20 52 65 73 65 74 20 7a 6f 6f 6d |Y=1:. Reset zoom| 00003cf0 20 66 61 63 74 6f 72 73 0d 0c ee 41 20 e7 41 75 | factors...A .Au| 00003d00 74 6f 50 61 6c 20 8c 20 f2 73 65 74 5f 70 61 6c |toPal . .set_pal| 00003d10 65 74 74 65 28 31 29 3a f4 20 53 65 6c 65 63 74 |ette(1):. Select| 00003d20 20 69 6d 61 67 65 20 70 61 6c 65 74 74 65 20 69 | image palette i| 00003d30 66 20 65 6e 61 62 6c 65 64 0d 0c f8 2d 20 f2 6e |f enabled...- .n| 00003d40 65 77 5f 69 6d 61 67 65 5f 77 69 6e 64 6f 77 3a |ew_image_window:| 00003d50 f4 20 4f 70 65 6e 20 77 69 6e 64 6f 77 20 6f 6e |. Open window on| 00003d60 20 69 6d 61 67 65 0d 0d 02 05 cd 0d 0d 0c 05 e1 | image..........| 00003d70 0d 0d 16 04 0d 0d 20 17 dd f2 73 61 76 65 5f 73 |...... ...save_s| 00003d80 70 72 69 74 65 28 6f 75 74 24 29 0d 0d 2a 1f f4 |prite(out$)..*..| 00003d90 20 53 61 76 65 73 20 69 6d 61 67 65 20 61 73 20 | Saves image as | 00003da0 73 70 72 69 74 65 66 69 6c 65 0d 0d 34 12 c8 8e |spritefile..4...| 00003db0 20 53 61 76 65 4b 69 6e 64 24 20 ca 0d 0d 3e 31 | SaveKind$ ...>1| 00003dc0 20 c9 20 22 46 75 6c 6c 22 20 3a 20 f4 20 46 75 | . "Full" : . Fu| 00003dd0 6c 6c 20 72 65 73 6f 6c 75 74 69 6f 6e 20 73 70 |ll resolution sp| 00003de0 72 69 74 65 2c 20 6e 6f 20 65 64 69 74 0d 0d 48 |rite, no edit..H| 00003df0 20 20 c9 20 22 57 68 6f 6c 65 22 20 3a 20 f2 65 | . "Whole" : .e| 00003e00 64 69 74 5f 70 61 72 74 28 a3 2c a3 29 0d 0d 52 |dit_part(.,.)..R| 00003e10 29 20 c9 20 22 57 68 6f 6c 65 20 28 73 63 61 6c |) . "Whole (scal| 00003e20 65 64 29 22 20 3a 20 f2 65 64 69 74 5f 70 61 72 |ed)" : .edit_par| 00003e30 74 28 b9 2c a3 29 0d 0d 5c 1f 20 c9 20 22 50 61 |t(.,.)..\. . "Pa| 00003e40 72 74 22 20 3a 20 f2 65 64 69 74 5f 70 61 72 74 |rt" : .edit_part| 00003e50 28 a3 2c b9 29 0d 0d 66 28 20 c9 20 22 50 61 72 |(.,.)..f( . "Par| 00003e60 74 20 28 73 63 61 6c 65 64 29 22 20 3a 20 f2 65 |t (scaled)" : .e| 00003e70 64 69 74 5f 70 61 72 74 28 b9 2c b9 29 0d 0d 70 |dit_part(.,.)..p| 00003e80 05 cb 0d 0d 7a 1b f2 68 6f 75 72 5f 6f 6e 3a f4 |....z..hour_on:.| 00003e90 20 48 6f 75 72 67 6c 61 73 73 20 6f 6e 0d 0d 84 | Hourglass on...| 00003ea0 17 e7 53 61 76 65 4b 69 6e 64 24 3d 22 46 75 6c |..SaveKind$="Ful| 00003eb0 6c 22 20 8c 0d 0d 8e 38 20 f4 20 46 75 6c 6c 20 |l" ....8 . Full | 00003ec0 73 70 72 69 74 65 2c 20 73 61 76 65 20 69 6d 61 |sprite, save ima| 00003ed0 67 65 20 77 69 74 68 20 70 61 6c 65 74 74 65 20 |ge with palette | 00003ee0 28 6f 70 74 69 6f 6e 61 6c 6c 79 29 0d 0d 98 23 |(optionally)...#| 00003ef0 20 4f 75 74 3d ae 28 6f 75 74 24 29 3a f4 20 4f | Out=.(out$):. O| 00003f00 70 65 6e 20 6f 75 74 70 75 74 20 66 69 6c 65 0d |pen output file.| 00003f10 0d a2 2d 20 73 70 72 25 3d 53 70 72 69 74 65 25 |..- spr%=Sprite%| 00003f20 2b 53 70 72 69 74 65 25 21 38 3a f4 20 53 74 61 |+Sprite%!8:. Sta| 00003f30 72 74 20 6f 66 20 73 70 72 69 74 65 0d 0d ac 2c |rt of sprite...,| 00003f40 20 63 6f 6c 73 25 3d 32 5e 53 70 72 43 6f 6c 62 | cols%=2^SprColb| 00003f50 69 74 73 25 3a f4 20 43 6f 6c 6f 75 72 73 20 69 |its%:. Colours i| 00003f60 6e 20 73 70 72 69 74 65 0d 0d b6 1f 20 e7 50 61 |n sprite.... .Pa| 00003f70 6c 6f 6e 6f 66 66 20 80 20 28 63 6f 6c 73 25 3c |lonoff . (cols%<| 00003f80 3e 32 35 36 29 20 8c 0d 0d c0 22 20 20 f4 20 53 |>256) ...." . S| 00003f90 61 76 65 20 77 69 74 68 20 70 61 6c 65 74 74 65 |ave with palette| 00003fa0 20 69 6e 63 6c 75 64 65 64 0d 0d ca 2e 20 20 65 | included.... e| 00003fb0 78 74 72 61 25 3d 63 6f 6c 73 25 2a 38 3a f4 20 |xtra%=cols%*8:. | 00003fc0 45 78 74 72 61 20 62 79 74 65 73 20 66 6f 72 20 |Extra bytes for | 00003fd0 70 61 6c 65 74 74 65 0d 0d d4 45 20 20 c8 99 20 |palette...E .. | 00003fe0 22 4f 53 5f 47 42 50 42 22 2c 31 2c 4f 75 74 2c |"OS_GBPB",1,Out,| 00003ff0 53 70 72 69 74 65 25 2b 34 2c 38 2c 30 3a f4 20 |Sprite%+4,8,0:. | 00004000 4f 75 74 70 75 74 20 70 61 72 74 20 6f 66 20 63 |Output part of c| 00004010 6f 6e 74 72 6f 6c 20 62 6c 6f 63 6b 0d 0d de 44 |ontrol block...D| 00004020 20 20 21 61 72 67 25 3d 65 78 74 72 61 25 2b 53 | !arg%=extra%+S| 00004030 70 72 69 74 65 25 21 31 32 3a c8 99 20 22 4f 53 |prite%!12:.. "OS| 00004040 5f 47 42 50 42 22 2c 32 2c 4f 75 74 2c 61 72 67 |_GBPB",2,Out,arg| 00004050 25 2c 34 3a f4 20 4e 65 77 20 6f 66 66 73 65 74 |%,4:. New offset| 00004060 0d 0d e8 3f 20 20 21 61 72 67 25 3d 65 78 74 72 |...? !arg%=extr| 00004070 61 25 2b 21 73 70 72 25 3a c8 99 20 22 4f 53 5f |a%+!spr%:.. "OS_| 00004080 47 42 50 42 22 2c 32 2c 4f 75 74 2c 61 72 67 25 |GBPB",2,Out,arg%| 00004090 2c 34 3a f4 20 4e 65 77 20 6f 66 66 73 65 74 0d |,4:. New offset.| 000040a0 0d f2 41 20 20 c8 99 20 22 4f 53 5f 47 42 50 42 |..A .. "OS_GBPB| 000040b0 22 2c 32 2c 4f 75 74 2c 73 70 72 25 2b 34 2c 32 |",2,Out,spr%+4,2| 000040c0 38 3a f4 20 4f 75 74 70 75 74 20 70 61 72 74 20 |8:. Output part | 000040d0 6f 66 20 73 70 72 69 74 65 20 68 65 61 64 65 72 |of sprite header| 000040e0 0d 0d fc 41 20 20 21 61 72 67 25 3d 65 78 74 72 |...A !arg%=extr| 000040f0 61 25 2b 73 70 72 25 21 33 32 3a c8 99 20 22 4f |a%+spr%!32:.. "O| 00004100 53 5f 47 42 50 42 22 2c 32 2c 4f 75 74 2c 61 72 |S_GBPB",2,Out,ar| 00004110 67 25 2c 34 3a f4 20 4e 65 77 20 6f 66 66 73 65 |g%,4:. New offse| 00004120 74 0d 0e 06 41 20 20 21 61 72 67 25 3d 65 78 74 |t...A !arg%=ext| 00004130 72 61 25 2b 73 70 72 25 21 33 36 3a c8 99 20 22 |ra%+spr%!36:.. "| 00004140 4f 53 5f 47 42 50 42 22 2c 32 2c 4f 75 74 2c 61 |OS_GBPB",2,Out,a| 00004150 72 67 25 2c 34 3a f4 20 4e 65 77 20 6f 66 66 73 |rg%,4:. New offs| 00004160 65 74 0d 0e 10 39 20 20 c8 99 20 22 4f 53 5f 47 |et...9 .. "OS_G| 00004170 42 50 42 22 2c 32 2c 4f 75 74 2c 73 70 72 25 2b |BPB",2,Out,spr%+| 00004180 34 30 2c 34 3a f4 20 4f 75 74 70 75 74 20 73 70 |40,4:. Output sp| 00004190 72 69 74 65 27 73 20 6d 6f 64 65 0d 0e 1a 8a 20 |rite's mode.... | 000041a0 20 e3 20 63 25 3d 31 20 b8 20 63 6f 6c 73 25 3a | . c%=1 . cols%:| 000041b0 61 72 67 25 21 28 63 25 2a 38 2d 38 29 3d a4 72 |arg%!(c%*8-8)=.r| 000041c0 65 61 64 70 61 6c 76 61 6c 28 49 6d 67 50 61 6c |eadpalval(ImgPal| 000041d0 25 28 63 25 29 29 3a 61 72 67 25 21 28 63 25 2a |%(c%)):arg%!(c%*| 000041e0 38 2d 34 29 3d 61 72 67 25 21 28 63 25 2a 38 2d |8-4)=arg%!(c%*8-| 000041f0 38 29 3a ed 3a c8 99 20 22 4f 53 5f 47 42 50 42 |8):.:.. "OS_GBPB| 00004200 22 2c 32 2c 4f 75 74 2c 61 72 67 25 2c 63 6f 6c |",2,Out,arg%,col| 00004210 73 25 2a 38 3a f4 20 4f 75 74 70 75 74 20 70 61 |s%*8:. Output pa| 00004220 6c 65 74 74 65 0d 0e 24 46 20 20 c8 99 20 22 4f |lette..$F .. "O| 00004230 53 5f 47 42 50 42 22 2c 32 2c 4f 75 74 2c 73 70 |S_GBPB",2,Out,sp| 00004240 72 25 2b 73 70 72 25 21 33 32 2c 28 73 70 72 25 |r%+spr%!32,(spr%| 00004250 21 31 36 2b 31 29 2a 28 73 70 72 25 21 32 30 2b |!16+1)*(spr%!20+| 00004260 31 29 2a 34 3a f4 20 44 61 74 61 0d 0e 2e 29 20 |1)*4:. Data...) | 00004270 cc 20 f4 20 4e 6f 20 70 61 6c 65 74 74 65 2c 20 |. . No palette, | 00004280 6f 75 74 70 75 74 20 74 68 65 20 77 68 6f 6c 65 |output the whole| 00004290 20 6c 6f 74 0d 0e 38 3e 20 20 c8 99 20 22 4f 53 | lot..8> .. "OS| 000042a0 5f 47 42 50 42 22 2c 31 2c 4f 75 74 2c 53 70 72 |_GBPB",1,Out,Spr| 000042b0 69 74 65 25 2b 34 2c 53 70 72 69 74 65 25 21 31 |ite%+4,Sprite%!1| 000042c0 32 2d 34 2c 30 3a f4 20 4f 75 74 70 75 74 20 61 |2-4,0:. Output a| 000042d0 6c 6c 0d 0e 42 06 20 cd 0d 0e 4c 3f 20 d9 23 4f |ll..B. ...L? .#O| 000042e0 75 74 3a c8 99 20 22 4f 53 5f 43 4c 49 22 2c 22 |ut:.. "OS_CLI","| 000042f0 53 65 74 54 79 70 65 20 22 2b 6f 75 74 24 2b 22 |SetType "+out$+"| 00004300 20 53 70 72 69 74 65 22 3a f4 20 43 6c 6f 73 65 | Sprite":. Close| 00004310 20 26 20 74 79 70 65 0d 0e 56 30 cc 20 f4 20 45 | & type..V0. . E| 00004320 64 69 74 65 64 20 70 61 72 74 20 69 6e 20 77 69 |dited part in wi| 00004330 6e 64 6f 77 20 6f 6e 20 73 63 72 65 65 6e 2c 20 |ndow on screen, | 00004340 73 61 76 65 20 69 74 0d 0e 60 28 20 f2 69 6e 76 |save it..`( .inv| 00004350 61 6c 69 64 61 74 65 5f 73 63 72 65 65 6e 3a f4 |alidate_screen:.| 00004360 20 53 63 72 65 65 6e 20 69 6e 76 61 6c 69 64 0d | Screen invalid.| 00004370 0e 6a 20 20 e7 50 61 6c 6f 6e 6f 66 66 20 8c 20 |.j .Palonoff . | 00004380 70 61 6c 25 3d 31 20 8b 20 70 61 6c 25 3d 30 0d |pal%=1 . pal%=0.| 00004390 0e 74 34 20 c8 99 20 4f 53 53 70 6f 70 25 2c 32 |.t4 .. OSSpop%,2| 000043a0 2c 2c 6f 75 74 24 2c 70 61 6c 25 3a f4 20 53 61 |,,out$,pal%:. Sa| 000043b0 76 65 20 73 63 72 65 65 6e 20 69 6e 20 77 69 6e |ve screen in win| 000043c0 64 6f 77 0d 0e 7e 2f 20 ef 32 34 2c 30 3b 30 3b |dow..~/ .24,0;0;| 000043d0 53 63 72 57 25 3b 53 63 72 48 25 3b 3a f4 20 52 |ScrW%;ScrH%;:. R| 000043e0 65 73 65 74 20 73 63 72 65 65 6e 20 77 69 6e 64 |eset screen wind| 000043f0 6f 77 0d 0e 88 05 cd 0d 0e 92 1d f2 68 6f 75 72 |ow..........hour| 00004400 5f 6f 66 66 3a f4 20 48 6f 75 72 67 6c 61 73 73 |_off:. Hourglass| 00004410 20 6f 66 66 0d 0e 9c 05 e1 0d 0e a6 04 0d 0e b0 | off............| 00004420 0f dd a4 70 69 63 5f 44 45 47 41 53 0d 0e ba 2f |...pic_DEGAS.../| 00004430 f4 20 4d 61 6b 65 73 20 41 74 61 72 69 20 44 65 |. Makes Atari De| 00004440 67 61 73 20 69 6d 61 67 65 20 28 50 49 31 2f 32 |gas image (PI1/2| 00004450 2f 33 2c 50 43 31 2f 32 2f 33 29 0d 0e c4 2b 69 |/3,PC1/2/3)...+i| 00004460 54 79 70 65 25 3d 30 3a f4 20 53 65 74 20 6c 6f |Type%=0:. Set lo| 00004470 77 2d 74 6f 2d 68 69 67 68 20 74 79 70 65 20 6f |w-to-high type o| 00004480 66 20 64 61 74 61 0d 0e ce 39 63 6f 6d 70 72 25 |f data...9compr%| 00004490 3d a4 69 31 28 31 29 3a 72 65 73 25 3d a4 69 31 |=.i1(1):res%=.i1| 000044a0 28 31 29 3a f4 20 46 6c 61 67 73 2c 20 72 65 73 |(1):. Flags, res| 000044b0 6f 6c 75 74 69 6f 6e 20 28 31 2f 32 2f 33 29 0d |olution (1/2/3).| 000044c0 0e d8 37 63 6f 6d 70 72 65 73 73 65 64 3d 28 28 |..7compressed=((| 000044d0 63 6f 6d 70 72 25 80 25 31 30 30 30 30 30 30 30 |compr%.%10000000| 000044e0 29 3e 30 29 3a f4 20 43 6f 6d 70 72 65 73 73 65 |)>0):. Compresse| 000044f0 64 20 66 6c 61 67 0d 0e e2 23 74 6f 74 61 6c 25 |d flag...#total%| 00004500 3d 33 32 30 30 30 3a f4 20 54 6f 74 61 6c 20 64 |=32000:. Total d| 00004510 61 74 61 20 62 79 74 65 73 0d 0e ec 0d c8 8e 20 |ata bytes...... | 00004520 72 65 73 25 20 ca 0d 0e f6 29 20 c9 20 30 20 3a |res% ....) . 0 :| 00004530 20 78 72 65 73 25 3d 33 32 30 3a 79 72 65 73 25 | xres%=320:yres%| 00004540 3d 32 30 30 3a 63 6f 6c 62 69 74 73 25 3d 34 0d |=200:colbits%=4.| 00004550 0f 00 29 20 c9 20 31 20 3a 20 78 72 65 73 25 3d |..) . 1 : xres%=| 00004560 36 34 30 3a 79 72 65 73 25 3d 32 30 30 3a 63 6f |640:yres%=200:co| 00004570 6c 62 69 74 73 25 3d 32 0d 0f 0a 29 20 c9 20 32 |lbits%=2...) . 2| 00004580 20 3a 20 78 72 65 73 25 3d 36 34 30 3a 79 72 65 | : xres%=640:yre| 00004590 73 25 3d 34 30 30 3a 63 6f 6c 62 69 74 73 25 3d |s%=400:colbits%=| 000045a0 31 0d 0f 14 05 cb 0d 0f 1e 2b 63 6f 6c 6f 75 72 |1........+colour| 000045b0 73 25 3d 32 5e 63 6f 6c 62 69 74 73 25 3a f4 20 |s%=2^colbits%:. | 000045c0 4e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 6f 75 72 |Number of colour| 000045d0 73 0d 0f 28 36 6d 6f 64 65 25 3d a4 6d 6f 64 65 |s..(6mode%=.mode| 000045e0 28 78 72 65 73 25 2c 79 72 65 73 25 2c 63 6f 6c |(xres%,yres%,col| 000045f0 6f 75 72 73 25 29 3a f4 20 44 65 74 65 72 6d 69 |ours%):. Determi| 00004600 6e 65 20 6d 6f 64 65 0d 0f 32 29 e7 a4 6e 65 77 |ne mode..2)..new| 00004610 5f 69 6d 61 67 65 28 6d 6f 64 65 25 2c 78 72 65 |_image(mode%,xre| 00004620 73 25 2c 79 72 65 73 25 2c 30 29 20 8b 20 3d a3 |s%,yres%,0) . =.| 00004630 0d 0f 3c 2d f2 69 67 65 74 28 31 2c 64 75 6d 25 |..<-.iget(1,dum%| 00004640 2c 33 32 29 3a f4 20 52 65 61 64 20 70 61 6c 65 |,32):. Read pale| 00004650 74 74 65 20 66 72 6f 6d 20 66 69 6c 65 0d 0f 46 |tte from file..F| 00004660 95 49 6e 50 61 6c 25 28 30 29 3d 63 6f 6c 62 69 |.InPal%(0)=colbi| 00004670 74 73 25 3a e3 20 63 25 3d 30 20 b8 20 63 6f 6c |ts%:. c%=0 . col| 00004680 6f 75 72 73 25 2d 31 3a 76 25 3d 64 75 6d 25 21 |ours%-1:v%=dum%!| 00004690 28 63 25 2a 32 29 3a 72 25 3d 28 76 25 80 37 29 |(c%*2):r%=(v%.7)| 000046a0 2a 33 32 3a 67 25 3d 28 28 76 25 3e 3e 31 32 29 |*32:g%=((v%>>12)| 000046b0 80 37 29 2a 33 32 3a 62 25 3d 28 28 76 25 3e 3e |.7)*32:b%=((v%>>| 000046c0 38 29 80 37 29 2a 33 32 3a 49 6e 50 61 6c 25 28 |8).7)*32:InPal%(| 000046d0 63 6f 6c 6f 75 72 73 25 2d 63 25 29 3d 28 72 25 |colours%-c%)=(r%| 000046e0 3c 3c 31 36 29 2b 28 67 25 3c 3c 38 29 2b 62 25 |<<16)+(g%<<8)+b%| 000046f0 3a ed 0d 0f 50 5b e7 63 6f 6d 70 72 65 73 73 65 |:...P[.compresse| 00004700 64 20 8c 20 63 6f 6d 70 72 24 3d 22 52 75 6e 20 |d . compr$="Run | 00004710 6c 65 6e 67 74 68 22 3a 74 79 70 65 24 3d 22 50 |length":type$="P| 00004720 43 22 2b c3 28 72 65 73 25 2b 31 29 20 8b 20 63 |C"+.(res%+1) . c| 00004730 6f 6d 70 72 24 3d 22 22 3a 74 79 70 65 24 3d 22 |ompr$="":type$="| 00004740 50 49 22 2b c3 28 72 65 73 25 2b 31 29 0d 0f 5a |PI"+.(res%+1)..Z| 00004750 5c f2 69 6d 61 67 65 5f 69 6e 66 6f 28 22 41 74 |\.image_info("At| 00004760 61 72 69 20 44 65 67 61 73 20 22 2b 74 79 70 65 |ari Degas "+type| 00004770 24 2c 78 72 65 73 25 2c 79 72 65 73 25 2c 30 2c |$,xres%,yres%,0,| 00004780 63 6f 6c 62 69 74 73 25 2c 6d 6f 64 65 25 2c 63 |colbits%,mode%,c| 00004790 6f 6d 70 72 24 2c 22 22 2c 46 6c 65 6e 25 2d 33 |ompr$,"",Flen%-3| 000047a0 34 2c 74 6f 74 61 6c 25 29 0d 0f 64 75 f2 76 61 |4,total%)..du.va| 000047b0 72 28 22 63 6f 6d 70 22 2c 63 6f 6d 70 72 65 73 |r("comp",compres| 000047c0 73 65 64 29 3a f2 76 61 72 28 22 72 65 73 74 22 |sed):.var("rest"| 000047d0 2c 72 65 73 25 29 3a f2 76 61 72 28 22 77 69 64 |,res%):.var("wid| 000047e0 74 22 2c 78 72 65 73 25 29 3a f2 76 61 72 28 22 |t",xres%):.var("| 000047f0 68 65 69 67 22 2c 79 72 65 73 25 29 3a f2 76 61 |heig",yres%):.va| 00004800 72 28 22 66 70 74 72 22 2c 26 32 32 29 3a f2 75 |r("fptr",&22):.u| 00004810 6e 70 61 63 6b 28 22 44 45 47 41 53 22 29 0d 0f |npack("DEGAS")..| 00004820 6e 15 49 6d 67 4d 6f 64 65 25 3d 6d 6f 64 65 25 |n.ImgMode%=mode%| 00004830 3a 3d b9 0d 0f 78 05 20 0d 0f 82 0d dd a4 70 69 |:=...x. ......pi| 00004840 63 5f 49 4d 47 0d 0f 8c 1b f4 20 4d 61 6b 65 73 |c_IMG..... Makes| 00004850 20 41 74 61 72 69 20 49 4d 47 20 69 6d 61 67 65 | Atari IMG image| 00004860 0d 0f 96 2b 69 54 79 70 65 25 3d 31 3a f4 20 53 |...+iType%=1:. S| 00004870 65 74 20 68 69 67 68 2d 74 6f 2d 6c 6f 77 20 74 |et high-to-low t| 00004880 79 70 65 20 6f 66 20 64 61 74 61 0d 0f a0 51 76 |ype of data...Qv| 00004890 65 72 73 69 6f 6e 25 3d a4 69 32 28 31 29 3a 68 |ersion%=.i2(1):h| 000048a0 65 61 64 6c 65 6e 25 3d a4 69 32 28 31 29 3a 6e |eadlen%=.i2(1):n| 000048b0 70 6c 61 6e 65 73 25 3d a4 69 32 28 31 29 3a f4 |planes%=.i2(1):.| 000048c0 20 56 65 72 73 69 6f 6e 2c 20 68 65 61 64 6c 65 | Version, headle| 000048d0 6e 67 74 68 2c 20 70 6c 61 6e 65 73 0d 0f aa 51 |ngth, planes...Q| 000048e0 70 61 74 6c 65 6e 25 3d a4 69 32 28 31 29 3a 70 |patlen%=.i2(1):p| 000048f0 77 25 3d a4 69 32 28 31 29 3a 70 68 25 3d a4 69 |w%=.i2(1):ph%=.i| 00004900 32 28 31 29 3a f4 20 50 61 74 74 65 72 6e 20 6c |2(1):. Pattern l| 00004910 65 6e 67 74 68 2c 20 70 69 78 65 6c 20 77 69 64 |ength, pixel wid| 00004920 74 68 20 61 6e 64 20 68 65 69 67 68 74 0d 0f b4 |th and height...| 00004930 3d 77 69 64 74 68 25 3d a4 69 32 28 31 29 3a 68 |=width%=.i2(1):h| 00004940 65 69 67 68 74 25 3d a4 69 32 28 31 29 3a f4 20 |eight%=.i2(1):. | 00004950 57 69 64 74 68 20 61 6e 64 20 68 65 69 67 68 74 |Width and height| 00004960 20 69 6e 20 70 69 78 65 6c 73 0d 0f be 2b 63 6f | in pixels...+co| 00004970 6c 6f 75 72 73 25 3d 32 5e 6e 70 6c 61 6e 65 73 |lours%=2^nplanes| 00004980 25 3a f4 20 4e 75 6d 62 65 72 20 6f 66 20 63 6f |%:. Number of co| 00004990 6c 6f 75 72 73 0d 0f c8 7f e7 63 6f 6c 6f 75 72 |lours.....colour| 000049a0 73 25 3c 3e 32 20 84 20 70 61 74 6c 65 6e 25 3c |s%<>2 . patlen%<| 000049b0 3e 32 20 8c 20 f2 65 72 72 6f 72 28 2d 31 2c 22 |>2 . .error(-1,"| 000049c0 49 20 63 61 6e 6e 6f 74 20 64 69 73 70 6c 61 79 |I cannot display| 000049d0 20 41 74 61 72 69 20 49 4d 47 20 69 6d 61 67 65 | Atari IMG image| 000049e0 73 20 77 69 74 68 20 6d 6f 72 65 20 74 68 61 6e |s with more than| 000049f0 20 32 20 63 6f 6c 6f 75 72 73 20 6f 72 20 70 61 | 2 colours or pa| 00004a00 74 74 65 72 6e 6c 65 6e 67 74 68 3c 3e 32 20 21 |tternlength<>2 !| 00004a10 22 29 3a e1 0d 0f d2 39 6d 6f 64 65 25 3d a4 6d |"):....9mode%=.m| 00004a20 6f 64 65 28 77 69 64 74 68 25 2c 68 65 69 67 68 |ode(width%,heigh| 00004a30 74 25 2c 63 6f 6c 6f 75 72 73 25 29 3a f4 20 44 |t%,colours%):. D| 00004a40 65 74 65 72 6d 69 6e 65 20 6d 6f 64 65 0d 0f dc |etermine mode...| 00004a50 2c e7 a4 6e 65 77 5f 69 6d 61 67 65 28 6d 6f 64 |,..new_image(mod| 00004a60 65 25 2c 77 69 64 74 68 25 2c 68 65 69 67 68 74 |e%,width%,height| 00004a70 25 2c 30 29 20 8b 20 3d a3 0d 0f e6 42 49 6e 50 |%,0) . =....BInP| 00004a80 61 6c 25 28 30 29 3d 6e 70 6c 61 6e 65 73 25 3a |al%(0)=nplanes%:| 00004a90 49 6e 50 61 6c 25 28 31 29 3d 30 3a 49 6e 50 61 |InPal%(1)=0:InPa| 00004aa0 6c 25 28 32 29 3d 26 46 46 46 46 46 46 3a f4 20 |l%(2)=&FFFFFF:. | 00004ab0 53 65 74 20 70 61 6c 65 74 74 65 0d 0f f0 7b f2 |Set palette...{.| 00004ac0 69 6d 61 67 65 5f 69 6e 66 6f 28 22 41 74 61 72 |image_info("Atar| 00004ad0 69 20 49 4d 47 22 2c 77 69 64 74 68 25 2c 68 65 |i IMG",width%,he| 00004ae0 69 67 68 74 25 2c 30 2c 6e 70 6c 61 6e 65 73 25 |ight%,0,nplanes%| 00004af0 2c 6d 6f 64 65 25 2c 22 53 65 76 65 72 61 6c 20 |,mode%,"Several | 00004b00 77 61 79 73 22 2c 22 22 2c 46 6c 65 6e 25 2d 68 |ways","",Flen%-h| 00004b10 65 61 64 6c 65 6e 25 2a 32 2c 28 77 69 64 74 68 |eadlen%*2,(width| 00004b20 25 2a 68 65 69 67 68 74 25 2a 6e 70 6c 61 6e 65 |%*height%*nplane| 00004b30 73 25 29 81 38 29 0d 0f fa 53 f2 76 61 72 28 22 |s%).8)...S.var("| 00004b40 77 69 64 74 22 2c 77 69 64 74 68 25 29 3a f2 76 |widt",width%):.v| 00004b50 61 72 28 22 68 65 69 67 22 2c 68 65 69 67 68 74 |ar("heig",height| 00004b60 25 29 3a f2 76 61 72 28 22 66 70 74 72 22 2c 68 |%):.var("fptr",h| 00004b70 65 61 64 6c 65 6e 25 2a 32 29 3a f2 75 6e 70 61 |eadlen%*2):.unpa| 00004b80 63 6b 28 22 49 4d 47 22 29 0d 10 04 15 49 6d 67 |ck("IMG")....Img| 00004b90 4d 6f 64 65 25 3d 6d 6f 64 65 25 3a 3d b9 0d 10 |Mode%=mode%:=...| 00004ba0 0e 05 20 0d 10 18 0d dd a4 70 69 63 5f 4d 41 43 |.. ......pic_MAC| 00004bb0 0d 10 22 24 f4 20 4d 61 6b 65 73 20 4d 61 63 49 |.."$. Makes MacI| 00004bc0 6e 74 6f 73 68 20 4d 61 63 50 61 69 6e 74 20 69 |ntosh MacPaint i| 00004bd0 6d 61 67 65 0d 10 2c 32 77 69 64 74 68 25 3d 35 |mage..,2width%=5| 00004be0 37 36 3a 68 65 69 67 68 74 25 3d 37 32 30 3a 63 |76:height%=720:c| 00004bf0 6f 6c 62 69 74 73 25 3d 31 3a f4 20 52 65 73 6f |olbits%=1:. Reso| 00004c00 6c 75 74 69 6f 6e 0d 10 36 3b 6d 6f 64 65 25 3d |lution..6;mode%=| 00004c10 a4 6d 6f 64 65 28 77 69 64 74 68 25 2c 68 65 69 |.mode(width%,hei| 00004c20 67 68 74 25 2c 32 5e 63 6f 6c 62 69 74 73 25 29 |ght%,2^colbits%)| 00004c30 3a f4 20 44 65 74 65 72 6d 69 6e 65 20 6d 6f 64 |:. Determine mod| 00004c40 65 0d 10 40 2c e7 a4 6e 65 77 5f 69 6d 61 67 65 |e..@,..new_image| 00004c50 28 6d 6f 64 65 25 2c 77 69 64 74 68 25 2c 68 65 |(mode%,width%,he| 00004c60 69 67 68 74 25 2c 30 29 20 8b 20 3d a3 0d 10 4a |ight%,0) . =...J| 00004c70 42 49 6e 50 61 6c 25 28 30 29 3d 63 6f 6c 62 69 |BInPal%(0)=colbi| 00004c80 74 73 25 3a 49 6e 50 61 6c 25 28 31 29 3d 30 3a |ts%:InPal%(1)=0:| 00004c90 49 6e 50 61 6c 25 28 32 29 3d 26 46 46 46 46 46 |InPal%(2)=&FFFFF| 00004ca0 46 3a f4 20 53 65 74 20 70 61 6c 65 74 74 65 0d |F:. Set palette.| 00004cb0 10 54 6b f2 69 6d 61 67 65 5f 69 6e 66 6f 28 22 |.Tk.image_info("| 00004cc0 4d 61 63 49 6e 74 6f 73 68 20 4d 61 63 50 61 69 |MacIntosh MacPai| 00004cd0 6e 74 22 2c 77 69 64 74 68 25 2c 68 65 69 67 68 |nt",width%,heigh| 00004ce0 74 25 2c 30 2c 63 6f 6c 62 69 74 73 25 2c 6d 6f |t%,0,colbits%,mo| 00004cf0 64 65 25 2c 22 52 75 6e 20 6c 65 6e 67 74 68 22 |de%,"Run length"| 00004d00 2c 22 22 2c 46 6c 65 6e 25 2d 36 34 30 2c 28 35 |,"",Flen%-640,(5| 00004d10 37 36 2a 37 32 30 29 81 38 29 0d 10 5e 4c f2 76 |76*720).8)..^L.v| 00004d20 61 72 28 22 77 69 64 74 22 2c 77 69 64 74 68 25 |ar("widt",width%| 00004d30 29 3a f2 76 61 72 28 22 68 65 69 67 22 2c 68 65 |):.var("heig",he| 00004d40 69 67 68 74 25 29 3a f2 76 61 72 28 22 66 70 74 |ight%):.var("fpt| 00004d50 72 22 2c 36 34 30 29 3a f2 75 6e 70 61 63 6b 28 |r",640):.unpack(| 00004d60 22 4d 41 43 22 29 0d 10 68 15 49 6d 67 4d 6f 64 |"MAC")..h.ImgMod| 00004d70 65 25 3d 6d 6f 64 65 25 3a 3d b9 0d 10 72 05 20 |e%=mode%:=...r. | 00004d80 0d 10 7c 0d dd a4 70 69 63 5f 49 46 46 0d 10 86 |..|...pic_IFF...| 00004d90 1b f4 20 4d 61 6b 65 73 20 41 6d 69 67 61 20 49 |.. Makes Amiga I| 00004da0 46 46 20 69 6d 61 67 65 0d 10 90 25 62 6d 68 64 |FF image...%bmhd| 00004db0 3d a3 3a 63 6d 61 70 3d a3 3a 62 6f 64 79 3d a3 |=.:cmap=.:body=.| 00004dc0 3a f4 20 49 6e 69 74 20 66 6c 61 67 73 0d 10 9a |:. Init flags...| 00004dd0 32 68 61 6d 3d a3 3a 6c 61 63 65 3d a3 3a 68 69 |2ham=.:lace=.:hi| 00004de0 72 65 73 3d a3 3a 68 61 6c 66 62 72 69 67 68 74 |res=.:halfbright| 00004df0 3d a3 3a f4 20 49 6e 69 74 20 66 6c 61 67 73 0d |=.:. Init flags.| 00004e00 10 a4 2b 69 54 79 70 65 25 3d 31 3a f4 20 53 65 |..+iType%=1:. Se| 00004e10 74 20 68 69 67 68 2d 74 6f 2d 6c 6f 77 20 74 79 |t high-to-low ty| 00004e20 70 65 20 6f 66 20 64 61 74 61 0d 10 ae 32 f4 20 |pe of data...2. | 00004e30 43 68 65 63 6b 20 69 66 20 74 68 69 73 20 69 73 |Check if this is| 00004e40 20 61 20 73 74 61 6e 64 61 72 64 20 49 46 46 20 | a standard IFF | 00004e50 70 69 63 74 75 72 65 20 66 69 6c 65 0d 10 b8 8a |picture file....| 00004e60 66 6f 72 6d 24 3d a4 69 73 74 72 69 6e 67 28 31 |form$=.istring(1| 00004e70 2c 34 29 3a f2 69 73 6b 69 70 28 31 2c 34 29 3a |,4):.iskip(1,4):| 00004e80 66 6f 72 6d 24 2b 3d a4 69 73 74 72 69 6e 67 28 |form$+=.istring(| 00004e90 31 2c 34 29 3a e7 66 6f 72 6d 24 3c 3e 22 46 4f |1,4):.form$<>"FO| 00004ea0 52 4d 49 4c 42 4d 22 20 8c 20 f2 65 72 72 6f 72 |RMILBM" . .error| 00004eb0 28 2d 31 2c 22 54 68 69 73 20 73 63 72 65 65 6e |(-1,"This screen| 00004ec0 20 66 69 6c 65 20 69 73 20 6e 6f 74 20 61 6e 20 | file is not an | 00004ed0 49 46 46 20 73 63 72 65 65 6e 20 66 69 6c 65 20 |IFF screen file | 00004ee0 21 22 29 3a 3d a3 0d 10 c2 29 f5 20 f4 20 46 6f |!"):=....). . Fo| 00004ef0 6c 6c 6f 77 20 42 4d 48 44 2c 43 4d 41 50 20 61 |llow BMHD,CMAP a| 00004f00 6e 64 20 42 4f 44 59 20 68 65 61 64 65 72 73 0d |nd BODY headers.| 00004f10 10 cc 37 68 65 61 64 24 3d a4 69 73 74 72 69 6e |..7head$=.istrin| 00004f20 67 28 31 2c 34 29 3a 68 6c 65 6e 25 3d a4 69 34 |g(1,4):hlen%=.i4| 00004f30 28 31 29 3a 73 74 61 72 74 70 74 72 25 3d a4 69 |(1):startptr%=.i| 00004f40 70 74 72 28 31 29 0d 10 d6 0e c8 8e 20 68 65 61 |ptr(1)...... hea| 00004f50 64 24 20 ca 0d 10 e0 26 20 c9 20 22 42 4d 48 44 |d$ ....& . "BMHD| 00004f60 22 20 3a 20 62 6d 68 64 3d b9 3a f4 20 42 69 74 |" : bmhd=.:. Bit| 00004f70 6d 61 70 20 68 65 61 64 65 72 0d 10 ea 3d 20 20 |map header...= | 00004f80 20 20 20 20 20 f4 20 52 65 61 64 20 70 69 63 74 | . Read pict| 00004f90 75 72 65 2f 73 63 72 65 65 6e 20 77 69 64 74 68 |ure/screen width| 00004fa0 2c 20 68 65 69 67 68 74 2c 20 63 6f 6c 6f 75 72 |, height, colour| 00004fb0 73 2c 20 65 74 63 2e 0d 10 f4 4e 20 20 20 20 20 |s, etc....N | 00004fc0 20 20 77 69 64 74 68 25 3d a4 69 32 28 31 29 3a | width%=.i2(1):| 00004fd0 68 65 69 67 68 74 25 3d a4 69 32 28 31 29 3a f2 |height%=.i2(1):.| 00004fe0 69 73 6b 69 70 28 31 2c 34 29 3a 70 6c 61 6e 65 |iskip(1,4):plane| 00004ff0 73 25 3d a4 69 31 28 31 29 3a f2 69 73 6b 69 70 |s%=.i1(1):.iskip| 00005000 28 31 2c 31 29 0d 10 fe 4d 20 20 20 20 20 20 20 |(1,1)...M | 00005010 63 6f 6d 70 72 65 73 73 65 64 3d 28 a4 69 31 28 |compressed=(.i1(| 00005020 31 29 3d 31 29 3a f2 69 73 6b 69 70 28 31 2c 35 |1)=1):.iskip(1,5| 00005030 29 3a 73 5f 77 69 64 74 68 25 3d a4 69 32 28 31 |):s_width%=.i2(1| 00005040 29 3a 73 5f 68 65 69 67 68 74 25 3d a4 69 32 28 |):s_height%=.i2(| 00005050 31 29 0d 11 08 40 20 c9 20 22 43 41 4d 47 22 20 |1)...@ . "CAMG" | 00005060 3a 20 66 6c 61 67 73 25 3d a4 69 34 28 31 29 3a |: flags%=.i4(1):| 00005070 f4 20 47 65 74 20 66 6c 61 67 20 62 69 74 73 2c |. Get flag bits,| 00005080 20 73 65 74 20 66 6c 61 67 73 20 66 72 6f 6d 20 | set flags from | 00005090 69 74 0d 11 12 35 20 20 20 20 20 20 20 68 61 6d |it...5 ham| 000050a0 3d 28 28 66 6c 61 67 73 25 80 26 38 30 30 29 3e |=((flags%.&800)>| 000050b0 30 29 3a 6c 61 63 65 3d 28 28 66 6c 61 67 73 25 |0):lace=((flags%| 000050c0 80 26 34 29 3e 30 29 0d 11 1c 3f 20 20 20 20 20 |.&4)>0)...? | 000050d0 20 20 68 69 72 65 73 3d 28 28 66 6c 61 67 73 25 | hires=((flags%| 000050e0 80 26 38 30 30 30 29 3e 30 29 3a 68 61 6c 66 62 |.&8000)>0):halfb| 000050f0 72 69 67 68 74 3d 28 28 66 6c 61 67 73 25 80 26 |right=((flags%.&| 00005100 38 30 29 3e 30 29 0d 11 26 2d 20 c9 20 22 43 4d |80)>0)..&- . "CM| 00005110 41 50 22 20 3a 20 63 6d 61 70 3d b9 3a f4 20 43 |AP" : cmap=.:. C| 00005120 6f 6c 6f 75 72 20 6d 61 70 20 28 70 61 6c 65 74 |olour map (palet| 00005130 74 65 29 0d 11 30 42 20 20 20 20 20 20 20 70 61 |te)..0B pa| 00005140 6c 64 65 66 73 25 3d 68 6c 65 6e 25 81 33 3a f4 |ldefs%=hlen%.3:.| 00005150 20 4e 75 6d 62 65 72 20 6f 66 20 70 61 6c 65 74 | Number of palet| 00005160 74 65 20 63 6f 6c 6f 75 72 20 64 65 66 69 6e 69 |te colour defini| 00005170 74 69 6f 6e 73 0d 11 3a 34 20 20 20 20 20 20 20 |tions..:4 | 00005180 e3 20 5f 25 3d 30 20 b8 20 70 61 6c 64 65 66 73 |. _%=0 . paldefs| 00005190 25 2d 31 3a 49 6e 50 61 6c 25 28 5f 25 2b 31 29 |%-1:InPal%(_%+1)| 000051a0 3d a4 69 33 28 31 29 3a ed 0d 11 44 24 20 c9 20 |=.i3(1):...D$ . | 000051b0 22 42 4f 44 59 22 20 3a 20 62 6f 64 79 3d b9 3a |"BODY" : body=.:| 000051c0 f4 20 53 63 72 65 65 6e 20 64 61 74 61 0d 11 4e |. Screen data..N| 000051d0 29 20 20 20 20 20 20 20 f4 20 43 68 65 63 6b 20 |) . Check | 000051e0 69 66 20 61 6c 6c 20 70 61 72 74 73 20 61 72 65 |if all parts are| 000051f0 20 74 68 65 72 65 0d 11 58 be 20 20 20 20 20 20 | there..X. | 00005200 20 e7 ac 62 6d 68 64 20 8c 20 f2 65 72 72 6f 72 | ..bmhd . .error| 00005210 28 2d 31 2c 22 49 46 46 20 65 72 72 6f 72 20 3a |(-1,"IFF error :| 00005220 20 49 20 64 69 64 20 6e 6f 74 20 66 69 6e 64 20 | I did not find | 00005230 61 20 27 42 4d 48 44 27 20 62 6c 6f 63 6b 2e 20 |a 'BMHD' block. | 00005240 43 61 6e 6e 6f 74 20 70 72 6f 63 65 65 64 20 21 |Cannot proceed !| 00005250 22 29 3a fd 20 b9 3a 3d a3 20 8b 20 e7 ac 63 6d |"):. .:=. . ..cm| 00005260 61 70 20 8c 20 f2 65 72 72 6f 72 28 2d 31 2c 22 |ap . .error(-1,"| 00005270 49 46 46 20 65 72 72 6f 72 20 3a 20 49 20 64 69 |IFF error : I di| 00005280 64 20 6e 6f 74 20 66 69 6e 64 20 61 20 27 43 4d |d not find a 'CM| 00005290 41 50 27 20 62 6c 6f 63 6b 2e 20 43 61 6e 6e 6f |AP' block. Canno| 000052a0 74 20 70 72 6f 63 65 65 64 20 21 22 29 3a fd 20 |t proceed !"):. | 000052b0 b9 3a 3d a3 0d 11 62 36 20 20 20 20 20 20 20 f4 |.:=...b6 .| 000052c0 20 44 65 74 65 72 6d 69 6e 65 20 73 75 69 74 61 | Determine suita| 000052d0 62 6c 65 20 41 72 63 68 69 6d 65 64 65 73 20 73 |ble Archimedes s| 000052e0 63 72 65 65 6e 20 6d 6f 64 65 0d 11 6c 11 20 20 |creen mode..l. | 000052f0 20 20 20 20 20 e7 68 61 6d 20 8c 0d 11 76 a7 20 | .ham ...v. | 00005300 20 20 20 20 20 20 20 6d 6f 64 65 25 3d a4 6d 6f | mode%=.mo| 00005310 64 65 28 33 32 30 2c 73 5f 68 65 69 67 68 74 25 |de(320,s_height%| 00005320 2c 32 35 36 29 3a 63 6f 6c 62 69 74 73 25 3d 31 |,256):colbits%=1| 00005330 32 3a 69 6e 66 6f 24 3d 22 48 41 4d 20 28 48 6f |2:info$="HAM (Ho| 00005340 6c 64 20 41 6e 64 20 4d 6f 64 69 66 79 29 22 3a |ld And Modify)":| 00005350 49 6e 50 61 6c 25 28 30 29 3d 63 6f 6c 62 69 74 |InPal%(0)=colbit| 00005360 73 25 3a e3 20 63 25 3d 30 20 b8 20 31 35 3a 68 |s%:. c%=0 . 15:h| 00005370 61 6d 62 61 73 25 21 28 63 25 3c 3c 32 29 3d 49 |ambas%!(c%<<2)=I| 00005380 6e 50 61 6c 25 28 63 25 2b 31 29 3a ed 3a f2 76 |nPal%(c%+1):.:.v| 00005390 61 72 28 22 68 61 6d 62 22 2c 68 61 6d 62 61 73 |ar("hamb",hambas| 000053a0 25 29 0d 11 80 74 20 20 20 20 20 20 20 cc 20 63 |%)...t . c| 000053b0 6f 6c 6f 75 72 73 25 3d 32 5e 70 6c 61 6e 65 73 |olours%=2^planes| 000053c0 25 3a 6d 6f 64 65 25 3d a4 6d 6f 64 65 28 73 5f |%:mode%=.mode(s_| 000053d0 77 69 64 74 68 25 2c 73 5f 68 65 69 67 68 74 25 |width%,s_height%| 000053e0 2c 63 6f 6c 6f 75 72 73 25 29 3a 63 6f 6c 62 69 |,colours%):colbi| 000053f0 74 73 25 3d 70 6c 61 6e 65 73 25 3a 49 6e 50 61 |ts%=planes%:InPa| 00005400 6c 25 28 30 29 3d 70 6c 61 6e 65 73 25 3a 69 6e |l%(0)=planes%:in| 00005410 66 6f 24 3d 22 22 0d 11 8a 78 20 20 20 20 20 20 |fo$=""...x | 00005420 20 20 e7 68 61 6c 66 62 72 69 67 68 74 20 8c 20 | .halfbright . | 00005430 69 6e 66 6f 24 3d 22 48 61 6c 66 2d 62 72 69 67 |info$="Half-brig| 00005440 68 74 22 3a 68 61 6c 66 25 3d 63 6f 6c 6f 75 72 |ht":half%=colour| 00005450 73 25 81 32 3a e3 20 63 25 3d 31 20 b8 20 68 61 |s%.2:. c%=1 . ha| 00005460 6c 66 25 3a 49 6e 50 61 6c 25 28 63 25 2b 68 61 |lf%:InPal%(c%+ha| 00005470 6c 66 25 29 3d 28 49 6e 50 61 6c 25 28 63 25 29 |lf%)=(InPal%(c%)| 00005480 80 26 45 30 45 30 45 30 29 3e 3e 31 3a ed 0d 11 |.&E0E0E0)>>1:...| 00005490 94 0c 20 20 20 20 20 20 20 cd 0d 11 9e 33 20 20 |.. ....3 | 000054a0 20 20 20 20 20 e7 a4 6e 65 77 5f 69 6d 61 67 65 | ..new_image| 000054b0 28 6d 6f 64 65 25 2c 77 69 64 74 68 25 2c 68 65 |(mode%,width%,he| 000054c0 69 67 68 74 25 2c 30 29 20 8b 20 3d a3 0d 11 a8 |ight%,0) . =....| 000054d0 38 20 20 20 20 20 20 20 e7 63 6f 6d 70 72 65 73 |8 .compres| 000054e0 73 65 64 20 8c 20 63 6f 6d 70 72 24 3d 22 52 75 |sed . compr$="Ru| 000054f0 6e 20 6c 65 6e 67 74 68 22 20 8b 20 63 6f 6d 70 |n length" . comp| 00005500 72 24 3d 22 22 0d 11 b2 26 20 20 20 20 20 20 20 |r$=""...& | 00005510 e7 63 6f 6c 62 69 74 73 25 3e 38 20 8c 20 63 69 |.colbits%>8 . ci| 00005520 25 3d 32 20 8b 20 63 69 25 3d 30 0d 11 bc 7c 20 |%=2 . ci%=0...| | 00005530 20 20 20 20 20 20 f2 69 6d 61 67 65 5f 69 6e 66 | .image_inf| 00005540 6f 28 22 41 6d 69 67 61 20 49 46 46 22 2c 77 69 |o("Amiga IFF",wi| 00005550 64 74 68 25 2c 68 65 69 67 68 74 25 2c 63 69 25 |dth%,height%,ci%| 00005560 2c 63 6f 6c 62 69 74 73 25 2c 6d 6f 64 65 25 2c |,colbits%,mode%,| 00005570 63 6f 6d 70 72 24 2c 69 6e 66 6f 24 2c 46 6c 65 |compr$,info$,Fle| 00005580 6e 25 2d a4 69 70 74 72 28 31 29 2c 28 77 69 64 |n%-.iptr(1),(wid| 00005590 74 68 25 2a 68 65 69 67 68 74 25 2a 70 6c 61 6e |th%*height%*plan| 000055a0 65 73 25 29 81 38 29 0d 11 c6 31 20 20 20 20 20 |es%).8)...1 | 000055b0 20 20 e7 68 61 6d 20 8c 20 f2 76 61 72 28 22 73 | .ham . .var("s| 000055c0 63 74 79 22 2c 31 29 20 8b 20 f2 76 61 72 28 22 |cty",1) . .var("| 000055d0 73 63 74 79 22 2c 30 29 0d 11 d0 85 20 20 20 20 |scty",0).... | 000055e0 20 20 20 f2 76 61 72 28 22 66 70 74 72 22 2c a4 | .var("fptr",.| 000055f0 69 70 74 72 28 31 29 29 3a f2 76 61 72 28 22 70 |iptr(1)):.var("p| 00005600 6c 61 6e 22 2c 70 6c 61 6e 65 73 25 29 3a f2 76 |lan",planes%):.v| 00005610 61 72 28 22 77 69 64 74 22 2c 77 69 64 74 68 25 |ar("widt",width%| 00005620 29 3a f2 76 61 72 28 22 68 65 69 67 22 2c 68 65 |):.var("heig",he| 00005630 69 67 68 74 25 29 3a f2 76 61 72 28 22 63 6f 6d |ight%):.var("com| 00005640 70 22 2c 63 6f 6d 70 72 65 73 73 65 64 29 3a f2 |p",compressed):.| 00005650 75 6e 70 61 63 6b 28 22 49 46 46 22 29 0d 11 da |unpack("IFF")...| 00005660 19 20 20 20 20 20 20 20 49 6d 67 4d 6f 64 65 25 |. ImgMode%| 00005670 3d 6d 6f 64 65 25 0d 11 e4 05 cb 0d 11 ee 39 f2 |=mode%........9.| 00005680 69 73 6b 69 70 28 31 2c 68 6c 65 6e 25 2d 28 a4 |iskip(1,hlen%-(.| 00005690 69 70 74 72 28 31 29 2d 73 74 61 72 74 70 74 72 |iptr(1)-startptr| 000056a0 25 29 29 3a f4 20 54 6f 20 6e 65 78 74 20 68 65 |%)):. To next he| 000056b0 61 64 65 72 0d 11 f8 0a fd 20 62 6f 64 79 0d 12 |ader..... body..| 000056c0 02 06 3d b9 0d 12 0c 05 20 0d 12 16 0d dd a4 70 |..=..... ......p| 000056d0 69 63 5f 47 49 46 0d 12 20 33 f4 20 4d 61 6b 65 |ic_GIF.. 3. Make| 000056e0 73 20 47 49 46 20 28 47 72 61 70 68 69 63 73 20 |s GIF (Graphics | 000056f0 49 6e 74 65 72 63 68 61 6e 67 65 20 46 6f 72 6d |Interchange Form| 00005700 61 74 29 20 69 6d 61 67 65 0d 12 2a 26 ea 20 67 |at) image..*&. g| 00005710 5f 49 6e 50 61 6c 25 28 29 2c 50 69 63 5f 70 74 |_InPal%(),Pic_pt| 00005720 72 25 28 29 2c 50 69 63 5f 6c 65 6e 25 28 29 0d |r%(),Pic_len%().| 00005730 12 34 2f de 20 67 5f 49 6e 50 61 6c 25 28 32 35 |.4/. g_InPal%(25| 00005740 36 29 2c 50 69 63 5f 70 74 72 25 28 32 35 36 29 |6),Pic_ptr%(256)| 00005750 2c 50 69 63 5f 6c 65 6e 25 28 32 35 36 29 0d 12 |,Pic_len%(256)..| 00005760 3e 2b 69 54 79 70 65 25 3d 30 3a f4 20 53 65 74 |>+iType%=0:. Set| 00005770 20 6c 6f 77 2d 74 6f 2d 68 69 67 68 20 74 79 70 | low-to-high typ| 00005780 65 20 6f 66 20 64 61 74 61 0d 12 48 31 73 69 67 |e of data..H1sig| 00005790 6e 61 74 75 72 65 24 3d a4 69 73 74 72 69 6e 67 |nature$=.istring| 000057a0 28 31 2c 36 29 3a f4 20 52 65 61 64 20 47 49 46 |(1,6):. Read GIF| 000057b0 20 73 69 67 6e 61 74 75 72 65 0d 12 52 58 e7 c0 | signature..RX..| 000057c0 73 69 67 6e 61 74 75 72 65 24 2c 33 29 3c 3e 22 |signature$,3)<>"| 000057d0 47 49 46 22 20 8c 20 f2 65 72 72 6f 72 28 2d 31 |GIF" . .error(-1| 000057e0 2c 22 54 68 69 73 20 73 63 72 65 65 6e 20 66 69 |,"This screen fi| 000057f0 6c 65 20 69 73 20 6e 6f 74 20 61 20 47 49 46 20 |le is not a GIF | 00005800 73 63 72 65 65 6e 20 66 69 6c 65 20 21 22 29 3a |screen file !"):| 00005810 3d a3 0d 12 5c 24 f4 20 52 65 61 64 20 64 61 74 |=...\$. Read dat| 00005820 61 20 69 6e 20 53 63 72 65 65 6e 20 44 65 73 63 |a in Screen Desc| 00005830 72 69 70 74 6f 72 0d 12 66 32 72 5f 77 69 64 74 |riptor..f2r_widt| 00005840 68 25 3d a4 69 32 28 31 29 3a 72 5f 68 65 69 67 |h%=.i2(1):r_heig| 00005850 68 74 25 3d a4 69 32 28 31 29 3a f4 20 52 61 73 |ht%=.i2(1):. Ras| 00005860 74 65 72 20 73 69 7a 65 0d 12 70 44 66 6c 61 67 |ter size..pDflag| 00005870 73 25 3d a4 69 31 28 31 29 3a 62 61 63 6b 67 72 |s%=.i1(1):backgr| 00005880 25 3d a4 69 31 28 31 29 3a f2 69 73 6b 69 70 28 |%=.i1(1):.iskip(| 00005890 31 2c 31 29 3a f4 20 46 6c 61 67 73 20 61 6e 64 |1,1):. Flags and| 000058a0 20 62 61 63 6b 20 63 6f 6c 6f 75 72 0d 12 7a 3b | back colour..z;| 000058b0 67 6c 6f 62 61 6c 3d 28 28 66 6c 61 67 73 25 80 |global=((flags%.| 000058c0 26 38 30 29 3e 30 29 3a f4 20 47 6c 6f 62 61 6c |&80)>0):. Global| 000058d0 20 63 6f 6c 6f 75 72 20 6d 61 70 20 66 6f 6c 6c | colour map foll| 000058e0 6f 77 69 6e 67 20 3f 0d 12 84 33 67 5f 70 69 78 |owing ?...3g_pix| 000058f0 62 69 74 73 25 3d 28 66 6c 61 67 73 25 80 37 29 |bits%=(flags%.7)| 00005900 2b 31 3a f4 20 47 6c 6f 62 61 6c 20 62 69 74 73 |+1:. Global bits| 00005910 20 70 65 72 20 70 69 78 65 6c 0d 12 8e 3a 63 6f | per pixel...:co| 00005920 6c 62 69 74 73 25 3d 28 28 66 6c 61 67 73 25 3e |lbits%=((flags%>| 00005930 3e 34 29 80 37 29 2b 31 3a f4 20 42 69 74 73 20 |>4).7)+1:. Bits | 00005940 6f 66 20 63 6f 6c 6f 75 72 20 72 65 73 6f 6c 75 |of colour resolu| 00005950 74 69 6f 6e 0d 12 98 0d e7 67 6c 6f 62 61 6c 20 |tion.....global | 00005960 8c 0d 12 a2 6a 20 e3 20 63 25 3d 31 20 b8 20 32 |....j . c%=1 . 2| 00005970 5e 67 5f 70 69 78 62 69 74 73 25 3a 67 5f 49 6e |^g_pixbits%:g_In| 00005980 50 61 6c 25 28 63 25 29 3d 28 a4 69 31 28 31 29 |Pal%(c%)=(.i1(1)| 00005990 3c 3c 31 36 29 2b 28 a4 69 31 28 31 29 3c 3c 38 |<<16)+(.i1(1)<<8| 000059a0 29 2b a4 69 31 28 31 29 3a ed 3a f4 20 52 65 61 |)+.i1(1):.:. Rea| 000059b0 64 20 47 6c 6f 62 61 6c 20 43 6f 6c 6f 75 72 20 |d Global Colour | 000059c0 4d 61 70 20 70 61 6c 65 74 74 65 0d 12 ac 2d 20 |Map palette...- | 000059d0 67 5f 49 6e 50 61 6c 25 28 30 29 3d 67 5f 70 69 |g_InPal%(0)=g_pi| 000059e0 78 62 69 74 73 25 3a f4 20 50 61 6c 65 74 74 65 |xbits%:. Palette| 000059f0 20 65 6e 74 72 69 65 73 0d 12 b6 25 cc 20 49 6e | entries...%. In| 00005a00 50 61 6c 25 28 30 29 3d 2d 31 3a f4 20 4e 6f 20 |Pal%(0)=-1:. No | 00005a10 70 61 6c 65 74 74 65 20 66 6f 75 6e 64 0d 12 c0 |palette found...| 00005a20 05 cd 0d 12 ca 29 f4 20 53 63 61 6e 20 64 61 74 |.....). Scan dat| 00005a30 61 20 66 6f 72 20 70 69 63 74 75 72 65 73 2c 20 |a for pictures, | 00005a40 6d 61 6b 65 20 61 20 6c 69 73 74 0d 12 d4 10 70 |make a list....p| 00005a50 69 63 74 75 72 65 25 3d 30 3a f5 0d 12 de 3f f2 |icture%=0:....?.| 00005a60 73 6b 69 70 5f 47 49 46 5f 65 78 74 65 6e 73 69 |skip_GIF_extensi| 00005a70 6f 6e 3a f4 20 53 6b 69 70 20 65 78 74 65 6e 73 |on:. Skip extens| 00005a80 69 6f 6e 20 62 6c 6f 63 6b 73 20 70 72 65 63 65 |ion blocks prece| 00005a90 64 69 6e 67 20 49 6d 61 67 65 0d 12 e8 26 f4 20 |ding Image...&. | 00005aa0 53 65 61 72 63 68 20 66 6f 72 20 6e 65 78 74 20 |Search for next | 00005ab0 49 6d 61 67 65 20 44 65 73 63 72 69 70 74 6f 72 |Image Descriptor| 00005ac0 0d 12 f2 46 f5 20 5f 25 3d a4 69 31 28 31 29 3a |...F. _%=.i1(1):| 00005ad0 69 6d 61 67 65 3d 28 5f 25 3d 97 22 2c 22 29 3a |image=(_%=.","):| 00005ae0 65 6e 64 3d 28 5f 25 3d 97 22 3b 22 29 3a fd 20 |end=(_%=.";"):. | 00005af0 69 6d 61 67 65 20 84 20 65 6e 64 20 84 20 a4 69 |image . end . .i| 00005b00 65 6f 66 28 31 29 0d 12 fc 7e e7 ac 69 6d 61 67 |eof(1)...~..imag| 00005b10 65 20 8c 20 e7 ac 65 6e 64 20 8c 20 f2 65 72 72 |e . ..end . .err| 00005b20 6f 72 28 2d 31 2c 22 57 61 72 6e 69 6e 67 20 21 |or(-1,"Warning !| 00005b30 20 47 49 46 20 66 69 6c 65 20 69 73 20 6e 6f 74 | GIF file is not| 00005b40 20 70 72 6f 70 65 72 6c 79 20 74 65 72 6d 69 6e | properly termin| 00005b50 61 74 65 64 20 21 22 29 3a 65 6e 64 3d b9 3a f2 |ated !"):end=.:.| 00005b60 68 6f 75 72 5f 6f 66 66 3a f2 68 6f 75 72 5f 6f |hour_off:.hour_o| 00005b70 6e 3a f4 20 52 65 61 64 20 62 65 79 6f 6e 64 20 |n:. Read beyond | 00005b80 66 69 6c 65 0d 13 06 0c e7 69 6d 61 67 65 20 8c |file.....image .| 00005b90 0d 13 10 22 20 f4 20 52 65 67 69 73 74 65 72 20 |..." . Register | 00005ba0 70 69 63 74 75 72 65 27 73 20 70 6f 73 69 74 69 |picture's positi| 00005bb0 6f 6e 0d 13 1a 2e 20 70 69 63 74 75 72 65 25 2b |on.... picture%+| 00005bc0 3d 31 3a 50 69 63 5f 70 74 72 25 28 70 69 63 74 |=1:Pic_ptr%(pict| 00005bd0 75 72 65 25 29 3d a4 69 70 74 72 28 31 29 2d 31 |ure%)=.iptr(1)-1| 00005be0 0d 13 24 6a 20 f2 69 73 6b 69 70 28 31 2c 38 29 |..$j .iskip(1,8)| 00005bf0 3a 5f 25 3d a4 69 31 28 31 29 3a e7 28 5f 25 80 |:_%=.i1(1):.(_%.| 00005c00 26 38 30 29 3e 30 20 8c 20 f2 69 73 6b 69 70 28 |&80)>0 . .iskip(| 00005c10 31 2c 33 2a 32 5e 28 28 5f 25 80 37 29 2b 31 29 |1,3*2^((_%.7)+1)| 00005c20 29 3a f4 20 49 66 20 74 68 65 72 65 27 73 20 61 |):. If there's a| 00005c30 20 6c 6f 63 61 6c 20 63 6f 6c 6f 75 72 20 6d 61 | local colour ma| 00005c40 70 2c 20 73 6b 69 70 20 69 74 0d 13 2e 0f 20 e7 |p, skip it.... .| 00005c50 47 49 46 53 63 61 6e 20 8c 0d 13 38 30 20 20 f4 |GIFScan ...80 .| 00005c60 20 44 65 74 65 72 6d 69 6e 65 20 70 69 63 74 75 | Determine pictu| 00005c70 72 65 20 64 61 74 61 20 6c 65 6e 67 74 68 2c 20 |re data length, | 00005c80 73 6b 69 70 20 64 61 74 61 0d 13 42 31 20 20 f2 |skip data..B1 .| 00005c90 69 73 6b 69 70 28 31 2c 31 29 3a f5 20 63 25 3d |iskip(1,1):. c%=| 00005ca0 a4 69 31 28 31 29 3a f2 69 73 6b 69 70 28 31 2c |.i1(1):.iskip(1,| 00005cb0 63 25 29 3a fd 20 63 25 3d 30 0d 13 4c 34 20 20 |c%):. c%=0..L4 | 00005cc0 50 69 63 5f 6c 65 6e 25 28 70 69 63 74 75 72 65 |Pic_len%(picture| 00005cd0 25 29 3d a4 69 70 74 72 28 31 29 2d 50 69 63 5f |%)=.iptr(1)-Pic_| 00005ce0 70 74 72 25 28 70 69 63 74 75 72 65 25 29 0d 13 |ptr%(picture%)..| 00005cf0 56 3b 20 cc 20 50 69 63 5f 6c 65 6e 25 28 70 69 |V; . Pic_len%(pi| 00005d00 63 74 75 72 65 25 29 3d a4 69 6c 65 6e 28 31 29 |cture%)=.ilen(1)| 00005d10 2d 50 69 63 5f 70 74 72 25 28 70 69 63 74 75 72 |-Pic_ptr%(pictur| 00005d20 65 25 29 3a 65 6e 64 3d b9 0d 13 60 06 20 cd 0d |e%):end=...`. ..| 00005d30 13 6a 05 cd 0d 13 74 09 fd 20 65 6e 64 0d 13 7e |.j....t.. end..~| 00005d40 31 70 69 63 74 75 72 65 73 25 3d 70 69 63 74 75 |1pictures%=pictu| 00005d50 72 65 25 3a f4 20 4e 75 6d 62 65 72 20 6f 66 20 |re%:. Number of | 00005d60 70 69 63 74 75 72 65 73 20 66 6f 75 6e 64 0d 13 |pictures found..| 00005d70 88 4e e7 70 69 63 74 75 72 65 73 25 3e 30 20 8b |.N.pictures%>0 .| 00005d80 20 f2 65 72 72 6f 72 28 2d 31 2c 22 49 20 63 61 | .error(-1,"I ca| 00005d90 6e 6e 6f 74 20 66 69 6e 64 20 61 6e 79 20 69 6d |nnot find any im| 00005da0 61 67 65 73 20 69 6e 20 74 68 69 73 20 47 49 46 |ages in this GIF| 00005db0 20 66 69 6c 65 20 21 22 29 3a 3d a3 0d 13 92 0e | file !"):=.....| 00005dc0 e7 47 49 46 53 63 61 6e 20 8c 0d 13 9c ba 20 e7 |.GIFScan ..... .| 00005dd0 28 49 6d 61 67 65 4e 72 25 3e 30 29 20 80 20 28 |(ImageNr%>0) . (| 00005de0 49 6d 61 67 65 4e 72 25 3c 3d 70 69 63 74 75 72 |ImageNr%<=pictur| 00005df0 65 73 25 29 20 8c 20 70 69 63 74 75 72 65 25 3d |es%) . picture%=| 00005e00 49 6d 61 67 65 4e 72 25 20 8b 20 f2 65 72 72 6f |ImageNr% . .erro| 00005e10 72 28 2d 31 2c 22 54 68 69 73 20 66 69 6c 65 20 |r(-1,"This file | 00005e20 63 6f 6e 74 61 69 6e 73 20 22 2b c3 28 70 69 63 |contains "+.(pic| 00005e30 74 75 72 65 73 25 29 2b 22 20 69 6d 61 67 65 73 |tures%)+" images| 00005e40 2e 20 53 65 6c 65 63 74 20 27 31 27 2d 27 22 2b |. Select '1'-'"+| 00005e50 c3 28 70 69 63 74 75 72 65 73 25 29 2b 22 27 20 |.(pictures%)+"' | 00005e60 69 6e 20 74 68 65 20 27 49 6d 61 67 65 20 6e 75 |in the 'Image nu| 00005e70 6d 62 65 72 27 20 73 75 62 6d 65 6e 75 20 21 22 |mber' submenu !"| 00005e80 29 3a 3d a3 0d 13 a6 10 cc 20 70 69 63 74 75 72 |):=...... pictur| 00005e90 65 25 3d 31 0d 13 b0 05 cd 0d 13 ba 49 f2 69 70 |e%=1........I.ip| 00005ea0 74 72 28 31 2c 50 69 63 5f 70 74 72 25 28 70 69 |tr(1,Pic_ptr%(pi| 00005eb0 63 74 75 72 65 25 29 2b 31 29 3a 6c 65 6e 25 3d |cture%)+1):len%=| 00005ec0 50 69 63 5f 6c 65 6e 25 28 70 69 63 74 75 72 65 |Pic_len%(picture| 00005ed0 25 29 3a f4 20 50 69 63 20 70 6f 73 20 26 20 6c |%):. Pic pos & l| 00005ee0 65 6e 0d 13 c4 20 f4 20 52 65 61 64 20 49 6d 61 |en... . Read Ima| 00005ef0 67 65 20 44 65 73 63 72 69 70 74 6f 72 20 64 61 |ge Descriptor da| 00005f00 74 61 0d 13 ce 34 69 5f 6c 65 66 74 25 3d a4 69 |ta...4i_left%=.i| 00005f10 32 28 31 29 3a 69 5f 74 6f 70 25 3d a4 69 32 28 |2(1):i_top%=.i2(| 00005f20 31 29 3a f4 20 50 6f 73 69 74 69 6f 6e 20 69 6e |1):. Position in| 00005f30 20 66 72 61 6d 65 0d 13 d8 43 69 5f 77 69 64 74 | frame...Ci_widt| 00005f40 68 25 3d a4 69 32 28 31 29 3a 69 5f 68 65 69 67 |h%=.i2(1):i_heig| 00005f50 68 74 25 3d a4 69 32 28 31 29 3a 66 6c 61 67 73 |ht%=.i2(1):flags| 00005f60 25 3d a4 69 31 28 31 29 3a f4 20 53 69 7a 65 20 |%=.i1(1):. Size | 00005f70 61 6e 64 20 66 6c 61 67 73 0d 13 e2 37 6c 6f 63 |and flags...7loc| 00005f80 61 6c 3d 28 66 6c 61 67 73 25 80 26 38 30 29 3e |al=(flags%.&80)>| 00005f90 30 3a f4 20 4c 6f 63 61 6c 20 63 6f 6c 6f 75 72 |0:. Local colour| 00005fa0 20 6d 61 70 20 66 6f 6c 6c 6f 77 69 6e 67 20 3f | map following ?| 00005fb0 0d 13 ec 3c 69 62 69 74 3d 28 66 6c 61 67 73 25 |...<ibit=(flags%| 00005fc0 80 26 34 30 29 3e 30 3a f4 20 49 6d 61 67 65 20 |.&40)>0:. Image | 00005fd0 73 74 6f 72 65 64 20 69 6e 20 69 6e 74 65 72 6c |stored in interl| 00005fe0 61 63 65 64 20 6f 72 64 65 72 20 3f 0d 13 f6 32 |aced order ?...2| 00005ff0 6c 5f 70 69 78 62 69 74 73 25 3d 28 66 6c 61 67 |l_pixbits%=(flag| 00006000 73 25 80 37 29 2b 31 3a f4 20 4c 6f 63 61 6c 20 |s%.7)+1:. Local | 00006010 62 69 74 73 20 70 65 72 20 70 69 78 65 6c 0d 14 |bits per pixel..| 00006020 00 0c e7 6c 6f 63 61 6c 20 8c 0d 14 0a 40 20 70 |...local ....@ p| 00006030 69 78 62 69 74 73 25 3d 6c 5f 70 69 78 62 69 74 |ixbits%=l_pixbit| 00006040 73 25 3a f4 20 52 65 61 64 20 61 6e 64 20 75 73 |s%:. Read and us| 00006050 65 20 4c 6f 63 61 6c 20 43 6f 6c 6f 75 72 20 4d |e Local Colour M| 00006060 61 70 20 70 61 6c 65 74 74 65 0d 14 14 56 20 e3 |ap palette...V .| 00006070 20 63 25 3d 31 20 b8 20 32 5e 6c 5f 70 69 78 62 | c%=1 . 2^l_pixb| 00006080 69 74 73 25 3a 49 6e 50 61 6c 25 28 63 25 29 3d |its%:InPal%(c%)=| 00006090 28 a4 69 31 28 31 29 3c 3c 31 36 29 2b 28 a4 69 |(.i1(1)<<16)+(.i| 000060a0 31 28 31 29 3c 3c 38 29 2b a4 69 31 28 31 29 3a |1(1)<<8)+.i1(1):| 000060b0 ed 3a f4 20 52 65 61 64 20 70 61 6c 65 74 74 65 |.:. Read palette| 000060c0 0d 14 1e 2b 20 49 6e 50 61 6c 25 28 30 29 3d 6c |...+ InPal%(0)=l| 000060d0 5f 70 69 78 62 69 74 73 25 3a f4 20 50 61 6c 65 |_pixbits%:. Pale| 000060e0 74 74 65 20 65 6e 74 72 69 65 73 0d 14 28 3f cc |tte entries..(?.| 000060f0 20 70 69 78 62 69 74 73 25 3d 67 5f 70 69 78 62 | pixbits%=g_pixb| 00006100 69 74 73 25 3a 49 6e 50 61 6c 25 28 29 3d 67 5f |its%:InPal%()=g_| 00006110 49 6e 50 61 6c 25 28 29 3a f4 20 55 73 65 20 47 |InPal%():. Use G| 00006120 6c 6f 62 61 6c 20 64 61 74 61 0d 14 32 05 cd 0d |lobal data..2...| 00006130 14 3c 4e e7 49 6e 50 61 6c 25 28 30 29 3d 2d 31 |.<N.InPal%(0)=-1| 00006140 20 8c 20 f2 65 72 72 6f 72 28 2d 31 2c 22 49 20 | . .error(-1,"I | 00006150 63 61 6e 6e 6f 74 20 66 69 6e 64 20 61 20 70 61 |cannot find a pa| 00006160 6c 65 74 74 65 20 69 6e 20 74 68 69 73 20 47 49 |lette in this GI| 00006170 46 20 66 69 6c 65 20 21 22 29 3a 3d a3 0d 14 46 |F file !"):=...F| 00006180 2b 63 6f 6c 6f 75 72 73 25 3d 32 5e 70 69 78 62 |+colours%=2^pixb| 00006190 69 74 73 25 3a f4 20 4e 75 6d 62 65 72 20 6f 66 |its%:. Number of| 000061a0 20 63 6f 6c 6f 75 72 73 0d 14 50 2f f4 20 44 65 | colours..P/. De| 000061b0 74 65 72 6d 69 6e 65 20 73 75 69 74 61 62 6c 65 |termine suitable| 000061c0 20 41 72 63 68 69 6d 65 64 65 73 20 73 63 72 65 | Archimedes scre| 000061d0 65 6e 20 6d 6f 64 65 0d 14 5a 3d 6d 6f 64 65 25 |en mode..Z=mode%| 000061e0 3d a4 6d 6f 64 65 28 72 5f 77 69 64 74 68 25 2c |=.mode(r_width%,| 000061f0 72 5f 68 65 69 67 68 74 25 2c 63 6f 6c 6f 75 72 |r_height%,colour| 00006200 73 25 29 3a f4 20 44 65 74 65 72 6d 69 6e 65 20 |s%):. Determine | 00006210 6d 6f 64 65 0d 14 64 3b f4 20 52 6f 6f 6d 20 6e |mode..d;. Room n| 00006220 65 65 64 65 64 20 66 6f 72 20 64 65 63 6f 6d 70 |eeded for decomp| 00006230 72 65 73 73 69 6f 6e 20 64 61 74 61 20 61 6e 64 |ression data and| 00006240 20 64 65 2d 69 6e 74 65 72 6c 61 63 69 6e 67 0d | de-interlacing.| 00006250 14 6e 64 e7 70 69 78 62 69 74 73 25 3c 3d 32 20 |.nd.pixbits%<=2 | 00006260 8c 20 72 62 69 74 73 25 3d 70 69 78 62 69 74 73 |. rbits%=pixbits| 00006270 25 20 8b 20 e7 70 69 78 62 69 74 73 25 3c 3d 34 |% . .pixbits%<=4| 00006280 20 8c 20 72 62 69 74 73 25 3d 34 20 8b 20 72 62 | . rbits%=4 . rb| 00006290 69 74 73 25 3d 38 3a f4 20 52 6f 75 6e 64 20 75 |its%=8:. Round u| 000062a0 70 20 62 70 70 20 74 6f 20 73 70 72 69 74 65 20 |p bpp to sprite | 000062b0 62 70 70 0d 14 78 45 72 6f 6f 6d 25 3d 28 28 28 |bpp..xEroom%=(((| 000062c0 69 5f 77 69 64 74 68 25 2a 72 62 69 74 73 25 2b |i_width%*rbits%+| 000062d0 33 31 29 3e 3e 35 29 3c 3c 32 29 2a 69 5f 68 65 |31)>>5)<<2)*i_he| 000062e0 69 67 68 74 25 2b 31 30 32 34 3a f4 20 52 6f 6f |ight%+1024:. Roo| 000062f0 6d 20 6e 65 65 64 65 64 0d 14 82 34 e7 a4 6e 65 |m needed...4..ne| 00006300 77 5f 69 6d 61 67 65 28 6d 6f 64 65 25 2c 69 5f |w_image(mode%,i_| 00006310 77 69 64 74 68 25 2c 69 5f 68 65 69 67 68 74 25 |width%,i_height%| 00006320 2c 72 6f 6f 6d 25 29 20 8b 20 3d a3 0d 14 8c 27 |,room%) . =....'| 00006330 e7 47 49 46 53 63 61 6e 20 8c 20 6e 70 24 3d c3 |.GIFScan . np$=.| 00006340 70 69 63 74 75 72 65 73 25 20 8b 20 6e 70 24 3d |pictures% . np$=| 00006350 22 3f 22 0d 14 96 95 f2 69 6d 61 67 65 5f 69 6e |"?".....image_in| 00006360 66 6f 28 73 69 67 6e 61 74 75 72 65 24 2c 69 5f |fo(signature$,i_| 00006370 77 69 64 74 68 25 2c 69 5f 68 65 69 67 68 74 25 |width%,i_height%| 00006380 2c 30 2c 70 69 78 62 69 74 73 25 2c 6d 6f 64 65 |,0,pixbits%,mode| 00006390 25 2c 22 4c 5a 57 22 2c 6e 70 24 2b 22 20 70 69 |%,"LZW",np$+" pi| 000063a0 63 73 20 28 74 68 69 73 20 69 73 20 22 2b a4 74 |cs (this is "+.t| 000063b0 69 6d 65 73 28 70 69 63 74 75 72 65 25 29 2b 22 |imes(picture%)+"| 000063c0 29 22 2c 6c 65 6e 25 2c 28 69 5f 68 65 69 67 68 |)",len%,(i_heigh| 000063d0 74 25 2a 69 5f 77 69 64 74 68 25 2a 70 69 78 62 |t%*i_width%*pixb| 000063e0 69 74 73 25 29 81 38 29 0d 14 a0 2b e7 69 62 69 |its%).8)...+.ibi| 000063f0 74 20 8c 20 f2 76 61 72 28 22 6c 61 63 65 22 2c |t . .var("lace",| 00006400 31 29 20 8b 20 f2 76 61 72 28 22 6c 61 63 65 22 |1) . .var("lace"| 00006410 2c 30 29 0d 14 aa 55 f2 76 61 72 28 22 66 70 74 |,0)...U.var("fpt| 00006420 72 22 2c a4 69 70 74 72 28 31 29 29 3a f2 76 61 |r",.iptr(1)):.va| 00006430 72 28 22 77 69 64 74 22 2c 69 5f 77 69 64 74 68 |r("widt",i_width| 00006440 25 29 3a f2 76 61 72 28 22 68 65 69 67 22 2c 69 |%):.var("heig",i| 00006450 5f 68 65 69 67 68 74 25 29 3a f2 75 6e 70 61 63 |_height%):.unpac| 00006460 6b 28 22 47 49 46 22 29 0d 14 b4 15 49 6d 67 4d |k("GIF")....ImgM| 00006470 6f 64 65 25 3d 6d 6f 64 65 25 3a 3d b9 0d 14 be |ode%=mode%:=....| 00006480 05 20 0d 14 c8 18 dd f2 73 6b 69 70 5f 47 49 46 |. ......skip_GIF| 00006490 5f 65 78 74 65 6e 73 69 6f 6e 0d 14 d2 3f f4 20 |_extension...?. | 000064a0 53 6b 69 70 73 20 61 20 47 49 46 20 45 78 74 65 |Skips a GIF Exte| 000064b0 6e 73 69 6f 6e 20 42 6c 6f 63 6b 20 69 66 20 70 |nsion Block if p| 000064c0 72 65 73 65 6e 74 20 61 74 20 63 75 72 72 65 6e |resent at curren| 000064d0 74 20 70 6f 69 6e 74 65 72 0d 14 dc 08 ea 20 5f |t pointer..... _| 000064e0 25 0d 14 e6 14 e7 28 a4 69 31 28 31 29 29 3d 97 |%.....(.i1(1))=.| 000064f0 22 21 22 20 8c 0d 14 f0 25 20 f2 69 73 6b 69 70 |"!" ....% .iskip| 00006500 28 31 2c 31 29 3a f4 20 53 6b 69 70 20 66 75 6e |(1,1):. Skip fun| 00006510 63 74 69 6f 6e 20 63 6f 64 65 0d 14 fa 3c 20 f5 |ction code...< .| 00006520 20 5f 25 3d a4 69 31 28 31 29 3a f2 69 73 6b 69 | _%=.i1(1):.iski| 00006530 70 28 31 2c 5f 25 29 3a fd 20 5f 25 3d 30 3a f4 |p(1,_%):. _%=0:.| 00006540 20 53 6b 69 70 20 64 61 74 61 20 62 79 74 65 20 | Skip data byte | 00006550 62 6c 6f 63 6b 73 0d 15 04 12 cc 20 f2 69 73 6b |blocks..... .isk| 00006560 69 70 28 31 2c 2d 31 29 0d 15 0e 05 cd 0d 15 18 |ip(1,-1)........| 00006570 05 e1 0d 15 22 05 20 0d 15 2c 0d dd a4 70 69 63 |....". ..,...pic| 00006580 5f 41 52 43 0d 15 36 23 f4 20 4c 6f 61 64 73 20 |_ARC..6#. Loads | 00006590 41 72 63 68 69 6d 65 64 65 73 20 73 70 72 69 74 |Archimedes sprit| 000065a0 65 20 69 6d 61 67 65 0d 15 40 2b 69 54 79 70 65 |e image..@+iType| 000065b0 25 3d 30 3a f4 20 53 65 74 20 6c 6f 77 2d 74 6f |%=0:. Set low-to| 000065c0 2d 68 69 67 68 20 74 79 70 65 20 6f 66 20 64 61 |-high type of da| 000065d0 74 61 0d 15 4a 48 70 69 63 74 75 72 65 73 25 3d |ta..JHpictures%=| 000065e0 a4 69 34 28 31 29 3a 6f 66 69 72 73 74 25 3d a4 |.i4(1):ofirst%=.| 000065f0 69 34 28 31 29 3a f4 20 4e 75 6d 62 65 72 20 6f |i4(1):. Number o| 00006600 66 20 73 70 72 69 74 65 73 2c 20 6f 66 66 73 65 |f sprites, offse| 00006610 74 20 74 6f 20 66 69 72 73 74 0d 15 54 b9 e7 28 |t to first..T..(| 00006620 49 6d 61 67 65 4e 72 25 3e 30 29 20 80 20 28 49 |ImageNr%>0) . (I| 00006630 6d 61 67 65 4e 72 25 3c 3d 70 69 63 74 75 72 65 |mageNr%<=picture| 00006640 73 25 29 20 8c 20 70 69 63 74 75 72 65 25 3d 49 |s%) . picture%=I| 00006650 6d 61 67 65 4e 72 25 20 8b 20 f2 65 72 72 6f 72 |mageNr% . .error| 00006660 28 2d 31 2c 22 54 68 69 73 20 66 69 6c 65 20 63 |(-1,"This file c| 00006670 6f 6e 74 61 69 6e 73 20 22 2b c3 28 70 69 63 74 |ontains "+.(pict| 00006680 75 72 65 73 25 29 2b 22 20 69 6d 61 67 65 73 2e |ures%)+" images.| 00006690 20 53 65 6c 65 63 74 20 27 31 27 2d 27 22 2b c3 | Select '1'-'"+.| 000066a0 28 70 69 63 74 75 72 65 73 25 29 2b 22 27 20 69 |(pictures%)+"' i| 000066b0 6e 20 74 68 65 20 27 49 6d 61 67 65 20 6e 75 6d |n the 'Image num| 000066c0 62 65 72 27 20 73 75 62 6d 65 6e 75 20 21 22 29 |ber' submenu !")| 000066d0 3a 3d a3 0d 15 5e 31 f2 69 73 6b 69 70 28 31 2c |:=...^1.iskip(1,| 000066e0 6f 66 69 72 73 74 25 2d 38 2d 34 29 3a f4 20 53 |ofirst%-8-4):. S| 000066f0 74 61 72 74 20 6f 66 20 66 69 72 73 74 20 73 70 |tart of first sp| 00006700 72 69 74 65 0d 15 68 45 73 6b 69 70 25 3d 70 69 |rite..hEskip%=pi| 00006710 63 74 75 72 65 73 25 2d 70 69 63 74 75 72 65 25 |ctures%-picture%| 00006720 3a c8 95 20 73 6b 69 70 25 3e 30 3a f2 69 73 6b |:.. skip%>0:.isk| 00006730 69 70 28 31 2c a4 69 34 28 31 29 2d 34 29 3a 73 |ip(1,.i4(1)-4):s| 00006740 6b 69 70 25 2d 3d 31 3a ce 0d 15 72 47 73 74 61 |kip%-=1:...rGsta| 00006750 72 74 25 3d a4 69 70 74 72 28 31 29 3a f2 69 73 |rt%=.iptr(1):.is| 00006760 6b 69 70 28 31 2c 31 36 29 3a f4 20 52 65 6d 65 |kip(1,16):. Reme| 00006770 6d 62 65 72 20 73 74 61 72 74 2c 20 73 6b 69 70 |mber start, skip| 00006780 20 6f 66 66 73 65 74 20 61 6e 64 20 6e 61 6d 65 | offset and name| 00006790 0d 15 7c 46 77 6f 72 64 73 25 3d a4 69 34 28 31 |..|Fwords%=.i4(1| 000067a0 29 2b 31 3a 68 65 69 67 68 74 25 3d a4 69 34 28 |)+1:height%=.i4(| 000067b0 31 29 2b 31 3a f4 20 57 69 64 74 68 20 69 6e 20 |1)+1:. Width in | 000067c0 77 6f 72 64 73 2c 20 68 65 69 67 68 74 20 69 6e |words, height in| 000067d0 20 6c 69 6e 65 73 0d 15 86 37 62 66 69 72 73 74 | lines...7bfirst| 000067e0 25 3d a4 69 34 28 31 29 3a 62 6c 61 73 74 25 3d |%=.i4(1):blast%=| 000067f0 a4 69 34 28 31 29 3a f4 20 46 69 72 73 74 2f 6c |.i4(1):. First/l| 00006800 61 73 74 20 62 69 74 73 20 75 73 65 64 0d 15 90 |ast bits used...| 00006810 46 6f 69 6d 61 67 65 25 3d a4 69 34 28 31 29 3a |Foimage%=.i4(1):| 00006820 f2 69 73 6b 69 70 28 31 2c 34 29 3a 73 70 72 6d |.iskip(1,4):sprm| 00006830 6f 64 65 25 3d a4 69 34 28 31 29 3a f4 20 4f 66 |ode%=.i4(1):. Of| 00006840 66 73 65 74 20 74 6f 20 69 6d 61 67 65 2c 20 6d |fset to image, m| 00006850 6f 64 65 0d 15 9a 42 63 6f 6c 62 69 74 73 25 3d |ode...Bcolbits%=| 00006860 32 5e a4 6d 6f 64 65 5f 76 61 72 28 73 70 72 6d |2^.mode_var(sprm| 00006870 6f 64 65 25 2c 39 29 3a 63 6f 6c 6f 75 72 73 25 |ode%,9):colours%| 00006880 3d 32 5e 63 6f 6c 62 69 74 73 25 3a f4 20 43 6f |=2^colbits%:. Co| 00006890 6c 6f 75 72 73 0d 15 a4 23 e7 28 6f 69 6d 61 67 |lours...#.(oimag| 000068a0 65 25 3c 3d 34 34 29 84 28 63 6f 6c 6f 75 72 73 |e%<=44).(colours| 000068b0 25 3d 32 35 36 29 20 8c 0d 15 ae 3e 20 f4 20 4e |%=256) ....> . N| 000068c0 6f 20 70 61 6c 65 74 74 65 20 6f 72 20 32 35 36 |o palette or 256| 000068d0 2d 63 6f 6c 6f 75 72 20 70 61 6c 65 74 74 65 20 |-colour palette | 000068e0 3a 20 73 65 74 20 73 74 61 6e 64 61 72 64 20 70 |: set standard p| 000068f0 61 6c 65 74 74 65 0d 15 b8 29 20 f2 73 74 61 6e |alette...) .stan| 00006900 64 61 72 64 5f 70 61 6c 65 74 74 65 28 49 6e 50 |dard_palette(InP| 00006910 61 6c 25 28 29 2c 63 6f 6c 62 69 74 73 25 29 0d |al%(),colbits%).| 00006920 15 c2 88 cc 20 49 6e 50 61 6c 25 28 30 29 3d 63 |.... InPal%(0)=c| 00006930 6f 6c 62 69 74 73 25 3a e3 20 63 25 3d 31 20 b8 |olbits%:. c%=1 .| 00006940 20 63 6f 6c 6f 75 72 73 25 3a 70 25 3d a4 69 34 | colours%:p%=.i4| 00006950 28 31 29 3a 49 6e 50 61 6c 25 28 63 25 29 3d 28 |(1):InPal%(c%)=(| 00006960 28 70 25 80 26 46 46 30 30 29 3c 3c 38 29 2b 28 |(p%.&FF00)<<8)+(| 00006970 28 70 25 80 26 46 46 30 30 30 30 29 3e 3e 38 29 |(p%.&FF0000)>>8)| 00006980 2b 28 70 25 3e 3e 3e 32 34 29 3a f2 69 73 6b 69 |+(p%>>>24):.iski| 00006990 70 28 31 2c 34 29 3a ed 3a f4 20 52 65 61 64 20 |p(1,4):.:. Read | 000069a0 70 61 6c 65 74 74 65 0d 15 cc 05 cd 0d 15 d6 42 |palette........B| 000069b0 78 72 65 73 25 3d 28 77 6f 72 64 73 25 2a 33 32 |xres%=(words%*32| 000069c0 2d 62 66 69 72 73 74 25 2d 28 33 31 2d 62 6c 61 |-bfirst%-(31-bla| 000069d0 73 74 25 29 29 20 81 20 63 6f 6c 62 69 74 73 25 |st%)) . colbits%| 000069e0 3a 79 72 65 73 25 3d 68 65 69 67 68 74 25 0d 15 |:yres%=height%..| 000069f0 e0 84 e7 a4 61 76 61 69 6c 61 62 6c 65 5f 6d 6f |....available_mo| 00006a00 64 65 28 73 70 72 6d 6f 64 65 25 29 20 8c 20 6d |de(sprmode%) . m| 00006a10 6f 64 65 25 3d 73 70 72 6d 6f 64 65 25 20 8b 20 |ode%=sprmode% . | 00006a20 6d 6f 64 65 25 3d a4 6d 6f 64 65 28 78 72 65 73 |mode%=.mode(xres| 00006a30 25 2c 79 72 65 73 25 2c 63 6f 6c 6f 75 72 73 25 |%,yres%,colours%| 00006a40 29 3a f4 20 44 65 74 65 72 6d 69 6e 65 20 6f 74 |):. Determine ot| 00006a50 68 65 72 20 6d 6f 64 65 20 69 66 20 73 70 72 69 |her mode if spri| 00006a60 74 65 27 73 20 6d 6f 64 65 20 77 6f 6e 27 74 20 |te's mode won't | 00006a70 64 6f 0d 15 ea 29 e7 a4 6e 65 77 5f 69 6d 61 67 |do...)..new_imag| 00006a80 65 28 6d 6f 64 65 25 2c 78 72 65 73 25 2c 79 72 |e(mode%,xres%,yr| 00006a90 65 73 25 2c 30 29 20 8b 20 3d a3 0d 15 f4 7d f2 |es%,0) . =....}.| 00006aa0 69 6d 61 67 65 5f 69 6e 66 6f 28 22 41 72 63 68 |image_info("Arch| 00006ab0 69 6d 65 64 65 73 20 73 70 72 69 74 65 22 2c 78 |imedes sprite",x| 00006ac0 72 65 73 25 2c 79 72 65 73 25 2c 30 2c 63 6f 6c |res%,yres%,0,col| 00006ad0 62 69 74 73 25 2c 6d 6f 64 65 25 2c 22 22 2c c3 |bits%,mode%,"",.| 00006ae0 70 69 63 74 75 72 65 73 25 2b 22 20 73 70 72 69 |pictures%+" spri| 00006af0 74 65 73 20 28 74 68 69 73 20 69 73 20 22 2b a4 |tes (this is "+.| 00006b00 74 69 6d 65 73 28 70 69 63 74 75 72 65 25 29 2b |times(picture%)+| 00006b10 22 29 22 2c 31 2c 31 29 0d 15 fe 7f f2 76 61 72 |")",1,1).....var| 00006b20 28 22 66 70 74 72 22 2c 73 74 61 72 74 25 2b 6f |("fptr",start%+o| 00006b30 69 6d 61 67 65 25 29 3a f2 76 61 72 28 22 77 69 |image%):.var("wi| 00006b40 64 74 22 2c 78 72 65 73 25 29 3a f2 76 61 72 28 |dt",xres%):.var(| 00006b50 22 68 65 69 67 22 2c 68 65 69 67 68 74 25 29 3a |"heig",height%):| 00006b60 f2 76 61 72 28 22 77 72 64 73 22 2c 77 6f 72 64 |.var("wrds",word| 00006b70 73 25 29 3a f2 76 61 72 28 22 62 66 69 72 22 2c |s%):.var("bfir",| 00006b80 62 66 69 72 73 74 25 29 3a f2 75 6e 70 61 63 6b |bfirst%):.unpack| 00006b90 28 22 41 52 43 22 29 0d 16 08 15 49 6d 67 4d 6f |("ARC")....ImgMo| 00006ba0 64 65 25 3d 6d 6f 64 65 25 3a 3d b9 0d 16 12 05 |de%=mode%:=.....| 00006bb0 20 0d 16 1c 10 dd a4 70 69 63 5f 50 52 4f 41 52 | ......pic_PROAR| 00006bc0 54 0d 16 26 1c f4 20 4d 61 6b 65 73 20 50 72 6f |T..&.. Makes Pro| 00006bd0 41 72 74 69 73 61 6e 20 69 6d 61 67 65 0d 16 30 |Artisan image..0| 00006be0 2b 77 69 64 74 68 25 3d 36 34 30 3a 68 65 69 67 |+width%=640:heig| 00006bf0 68 74 25 3d 32 35 36 3a f4 20 53 65 74 20 72 65 |ht%=256:. Set re| 00006c00 73 6f 6c 75 74 69 6f 6e 0d 16 3a 34 6d 6f 64 65 |solution..:4mode| 00006c10 25 3d a4 6d 6f 64 65 28 77 69 64 74 68 25 2c 68 |%=.mode(width%,h| 00006c20 65 69 67 68 74 25 2c 32 35 36 29 3a f4 20 44 65 |eight%,256):. De| 00006c30 74 65 72 6d 69 6e 65 20 6d 6f 64 65 0d 16 44 43 |termine mode..DC| 00006c40 72 6f 6f 6d 25 3d 28 77 69 64 74 68 25 2a 68 65 |room%=(width%*he| 00006c50 69 67 68 74 25 2b 33 29 80 ac 33 3a f4 20 52 6f |ight%+3)..3:. Ro| 00006c60 6f 6d 20 6e 65 65 64 65 64 20 66 6f 72 20 75 6e |om needed for un| 00006c70 70 61 63 6b 20 28 63 6f 6c 74 61 62 6c 65 29 0d |pack (coltable).| 00006c80 16 4e 30 e7 a4 6e 65 77 5f 69 6d 61 67 65 28 6d |.N0..new_image(m| 00006c90 6f 64 65 25 2c 77 69 64 74 68 25 2c 68 65 69 67 |ode%,width%,heig| 00006ca0 68 74 25 2c 72 6f 6f 6d 25 29 20 8b 20 3d a3 0d |ht%,room%) . =..| 00006cb0 16 58 2b 69 54 79 70 65 25 3d 30 3a f4 20 53 65 |.X+iType%=0:. Se| 00006cc0 74 20 6c 6f 77 2d 74 6f 2d 68 69 67 68 20 74 79 |t low-to-high ty| 00006cd0 70 65 20 6f 66 20 64 61 74 61 0d 16 62 47 63 6f |pe of data..bGco| 00006ce0 6c 6c 65 6e 25 3d a4 69 34 28 31 29 3a 63 6f 6d |llen%=.i4(1):com| 00006cf0 66 6c 61 67 25 3d a4 69 34 28 31 29 3a f4 20 4c |flag%=.i4(1):. L| 00006d00 65 6e 67 74 68 20 6f 66 20 63 6f 6c 6f 75 72 20 |ength of colour | 00006d10 74 61 62 6c 65 2f 63 6f 6d 70 72 65 73 73 69 6f |table/compressio| 00006d20 6e 0d 16 6c 35 63 6f 6c 74 61 62 6c 65 25 3d 4c |n..l5coltable%=L| 00006d30 6f 6d 65 6d 25 2d 63 6f 6c 6c 65 6e 25 3a f4 20 |omem%-collen%:. | 00006d40 53 70 61 63 65 20 66 6f 72 20 63 6f 6c 6f 75 72 |Space for colour| 00006d50 20 74 61 62 6c 65 0d 16 76 32 f2 69 67 65 74 28 | table..v2.iget(| 00006d60 31 2c 63 6f 6c 74 61 62 6c 65 25 2c 63 6f 6c 6c |1,coltable%,coll| 00006d70 65 6e 25 29 3a f4 20 52 65 61 64 20 63 6f 6c 6f |en%):. Read colo| 00006d80 75 72 20 74 61 62 6c 65 0d 16 80 3f f2 73 74 61 |ur table...?.sta| 00006d90 6e 64 61 72 64 5f 70 61 6c 65 74 74 65 28 49 6e |ndard_palette(In| 00006da0 50 61 6c 25 28 29 2c 38 29 3a f4 20 53 74 61 6e |Pal%(),8):. Stan| 00006db0 64 61 72 64 20 32 35 36 20 63 6f 6c 6f 75 72 20 |dard 256 colour | 00006dc0 70 61 6c 65 74 74 65 0d 16 8a 5d f2 69 6d 61 67 |palette...].imag| 00006dd0 65 5f 69 6e 66 6f 28 22 50 72 6f 41 72 74 69 73 |e_info("ProArtis| 00006de0 61 6e 22 2c 77 69 64 74 68 25 2c 68 65 69 67 68 |an",width%,heigh| 00006df0 74 25 2c 30 2c 38 2c 6d 6f 64 65 25 2c 22 52 75 |t%,0,8,mode%,"Ru| 00006e00 6e 20 6c 65 6e 67 74 68 22 2c 22 22 2c 46 6c 65 |n length","",Fle| 00006e10 6e 25 2d 38 2c 77 69 64 74 68 25 2a 68 65 69 67 |n%-8,width%*heig| 00006e20 68 74 25 29 0d 16 94 81 f2 76 61 72 28 22 66 70 |ht%).....var("fp| 00006e30 74 72 22 2c a4 69 70 74 72 28 31 29 29 3a f2 76 |tr",.iptr(1)):.v| 00006e40 61 72 28 22 70 72 6f 74 22 2c 63 6f 6c 74 61 62 |ar("prot",coltab| 00006e50 6c 65 25 29 3a f2 76 61 72 28 22 63 6f 6d 70 22 |le%):.var("comp"| 00006e60 2c 63 6f 6d 66 6c 61 67 25 29 3a f2 76 61 72 28 |,comflag%):.var(| 00006e70 22 77 69 64 74 22 2c 77 69 64 74 68 25 29 3a f2 |"widt",width%):.| 00006e80 76 61 72 28 22 68 65 69 67 22 2c 68 65 69 67 68 |var("heig",heigh| 00006e90 74 25 29 3a f2 75 6e 70 61 63 6b 28 22 50 52 4f |t%):.unpack("PRO| 00006ea0 41 52 54 22 29 0d 16 9e 15 49 6d 67 4d 6f 64 65 |ART")....ImgMode| 00006eb0 25 3d 6d 6f 64 65 25 3a 3d b9 0d 16 a8 05 20 0d |%=mode%:=..... .| 00006ec0 16 b2 11 dd a4 70 69 63 5f 57 41 54 46 4f 52 44 |.....pic_WATFORD| 00006ed0 0d 16 bc 23 f4 20 4d 61 6b 65 73 20 57 61 74 66 |...#. Makes Watf| 00006ee0 6f 72 64 20 64 69 67 69 74 69 73 65 72 20 69 6d |ord digitiser im| 00006ef0 61 67 65 0d 16 c6 2b 77 69 64 74 68 25 3d 35 31 |age...+width%=51| 00006f00 32 3a 68 65 69 67 68 74 25 3d 32 35 36 3a f4 20 |2:height%=256:. | 00006f10 53 65 74 20 72 65 73 6f 6c 75 74 69 6f 6e 0d 16 |Set resolution..| 00006f20 d0 34 6d 6f 64 65 25 3d a4 6d 6f 64 65 28 77 69 |.4mode%=.mode(wi| 00006f30 64 74 68 25 2c 68 65 69 67 68 74 25 2c 32 35 36 |dth%,height%,256| 00006f40 29 3a f4 20 44 65 74 65 72 6d 69 6e 65 20 6d 6f |):. Determine mo| 00006f50 64 65 0d 16 da 2c e7 a4 6e 65 77 5f 69 6d 61 67 |de...,..new_imag| 00006f60 65 28 6d 6f 64 65 25 2c 77 69 64 74 68 25 2c 68 |e(mode%,width%,h| 00006f70 65 69 67 68 74 25 2c 30 29 20 8b 20 3d a3 0d 16 |eight%,0) . =...| 00006f80 e4 3e 49 6e 50 61 6c 25 28 29 3d 30 3a 49 6e 50 |.>InPal%()=0:InP| 00006f90 61 6c 25 28 30 29 3d 38 3a f4 20 50 61 6c 65 74 |al%(0)=8:. Palet| 00006fa0 74 65 20 69 73 20 36 34 20 67 72 65 79 73 2c 20 |te is 64 greys, | 00006fb0 6c 69 6e 65 61 72 20 73 63 61 6c 65 0d 16 ee 38 |linear scale...8| 00006fc0 e3 20 63 25 3d 30 20 b8 20 36 33 3a 49 6e 50 61 |. c%=0 . 63:InPa| 00006fd0 6c 25 28 63 25 2b 31 29 3d 28 63 25 3c 3c 31 38 |l%(c%+1)=(c%<<18| 00006fe0 29 2b 28 63 25 3c 3c 31 30 29 2b 28 63 25 3c 3c |)+(c%<<10)+(c%<<| 00006ff0 32 29 3a ed 0d 16 f8 68 f2 69 6d 61 67 65 5f 69 |2):....h.image_i| 00007000 6e 66 6f 28 22 57 61 74 66 6f 72 64 20 64 69 67 |nfo("Watford dig| 00007010 69 74 69 73 65 72 22 2c 77 69 64 74 68 25 2c 68 |itiser",width%,h| 00007020 65 69 67 68 74 25 2c 31 2c 36 2c 6d 6f 64 65 25 |eight%,1,6,mode%| 00007030 2c 22 52 75 6e 20 6c 65 6e 67 74 68 22 2c 22 22 |,"Run length",""| 00007040 2c 46 6c 65 6e 25 2c 28 77 69 64 74 68 25 2a 68 |,Flen%,(width%*h| 00007050 65 69 67 68 74 25 2a 36 29 81 38 29 0d 17 02 4e |eight%*6).8)...N| 00007060 f2 76 61 72 28 22 77 69 64 74 22 2c 77 69 64 74 |.var("widt",widt| 00007070 68 25 29 3a f2 76 61 72 28 22 68 65 69 67 22 2c |h%):.var("heig",| 00007080 68 65 69 67 68 74 25 29 3a f2 76 61 72 28 22 66 |height%):.var("f| 00007090 70 74 72 22 2c 30 29 3a f2 75 6e 70 61 63 6b 28 |ptr",0):.unpack(| 000070a0 22 57 41 54 46 4f 52 44 22 29 0d 17 0c 15 49 6d |"WATFORD")....Im| 000070b0 67 4d 6f 64 65 25 3d 6d 6f 64 65 25 3a 3d b9 0d |gMode%=mode%:=..| 000070c0 17 16 05 20 0d 17 20 10 dd a4 70 69 63 5f 52 45 |... .. ...pic_RE| 000070d0 4e 44 45 52 0d 17 2a 1f f4 20 4d 61 6b 65 73 20 |NDER..*.. Makes | 000070e0 52 65 6e 64 65 72 20 42 65 6e 64 65 72 20 69 6d |Render Bender im| 000070f0 61 67 65 0d 17 34 0e 69 54 79 70 65 25 3d 30 3a |age..4.iType%=0:| 00007100 f4 0d 17 3e 24 6d 6f 64 65 25 3d a4 69 31 28 31 |...>$mode%=.i1(1| 00007110 29 3a f4 20 52 65 61 64 20 69 6d 61 67 65 27 73 |):. Read image's| 00007120 20 6d 6f 64 65 0d 17 48 a6 e7 a4 6d 6f 64 65 5f | mode..H...mode_| 00007130 76 61 72 28 6d 6f 64 65 25 2c 39 29 3c 3e 33 20 |var(mode%,9)<>3 | 00007140 8c 20 f2 65 72 72 6f 72 28 2d 31 2c 22 54 68 69 |. .error(-1,"Thi| 00007150 73 20 52 65 6e 64 65 72 20 42 65 6e 64 65 72 20 |s Render Bender | 00007160 69 6d 61 67 65 20 77 61 73 20 6e 6f 74 20 64 65 |image was not de| 00007170 66 69 6e 65 64 20 69 6e 20 61 20 32 35 36 20 63 |fined in a 256 c| 00007180 6f 6c 6f 75 72 20 6d 6f 64 65 20 21 22 29 20 8b |olour mode !") .| 00007190 20 77 69 64 74 68 25 3d a4 6d 6f 64 65 5f 76 61 | width%=.mode_va| 000071a0 72 28 6d 6f 64 65 25 2c 31 31 29 2b 31 3a 68 65 |r(mode%,11)+1:he| 000071b0 69 67 68 74 25 3d a4 6d 6f 64 65 5f 76 61 72 28 |ight%=.mode_var(| 000071c0 6d 6f 64 65 25 2c 31 32 29 2b 31 0d 17 52 34 6d |mode%,12)+1..R4m| 000071d0 6f 64 65 25 3d a4 6d 6f 64 65 28 77 69 64 74 68 |ode%=.mode(width| 000071e0 25 2c 68 65 69 67 68 74 25 2c 32 35 36 29 3a f4 |%,height%,256):.| 000071f0 20 44 65 74 65 72 6d 69 6e 65 20 6d 6f 64 65 0d | Determine mode.| 00007200 17 5c 2c e7 a4 6e 65 77 5f 69 6d 61 67 65 28 6d |.\,..new_image(m| 00007210 6f 64 65 25 2c 77 69 64 74 68 25 2c 68 65 69 67 |ode%,width%,heig| 00007220 68 74 25 2c 30 29 20 8b 20 3d a3 0d 17 66 3f f2 |ht%,0) . =...f?.| 00007230 73 74 61 6e 64 61 72 64 5f 70 61 6c 65 74 74 65 |standard_palette| 00007240 28 49 6e 50 61 6c 25 28 29 2c 38 29 3a f4 20 53 |(InPal%(),8):. S| 00007250 74 61 6e 64 61 72 64 20 32 35 36 20 63 6f 6c 6f |tandard 256 colo| 00007260 75 72 20 70 61 6c 65 74 74 65 0d 17 70 60 f2 69 |ur palette..p`.i| 00007270 6d 61 67 65 5f 69 6e 66 6f 28 22 52 65 6e 64 65 |mage_info("Rende| 00007280 72 20 42 65 6e 64 65 72 22 2c 77 69 64 74 68 25 |r Bender",width%| 00007290 2c 68 65 69 67 68 74 25 2c 30 2c 38 2c 6d 6f 64 |,height%,0,8,mod| 000072a0 65 25 2c 22 52 75 6e 20 6c 65 6e 67 74 68 22 2c |e%,"Run length",| 000072b0 22 22 2c 46 6c 65 6e 25 2d 31 2c 77 69 64 74 68 |"",Flen%-1,width| 000072c0 25 2a 68 65 69 67 68 74 25 29 0d 17 7a 4d f2 76 |%*height%)..zM.v| 000072d0 61 72 28 22 66 70 74 72 22 2c 31 29 3a f2 76 61 |ar("fptr",1):.va| 000072e0 72 28 22 77 69 64 74 22 2c 77 69 64 74 68 25 29 |r("widt",width%)| 000072f0 3a f2 76 61 72 28 22 68 65 69 67 22 2c 68 65 69 |:.var("heig",hei| 00007300 67 68 74 25 29 3a f2 75 6e 70 61 63 6b 28 22 52 |ght%):.unpack("R| 00007310 45 4e 44 45 52 22 29 0d 17 84 15 49 6d 67 4d 6f |ENDER")....ImgMo| 00007320 64 65 25 3d 6d 6f 64 65 25 3a 3d b9 0d 17 8e 05 |de%=mode%:=.....| 00007330 20 0d 17 98 0d dd a4 70 69 63 5f 41 49 4d 0d 17 | ......pic_AIM..| 00007340 a2 15 f4 20 4d 61 6b 65 73 20 41 49 4d 20 69 6d |... Makes AIM im| 00007350 61 67 65 0d 17 ac 2b 77 69 64 74 68 25 3d 32 35 |age...+width%=25| 00007360 36 3a 68 65 69 67 68 74 25 3d 32 35 36 3a f4 20 |6:height%=256:. | 00007370 53 65 74 20 72 65 73 6f 6c 75 74 69 6f 6e 0d 17 |Set resolution..| 00007380 b6 34 6d 6f 64 65 25 3d a4 6d 6f 64 65 28 77 69 |.4mode%=.mode(wi| 00007390 64 74 68 25 2c 68 65 69 67 68 74 25 2c 32 35 36 |dth%,height%,256| 000073a0 29 3a f4 20 44 65 74 65 72 6d 69 6e 65 20 6d 6f |):. Determine mo| 000073b0 64 65 0d 17 c0 2c e7 a4 6e 65 77 5f 69 6d 61 67 |de...,..new_imag| 000073c0 65 28 6d 6f 64 65 25 2c 77 69 64 74 68 25 2c 68 |e(mode%,width%,h| 000073d0 65 69 67 68 74 25 2c 30 29 20 8b 20 3d a3 0d 17 |eight%,0) . =...| 000073e0 ca 34 49 6e 50 61 6c 25 28 30 29 3d 38 3a f4 20 |.4InPal%(0)=8:. | 000073f0 50 61 6c 65 74 74 65 20 69 73 20 32 35 36 20 67 |Palette is 256 g| 00007400 72 65 79 73 2c 20 6c 69 6e 65 61 72 20 73 63 61 |reys, linear sca| 00007410 6c 65 0d 17 d4 33 e3 20 63 25 3d 30 20 b8 20 32 |le...3. c%=0 . 2| 00007420 35 35 3a 49 6e 50 61 6c 25 28 63 25 2b 31 29 3d |55:InPal%(c%+1)=| 00007430 28 63 25 3c 3c 31 36 29 2b 28 63 25 3c 3c 38 29 |(c%<<16)+(c%<<8)| 00007440 2b 63 25 3a ed 0d 17 de 43 f2 69 6d 61 67 65 5f |+c%:....C.image_| 00007450 69 6e 66 6f 28 22 41 49 4d 22 2c 77 69 64 74 68 |info("AIM",width| 00007460 25 2c 68 65 69 67 68 74 25 2c 31 2c 38 2c 6d 6f |%,height%,1,8,mo| 00007470 64 65 25 2c 22 22 2c 22 22 2c 46 6c 65 6e 25 2c |de%,"","",Flen%,| 00007480 32 35 36 2a 32 35 36 29 0d 17 e8 4a f2 76 61 72 |256*256)...J.var| 00007490 28 22 77 69 64 74 22 2c 77 69 64 74 68 25 29 3a |("widt",width%):| 000074a0 f2 76 61 72 28 22 68 65 69 67 22 2c 68 65 69 67 |.var("heig",heig| 000074b0 68 74 25 29 3a f2 76 61 72 28 22 66 70 74 72 22 |ht%):.var("fptr"| 000074c0 2c 30 29 3a f2 75 6e 70 61 63 6b 28 22 41 49 4d |,0):.unpack("AIM| 000074d0 22 29 0d 17 f2 15 49 6d 67 4d 6f 64 65 25 3d 6d |")....ImgMode%=m| 000074e0 6f 64 65 25 3a 3d b9 0d 17 fc 05 20 0d 18 06 0d |ode%:=..... ....| 000074f0 dd a4 70 69 63 5f 53 55 4e 0d 18 10 15 f4 20 4d |..pic_SUN..... M| 00007500 61 6b 65 73 20 53 55 4e 20 69 6d 61 67 65 0d 18 |akes SUN image..| 00007510 1a 2b 69 54 79 70 65 25 3d 31 3a f4 20 53 65 74 |.+iType%=1:. Set| 00007520 20 68 69 67 68 2d 74 6f 2d 6c 6f 77 20 74 79 70 | high-to-low typ| 00007530 65 20 6f 66 20 64 61 74 61 0d 18 24 5c 6d 61 67 |e of data..$\mag| 00007540 69 63 25 3d a4 69 34 28 31 29 3a e7 6d 61 67 69 |ic%=.i4(1):.magi| 00007550 63 25 3c 3e 26 35 39 41 36 36 41 39 35 20 8c 20 |c%<>&59A66A95 . | 00007560 f2 65 72 72 6f 72 28 2d 31 2c 22 54 68 69 73 20 |.error(-1,"This | 00007570 69 73 20 6e 6f 20 73 74 61 6e 64 61 72 64 20 53 |is no standard S| 00007580 55 4e 20 72 61 73 74 65 72 20 66 69 6c 65 20 21 |UN raster file !| 00007590 22 29 3a 3d a3 0d 18 2e 42 77 69 64 74 68 25 3d |"):=....Bwidth%=| 000075a0 a4 69 34 28 31 29 3a 68 65 69 67 68 74 25 3d a4 |.i4(1):height%=.| 000075b0 68 65 69 67 68 74 25 3d a4 68 31 29 3a 63 6f 6c |height%=.h1):col| 000075c0 62 69 74 73 25 3d a4 69 34 28 31 29 3a f4 20 52 |bits%=.i4(1):. R| 000075d0 65 61 64 20 72 65 73 6f 6c 75 74 69 6f 6e 0d 18 |ead resolution..| 000075e0 38 4e 6c 65 6e 67 74 68 25 3d a4 69 34 28 31 29 |8Nlength%=.i4(1)| 000075f0 3a 74 79 70 65 25 3d a4 69 34 28 31 29 3a 6d 61 |:type%=.i4(1):ma| 00007600 70 74 79 70 65 25 3d a4 69 34 28 31 29 3a 6d 61 |ptype%=.i4(1):ma| 00007610 70 6c 65 6e 67 74 68 25 3d a4 69 34 28 31 29 3a |plength%=.i4(1):| 00007620 f4 20 45 78 74 72 61 20 69 6e 66 6f 0d 18 42 48 |. Extra info..BH| 00007630 e7 74 79 70 65 25 3e 31 20 8c 20 f2 65 72 72 6f |.type%>1 . .erro| 00007640 72 28 2d 31 2c 22 49 20 63 61 6e 20 6f 6e 6c 79 |r(-1,"I can only| 00007650 20 72 65 61 64 20 75 6e 63 6f 6d 70 72 65 73 73 | read uncompress| 00007660 65 64 20 53 75 6e 20 69 6d 61 67 65 73 20 21 22 |ed Sun images !"| 00007670 29 3a 3d a3 0d 18 4c 2b 63 6f 6c 6f 75 72 73 25 |):=...L+colours%| 00007680 3d 32 5e 63 6f 6c 62 69 74 73 25 3a f4 20 4e 75 |=2^colbits%:. Nu| 00007690 6d 62 65 72 20 6f 66 20 63 6f 6c 6f 75 72 73 0d |mber of colours.| 000076a0 18 56 11 c8 8e 20 63 6f 6c 62 69 74 73 25 20 ca |.V... colbits% .| 000076b0 0d 18 60 2c 20 c9 20 31 2c 38 20 3a 20 e7 28 6d |..`, . 1,8 : .(m| 000076c0 61 70 74 79 70 65 25 3c 3e 31 29 84 28 6d 61 70 |aptype%<>1).(map| 000076d0 6c 65 6e 67 74 68 25 3d 30 29 20 8c 0d 18 6a 6d |length%=0) ...jm| 000076e0 20 20 20 20 20 20 20 20 20 20 20 20 20 e7 63 6f | .co| 000076f0 6c 62 69 74 73 25 3e 31 20 8c 20 f2 65 72 72 6f |lbits%>1 . .erro| 00007700 72 28 2d 31 2c 22 54 68 69 73 20 53 55 4e 20 69 |r(-1,"This SUN i| 00007710 6d 61 67 65 20 66 69 6c 65 20 63 6f 6e 74 61 69 |mage file contai| 00007720 6e 73 20 6e 6f 20 70 61 6c 65 74 74 65 20 21 20 |ns no palette ! | 00007730 49 20 77 69 6c 6c 20 75 73 65 20 61 20 67 72 65 |I will use a gre| 00007740 79 73 63 61 6c 65 2e 22 29 0d 18 74 2a 20 20 20 |yscale.")..t* | 00007750 20 20 20 20 20 20 20 20 20 20 f2 67 72 65 79 5f | .grey_| 00007760 70 61 6c 65 74 74 65 28 63 6f 6c 62 69 74 73 25 |palette(colbits%| 00007770 2c 31 29 0d 18 7e 76 20 20 20 20 20 20 20 20 20 |,1)..~v | 00007780 20 20 20 cc 20 49 6e 50 61 6c 25 28 29 3d 30 3a | . InPal%()=0:| 00007790 e3 20 69 25 3d 31 20 b8 20 33 3a e3 20 63 25 3d |. i%=1 . 3:. c%=| 000077a0 31 20 b8 20 6d 61 70 6c 65 6e 67 74 68 25 81 33 |1 . maplength%.3| 000077b0 3a 49 6e 50 61 6c 25 28 63 25 29 3d 28 49 6e 50 |:InPal%(c%)=(InP| 000077c0 61 6c 25 28 63 25 29 3c 3c 38 29 2b a4 69 31 28 |al%(c%)<<8)+.i1(| 000077d0 31 29 3a ed 3a ed 3a 49 6e 50 61 6c 25 28 30 29 |1):.:.:InPal%(0)| 000077e0 3d 63 6f 6c 62 69 74 73 25 0d 18 88 11 20 20 20 |=colbits%.... | 000077f0 20 20 20 20 20 20 20 20 20 cd 0d 18 92 4c 20 7f | ....L .| 00007800 20 3a 20 f2 65 72 72 6f 72 28 2d 31 2c 22 49 20 | : .error(-1,"I | 00007810 63 61 6e 20 6f 6e 6c 79 20 72 65 61 64 20 31 2d |can only read 1-| 00007820 20 61 6e 64 20 38 2d 62 69 74 20 70 65 72 20 70 | and 8-bit per p| 00007830 69 78 65 6c 20 53 75 6e 20 69 6d 61 67 65 73 20 |ixel Sun images | 00007840 21 22 29 3a 3d a3 0d 18 9c 05 cb 0d 18 a6 39 6d |!"):=.........9m| 00007850 6f 64 65 25 3d a4 6d 6f 64 65 28 77 69 64 74 68 |ode%=.mode(width| 00007860 25 2c 68 65 69 67 68 74 25 2c 63 6f 6c 6f 75 72 |%,height%,colour| 00007870 73 25 29 3a f4 20 44 65 74 65 72 6d 69 6e 65 20 |s%):. Determine | 00007880 6d 6f 64 65 0d 18 b0 2c e7 a4 6e 65 77 5f 69 6d |mode...,..new_im| 00007890 61 67 65 28 6d 6f 64 65 25 2c 77 69 64 74 68 25 |age(mode%,width%| 000078a0 2c 68 65 69 67 68 74 25 2c 30 29 20 8b 20 3d a3 |,height%,0) . =.| 000078b0 0d 18 ba 48 f2 69 6d 61 67 65 5f 69 6e 66 6f 28 |...H.image_info(| 000078c0 22 53 55 4e 22 2c 77 69 64 74 68 25 2c 68 65 69 |"SUN",width%,hei| 000078d0 67 68 74 25 2c 30 2c 63 6f 6c 62 69 74 73 25 2c |ght%,0,colbits%,| 000078e0 6d 6f 64 65 25 2c 22 22 2c 22 22 2c 46 6c 65 6e |mode%,"","",Flen| 000078f0 25 2c 46 6c 65 6e 25 29 0d 18 c4 56 f2 76 61 72 |%,Flen%)...V.var| 00007900 28 22 66 70 74 72 22 2c 33 32 2b 6d 61 70 6c 65 |("fptr",32+maple| 00007910 6e 67 74 68 25 29 3a f2 76 61 72 28 22 77 69 64 |ngth%):.var("wid| 00007920 74 22 2c 77 69 64 74 68 25 29 3a f2 76 61 72 28 |t",width%):.var(| 00007930 22 68 65 69 67 22 2c 68 65 69 67 68 74 25 29 3a |"heig",height%):| 00007940 f2 75 6e 70 61 63 6b 28 22 53 55 4e 22 29 0d 18 |.unpack("SUN")..| 00007950 ce 15 49 6d 67 4d 6f 64 65 25 3d 6d 6f 64 65 25 |..ImgMode%=mode%| 00007960 3a 3d b9 0d 18 d8 05 20 0d 18 e2 0d dd a4 70 69 |:=..... ......pi| 00007970 63 5f 50 43 58 0d 18 ec 15 f4 20 4d 61 6b 65 73 |c_PCX..... Makes| 00007980 20 50 43 58 20 69 6d 61 67 65 0d 18 f6 2b 69 54 | PCX image...+iT| 00007990 79 70 65 25 3d 30 3a f4 20 53 65 74 20 6c 6f 77 |ype%=0:. Set low| 000079a0 2d 74 6f 2d 68 69 67 68 20 74 79 70 65 20 6f 66 |-to-high type of| 000079b0 20 64 61 74 61 0d 19 00 31 6d 61 6e 25 3d a4 69 | data...1man%=.i| 000079c0 31 28 31 29 3a f4 20 4d 61 6e 75 66 61 63 74 75 |1(1):. Manufactu| 000079d0 72 65 20 63 6f 64 65 20 28 73 68 6f 75 6c 64 20 |re code (should | 000079e0 62 65 20 31 30 29 0d 19 0a 3e e7 6d 61 6e 25 3c |be 10)...>.man%<| 000079f0 3e 31 30 20 8c 20 f2 65 72 72 6f 72 28 2d 31 2c |>10 . .error(-1,| 00007a00 22 54 68 69 73 20 69 73 20 6e 6f 20 73 74 61 6e |"This is no stan| 00007a10 64 61 72 64 20 50 43 58 20 66 69 6c 65 20 21 22 |dard PCX file !"| 00007a20 29 3a 3d a3 0d 19 14 2c 76 65 72 73 69 6f 6e 25 |):=....,version%| 00007a30 3d a4 69 31 28 31 29 3a f4 20 56 65 72 73 69 6f |=.i1(1):. Versio| 00007a40 6e 20 63 6f 64 65 20 28 30 2f 32 2f 33 2f 35 29 |n code (0/2/3/5)| 00007a50 0d 19 1e 59 e7 76 65 72 73 69 6f 6e 25 3c 35 20 |...Y.version%<5 | 00007a60 8c 20 f2 65 72 72 6f 72 28 2d 31 2c 22 49 20 63 |. .error(-1,"I c| 00007a70 61 6e 6e 6f 74 20 68 61 6e 64 6c 65 20 6f 6c 64 |annot handle old| 00007a80 20 50 43 58 20 66 69 6c 65 73 20 28 6f 6e 6c 79 | PCX files (only| 00007a90 20 76 65 72 73 69 6f 6e 20 35 20 61 6e 64 20 75 | version 5 and u| 00007aa0 70 29 20 21 22 29 3a 3d a3 0d 19 28 47 65 6e 63 |p) !"):=...(Genc| 00007ab0 6f 64 69 6e 67 25 3d a4 69 31 28 31 29 3a f4 20 |oding%=.i1(1):. | 00007ac0 45 6e 63 6f 64 69 6e 67 20 63 6f 64 65 20 28 30 |Encoding code (0| 00007ad0 2d 6e 6f 6e 65 2c 20 31 2d 50 43 58 20 72 75 6e |-none, 1-PCX run| 00007ae0 6c 65 6e 67 74 68 20 65 6e 63 6f 64 69 6e 67 29 |length encoding)| 00007af0 0d 19 32 33 62 69 74 73 25 3d a4 69 31 28 31 29 |..23bits%=.i1(1)| 00007b00 3a f4 20 42 69 74 73 20 70 65 72 20 27 70 69 78 |:. Bits per 'pix| 00007b10 65 6c 27 20 28 31 2d 45 47 41 2c 20 38 2d 4d 43 |el' (1-EGA, 8-MC| 00007b20 47 41 29 0d 19 3c 50 77 78 6d 69 6e 25 3d a4 69 |GA)..<Pwxmin%=.i| 00007b30 32 28 31 29 3a 77 79 6d 69 6e 25 3d a4 69 32 28 |2(1):wymin%=.i2(| 00007b40 31 29 3a 77 78 6d 61 78 25 3d a4 69 32 28 31 29 |1):wxmax%=.i2(1)| 00007b50 3a 77 79 6d 61 78 25 3d a4 69 32 28 31 29 3a f4 |:wymax%=.i2(1):.| 00007b60 20 57 69 6e 64 6f 77 20 63 6f 6f 72 64 69 6e 61 | Window coordina| 00007b70 74 65 73 0d 19 46 49 77 69 64 74 68 25 3d 77 78 |tes..FIwidth%=wx| 00007b80 6d 61 78 25 2d 77 78 6d 69 6e 25 2b 31 3a 68 65 |max%-wxmin%+1:he| 00007b90 69 67 68 74 25 3d 77 79 6d 61 78 25 2d 77 79 6d |ight%=wymax%-wym| 00007ba0 69 6e 25 2b 31 3a f4 20 52 65 73 6f 6c 75 74 69 |in%+1:. Resoluti| 00007bb0 6f 6e 20 69 6e 20 70 69 78 65 6c 73 0d 19 50 20 |on in pixels..P | 00007bc0 f2 69 73 6b 69 70 28 31 2c 34 29 3a f4 20 53 6b |.iskip(1,4):. Sk| 00007bd0 69 70 20 48 72 65 73 2f 56 72 65 73 0d 19 5a 1e |ip Hres/Vres..Z.| 00007be0 49 6e 50 61 6c 25 28 29 3d 30 3a f4 20 43 6c 65 |InPal%()=0:. Cle| 00007bf0 61 72 20 70 61 6c 65 74 74 65 0d 19 64 6c e3 20 |ar palette..dl. | 00007c00 69 25 3d 31 20 b8 20 31 36 3a 72 67 62 25 3d a4 |i%=1 . 16:rgb%=.| 00007c10 69 33 28 31 29 3a 49 6e 50 61 6c 25 28 69 25 29 |i3(1):InPal%(i%)| 00007c20 3d 28 28 72 67 62 25 80 26 46 46 29 3c 3c 31 36 |=((rgb%.&FF)<<16| 00007c30 29 2b 28 72 67 62 25 80 26 46 46 30 30 29 2b 28 |)+(rgb%.&FF00)+(| 00007c40 72 67 62 25 3e 3e 31 36 29 3a ed 3a f4 20 52 65 |rgb%>>16):.:. Re| 00007c50 61 64 20 63 6f 6c 6f 75 72 6d 61 70 20 69 6e 20 |ad colourmap in | 00007c60 68 65 61 64 65 72 0d 19 6e 24 f2 69 73 6b 69 70 |header..n$.iskip| 00007c70 28 31 2c 31 29 3a f4 20 53 6b 69 70 20 72 65 73 |(1,1):. Skip res| 00007c80 65 72 76 65 64 20 62 79 74 65 0d 19 78 21 70 6c |erved byte..x!pl| 00007c90 61 6e 65 73 25 3d a4 69 31 28 31 29 3a f4 20 43 |anes%=.i1(1):. C| 00007ca0 6f 6c 6f 75 72 70 6c 61 6e 65 73 0d 19 82 24 6c |olourplanes...$l| 00007cb0 69 6e 65 6c 65 6e 25 3d a4 69 32 28 31 29 3a f4 |inelen%=.i2(1):.| 00007cc0 20 42 79 74 65 73 20 70 65 72 20 6c 69 6e 65 0d | Bytes per line.| 00007cd0 19 8c 88 72 6f 75 6e 64 6c 65 6e 25 3d 28 28 77 |...roundlen%=((w| 00007ce0 69 64 74 68 25 2a 62 69 74 73 25 2b 37 29 81 38 |idth%*bits%+7).8| 00007cf0 29 3a e7 72 6f 75 6e 64 6c 65 6e 25 3c 3e 6c 69 |):.roundlen%<>li| 00007d00 6e 65 6c 65 6e 25 20 8c 20 77 69 64 74 68 25 3d |nelen% . width%=| 00007d10 6c 69 6e 65 6c 65 6e 25 2a 38 2f 62 69 74 73 25 |linelen%*8/bits%| 00007d20 3a f4 20 43 6f 72 72 65 63 74 20 77 69 64 74 68 |:. Correct width| 00007d30 20 69 66 20 77 69 6e 64 6f 77 20 61 6e 64 20 6c | if window and l| 00007d40 69 6e 65 6c 65 6e 67 74 68 20 64 61 74 61 20 63 |inelength data c| 00007d50 6f 6e 66 6c 69 63 74 0d 19 96 2b 70 69 78 62 69 |onflict...+pixbi| 00007d60 74 73 25 3d 62 69 74 73 25 2a 70 6c 61 6e 65 73 |ts%=bits%*planes| 00007d70 25 3a f4 20 42 69 74 73 20 70 65 72 20 70 69 78 |%:. Bits per pix| 00007d80 65 6c 0d 19 a0 89 e7 28 70 69 78 62 69 74 73 25 |el.....(pixbits%| 00007d90 3d 31 29 20 84 20 28 70 69 78 62 69 74 73 25 3d |=1) . (pixbits%=| 00007da0 32 29 20 84 20 28 70 69 78 62 69 74 73 25 3d 34 |2) . (pixbits%=4| 00007db0 29 20 84 20 28 70 69 78 62 69 74 73 25 3d 38 29 |) . (pixbits%=8)| 00007dc0 20 8b 20 f2 65 72 72 6f 72 28 2d 31 2c 22 49 20 | . .error(-1,"I | 00007dd0 63 61 6e 6e 6f 74 20 68 61 6e 64 6c 65 20 22 2b |cannot handle "+| 00007de0 c3 28 32 5e 70 69 78 62 69 74 73 25 29 2b 22 20 |.(2^pixbits%)+" | 00007df0 63 6f 6c 6f 75 72 20 45 47 41 20 50 43 58 20 66 |colour EGA PCX f| 00007e00 69 6c 65 73 20 21 22 29 3a 3d a3 0d 19 aa 2b 63 |iles !"):=....+c| 00007e10 6f 6c 6f 75 72 73 25 3d 32 5e 70 69 78 62 69 74 |olours%=2^pixbit| 00007e20 73 25 3a f4 20 4e 75 6d 62 65 72 20 6f 66 20 63 |s%:. Number of c| 00007e30 6f 6c 6f 75 72 73 0d 19 b4 7e f2 76 61 72 28 22 |olours...~.var("| 00007e40 66 70 74 72 22 2c 31 32 38 29 3a f2 76 61 72 28 |fptr",128):.var(| 00007e50 22 74 6f 74 6c 22 2c 6c 69 6e 65 6c 65 6e 25 2a |"totl",linelen%*| 00007e60 70 6c 61 6e 65 73 25 2a 68 65 69 67 68 74 25 29 |planes%*height%)| 00007e70 3a f2 76 61 72 28 22 63 6f 6d 70 22 2c 65 6e 63 |:.var("comp",enc| 00007e80 6f 64 69 6e 67 25 29 3a f2 75 6e 70 61 63 6b 5f |oding%):.unpack_| 00007e90 70 68 61 73 65 28 22 50 43 58 22 2c 32 29 3a f4 |phase("PCX",2):.| 00007ea0 20 47 65 74 20 28 70 61 63 6b 65 64 29 20 6c 65 | Get (packed) le| 00007eb0 6e 67 74 68 0d 19 be 41 6c 65 6e 25 3d a4 76 61 |ngth...Alen%=.va| 00007ec0 72 28 22 70 61 6b 6c 22 29 3a f2 69 70 74 72 28 |r("pakl"):.iptr(| 00007ed0 31 2c 31 32 38 2b 6c 65 6e 25 29 3a f4 20 47 6f |1,128+len%):. Go| 00007ee0 20 74 6f 20 65 6e 64 20 6f 66 20 69 6d 61 67 65 | to end of image| 00007ef0 20 64 61 74 61 0d 19 c8 3f 63 6f 64 65 25 3d a4 | data...?code%=.| 00007f00 69 31 28 31 29 3a f4 20 47 65 74 20 63 6f 64 65 |i1(1):. Get code| 00007f10 20 28 31 32 20 69 6e 64 69 63 61 74 65 73 20 70 | (12 indicates p| 00007f20 61 6c 65 74 74 65 20 69 6e 66 6f 20 66 6f 6c 6c |alette info foll| 00007f30 6f 77 73 29 0d 19 d2 74 e7 63 6f 64 65 25 3d 31 |ows)...t.code%=1| 00007f40 32 20 8c 20 e3 20 69 25 3d 31 20 b8 20 63 6f 6c |2 . . i%=1 . col| 00007f50 6f 75 72 73 25 3a 72 67 62 25 3d a4 69 33 28 31 |ours%:rgb%=.i3(1| 00007f60 29 3a 49 6e 50 61 6c 25 28 69 25 29 3d 28 28 72 |):InPal%(i%)=((r| 00007f70 67 62 25 80 26 46 46 29 3c 3c 31 36 29 2b 28 72 |gb%.&FF)<<16)+(r| 00007f80 67 62 25 80 26 46 46 30 30 29 2b 28 72 67 62 25 |gb%.&FF00)+(rgb%| 00007f90 3e 3e 31 36 29 3a ed 3a f4 20 52 65 61 64 20 63 |>>16):.:. Read c| 00007fa0 6f 6c 6f 75 72 6d 61 70 0d 19 dc 2e 67 72 65 79 |olourmap....grey| 00007fb0 3d a3 3a f4 20 46 6c 61 67 20 74 6f 20 69 6e 64 |=.:. Flag to ind| 00007fc0 69 63 61 74 65 20 66 6f 72 63 65 64 20 67 72 65 |icate forced gre| 00007fd0 79 73 63 61 6c 65 0d 19 e6 80 e7 62 69 74 73 25 |yscale.....bits%| 00007fe0 3d 38 20 8c 20 e7 63 6f 64 65 25 3c 3e 31 32 20 |=8 . .code%<>12 | 00007ff0 8c 20 f2 65 72 72 6f 72 28 2d 31 2c 22 49 20 63 |. .error(-1,"I c| 00008000 61 6e 6e 6f 74 20 66 69 6e 64 20 74 68 65 20 70 |annot find the p| 00008010 61 6c 65 74 74 65 20 69 6e 20 74 68 69 73 20 32 |alette in this 2| 00008020 35 36 2d 63 6f 6c 6f 75 72 20 50 43 58 20 69 6d |56-colour PCX im| 00008030 61 67 65 20 21 20 49 20 77 69 6c 6c 20 75 73 65 |age ! I will use| 00008040 20 61 20 67 72 65 79 73 63 61 6c 65 2e 22 29 3a | a greyscale."):| 00008050 67 72 65 79 3d b9 0d 19 f0 7d e7 ac 67 72 65 79 |grey=....}..grey| 00008060 20 8c 20 e7 c6 8e 28 49 6e 50 61 6c 25 28 29 29 | . ...(InPal%())| 00008070 3d 30 20 8c 20 f2 65 72 72 6f 72 28 2d 31 2c 22 |=0 . .error(-1,"| 00008080 49 20 63 61 6e 6e 6f 74 20 66 69 6e 64 20 61 20 |I cannot find a | 00008090 64 65 63 65 6e 74 20 70 61 6c 65 74 74 65 20 69 |decent palette i| 000080a0 6e 20 74 68 69 73 20 50 43 58 20 69 6d 61 67 65 |n this PCX image| 000080b0 20 21 20 49 20 77 69 6c 6c 20 75 73 65 20 61 20 | ! I will use a | 000080c0 67 72 65 79 73 63 61 6c 65 2e 22 29 3a 67 72 65 |greyscale."):gre| 000080d0 79 3d b9 0d 19 fa 3a e7 67 72 65 79 20 8c 20 f2 |y=....:.grey . .| 000080e0 67 72 65 79 5f 70 61 6c 65 74 74 65 28 70 69 78 |grey_palette(pix| 000080f0 62 69 74 73 25 2c 31 29 20 8b 20 49 6e 50 61 6c |bits%,1) . InPal| 00008100 25 28 30 29 3d 70 69 78 62 69 74 73 25 0d 1a 04 |%(0)=pixbits%...| 00008110 39 6d 6f 64 65 25 3d a4 6d 6f 64 65 28 77 69 64 |9mode%=.mode(wid| 00008120 74 68 25 2c 68 65 69 67 68 74 25 2c 63 6f 6c 6f |th%,height%,colo| 00008130 75 72 73 25 29 3a f4 20 44 65 74 65 72 6d 69 6e |urs%):. Determin| 00008140 65 20 6d 6f 64 65 0d 1a 0e 2c e7 a4 6e 65 77 5f |e mode...,..new_| 00008150 69 6d 61 67 65 28 6d 6f 64 65 25 2c 77 69 64 74 |image(mode%,widt| 00008160 68 25 2c 68 65 69 67 68 74 25 2c 30 29 20 8b 20 |h%,height%,0) . | 00008170 3d a3 0d 1a 18 32 e7 65 6e 63 6f 64 69 6e 67 25 |=....2.encoding%| 00008180 3d 31 20 8c 20 63 6f 6d 70 72 24 3d 22 52 75 6e |=1 . compr$="Run| 00008190 20 6c 65 6e 67 74 68 22 20 8b 20 63 6f 6d 70 72 | length" . compr| 000081a0 24 3d 22 22 0d 1a 22 66 f2 69 6d 61 67 65 5f 69 |$="".."f.image_i| 000081b0 6e 66 6f 28 22 50 43 58 22 2c 77 69 64 74 68 25 |nfo("PCX",width%| 000081c0 2c 68 65 69 67 68 74 25 2c 30 2c 70 69 78 62 69 |,height%,0,pixbi| 000081d0 74 73 25 2c 6d 6f 64 65 25 2c 63 6f 6d 70 72 24 |ts%,mode%,compr$| 000081e0 2c 22 22 2c 46 6c 65 6e 25 2d 31 32 38 2c 28 77 |,"",Flen%-128,(w| 000081f0 69 64 74 68 25 2a 68 65 69 67 68 74 25 2a 70 69 |idth%*height%*pi| 00008200 78 62 69 74 73 25 29 81 38 29 0d 1a 2c 63 f2 76 |xbits%).8)..,c.v| 00008210 61 72 28 22 66 70 74 72 22 2c 31 32 38 29 3a f2 |ar("fptr",128):.| 00008220 76 61 72 28 22 77 69 64 74 22 2c 77 69 64 74 68 |var("widt",width| 00008230 25 29 3a f2 76 61 72 28 22 68 65 69 67 22 2c 68 |%):.var("heig",h| 00008240 65 69 67 68 74 25 29 3a f2 76 61 72 28 22 63 6f |eight%):.var("co| 00008250 6d 70 22 2c 65 6e 63 6f 64 69 6e 67 25 29 3a f2 |mp",encoding%):.| 00008260 75 6e 70 61 63 6b 28 22 50 43 58 22 29 0d 1a 36 |unpack("PCX")..6| 00008270 15 49 6d 67 4d 6f 64 65 25 3d 6d 6f 64 65 25 3a |.ImgMode%=mode%:| 00008280 3d b9 0d 1a 40 05 20 0d 1a 4a 0e dd a4 70 69 63 |=...@. ..J...pic| 00008290 5f 54 49 46 46 0d 1a 54 16 f4 20 4d 61 6b 65 73 |_TIFF..T.. Makes| 000082a0 20 54 49 46 46 20 69 6d 61 67 65 0d 1a 5e 2b 69 | TIFF image..^+i| 000082b0 64 24 3d a4 69 73 74 72 69 6e 67 28 31 2c 32 29 |d$=.istring(1,2)| 000082c0 3a f4 20 54 49 46 46 20 69 64 65 6e 74 69 66 69 |:. TIFF identifi| 000082d0 63 61 74 69 6f 6e 0d 1a 68 0c c8 8e 20 69 64 24 |cation..h... id$| 000082e0 20 ca 0d 1a 72 35 20 c9 20 22 49 49 22 20 3a 20 | ...r5 . "II" : | 000082f0 69 54 79 70 65 25 3d 30 3a f4 20 53 65 74 20 6c |iType%=0:. Set l| 00008300 6f 77 2d 74 6f 2d 68 69 67 68 20 74 79 70 65 20 |ow-to-high type | 00008310 6f 66 20 64 61 74 61 0d 1a 7c 35 20 c9 20 22 4d |of data..|5 . "M| 00008320 4d 22 20 3a 20 69 54 79 70 65 25 3d 31 3a f4 20 |M" : iType%=1:. | 00008330 53 65 74 20 68 69 67 68 2d 74 6f 2d 6c 6f 77 20 |Set high-to-low | 00008340 74 79 70 65 20 6f 66 20 64 61 74 61 0d 1a 86 32 |type of data...2| 00008350 20 7f 20 3a 20 f2 65 72 72 6f 72 28 2d 31 2c 22 | . : .error(-1,"| 00008360 54 68 69 73 20 69 73 20 6e 6f 74 20 61 20 54 49 |This is not a TI| 00008370 46 46 20 66 69 6c 65 20 21 22 29 3a 3d a3 0d 1a |FF file !"):=...| 00008380 90 05 cb 0d 1a 9a 2b 76 65 72 73 69 6f 6e 25 3d |......+version%=| 00008390 a4 74 69 66 66 28 33 29 3a f4 20 54 49 46 46 20 |.tiff(3):. TIFF | 000083a0 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 0d 1a |version number..| 000083b0 a4 47 e7 76 65 72 73 69 6f 6e 25 3c 3e 34 32 20 |.G.version%<>42 | 000083c0 8c 20 f2 65 72 72 6f 72 28 2d 31 2c 22 49 20 63 |. .error(-1,"I c| 000083d0 61 6e 6e 6f 74 20 68 61 6e 64 6c 65 20 74 68 69 |annot handle thi| 000083e0 73 20 54 49 46 46 20 76 65 72 73 69 6f 6e 20 21 |s TIFF version !| 000083f0 22 29 3a 3d a3 0d 1a ae 2b 6f 66 66 46 49 46 44 |"):=....+offFIFD| 00008400 25 3d a4 74 69 66 66 28 34 29 3a f4 20 4f 66 66 |%=.tiff(4):. Off| 00008410 73 65 74 20 74 6f 20 66 69 72 73 74 20 49 46 44 |set to first IFD| 00008420 0d 1a b8 27 f2 69 70 74 72 28 31 2c 6f 66 66 46 |...'.iptr(1,offF| 00008430 49 46 44 25 29 3a f4 20 47 6f 20 74 6f 20 66 69 |IFD%):. Go to fi| 00008440 72 73 74 20 49 46 44 0d 1a c2 2d 65 6e 74 72 69 |rst IFD...-entri| 00008450 65 73 25 3d a4 74 69 66 66 28 33 29 3a f4 20 4e |es%=.tiff(3):. N| 00008460 75 6d 62 65 72 20 6f 66 20 49 46 44 20 65 6e 74 |umber of IFD ent| 00008470 72 69 65 73 0d 1a cc 1f 49 6e 50 61 6c 25 28 29 |ries....InPal%()| 00008480 3d 30 3a f4 20 4e 6f 20 70 61 6c 65 74 74 65 20 |=0:. No palette | 00008490 79 65 74 0d 1a d6 31 6f 6b 3d b9 3a f4 20 46 6c |yet...1ok=.:. Fl| 000084a0 61 67 20 69 6e 64 69 63 61 74 69 6e 67 20 69 66 |ag indicating if| 000084b0 20 54 49 46 46 20 63 61 6e 20 62 65 20 68 61 6e | TIFF can be han| 000084c0 64 6c 65 64 0d 1a e0 72 72 6f 77 73 70 65 72 73 |dled...rrowspers| 000084d0 74 72 69 70 25 3d 2d 31 3a 62 69 74 73 25 3d 31 |trip%=-1:bits%=1| 000084e0 3a 63 6f 6c 6f 75 72 73 25 3d 32 3a 63 6f 6d 70 |:colours%=2:comp| 000084f0 72 65 73 73 69 6f 6e 25 3d 31 3a 70 6c 61 6e 61 |ression%=1:plana| 00008500 72 25 3d 31 3a 66 69 6c 6c 6f 72 64 65 72 25 3d |r%=1:fillorder%=| 00008510 31 3a 67 72 65 79 75 6e 69 74 25 3d 33 3a 70 69 |1:greyunit%=3:pi| 00008520 78 73 61 6d 70 6c 65 73 25 3d 31 3a f4 20 44 65 |xsamples%=1:. De| 00008530 66 61 75 6c 74 73 0d 1a ea 15 e3 20 65 25 3d 31 |faults..... e%=1| 00008540 20 b8 20 65 6e 74 72 69 65 73 25 0d 1a f4 40 74 | . entries%...@t| 00008550 61 67 25 3d a4 74 69 66 66 28 33 29 3a 74 79 70 |ag%=.tiff(3):typ| 00008560 65 25 3d a4 74 69 66 66 28 33 29 3a 6c 65 6e 67 |e%=.tiff(3):leng| 00008570 74 68 25 3d a4 74 69 66 66 28 34 29 3a f4 20 54 |th%=.tiff(4):. T| 00008580 61 67 20 61 6e 64 20 69 6e 66 6f 0d 1a fe 72 e7 |ag and info...r.| 00008590 74 79 70 65 25 3d 31 20 8c 20 76 61 6c 75 65 25 |type%=1 . value%| 000085a0 3d a4 74 69 66 66 28 31 29 3a f2 69 73 6b 69 70 |=.tiff(1):.iskip| 000085b0 28 31 2c 33 29 20 8b 20 e7 74 79 70 65 25 3d 33 |(1,3) . .type%=3| 000085c0 20 8c 20 76 61 6c 75 65 25 3d a4 74 69 66 66 28 | . value%=.tiff(| 000085d0 33 29 3a f2 69 73 6b 69 70 28 31 2c 32 29 20 8b |3):.iskip(1,2) .| 000085e0 20 76 61 6c 75 65 25 3d a4 74 69 66 66 28 34 29 | value%=.tiff(4)| 000085f0 3a f4 20 52 65 61 64 20 76 61 6c 75 65 0d 1b 08 |:. Read value...| 00008600 36 63 70 74 72 25 3d a4 69 70 74 72 28 31 29 3a |6cptr%=.iptr(1):| 00008610 f4 20 52 65 6d 65 6d 62 65 72 20 63 75 72 72 65 |. Remember curre| 00008620 6e 74 20 70 6f 73 69 74 69 6f 6e 20 69 6e 20 66 |nt position in f| 00008630 69 6c 65 0d 1b 12 0d c8 8e 20 74 61 67 25 20 ca |ile...... tag% .| 00008640 0d 1b 1c 1a 20 c9 20 32 35 36 20 3a 20 77 69 64 |.... . 256 : wid| 00008650 74 68 25 3d 76 61 6c 75 65 25 0d 1b 26 1b 20 c9 |th%=value%..&. .| 00008660 20 32 35 37 20 3a 20 68 65 69 67 68 74 25 3d 76 | 257 : height%=v| 00008670 61 6c 75 65 25 0d 1b 30 2a 20 c9 20 32 35 38 20 |alue%..0* . 258 | 00008680 3a 20 62 69 74 73 25 3d 76 61 6c 75 65 25 3a 63 |: bits%=value%:c| 00008690 6f 6c 6f 75 72 73 25 3d 32 5e 62 69 74 73 25 0d |olours%=2^bits%.| 000086a0 1b 3a 20 20 c9 20 32 35 39 20 3a 20 63 6f 6d 70 |.: . 259 : comp| 000086b0 72 65 73 73 69 6f 6e 25 3d 76 61 6c 75 65 25 0d |ression%=value%.| 000086c0 1b 44 20 20 c9 20 32 36 32 20 3a 20 70 68 6f 74 |.D . 262 : phot| 000086d0 6f 6d 65 74 72 69 63 25 3d 76 61 6c 75 65 25 0d |ometric%=value%.| 000086e0 1b 4e 1e 20 c9 20 32 36 36 20 3a 20 66 69 6c 6c |.N. . 266 : fill| 000086f0 6f 72 64 65 72 25 3d 76 61 6c 75 65 25 0d 1b 58 |order%=value%..X| 00008700 90 20 c9 20 32 37 33 20 3a 20 21 73 74 72 6f 66 |. . 273 : !strof| 00008710 66 3d 6c 65 6e 67 74 68 25 3a e7 6c 65 6e 67 74 |f=length%:.lengt| 00008720 68 25 3d 31 20 8c 20 73 74 72 6f 66 66 21 34 3d |h%=1 . stroff!4=| 00008730 76 61 6c 75 65 25 20 8b 20 f2 69 70 74 72 28 31 |value% . .iptr(1| 00008740 2c 76 61 6c 75 65 25 29 3a 70 25 3d 73 74 72 6f |,value%):p%=stro| 00008750 66 66 2b 34 3a e3 20 73 25 3d 31 20 b8 20 6c 65 |ff+4:. s%=1 . le| 00008760 6e 67 74 68 25 3a 21 70 25 3d a4 74 69 66 66 28 |ngth%:!p%=.tiff(| 00008770 74 79 70 65 25 29 3a 70 25 2b 3d 34 3a ed 3a f2 |type%):p%+=4:.:.| 00008780 69 70 74 72 28 31 2c 63 70 74 72 25 29 0d 1b 62 |iptr(1,cptr%)..b| 00008790 1f 20 c9 20 32 37 37 20 3a 20 70 69 78 73 61 6d |. . 277 : pixsam| 000087a0 70 6c 65 73 25 3d 76 61 6c 75 65 25 0d 1b 6c 21 |ples%=value%..l!| 000087b0 20 c9 20 32 37 38 20 3a 20 72 6f 77 73 70 65 72 | . 278 : rowsper| 000087c0 73 74 72 69 70 25 3d 76 61 6c 75 65 25 0d 1b 76 |strip%=value%..v| 000087d0 1b 20 c9 20 32 38 34 20 3a 20 70 6c 61 6e 61 72 |. . 284 : planar| 000087e0 25 3d 76 61 6c 75 65 25 0d 1b 80 1d 20 c9 20 32 |%=value%.... . 2| 000087f0 39 30 20 3a 20 67 72 65 79 75 6e 69 74 25 3d 76 |90 : greyunit%=v| 00008800 61 6c 75 65 25 0d 1b 8a a0 20 c9 20 32 39 31 20 |alue%.... . 291 | 00008810 3a 20 f2 69 70 74 72 28 31 2c 76 61 6c 75 65 25 |: .iptr(1,value%| 00008820 29 3a 64 69 76 25 3d 32 2a 31 30 5e 67 72 65 79 |):div%=2*10^grey| 00008830 75 6e 69 74 25 3a e3 20 67 25 3d 31 20 b8 20 6c |unit%:. g%=1 . l| 00008840 65 6e 67 74 68 25 3a 63 25 3d a4 74 69 66 66 28 |ength%:c%=.tiff(| 00008850 74 79 70 65 25 29 2a 32 35 35 3a 69 25 3d 63 25 |type%)*255:i%=c%| 00008860 2f 64 69 76 25 3a 49 6e 50 61 6c 25 28 67 25 29 |/div%:InPal%(g%)| 00008870 3d 69 25 2b 28 69 25 3c 3c 38 29 2b 28 69 25 3c |=i%+(i%<<8)+(i%<| 00008880 3c 31 36 29 3a ed 3a 49 6e 50 61 6c 25 28 30 29 |<16):.:InPal%(0)| 00008890 3d 62 69 74 73 25 3a f2 69 70 74 72 28 31 2c 63 |=bits%:.iptr(1,c| 000088a0 70 74 72 25 29 0d 1b 94 9b 20 c9 20 33 32 30 20 |ptr%).... . 320 | 000088b0 3a 20 f2 69 70 74 72 28 31 2c 76 61 6c 75 65 25 |: .iptr(1,value%| 000088c0 29 3a 49 6e 50 61 6c 25 28 29 3d 30 3a e3 20 70 |):InPal%()=0:. p| 000088d0 25 3d 31 20 b8 20 33 3a e3 20 63 25 3d 31 20 b8 |%=1 . 3:. c%=1 .| 000088e0 20 6c 65 6e 67 74 68 25 81 33 3a 76 25 3d a4 74 | length%.3:v%=.t| 000088f0 69 66 66 28 74 79 70 65 25 29 3a 49 6e 50 61 6c |iff(type%):InPal| 00008900 25 28 63 25 29 3d 28 49 6e 50 61 6c 25 28 63 25 |%(c%)=(InPal%(c%| 00008910 29 3c 3c 38 29 2b 28 76 25 3e 3e 38 29 3a ed 3a |)<<8)+(v%>>8):.:| 00008920 ed 3a 49 6e 50 61 6c 25 28 30 29 3d 62 69 74 73 |.:InPal%(0)=bits| 00008930 25 3a f2 69 70 74 72 28 31 2c 63 70 74 72 25 29 |%:.iptr(1,cptr%)| 00008940 0d 1b 9e 05 cb 0d 1b a8 05 ed 0d 1b b2 2d e7 72 |.............-.r| 00008950 6f 77 73 70 65 72 73 74 72 69 70 25 3d 2d 31 20 |owsperstrip%=-1 | 00008960 8c 20 72 6f 77 73 70 65 72 73 74 72 69 70 25 3d |. rowsperstrip%=| 00008970 68 65 69 67 68 74 25 0d 1b bc 4f e7 63 6f 6d 70 |height%...O.comp| 00008980 72 65 73 73 69 6f 6e 25 3c 3e 31 20 8c 20 f2 65 |ression%<>1 . .e| 00008990 72 72 6f 72 28 2d 31 2c 22 49 20 63 61 6e 6e 6f |rror(-1,"I canno| 000089a0 74 20 68 61 6e 64 6c 65 20 63 6f 6d 70 72 65 73 |t handle compres| 000089b0 73 65 64 20 54 49 46 46 20 69 6d 61 67 65 73 20 |sed TIFF images | 000089c0 21 22 29 3a 3d a3 0d 1b c6 7d e7 28 62 69 74 73 |!"):=....}.(bits| 000089d0 25 3d 31 29 84 28 62 69 74 73 25 3d 32 29 84 28 |%=1).(bits%=2).(| 000089e0 62 69 74 73 25 3d 34 29 84 28 62 69 74 73 25 3d |bits%=4).(bits%=| 000089f0 38 29 20 8b 20 f2 65 72 72 6f 72 28 2d 31 2c 22 |8) . .error(-1,"| 00008a00 49 20 63 61 6e 20 6f 6e 6c 79 20 68 61 6e 64 6c |I can only handl| 00008a10 65 20 54 49 46 46 20 69 6d 61 67 65 73 20 77 69 |e TIFF images wi| 00008a20 74 68 20 31 2c 32 2c 34 20 6f 72 20 38 20 62 69 |th 1,2,4 or 8 bi| 00008a30 74 73 20 70 65 72 20 70 69 78 65 6c 20 21 22 29 |ts per pixel !")| 00008a40 3a 3d a3 0d 1b d0 54 e7 70 6c 61 6e 61 72 25 3c |:=....T.planar%<| 00008a50 3e 31 20 8c 20 f2 65 72 72 6f 72 28 2d 31 2c 22 |>1 . .error(-1,"| 00008a60 49 20 63 61 6e 6e 6f 74 20 68 61 6e 64 6c 65 20 |I cannot handle | 00008a70 54 49 46 46 20 69 6d 61 67 65 73 20 77 69 74 68 |TIFF images with| 00008a80 20 6d 75 6c 74 69 70 6c 65 20 70 6c 61 6e 65 73 | multiple planes| 00008a90 20 21 22 29 3a 3d a3 0d 1b da 67 e7 70 69 78 73 | !"):=....g.pixs| 00008aa0 61 6d 70 6c 65 73 25 3c 3e 31 20 8c 20 f2 65 72 |amples%<>1 . .er| 00008ab0 72 6f 72 28 2d 31 2c 22 49 20 63 61 6e 6e 6f 74 |ror(-1,"I cannot| 00008ac0 20 68 61 6e 64 6c 65 20 54 49 46 46 20 69 6d 61 | handle TIFF ima| 00008ad0 67 65 73 20 77 69 74 68 20 6d 6f 72 65 20 74 68 |ges with more th| 00008ae0 61 6e 20 6f 6e 65 20 73 61 6d 70 6c 65 20 70 65 |an one sample pe| 00008af0 72 20 70 69 78 65 6c 20 21 22 29 3a 3d a3 0d 1b |r pixel !"):=...| 00008b00 e4 56 e7 49 6e 50 61 6c 25 28 30 29 3c 3e 30 20 |.V.InPal%(0)<>0 | 00008b10 8b 20 e7 70 68 6f 74 6f 6d 65 74 72 69 63 25 3d |. .photometric%=| 00008b20 30 20 8c 20 f2 67 72 65 79 5f 70 61 6c 65 74 74 |0 . .grey_palett| 00008b30 65 28 62 69 74 73 25 2c 2d 31 29 20 8b 20 f2 67 |e(bits%,-1) . .g| 00008b40 72 65 79 5f 70 61 6c 65 74 74 65 28 62 69 74 73 |rey_palette(bits| 00008b50 25 2c 31 29 0d 1b ee 39 6d 6f 64 65 25 3d a4 6d |%,1)...9mode%=.m| 00008b60 6f 64 65 28 77 69 64 74 68 25 2c 68 65 69 67 68 |ode(width%,heigh| 00008b70 74 25 2c 63 6f 6c 6f 75 72 73 25 29 3a f4 20 44 |t%,colours%):. D| 00008b80 65 74 65 72 6d 69 6e 65 20 6d 6f 64 65 0d 1b f8 |etermine mode...| 00008b90 2c e7 a4 6e 65 77 5f 69 6d 61 67 65 28 6d 6f 64 |,..new_image(mod| 00008ba0 65 25 2c 77 69 64 74 68 25 2c 68 65 69 67 68 74 |e%,width%,height| 00008bb0 25 2c 30 29 20 8b 20 3d a3 0d 1c 02 38 e7 70 68 |%,0) . =....8.ph| 00008bc0 6f 74 6f 6d 65 74 72 69 63 25 3d 33 20 8c 20 63 |otometric%=3 . c| 00008bd0 6f 64 65 25 3d 30 20 8b 20 63 6f 64 65 25 3d 31 |ode%=0 . code%=1| 00008be0 3a f4 20 43 6f 6c 6f 75 72 20 6f 72 20 67 72 65 |:. Colour or gre| 00008bf0 79 0d 1c 0c 4a f2 69 6d 61 67 65 5f 69 6e 66 6f |y...J.image_info| 00008c00 28 22 54 49 46 46 22 2c 77 69 64 74 68 25 2c 68 |("TIFF",width%,h| 00008c10 65 69 67 68 74 25 2c 63 6f 64 65 25 2c 62 69 74 |eight%,code%,bit| 00008c20 73 25 2c 6d 6f 64 65 25 2c 22 22 2c 22 22 2c 46 |s%,mode%,"","",F| 00008c30 6c 65 6e 25 2c 46 6c 65 6e 25 29 0d 1c 16 92 f2 |len%,Flen%).....| 00008c40 76 61 72 28 22 66 70 74 72 22 2c 30 29 3a f2 76 |var("fptr",0):.v| 00008c50 61 72 28 22 77 69 64 74 22 2c 77 69 64 74 68 25 |ar("widt",width%| 00008c60 29 3a f2 76 61 72 28 22 68 65 69 67 22 2c 68 65 |):.var("heig",he| 00008c70 69 67 68 74 25 29 3a f2 76 61 72 28 22 6d 61 70 |ight%):.var("map| 00008c80 31 22 2c 73 74 72 6f 66 66 29 3a f2 76 61 72 28 |1",stroff):.var(| 00008c90 22 72 6f 70 73 22 2c 72 6f 77 73 70 65 72 73 74 |"rops",rowsperst| 00008ca0 72 69 70 25 29 3a f2 76 61 72 28 22 62 69 74 6f |rip%):.var("bito| 00008cb0 22 2c 66 69 6c 6c 6f 72 64 65 72 25 29 3a f2 75 |",fillorder%):.u| 00008cc0 6e 70 61 63 6b 28 22 54 49 46 46 22 29 0d 1c 20 |npack("TIFF").. | 00008cd0 15 49 6d 67 4d 6f 64 65 25 3d 6d 6f 64 65 25 3a |.ImgMode%=mode%:| 00008ce0 3d b9 0d 1c 2a 05 20 0d 1c 34 11 dd a4 74 69 66 |=...*. ..4...tif| 00008cf0 66 28 74 79 70 65 25 29 0d 1c 3e 1c f4 20 52 65 |f(type%)..>.. Re| 00008d00 74 75 72 6e 73 20 74 69 66 66 20 64 61 74 61 20 |turns tiff data | 00008d10 74 79 70 65 0d 1c 48 0b ea 20 69 24 2c 62 25 0d |type..H.. i$,b%.| 00008d20 1c 52 0e c8 8e 20 74 79 70 65 25 20 ca 0d 1c 5c |.R... type% ...\| 00008d30 12 20 c9 20 31 20 3a 20 3d a4 69 31 28 31 29 0d |. . 1 : =.i1(1).| 00008d40 1c 66 3b 20 c9 20 32 20 3a 20 69 24 3d 22 22 3a |.f; . 2 : i$="":| 00008d50 62 25 3d a4 69 31 28 31 29 3a c8 95 20 62 25 3c |b%=.i1(1):.. b%<| 00008d60 3e 30 3a 69 24 2b 3d bd 62 25 3a 62 25 3d a4 69 |>0:i$+=.b%:b%=.i| 00008d70 31 28 31 29 3a ce 3a 3d 69 24 0d 1c 70 12 20 c9 |1(1):.:=i$..p. .| 00008d80 20 33 20 3a 20 3d a4 69 32 28 31 29 0d 1c 7a 12 | 3 : =.i2(1)..z.| 00008d90 20 c9 20 34 20 3a 20 3d a4 69 34 28 31 29 0d 1c | . 4 : =.i4(1)..| 00008da0 84 0d 20 c9 20 35 20 3a 20 3d 30 0d 1c 8e 05 cb |.. . 5 : =0.....| 00008db0 0d 1c 98 06 3d 30 0d 1c a2 05 20 0d 1c ac 0d dd |....=0.... .....| 00008dc0 a4 70 69 63 5f 51 52 54 0d 1c b6 15 f4 20 4d 61 |.pic_QRT..... Ma| 00008dd0 6b 65 73 20 51 52 54 20 69 6d 61 67 65 0d 1c c0 |kes QRT image...| 00008de0 2b 69 54 79 70 65 25 3d 30 3a f4 20 53 65 74 20 |+iType%=0:. Set | 00008df0 6c 6f 77 2d 74 6f 2d 68 69 67 68 20 74 79 70 65 |low-to-high type| 00008e00 20 6f 66 20 64 61 74 61 0d 1c ca 32 77 69 64 74 | of data...2widt| 00008e10 68 25 3d a4 69 32 28 31 29 3a 68 65 69 67 68 74 |h%=.i2(1):height| 00008e20 25 3d a4 69 32 28 31 29 3a f4 20 52 65 61 64 20 |%=.i2(1):. Read | 00008e30 72 65 73 6f 6c 75 74 69 6f 6e 0d 1c d4 34 6d 6f |resolution...4mo| 00008e40 64 65 25 3d a4 6d 6f 64 65 28 77 69 64 74 68 25 |de%=.mode(width%| 00008e50 2c 68 65 69 67 68 74 25 2c 32 35 36 29 3a f4 20 |,height%,256):. | 00008e60 44 65 74 65 72 6d 69 6e 65 20 6d 6f 64 65 0d 1c |Determine mode..| 00008e70 de 2c e7 a4 6e 65 77 5f 69 6d 61 67 65 28 6d 6f |.,..new_image(mo| 00008e80 64 65 25 2c 77 69 64 74 68 25 2c 68 65 69 67 68 |de%,width%,heigh| 00008e90 74 25 2c 30 29 20 8b 20 3d a3 0d 1c e8 2e 49 6e |t%,0) . =.....In| 00008ea0 50 61 6c 25 28 30 29 3d 32 34 3a f4 20 4e 6f 20 |Pal%(0)=24:. No | 00008eb0 70 61 6c 65 74 74 65 2c 20 70 75 72 65 20 32 34 |palette, pure 24| 00008ec0 2d 62 69 74 20 52 47 42 0d 1c f2 46 f2 69 6d 61 |-bit RGB...F.ima| 00008ed0 67 65 5f 69 6e 66 6f 28 22 51 52 54 20 52 41 57 |ge_info("QRT RAW| 00008ee0 22 2c 77 69 64 74 68 25 2c 68 65 69 67 68 74 25 |",width%,height%| 00008ef0 2c 32 2c 32 34 2c 6d 6f 64 65 25 2c 22 22 2c 22 |,2,24,mode%,"","| 00008f00 22 2c 46 6c 65 6e 25 2c 46 6c 65 6e 25 29 0d 1c |",Flen%,Flen%)..| 00008f10 fc 4a f2 76 61 72 28 22 66 70 74 72 22 2c 34 29 |.J.var("fptr",4)| 00008f20 3a f2 76 61 72 28 22 77 69 64 74 22 2c 77 69 64 |:.var("widt",wid| 00008f30 74 68 25 29 3a f2 76 61 72 28 22 68 65 69 67 22 |th%):.var("heig"| 00008f40 2c 68 65 69 67 68 74 25 29 3a f2 75 6e 70 61 63 |,height%):.unpac| 00008f50 6b 28 22 51 52 54 22 29 0d 1d 06 15 49 6d 67 4d |k("QRT")....ImgM| 00008f60 6f 64 65 25 3d 6d 6f 64 65 25 3a 3d b9 0d 1d 10 |ode%=mode%:=....| 00008f70 05 20 0d 1d 1a 0f dd a4 70 69 63 5f 41 52 56 49 |. ......pic_ARVI| 00008f80 53 0d 1d 24 17 f4 20 4d 61 6b 65 73 20 41 72 56 |S..$.. Makes ArV| 00008f90 69 73 20 69 6d 61 67 65 0d 1d 2e 2b 69 54 79 70 |is image...+iTyp| 00008fa0 65 25 3d 30 3a f4 20 53 65 74 20 6c 6f 77 2d 74 |e%=0:. Set low-t| 00008fb0 6f 2d 68 69 67 68 20 74 79 70 65 20 6f 66 20 64 |o-high type of d| 00008fc0 61 74 61 0d 1d 38 67 f2 69 70 74 72 28 31 2c 34 |ata..8g.iptr(1,4| 00008fd0 29 3a f2 69 70 74 72 28 31 2c a4 2c a4 2c 31 29 |):.iptr(1,.,.,1)| 00008fe0 2d 34 29 3a f2 69 73 6b 69 70 28 31 2c 31 36 29 |-4):.iskip(1,16)| 00008ff0 3a 77 69 64 74 68 25 3d a4 69 34 28 31 29 2a 34 |:width%=.i4(1)*4| 00009000 2b 34 3a 68 65 69 67 68 74 25 3d a4 68 65 69 67 |+4:height%=.heig| 00009010 68 74 25 3d a4 68 31 29 2b 31 3a f4 20 47 65 74 |ht%=.h1)+1:. Get| 00009020 20 77 69 64 74 68 20 61 6e 64 20 68 65 69 67 68 | width and heigh| 00009030 74 0d 1d 42 75 f2 69 73 6b 69 70 28 31 2c 38 29 |t..Bu.iskip(1,8)| 00009040 3a f2 69 73 6b 69 70 28 31 2c a4 2c a4 2c 31 29 |:.iskip(1,.,.,1)| 00009050 2d 33 36 29 3a f2 69 70 74 72 28 32 2c 34 29 3a |-36):.iptr(2,4):| 00009060 f2 69 70 74 72 28 32 2c a4 2c a4 2c 32 29 2d 34 |.iptr(2,.,.,2)-4| 00009070 29 3a f2 69 73 6b 69 70 28 32 2c 33 32 29 3a f2 |):.iskip(2,32):.| 00009080 69 73 6b 69 70 28 32 2c a4 2c a4 2c 32 29 2d 33 |iskip(2,.,.,2)-3| 00009090 36 29 3a f4 20 47 6f 20 74 6f 20 73 70 72 69 74 |6):. Go to sprit| 000090a0 65 20 64 61 74 61 0d 1d 4c 2d 63 6f 6c 62 69 74 |e data..L-colbit| 000090b0 73 25 3d 31 35 3a 63 6f 6c 6f 75 72 73 25 3d 32 |s%=15:colours%=2| 000090c0 5e 63 6f 6c 62 69 74 73 25 3a f4 20 43 6f 6c 6f |^colbits%:. Colo| 000090d0 75 72 73 0d 1d 56 34 6d 6f 64 65 25 3d a4 6d 6f |urs..V4mode%=.mo| 000090e0 64 65 28 77 69 64 74 68 25 2c 68 65 69 67 68 74 |de(width%,height| 000090f0 25 2c 32 35 36 29 3a f4 20 44 65 74 65 72 6d 69 |%,256):. Determi| 00009100 6e 65 20 6d 6f 64 65 0d 1d 60 2c e7 a4 6e 65 77 |ne mode..`,..new| 00009110 5f 69 6d 61 67 65 28 6d 6f 64 65 25 2c 77 69 64 |_image(mode%,wid| 00009120 74 68 25 2c 68 65 69 67 68 74 25 2c 30 29 20 8b |th%,height%,0) .| 00009130 20 3d a3 0d 1d 6a 2e 49 6e 50 61 6c 25 28 30 29 | =...j.InPal%(0)| 00009140 3d 31 35 3a f4 20 4e 6f 20 70 61 6c 65 74 74 65 |=15:. No palette| 00009150 2c 20 70 75 72 65 20 31 35 2d 62 69 74 20 52 47 |, pure 15-bit RG| 00009160 42 0d 1d 74 44 f2 69 6d 61 67 65 5f 69 6e 66 6f |B..tD.image_info| 00009170 28 22 41 72 56 69 73 22 2c 77 69 64 74 68 25 2c |("ArVis",width%,| 00009180 68 65 69 67 68 74 25 2c 32 2c 31 35 2c 6d 6f 64 |height%,2,15,mod| 00009190 65 25 2c 22 22 2c 22 22 2c 46 6c 65 6e 25 2c 46 |e%,"","",Flen%,F| 000091a0 6c 65 6e 25 29 0d 1d 7e 69 f2 76 61 72 28 22 66 |len%)..~i.var("f| 000091b0 70 74 72 22 2c a4 69 70 74 72 28 31 29 29 3a f2 |ptr",.iptr(1)):.| 000091c0 76 61 72 28 22 66 70 74 32 22 2c a4 69 70 74 72 |var("fpt2",.iptr| 000091d0 28 32 29 29 3a f2 76 61 72 28 22 77 69 64 74 22 |(2)):.var("widt"| 000091e0 2c 77 69 64 74 68 25 29 3a f2 76 61 72 28 22 68 |,width%):.var("h| 000091f0 65 69 67 22 2c 68 65 69 67 68 74 25 29 3a f2 75 |eig",height%):.u| 00009200 6e 70 61 63 6b 28 22 41 52 56 49 53 22 29 0d 1d |npack("ARVIS")..| 00009210 88 15 49 6d 67 4d 6f 64 65 25 3d 6d 6f 64 65 25 |..ImgMode%=mode%| 00009220 3a 3d b9 0d 1d 92 05 20 0d 1d 9c 0f dd a4 70 69 |:=..... ......pi| 00009230 63 5f 43 4c 45 41 52 0d 1d a6 17 f4 20 4d 61 6b |c_CLEAR..... Mak| 00009240 65 73 20 43 6c 65 61 72 20 69 6d 61 67 65 0d 1d |es Clear image..| 00009250 b0 2b 69 54 79 70 65 25 3d 30 3a f4 20 53 65 74 |.+iType%=0:. Set| 00009260 20 6c 6f 77 2d 74 6f 2d 68 69 67 68 20 74 79 70 | low-to-high typ| 00009270 65 20 6f 66 20 64 61 74 61 0d 1d ba 3f 6d 61 6b |e of data...?mak| 00009280 65 72 24 3d a4 69 73 74 72 69 6e 67 28 31 2c 2d |er$=.istring(1,-| 00009290 31 29 3a 76 65 72 73 69 6f 6e 25 3d a4 69 34 28 |1):version%=.i4(| 000092a0 31 29 3a f4 20 43 72 65 61 74 6f 72 20 69 6e 66 |1):. Creator inf| 000092b0 6f 72 6d 61 74 69 6f 6e 0d 1d c4 42 77 69 64 74 |ormation...Bwidt| 000092c0 68 25 3d a4 69 34 28 31 29 3a 68 65 69 67 68 74 |h%=.i4(1):height| 000092d0 25 3d a4 68 65 69 67 68 74 25 3d a4 68 31 29 3a |%=.height%=.h1):| 000092e0 62 69 74 73 25 3d a4 69 34 28 31 29 3a f4 20 57 |bits%=.i4(1):. W| 000092f0 69 64 74 68 2c 20 68 65 69 67 68 74 2c 20 62 70 |idth, height, bp| 00009300 70 0d 1d ce 7e e7 62 69 74 73 25 3c 3d 38 20 8c |p...~.bits%<=8 .| 00009310 20 63 6f 6c 62 69 74 73 25 3d 62 69 74 73 25 3a | colbits%=bits%:| 00009320 e3 20 63 25 3d 31 20 b8 20 32 5e 62 69 74 73 25 |. c%=1 . 2^bits%| 00009330 3a 72 67 62 25 3d a4 69 33 28 31 29 3a 49 6e 50 |:rgb%=.i3(1):InP| 00009340 61 6c 25 28 63 25 29 3d 28 72 67 62 25 80 26 46 |al%(c%)=(rgb%.&F| 00009350 46 30 30 29 2b 28 72 67 62 25 3e 3e 31 36 29 2b |F00)+(rgb%>>16)+| 00009360 28 28 72 67 62 25 80 26 46 46 29 3c 3c 31 36 29 |((rgb%.&FF)<<16)| 00009370 3a ed 20 8b 20 63 6f 6c 62 69 74 73 25 3d 38 0d |:. . colbits%=8.| 00009380 1d d8 24 49 6e 50 61 6c 25 28 30 29 3d 62 69 74 |..$InPal%(0)=bit| 00009390 73 25 3a f4 20 42 69 74 73 20 70 65 72 20 70 69 |s%:. Bits per pi| 000093a0 78 65 6c 0d 1d e2 3b 6d 6f 64 65 25 3d a4 6d 6f |xel...;mode%=.mo| 000093b0 64 65 28 77 69 64 74 68 25 2c 68 65 69 67 68 74 |de(width%,height| 000093c0 25 2c 32 5e 63 6f 6c 62 69 74 73 25 29 3a f4 20 |%,2^colbits%):. | 000093d0 44 65 74 65 72 6d 69 6e 65 20 6d 6f 64 65 0d 1d |Determine mode..| 000093e0 ec 2c e7 a4 6e 65 77 5f 69 6d 61 67 65 28 6d 6f |.,..new_image(mo| 000093f0 64 65 25 2c 77 69 64 74 68 25 2c 68 65 69 67 68 |de%,width%,heigh| 00009400 74 25 2c 30 29 20 8b 20 3d a3 0d 1d f6 85 f2 69 |t%,0) . =......i| 00009410 6d 61 67 65 5f 69 6e 66 6f 28 22 43 6c 65 61 72 |mage_info("Clear| 00009420 22 2c 77 69 64 74 68 25 2c 68 65 69 67 68 74 25 |",width%,height%| 00009430 2c 63 6f 64 65 25 2c 62 69 74 73 25 2c 6d 6f 64 |,code%,bits%,mod| 00009440 65 25 2c 22 22 2c 22 62 79 20 22 2b 6d 61 6b 65 |e%,"","by "+make| 00009450 72 24 2b 22 20 22 2b c3 28 76 65 72 73 69 6f 6e |r$+" "+.(version| 00009460 25 81 31 30 30 29 2b 22 2e 22 2b c2 22 30 22 2b |%.100)+"."+."0"+| 00009470 c3 28 76 65 72 73 69 6f 6e 25 83 31 30 30 29 2c |.(version%.100),| 00009480 32 29 2c 46 6c 65 6e 25 2c 46 6c 65 6e 25 29 0d |2),Flen%,Flen%).| 00009490 1e 00 53 f2 76 61 72 28 22 66 70 74 72 22 2c a4 |..S.var("fptr",.| 000094a0 69 70 74 72 28 31 29 29 3a f2 76 61 72 28 22 77 |iptr(1)):.var("w| 000094b0 69 64 74 22 2c 77 69 64 74 68 25 29 3a f2 76 61 |idt",width%):.va| 000094c0 72 28 22 68 65 69 67 22 2c 68 65 69 67 68 74 25 |r("heig",height%| 000094d0 29 3a f2 75 6e 70 61 63 6b 28 22 43 4c 45 41 52 |):.unpack("CLEAR| 000094e0 22 29 0d 1e 0a 15 49 6d 67 4d 6f 64 65 25 3d 6d |")....ImgMode%=m| 000094f0 6f 64 65 25 3a 3d b9 0d 1e 14 05 20 0d 1e 1e 59 |ode%:=..... ...Y| 00009500 dd f2 69 6d 61 67 65 5f 69 6e 66 6f 28 74 79 70 |..image_info(typ| 00009510 65 24 2c 77 69 64 74 68 25 2c 68 65 69 67 68 74 |e$,width%,height| 00009520 25 2c 63 6f 64 65 25 2c 63 6f 6c 62 69 74 73 25 |%,code%,colbits%| 00009530 2c 6d 6f 64 65 25 2c 63 6f 6d 70 72 24 2c 69 6e |,mode%,compr$,in| 00009540 66 6f 24 2c 64 61 74 61 6c 65 6e 25 2c 70 69 63 |fo$,datalen%,pic| 00009550 6c 65 6e 25 29 0d 1e 28 26 f4 20 53 65 74 73 20 |len%)..(&. Sets | 00009560 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 |information abou| 00009570 74 20 74 68 65 20 69 6d 61 67 65 0d 1e 32 1d ea |t the image..2..| 00009580 20 66 61 63 74 6f 72 25 2c 77 25 2c 68 25 2c 63 | factor%,w%,h%,c| 00009590 25 2c 69 25 2c 69 64 24 0d 1e 3c 46 49 6d 67 57 |%,i%,id$..<FImgW| 000095a0 25 3d 77 69 64 74 68 25 3a 49 6d 67 48 25 3d 68 |%=width%:ImgH%=h| 000095b0 65 69 67 68 74 25 3a 49 6d 67 42 69 74 73 25 3d |eight%:ImgBits%=| 000095c0 63 6f 6c 62 69 74 73 25 3a f4 20 52 65 67 69 73 |colbits%:. Regis| 000095d0 74 65 72 20 72 65 73 6f 6c 75 74 69 6f 6e 0d 1e |ter resolution..| 000095e0 46 1f 24 49 4d 49 66 6e 25 3d 4c 65 61 66 24 3a |F.$IMIfn%=Leaf$:| 000095f0 24 49 4d 49 69 74 25 3d 74 79 70 65 24 0d 1e 50 |$IMIit%=type$..P| 00009600 2b e7 69 6e 66 6f 24 3d 22 22 20 8c 20 24 49 4d |+.info$="" . $IM| 00009610 49 69 6e 25 3d 22 2d 22 20 8b 20 24 49 4d 49 69 |Iin%="-" . $IMIi| 00009620 6e 25 3d 69 6e 66 6f 24 0d 1e 5a 1b 24 49 4d 49 |n%=info$..Z.$IMI| 00009630 69 66 25 3d c3 46 6c 65 6e 25 2b 22 20 62 79 74 |if%=.Flen%+" byt| 00009640 65 73 22 0d 1e 64 6e e7 63 6f 6d 70 72 24 3d 22 |es"..dn.compr$="| 00009650 22 20 8c 20 24 49 4d 49 63 6f 25 3d 22 4e 6f 6e |" . $IMIco%="Non| 00009660 65 20 28 30 25 29 22 20 8b 20 66 61 63 74 6f 72 |e (0%)" . factor| 00009670 25 3d 31 30 30 2d a8 28 31 30 30 2a 28 64 61 74 |%=100-.(100*(dat| 00009680 61 6c 65 6e 25 2f 70 69 63 6c 65 6e 25 29 29 3a |alen%/piclen%)):| 00009690 24 49 4d 49 63 6f 25 3d 63 6f 6d 70 72 24 2b 22 |$IMIco%=compr$+"| 000096a0 20 28 22 2b c3 66 61 63 74 6f 72 25 2b 22 25 29 | ("+.factor%+"%)| 000096b0 22 0d 1e 6e 2c 24 49 4d 49 77 68 25 3d c3 77 69 |"..n,$IMIwh%=.wi| 000096c0 64 74 68 25 2b 22 20 78 20 22 2b c3 68 65 69 67 |dth%+" x "+.heig| 000096d0 68 74 25 2b 22 20 70 69 78 65 6c 73 22 0d 1e 78 |ht%+" pixels"..x| 000096e0 5d e7 28 77 69 64 74 68 25 3e 53 70 72 57 25 29 |].(width%>SprW%)| 000096f0 84 28 68 65 69 67 68 74 25 3e 53 70 72 48 25 29 |.(height%>SprH%)| 00009700 20 8c 20 24 49 4d 49 73 63 25 3d 22 74 6f 20 22 | . $IMIsc%="to "| 00009710 2b c3 53 70 72 57 25 2b 22 20 78 20 22 2b c3 53 |+.SprW%+" x "+.S| 00009720 70 72 48 25 20 8b 20 24 49 4d 49 73 63 25 3d 22 |prH% . $IMIsc%="| 00009730 46 75 6c 6c 20 73 69 7a 65 22 0d 1e 82 43 24 49 |Full size"...C$I| 00009740 4d 49 62 70 25 3d c3 28 63 6f 6c 62 69 74 73 25 |MIbp%=.(colbits%| 00009750 29 2b 22 2d 62 69 74 20 22 2b c1 22 63 6f 6c 6f |)+"-bit "+."colo| 00009760 75 72 20 20 67 72 65 79 20 20 20 20 52 47 42 22 |ur grey RGB"| 00009770 2c 31 2b 63 6f 64 65 25 2a 38 2c 38 29 0d 1e 8c |,1+code%*8,8)...| 00009780 4a f2 6d 6f 64 65 5f 69 6e 66 6f 28 6d 6f 64 65 |J.mode_info(mode| 00009790 25 2c 77 25 2c 68 25 2c 63 25 29 3a 24 49 4d 49 |%,w%,h%,c%):$IMI| 000097a0 73 6d 25 3d c3 6d 6f 64 65 25 2b 22 20 28 22 2b |sm%=.mode%+" ("+| 000097b0 c3 77 25 2b 22 78 22 2b c3 68 25 2b 22 78 22 2b |.w%+"x"+.h%+"x"+| 000097c0 c3 63 25 2b 22 29 22 0d 1e 96 05 e1 0d 1e a0 05 |.c%+")".........| 000097d0 20 0d 1e aa 16 dd f2 6e 65 77 5f 69 6d 61 67 65 | ......new_image| 000097e0 5f 77 69 6e 64 6f 77 0d 1e b4 41 f4 20 43 72 65 |_window...A. Cre| 000097f0 61 74 65 73 20 6e 65 77 20 69 6d 61 67 65 20 77 |ates new image w| 00009800 69 6e 64 6f 77 20 6f 66 20 61 70 70 72 6f 70 69 |indow of appropi| 00009810 61 74 65 20 73 69 7a 65 20 69 6e 20 63 75 72 72 |ate size in curr| 00009820 65 6e 74 20 6d 6f 64 65 0d 1e be 08 ea 20 77 25 |ent mode..... w%| 00009830 0d 1e c8 24 f2 61 75 74 6f 7a 6f 6f 6d 3a f4 20 |...$.autozoom:. | 00009840 41 75 74 6f 20 7a 6f 6f 6d 20 69 66 20 65 6e 61 |Auto zoom if ena| 00009850 62 6c 65 64 0d 1e d2 3f 21 62 6c 6f 63 6b 3d 77 |bled...?!block=w| 00009860 69 6e 5f 69 6d 67 25 3a c8 99 20 57 44 65 6c 65 |in_img%:.. WDele| 00009870 74 65 57 25 2c 2c 62 6c 6f 63 6b 3a f4 20 44 65 |teW%,,block:. De| 00009880 6c 65 74 65 20 6f 6c 64 20 64 65 66 69 6e 69 74 |lete old definit| 00009890 69 6f 6e 0d 1e dc 91 77 25 3d 77 69 6e 64 6f 77 |ion....w%=window| 000098a0 31 3a 21 77 25 3d 30 3a 77 25 21 34 3d 30 3a 77 |1:!w%=0:w%!4=0:w| 000098b0 25 21 38 3d a4 73 70 72 57 3a 77 25 21 31 32 3d |%!8=.sprW:w%!12=| 000098c0 a4 73 70 72 48 3a 77 25 21 32 30 3d a4 73 70 72 |.sprH:w%!20=.spr| 000098d0 48 3a 77 25 21 34 30 3d 30 3a 77 25 21 34 34 3d |H:w%!40=0:w%!44=| 000098e0 30 3a 77 25 21 34 38 3d a4 73 70 72 57 2a 5a 6f |0:w%!48=.sprW*Zo| 000098f0 6f 6d 58 3a 77 25 21 35 32 3d a4 73 70 72 48 2a |omX:w%!52=.sprH*| 00009900 5a 6f 6f 6d 59 3a 24 49 4d 57 74 74 25 3d a4 69 |ZoomY:$IMWtt%=.i| 00009910 6d 61 67 65 5f 74 69 74 6c 65 3a f4 20 52 65 77 |mage_title:. Rew| 00009920 72 69 74 65 0d 1e e6 38 c8 99 20 57 43 72 65 61 |rite...8.. WCrea| 00009930 74 65 57 25 2c 2c 77 69 6e 64 6f 77 31 20 b8 20 |teW%,,window1 . | 00009940 77 69 6e 5f 69 6d 67 25 3a f4 20 43 72 65 61 74 |win_img%:. Creat| 00009950 65 20 6e 65 77 20 77 69 6e 64 6f 77 0d 1e f0 23 |e new window...#| 00009960 e7 49 6d 67 20 8c 20 f2 6f 70 65 6e 5f 77 69 6e |.Img . .open_win| 00009970 64 6f 77 28 77 69 6e 5f 69 6d 67 25 2c 30 29 0d |dow(win_img%,0).| 00009980 1e fa 05 e1 0d 1f 04 05 20 0d 1f 0e 11 dd a4 69 |........ ......i| 00009990 6d 61 67 65 5f 74 69 74 6c 65 0d 1f 18 3a f4 20 |mage_title...:. | 000099a0 52 65 74 75 72 6e 73 20 69 6d 61 67 65 20 77 69 |Returns image wi| 000099b0 6e 64 6f 77 20 74 69 74 6c 65 20 64 65 70 65 6e |ndow title depen| 000099c0 64 69 6e 67 20 6f 6e 20 7a 6f 6f 6d 20 66 61 63 |ding on zoom fac| 000099d0 74 6f 72 73 0d 1f 22 0c ea 20 74 69 74 6c 65 24 |tors..".. title$| 000099e0 0d 1f 2c 19 74 69 74 6c 65 24 3d 22 49 6d 61 67 |..,.title$="Imag| 000099f0 65 22 3a f4 20 42 61 73 65 0d 1f 36 4b e7 5a 6f |e":. Base..6K.Zo| 00009a00 6f 6d 58 3c 31 20 8c 20 74 69 74 6c 65 24 2b 3d |omX<1 . title$+=| 00009a10 22 20 78 2f 22 2b c3 28 31 2f 5a 6f 6f 6d 58 29 |" x/"+.(1/ZoomX)| 00009a20 20 8b 20 e7 5a 6f 6f 6d 58 3e 31 20 8c 20 74 69 | . .ZoomX>1 . ti| 00009a30 74 6c 65 24 2b 3d 22 20 78 2a 22 2b c3 28 5a 6f |tle$+=" x*"+.(Zo| 00009a40 6f 6d 58 29 0d 1f 40 4b e7 5a 6f 6f 6d 59 3c 31 |omX)..@K.ZoomY<1| 00009a50 20 8c 20 74 69 74 6c 65 24 2b 3d 22 20 79 2f 22 | . title$+=" y/"| 00009a60 2b c3 28 31 2f 5a 6f 6f 6d 59 29 20 8b 20 e7 5a |+.(1/ZoomY) . .Z| 00009a70 6f 6f 6d 59 3e 31 20 8c 20 74 69 74 6c 65 24 2b |oomY>1 . title$+| 00009a80 3d 22 20 79 2a 22 2b c3 28 5a 6f 6f 6d 59 29 0d |=" y*"+.(ZoomY).| 00009a90 1f 4a 15 3d 74 69 74 6c 65 24 2b 22 20 22 2b 4c |.J.=title$+" "+L| 00009aa0 6f 61 64 24 0d 1f 54 05 20 0d 1f 5e 28 dd a4 6e |oad$..T. ..^(..n| 00009ab0 65 77 5f 69 6d 61 67 65 28 6d 6f 64 65 25 2c 78 |ew_image(mode%,x| 00009ac0 72 65 73 25 2c 79 72 65 73 25 2c 72 6f 6f 6d 25 |res%,yres%,room%| 00009ad0 29 0d 1f 68 41 f4 20 43 72 65 61 74 65 73 20 72 |)..hA. Creates r| 00009ae0 6f 6f 6d 20 66 6f 72 20 70 69 63 74 75 72 65 20 |oom for picture | 00009af0 73 70 72 69 74 65 20 6f 66 20 73 70 65 63 69 66 |sprite of specif| 00009b00 69 63 20 72 65 73 6f 6c 75 74 69 6f 6e 2f 6d 6f |ic resolution/mo| 00009b10 64 65 0d 1f 72 47 f4 20 61 6e 64 20 70 61 72 74 |de..rG. and part| 00009b20 69 74 69 6f 6e 73 20 6d 65 6d 6f 72 79 20 28 61 |itions memory (a| 00009b30 74 20 6c 65 61 73 74 20 72 6f 6f 6d 25 20 66 72 |t least room% fr| 00009b40 6f 6d 20 73 70 72 69 74 65 20 73 74 61 72 74 20 |om sprite start | 00009b50 74 6f 20 6c 6f 6d 65 6d 29 0d 1f 7c 2d f4 20 52 |to lomem)..|-. R| 00009b60 65 74 75 72 6e 73 20 54 52 55 45 20 69 66 20 61 |eturns TRUE if a| 00009b70 6c 6c 20 69 73 20 77 65 6c 6c 2c 20 65 6c 73 65 |ll is well, else| 00009b80 20 46 41 4c 53 45 0d 1f 86 38 ea 20 62 69 74 73 | FALSE...8. bits| 00009b90 25 2c 77 6f 72 64 73 25 2c 65 6e 64 25 2c 73 69 |%,words%,end%,si| 00009ba0 7a 65 25 2c 63 6f 6c 62 69 74 73 25 2c 73 70 72 |ze%,colbits%,spr| 00009bb0 64 6f 66 66 25 2c 73 70 72 66 6f 66 66 25 0d 1f |doff%,sprfoff%..| 00009bc0 90 3a 79 72 65 73 25 3d 79 72 65 73 25 2a 28 59 |.:yres%=yres%*(Y| 00009bd0 4d 75 6c 25 2f 59 44 69 76 25 29 3a f4 20 41 70 |Mul%/YDiv%):. Ap| 00009be0 70 6c 79 20 73 63 61 6c 69 6e 67 20 66 61 63 74 |ply scaling fact| 00009bf0 6f 72 20 66 6f 72 20 59 0d 1f 9a 3a 78 72 65 73 |or for Y...:xres| 00009c00 25 3d 78 72 65 73 25 2a 28 58 4d 75 6c 25 2f 58 |%=xres%*(XMul%/X| 00009c10 44 69 76 25 29 3a f4 20 41 70 70 6c 79 20 73 63 |Div%):. Apply sc| 00009c20 61 6c 69 6e 67 20 66 61 63 74 6f 72 20 66 6f 72 |aling factor for| 00009c30 20 58 0d 1f a4 60 e7 28 79 72 65 73 25 3c 3d 30 | X...`.(yres%<=0| 00009c40 29 84 28 78 72 65 73 25 3c 3d 30 29 20 8c 20 f2 |).(xres%<=0) . .| 00009c50 65 72 72 6f 72 28 2d 31 2c 22 54 68 65 72 65 20 |error(-1,"There | 00009c60 61 72 65 20 6e 6f 20 70 69 78 65 6c 73 20 6c 65 |are no pixels le| 00009c70 66 74 20 77 69 74 68 20 74 68 65 20 63 75 72 72 |ft with the curr| 00009c80 65 6e 74 20 73 63 61 6c 69 6e 67 20 21 22 29 3a |ent scaling !"):| 00009c90 3d a3 0d 1f ae 32 63 6f 6c 62 69 74 73 25 3d 32 |=....2colbits%=2| 00009ca0 5e a4 6d 6f 64 65 5f 76 61 72 28 6d 6f 64 65 25 |^.mode_var(mode%| 00009cb0 2c 39 29 3a f4 20 42 69 74 73 20 70 65 72 20 70 |,9):. Bits per p| 00009cc0 69 78 65 6c 0d 1f b8 3f 62 69 74 73 25 3d 78 72 |ixel...?bits%=xr| 00009cd0 65 73 25 2a 63 6f 6c 62 69 74 73 25 3a 62 69 74 |es%*colbits%:bit| 00009ce0 73 72 6f 74 25 3d 79 72 65 73 25 2a 63 6f 6c 62 |srot%=yres%*colb| 00009cf0 69 74 73 25 3a f4 20 42 69 74 73 20 70 65 72 20 |its%:. Bits per | 00009d00 72 6f 77 0d 1f c2 43 77 6f 72 64 73 25 3d 28 62 |row...Cwords%=(b| 00009d10 69 74 73 25 2b 33 31 29 3e 3e 35 3a 77 6f 72 64 |its%+31)>>5:word| 00009d20 73 72 6f 74 25 3d 28 62 69 74 73 72 6f 74 25 2b |srot%=(bitsrot%+| 00009d30 33 31 29 3e 3e 35 3a f4 20 57 6f 72 64 73 20 70 |31)>>5:. Words p| 00009d40 65 72 20 72 6f 77 0d 1f cc 2c 73 70 72 64 6f 66 |er row...,sprdof| 00009d50 66 25 3d 34 34 3a 73 70 72 66 6f 66 66 25 3d 53 |f%=44:sprfoff%=S| 00009d60 70 72 69 74 65 25 21 38 3a f4 20 4f 66 66 73 65 |prite%!8:. Offse| 00009d70 74 73 0d 1f d6 29 73 70 74 72 25 3d 53 70 72 69 |ts...)sptr%=Spri| 00009d80 74 65 25 2b 73 70 72 66 6f 66 66 25 3a f4 20 53 |te%+sprfoff%:. S| 00009d90 70 72 69 74 65 20 73 74 61 72 74 0d 1f e0 46 73 |prite start...Fs| 00009da0 69 7a 65 75 70 25 3d 77 6f 72 64 73 25 2a 79 72 |izeup%=words%*yr| 00009db0 65 73 25 3c 3c 32 3a 73 69 7a 65 72 6f 74 25 3d |es%<<2:sizerot%=| 00009dc0 77 6f 72 64 73 72 6f 74 25 2a 78 72 65 73 25 3c |wordsrot%*xres%<| 00009dd0 3c 32 3a f4 20 53 70 72 69 74 65 20 73 69 7a 65 |<2:. Sprite size| 00009de0 73 0d 1f ea 4b 64 61 74 61 73 69 7a 65 25 3d a4 |s...Kdatasize%=.| 00009df0 6d 61 78 28 73 69 7a 65 75 70 25 2c 73 69 7a 65 |max(sizeup%,size| 00009e00 72 6f 74 25 29 3a f4 20 4d 61 78 69 6d 75 6d 20 |rot%):. Maximum | 00009e10 73 70 72 69 74 65 20 73 69 7a 65 20 28 6e 6f 72 |sprite size (nor| 00009e20 6d 61 6c 2f 72 6f 74 61 74 65 64 29 0d 1f f4 38 |mal/rotated)...8| 00009e30 64 61 74 61 73 69 7a 65 25 3d a4 6d 61 78 28 64 |datasize%=.max(d| 00009e40 61 74 61 73 69 7a 65 25 2c 72 6f 6f 6d 25 29 3a |atasize%,room%):| 00009e50 f4 20 4d 6f 72 65 20 72 6f 6f 6d 20 6e 65 65 64 |. More room need| 00009e60 65 64 20 3f 0d 1f fe 46 65 6e 64 25 3d 73 70 74 |ed ?...Fend%=spt| 00009e70 72 25 2b 73 70 72 64 6f 66 66 25 2b 64 61 74 61 |r%+sprdoff%+data| 00009e80 73 69 7a 65 25 3a f4 20 41 64 64 72 65 73 73 20 |size%:. Address | 00009e90 6f 66 20 66 69 72 73 74 20 62 79 74 65 20 61 66 |of first byte af| 00009ea0 74 65 72 20 73 70 72 69 74 65 0d 20 08 84 e7 28 |ter sprite. ...(| 00009eb0 65 6e 64 25 2b 31 30 32 34 29 3e 48 69 6d 65 6d |end%+1024)>Himem| 00009ec0 25 20 8c 20 f2 65 72 72 6f 72 28 2d 31 2c 22 49 |% . .error(-1,"I| 00009ed0 20 63 61 6e 6e 6f 74 20 68 61 6e 64 6c 65 20 74 | cannot handle t| 00009ee0 68 69 73 20 69 6d 61 67 65 2e 20 49 20 6e 65 65 |his image. I nee| 00009ef0 64 20 61 62 6f 75 74 20 22 2b c3 28 28 65 6e 64 |d about "+.((end| 00009f00 25 2b 31 30 32 34 2d 48 69 6d 65 6d 25 2b 31 30 |%+1024-Himem%+10| 00009f10 32 33 29 81 31 30 32 34 29 2b 22 4b 20 6d 6f 72 |23).1024)+"K mor| 00009f20 65 20 6d 65 6d 6f 72 79 2e 22 29 3a 3d a3 0d 20 |e memory."):=.. | 00009f30 12 34 73 70 74 72 25 21 30 3d 73 70 72 64 6f 66 |.4sptr%!0=sprdof| 00009f40 66 25 2b 73 69 7a 65 75 70 25 3a f4 20 4f 66 66 |f%+sizeup%:. Off| 00009f50 73 65 74 20 74 6f 20 6e 65 78 74 20 73 70 72 69 |set to next spri| 00009f60 74 65 0d 20 1c 2c f2 73 70 72 69 74 65 5f 68 65 |te. .,.sprite_he| 00009f70 61 64 65 72 28 31 29 3a f4 20 55 70 64 61 74 65 |ader(1):. Update| 00009f80 20 73 70 72 69 74 65 20 68 65 61 64 65 72 0d 20 | sprite header. | 00009f90 26 30 24 28 73 70 74 72 25 2b 34 29 3d 49 6d 61 |&0$(sptr%+4)=Ima| 00009fa0 67 65 53 70 72 24 2b c4 31 32 2c bd 30 29 3a f4 |geSpr$+.12,.0):.| 00009fb0 20 53 70 72 69 74 65 27 73 20 6e 61 6d 65 0d 20 | Sprite's name. | 00009fc0 30 28 73 70 74 72 25 21 31 36 3d 77 6f 72 64 73 |0(sptr%!16=words| 00009fd0 25 2d 31 3a f4 20 57 69 64 74 68 20 69 6e 20 77 |%-1:. Width in w| 00009fe0 6f 72 64 73 2d 31 0d 20 3a 2c 73 70 74 72 25 21 |ords-1. :,sptr%!| 00009ff0 32 30 3d 79 72 65 73 25 2d 31 3a f4 20 48 65 69 |20=yres%-1:. Hei| 0000a000 67 68 74 20 69 6e 20 73 63 61 6e 6c 69 6e 65 73 |ght in scanlines| 0000a010 2d 31 0d 20 44 3d 73 70 74 72 25 21 32 34 3d 30 |-1. D=sptr%!24=0| 0000a020 3a 73 70 74 72 25 21 32 38 3d 33 31 2d 28 77 6f |:sptr%!28=31-(wo| 0000a030 72 64 73 25 2a 33 32 2d 62 69 74 73 25 29 3a f4 |rds%*32-bits%):.| 0000a040 20 53 74 61 72 74 2f 65 6e 64 20 62 69 74 73 0d | Start/end bits.| 0000a050 20 4e 44 73 70 74 72 25 21 33 32 3d 73 70 72 64 | NDsptr%!32=sprd| 0000a060 6f 66 66 25 3a 73 70 74 72 25 21 33 36 3d 73 70 |off%:sptr%!36=sp| 0000a070 74 72 25 21 33 32 3a f4 20 4f 66 66 73 65 74 20 |tr%!32:. Offset | 0000a080 74 6f 20 73 70 72 69 74 65 20 64 61 74 61 2f 6d |to sprite data/m| 0000a090 61 73 6b 0d 20 58 23 73 70 74 72 25 21 34 30 3d |ask. X#sptr%!40=| 0000a0a0 6d 6f 64 65 25 3a f4 20 4d 6f 64 65 20 6f 66 20 |mode%:. Mode of | 0000a0b0 73 70 72 69 74 65 0d 20 62 48 c8 99 20 22 54 72 |sprite. bH.. "Tr| 0000a0c0 61 6e 73 6c 61 74 6f 72 5f 57 72 69 74 65 57 6f |anslator_WriteWo| 0000a0d0 72 64 73 22 2c 73 70 74 72 25 2b 73 70 72 64 6f |rds",sptr%+sprdo| 0000a0e0 66 66 25 2c 30 2c 73 69 7a 65 75 70 25 3e 3e 32 |ff%,0,sizeup%>>2| 0000a0f0 3a f4 20 57 69 70 65 20 73 70 72 69 74 65 0d 20 |:. Wipe sprite. | 0000a100 6c 34 4c 6f 6d 65 6d 25 3d 65 6e 64 25 3a f4 20 |l4Lomem%=end%:. | 0000a110 45 6e 64 20 6f 66 20 73 70 72 69 74 65 2c 20 73 |End of sprite, s| 0000a120 74 61 72 74 20 6f 66 20 66 72 65 65 20 73 70 61 |tart of free spa| 0000a130 63 65 0d 20 76 39 f2 76 61 72 28 22 6c 6f 6d 65 |ce. v9.var("lome| 0000a140 22 2c 4c 6f 6d 65 6d 25 29 3a f2 76 61 72 28 22 |",Lomem%):.var("| 0000a150 68 69 6d 65 22 2c 48 69 6d 65 6d 25 29 3a f4 20 |hime",Himem%):. | 0000a160 4d 6f 64 75 6c 65 20 69 6e 66 6f 0d 20 80 28 f2 |Module info. .(.| 0000a170 76 61 72 28 22 72 6f 77 6c 22 2c 77 6f 72 64 73 |var("rowl",words| 0000a180 25 3c 3c 32 29 3a f4 20 4d 6f 64 75 6c 65 20 69 |%<<2):. Module i| 0000a190 6e 66 6f 0d 20 8a 27 f2 76 61 72 28 22 6f 75 74 |nfo. .'.var("out| 0000a1a0 62 22 2c 63 6f 6c 62 69 74 73 25 29 3a f4 20 4d |b",colbits%):. M| 0000a1b0 6f 64 75 6c 65 20 69 6e 66 6f 0d 20 94 2d f2 76 |odule info. .-.v| 0000a1c0 61 72 28 22 73 70 72 69 22 2c 73 70 74 72 25 2b |ar("spri",sptr%+| 0000a1d0 73 70 74 72 25 21 33 32 29 3a f4 20 4d 6f 64 75 |sptr%!32):. Modu| 0000a1e0 6c 65 20 69 6e 66 6f 0d 20 9e 4a 53 70 72 43 6f |le info. .JSprCo| 0000a1f0 6c 62 69 74 73 25 3d 63 6f 6c 62 69 74 73 25 3a |lbits%=colbits%:| 0000a200 53 70 72 50 74 72 25 3d 73 70 74 72 25 3a 53 70 |SprPtr%=sptr%:Sp| 0000a210 72 4d 6f 64 65 25 3d 6d 6f 64 65 25 3a f4 20 47 |rMode%=mode%:. G| 0000a220 6c 6f 62 61 6c 20 73 70 72 69 74 65 20 69 6e 66 |lobal sprite inf| 0000a230 6f 0d 20 a8 44 53 70 72 57 25 3d 78 72 65 73 25 |o. .DSprW%=xres%| 0000a240 3a 53 70 72 48 25 3d 79 72 65 73 25 3a f4 20 52 |:SprH%=yres%:. R| 0000a250 65 6d 65 6d 62 65 72 20 73 70 72 69 74 65 27 73 |emember sprite's| 0000a260 20 72 65 73 6f 6c 75 74 69 6f 6e 20 69 6e 20 70 | resolution in p| 0000a270 69 78 65 6c 73 0d 20 b2 49 73 69 7a 65 25 3d 28 |ixels. .Isize%=(| 0000a280 28 48 69 6d 65 6d 25 2d 4c 6f 6d 65 6d 25 29 81 |(Himem%-Lomem%).| 0000a290 32 35 36 29 2a 32 35 36 3a f4 20 53 69 7a 65 20 |256)*256:. Size | 0000a2a0 6f 66 20 66 72 65 65 20 73 70 61 63 65 20 69 6e |of free space in| 0000a2b0 20 73 70 72 69 74 65 20 62 75 66 66 65 72 0d 20 | sprite buffer. | 0000a2c0 bc 06 3d b9 0d 20 c6 05 20 0d 20 d0 1a dd f2 73 |..=.. .. . ....s| 0000a2d0 70 72 69 74 65 5f 68 65 61 64 65 72 28 63 6f 64 |prite_header(cod| 0000a2e0 65 25 29 0d 20 da 48 f4 20 49 6e 69 74 69 61 6c |e%). .H. Initial| 0000a2f0 69 73 65 73 20 28 30 29 20 6f 72 20 75 70 64 61 |ises (0) or upda| 0000a300 74 65 73 20 28 31 29 20 73 70 72 69 74 65 20 61 |tes (1) sprite a| 0000a310 72 65 61 20 68 65 61 64 65 72 20 28 73 70 72 69 |rea header (spri| 0000a320 74 65 20 63 68 61 6e 67 65 64 29 0d 20 e4 0e c8 |te changed). ...| 0000a330 8e 20 63 6f 64 65 25 20 ca 0d 20 ee 36 20 c9 20 |. code% .. .6 . | 0000a340 30 20 3a 20 53 70 72 69 74 65 25 21 30 3d 53 70 |0 : Sprite%!0=Sp| 0000a350 72 69 74 65 73 69 7a 65 25 3a f4 20 53 69 7a 65 |ritesize%:. Size| 0000a360 20 6f 66 20 73 70 72 69 74 65 20 61 72 65 61 0d | of sprite area.| 0000a370 20 f8 44 20 20 20 20 20 20 20 20 20 20 53 70 72 | .D Spr| 0000a380 69 74 65 25 21 34 3d 30 3a 53 70 72 69 74 65 25 |ite%!4=0:Sprite%| 0000a390 21 38 3d 31 36 3a 53 70 72 69 74 65 25 21 31 32 |!8=16:Sprite%!12| 0000a3a0 3d 31 36 3a f4 20 4e 6f 20 73 70 72 69 74 65 20 |=16:. No sprite | 0000a3b0 79 65 74 0d 21 02 3f 20 20 20 20 20 20 20 20 20 |yet.!.? | 0000a3c0 20 48 69 6d 65 6d 25 3d 53 70 72 69 74 65 25 2b | Himem%=Sprite%+| 0000a3d0 53 70 72 69 74 65 73 69 7a 65 25 3a f4 20 45 6e |Spritesize%:. En| 0000a3e0 64 20 6f 66 20 73 70 72 69 74 65 20 62 75 66 66 |d of sprite buff| 0000a3f0 65 72 0d 21 0c 40 20 c9 20 31 20 3a 20 53 70 72 |er.!.@ . 1 : Spr| 0000a400 69 74 65 25 21 34 3d 31 3a 53 70 72 69 74 65 25 |ite%!4=1:Sprite%| 0000a410 21 31 32 3d 53 70 72 69 74 65 25 21 38 2b 21 28 |!12=Sprite%!8+!(| 0000a420 53 70 72 69 74 65 25 2b 53 70 72 69 74 65 25 21 |Sprite%+Sprite%!| 0000a430 38 29 0d 21 16 05 cb 0d 21 20 05 e1 0d 21 2a 05 |8).!....! ...!*.| 0000a440 20 0d 21 34 0d dd f2 68 6f 75 72 5f 6f 6e 0d 21 | .!4...hour_on.!| 0000a450 3e 18 f4 20 54 75 72 6e 73 20 68 6f 75 72 67 6c |>.. Turns hourgl| 0000a460 61 73 73 20 6f 6e 0d 21 48 1a c8 99 20 22 48 6f |ass on.!H... "Ho| 0000a470 75 72 67 6c 61 73 73 5f 53 74 61 72 74 22 2c 34 |urglass_Start",4| 0000a480 0d 21 52 05 e1 0d 21 5c 05 20 0d 21 66 0e dd f2 |.!R...!\. .!f...| 0000a490 68 6f 75 72 5f 6f 66 66 0d 21 70 19 f4 20 54 75 |hour_off.!p.. Tu| 0000a4a0 72 6e 73 20 68 6f 75 72 67 6c 61 73 73 20 6f 66 |rns hourglass of| 0000a4b0 66 0d 21 7a 16 c8 99 20 22 48 6f 75 72 67 6c 61 |f.!z... "Hourgla| 0000a4c0 73 73 5f 4f 66 66 22 0d 21 84 05 e1 0d 21 8e 05 |ss_Off".!....!..| 0000a4d0 20 0d 21 98 1a dd f2 65 64 69 74 5f 70 61 72 74 | .!....edit_part| 0000a4e0 28 73 69 7a 65 2c 70 61 72 74 29 0d 21 a2 37 f4 |(size,part).!.7.| 0000a4f0 20 45 64 69 74 73 20 69 6d 61 67 65 20 73 69 7a | Edits image siz| 0000a500 65 20 61 6e 64 20 70 61 72 74 20 28 69 66 20 65 |e and part (if e| 0000a510 6e 61 62 6c 65 64 20 77 69 74 68 20 66 6c 61 67 |nabled with flag| 0000a520 73 29 0d 21 ac 43 f4 20 52 65 74 75 72 6e 73 20 |s).!.C. Returns | 0000a530 77 69 74 68 20 28 73 63 61 6c 65 64 29 20 69 6d |with (scaled) im| 0000a540 61 67 65 20 69 6e 20 67 72 61 70 68 69 63 73 20 |age in graphics | 0000a550 77 69 6e 64 6f 77 20 72 65 61 64 79 20 66 6f 72 |window ready for| 0000a560 20 73 61 76 65 0d 21 b6 41 ea 20 5f 25 2c 6f 78 | save.!.A. _%,ox| 0000a570 25 2c 6f 79 25 2c 78 25 2c 79 25 2c 62 75 74 25 |%,oy%,x%,y%,but%| 0000a580 2c 78 31 25 2c 78 32 25 2c 79 31 25 2c 79 32 25 |,x1%,x2%,y1%,y2%| 0000a590 2c 78 73 25 2c 79 73 25 2c 73 69 7a 65 78 25 2c |,xs%,ys%,sizex%,| 0000a5a0 73 69 7a 65 79 25 0d 21 c0 22 ea 20 73 70 72 57 |sizey%.!.". sprW| 0000a5b0 25 2c 73 70 72 48 25 2c 70 74 72 24 2c 72 30 2c |%,sprH%,ptr$,r0,| 0000a5c0 72 31 2c 72 32 2c 72 33 0d 21 ca 93 21 70 6f 69 |r1,r2,r3.!..!poi| 0000a5d0 6e 74 65 72 3d 35 31 32 3a 70 6f 69 6e 74 65 72 |nter=512:pointer| 0000a5e0 21 34 3d 30 3a 70 6f 69 6e 74 65 72 21 38 3d 31 |!4=0:pointer!8=1| 0000a5f0 36 3a 70 6f 69 6e 74 65 72 21 31 32 3d 31 36 3a |6:pointer!12=16:| 0000a600 70 74 72 24 3d 22 70 74 72 22 3a c8 99 20 22 4f |ptr$="ptr":.. "O| 0000a610 53 5f 53 70 72 69 74 65 4f 70 22 2c 31 35 2b 32 |S_SpriteOp",15+2| 0000a620 35 36 2c 70 6f 69 6e 74 65 72 2c 70 74 72 24 2c |56,pointer,ptr$,| 0000a630 30 2c 33 32 2c 33 32 2c 31 31 3a f4 20 49 6e 69 |0,32,32,11:. Ini| 0000a640 74 69 61 6c 69 73 65 20 70 6f 69 6e 74 65 72 20 |tialise pointer | 0000a650 73 70 72 69 74 65 20 61 72 65 61 0d 21 d4 b5 c8 |sprite area.!...| 0000a660 99 20 4f 53 53 70 6f 70 25 2c 36 30 2b 32 35 36 |. OSSpop%,60+256| 0000a670 2c 70 6f 69 6e 74 65 72 2c 70 74 72 24 2c 30 20 |,pointer,ptr$,0 | 0000a680 b8 20 72 30 2c 72 31 2c 72 32 2c 72 33 3a ec 20 |. r0,r1,r2,r3:. | 0000a690 30 2c 31 32 34 3a e6 30 2c 33 3a f0 31 2c 30 2c |0,124:.0,3:.1,0,| 0000a6a0 2d 33 32 3a f0 30 2c 30 2c 33 32 3a f0 31 2c 34 |-32:.0,0,32:.1,4| 0000a6b0 30 2c 30 3a f0 30 2c 2d 34 30 2c 30 3a f0 31 2c |0,0:.0,-40,0:.1,| 0000a6c0 36 30 2c 2d 33 30 3a f0 30 2c 2d 36 30 2c 32 36 |60,-30:.0,-60,26| 0000a6d0 3a f0 31 2c 36 30 2c 2d 33 30 3a c8 99 20 4f 53 |:.1,60,-30:.. OS| 0000a6e0 53 70 6f 70 25 2c 72 30 2c 72 31 2c 72 32 2c 72 |Spop%,r0,r1,r2,r| 0000a6f0 33 3a f4 20 50 6c 6f 74 20 61 72 72 6f 77 20 69 |3:. Plot arrow i| 0000a700 6e 20 70 6f 69 6e 74 65 72 20 73 70 72 69 74 65 |n pointer sprite| 0000a710 0d 21 de 3f ef 32 34 2c 30 3b 30 3b 53 63 72 57 |.!.?.24,0;0;ScrW| 0000a720 25 3b 53 63 72 48 25 3b 3a f4 20 57 68 6f 6c 65 |%;ScrH%;:. Whole| 0000a730 20 73 63 72 65 65 6e 20 77 69 6e 64 6f 77 20 66 | screen window f| 0000a740 6f 72 20 69 6d 61 67 65 20 73 70 72 69 74 65 0d |or image sprite.| 0000a750 21 e8 3a 73 70 72 57 25 3d a4 73 70 72 57 3a 73 |!.:sprW%=.sprW:s| 0000a760 70 72 48 25 3d a4 73 70 72 48 3a f4 20 54 72 75 |prH%=.sprH:. Tru| 0000a770 65 20 4f 53 20 73 69 7a 65 20 6f 66 20 69 6d 61 |e OS size of ima| 0000a780 67 65 20 73 70 72 69 74 65 0d 21 f2 2c 78 73 25 |ge sprite.!.,xs%| 0000a790 3d 32 5e a4 6d 6f 64 65 5f 76 61 72 28 eb 2c 34 |=2^.mode_var(.,4| 0000a7a0 29 3a f4 20 58 20 63 6f 6f 72 64 69 6e 61 74 65 |):. X coordinate| 0000a7b0 20 73 74 65 70 0d 21 fc 2c 79 73 25 3d 32 5e a4 | step.!.,ys%=2^.| 0000a7c0 6d 6f 64 65 5f 76 61 72 28 eb 2c 35 29 3a f4 20 |mode_var(.,5):. | 0000a7d0 59 20 63 6f 6f 72 64 69 6e 61 74 65 20 73 74 65 |Y coordinate ste| 0000a7e0 70 0d 22 06 3e e7 53 63 72 57 25 3e 73 70 72 57 |p.".>.ScrW%>sprW| 0000a7f0 25 20 8c 20 73 69 7a 65 78 25 3d 73 70 72 57 25 |% . sizex%=sprW%| 0000a800 20 8b 20 73 69 7a 65 78 25 3d 53 63 72 57 25 3a | . sizex%=ScrW%:| 0000a810 f4 20 49 6e 69 74 69 61 6c 20 77 69 64 74 68 0d |. Initial width.| 0000a820 22 10 3f e7 53 63 72 48 25 3e 73 70 72 48 25 20 |".?.ScrH%>sprH% | 0000a830 8c 20 73 69 7a 65 79 25 3d 73 70 72 48 25 20 8b |. sizey%=sprH% .| 0000a840 20 73 69 7a 65 79 25 3d 53 63 72 48 25 3a f4 20 | sizey%=ScrH%:. | 0000a850 49 6e 69 74 69 61 6c 20 68 65 69 67 68 74 0d 22 |Initial height."| 0000a860 1a 4b 21 61 72 67 25 3d 73 69 7a 65 78 25 3a 61 |.K!arg%=sizex%:a| 0000a870 72 67 25 21 34 3d 73 69 7a 65 79 25 3a 61 72 67 |rg%!4=sizey%:arg| 0000a880 25 21 38 3d 73 70 72 57 25 3a 61 72 67 25 21 31 |%!8=sprW%:arg%!1| 0000a890 32 3d 73 70 72 48 25 3a f4 20 49 6e 69 74 69 61 |2=sprH%:. Initia| 0000a8a0 6c 20 73 63 61 6c 69 6e 67 0d 22 24 2f da 3a f2 |l scaling."$/.:.| 0000a8b0 70 6c 6f 74 5f 69 6d 61 67 65 28 30 2c 30 2c 30 |plot_image(0,0,0| 0000a8c0 2c 61 72 67 25 29 3a f4 20 49 6e 69 74 69 61 6c |,arg%):. Initial| 0000a8d0 20 64 69 73 70 6c 61 79 0d 22 2e 0b e7 73 69 7a | display."...siz| 0000a8e0 65 20 8c 0d 22 38 3f 20 c8 97 20 c8 93 20 30 2c |e .."8? .. .. 0,| 0000a8f0 30 2c 53 63 72 57 25 2d 78 73 25 2c 53 63 72 48 |0,ScrW%-xs%,ScrH| 0000a900 25 2d 79 73 25 3a f4 20 52 65 73 74 72 69 63 74 |%-ys%:. Restrict| 0000a910 20 70 6f 69 6e 74 65 72 20 74 6f 20 73 63 72 65 | pointer to scre| 0000a920 65 6e 0d 22 42 36 20 6f 78 25 3d 73 69 7a 65 78 |en."B6 ox%=sizex| 0000a930 25 2d 78 73 25 3a 6f 79 25 3d 73 69 7a 65 79 25 |%-xs%:oy%=sizey%| 0000a940 2d 79 73 25 3a f4 20 27 4f 6c 64 27 20 63 6f 6f |-ys%:. 'Old' coo| 0000a950 72 64 69 6e 61 74 65 73 0d 22 4c 30 20 c8 97 20 |rdinates."L0 .. | 0000a960 b8 20 6f 78 25 2c 6f 79 25 3a f4 20 50 6f 69 6e |. ox%,oy%:. Poin| 0000a970 74 65 72 20 74 6f 20 75 70 70 65 72 20 6c 65 66 |ter to upper lef| 0000a980 74 20 63 6f 72 6e 65 72 0d 22 56 3f 20 f5 20 f2 |t corner."V? . .| 0000a990 72 6d 6f 75 73 65 28 5f 25 2c 5f 25 2c 62 75 74 |rmouse(_%,_%,but| 0000a9a0 25 29 3a fd 20 62 75 74 25 3d 30 3a f4 20 57 61 |%):. but%=0:. Wa| 0000a9b0 69 74 20 66 6f 72 20 62 75 74 74 6f 6e 73 20 72 |it for buttons r| 0000a9c0 65 6c 65 61 73 65 64 0d 22 60 28 20 f5 20 f2 76 |eleased."`( . .v| 0000a9d0 61 6c 75 65 5f 70 74 72 28 73 69 7a 65 78 25 81 |alue_ptr(sizex%.| 0000a9e0 78 73 25 2c 73 69 7a 65 79 25 81 79 73 25 29 0d |xs%,sizey%.ys%).| 0000a9f0 22 6a 3a 20 f5 20 f2 72 6d 6f 75 73 65 28 78 25 |"j: . .rmouse(x%| 0000aa00 2c 79 25 2c 62 75 74 25 29 3a fd 20 28 78 25 3c |,y%,but%):. (x%<| 0000aa10 3e 6f 78 25 29 84 28 79 25 3c 3e 6f 79 25 29 84 |>ox%).(y%<>oy%).| 0000aa20 28 62 75 74 25 3c 3e 30 29 0d 22 74 0e 20 e7 62 |(but%<>0)."t. .b| 0000aa30 75 74 25 3d 30 20 8c 0d 22 7e 3e 20 20 e7 6f 79 |ut%=0 .."~> .oy| 0000aa40 25 3e 79 25 20 8c 20 ec 20 30 2c 79 25 3a f0 20 |%>y% . . 0,y%:. | 0000aa50 31 30 33 2c a4 6d 61 78 28 78 25 2c 6f 78 25 29 |103,.max(x%,ox%)| 0000aa60 2c 6f 79 25 3a f4 20 57 69 70 65 20 59 2d 70 6f |,oy%:. Wipe Y-po| 0000aa70 72 74 69 6f 6e 0d 22 88 3e 20 20 e7 6f 78 25 3e |rtion.".> .ox%>| 0000aa80 78 25 20 8c 20 ec 20 78 25 2c 30 3a f0 20 31 30 |x% . . x%,0:. 10| 0000aa90 33 2c 6f 78 25 2c a4 6d 61 78 28 79 25 2c 6f 79 |3,ox%,.max(y%,oy| 0000aaa0 25 29 3a f4 20 57 69 70 65 20 58 2d 70 6f 72 74 |%):. Wipe X-port| 0000aab0 69 6f 6e 0d 22 92 3a 20 20 73 69 7a 65 78 25 3d |ion.".: sizex%=| 0000aac0 78 25 2b 78 73 25 3a 73 69 7a 65 79 25 3d 79 25 |x%+xs%:sizey%=y%| 0000aad0 2b 79 73 25 3a f4 20 54 72 75 65 20 73 63 61 6c |+ys%:. True scal| 0000aae0 65 64 20 69 6d 61 67 65 20 73 69 7a 65 0d 22 9c |ed image size.".| 0000aaf0 3b 20 20 21 61 72 67 25 3d 73 69 7a 65 78 25 3a |; !arg%=sizex%:| 0000ab00 61 72 67 25 21 34 3d 73 69 7a 65 79 25 3a 61 72 |arg%!4=sizey%:ar| 0000ab10 67 25 21 38 3d 73 70 72 57 25 3a 61 72 67 25 21 |g%!8=sprW%:arg%!| 0000ab20 31 32 3d 73 70 72 48 25 0d 22 a6 1d 20 20 f2 70 |12=sprH%.".. .p| 0000ab30 6c 6f 74 5f 69 6d 61 67 65 28 30 2c 30 2c 30 2c |lot_image(0,0,0,| 0000ab40 61 72 67 25 29 0d 22 b0 2e 20 20 6f 78 25 3d 78 |arg%).".. ox%=x| 0000ab50 25 3a 6f 79 25 3d 79 25 3a f4 20 52 65 6d 65 6d |%:oy%=y%:. Remem| 0000ab60 62 65 72 20 6f 6c 64 20 63 6f 6f 72 64 69 6e 61 |ber old coordina| 0000ab70 74 65 73 0d 22 ba 06 20 cd 0d 22 c4 0e 20 fd 20 |tes.".. ..".. . | 0000ab80 62 75 74 25 3c 3e 30 0d 22 ce 36 20 c8 99 20 22 |but%<>0.".6 .. "| 0000ab90 4f 53 5f 43 4c 49 22 2c 22 50 6f 69 6e 74 65 72 |OS_CLI","Pointer| 0000aba0 20 31 22 3a f4 20 52 65 73 74 6f 72 65 20 64 65 | 1":. Restore de| 0000abb0 66 61 75 6c 74 20 70 6f 69 6e 74 65 72 0d 22 d8 |fault pointer.".| 0000abc0 05 cd 0d 22 e2 0b e7 70 61 72 74 20 8c 0d 22 ec |..."...part ..".| 0000abd0 3e 20 f5 20 f2 6d 6f 75 73 65 28 5f 25 2c 5f 25 |> . .mouse(_%,_%| 0000abe0 2c 62 75 74 25 29 3a fd 20 62 75 74 25 3d 30 3a |,but%):. but%=0:| 0000abf0 f4 20 57 61 69 74 20 66 6f 72 20 62 75 74 74 6f |. Wait for butto| 0000ac00 6e 73 20 72 65 6c 65 61 73 65 64 0d 22 f6 40 20 |ns released.".@ | 0000ac10 c8 97 20 c8 93 20 30 2c 30 2c 73 69 7a 65 78 25 |.. .. 0,0,sizex%| 0000ac20 2d 78 73 25 2c 73 69 7a 65 79 25 2d 79 73 25 3a |-xs%,sizey%-ys%:| 0000ac30 f4 20 52 65 73 74 72 69 63 74 20 70 6f 69 6e 74 |. Restrict point| 0000ac40 65 72 20 74 6f 20 69 6d 61 67 65 0d 23 00 3c 20 |er to image.#.< | 0000ac50 c8 97 20 b8 20 30 2c 73 69 7a 65 79 25 2d 79 73 |.. . 0,sizey%-ys| 0000ac60 25 3a f4 20 4d 6f 75 73 65 20 74 6f 20 74 6f 70 |%:. Mouse to top| 0000ac70 20 72 69 67 68 74 20 6f 66 20 73 63 61 6c 65 64 | right of scaled| 0000ac80 20 73 70 72 69 74 65 0d 23 0a 38 20 f5 20 f2 72 | sprite.#.8 . .r| 0000ac90 6d 6f 75 73 65 28 78 31 25 2c 79 32 25 2c 62 75 |mouse(x1%,y2%,bu| 0000aca0 74 25 29 3a f2 76 61 6c 75 65 5f 70 74 72 28 78 |t%):.value_ptr(x| 0000acb0 31 25 81 78 73 25 2c 79 32 25 81 79 73 25 29 0d |1%.xs%,y2%.ys%).| 0000acc0 23 14 23 20 fd 20 62 75 74 25 3c 3e 30 3a f4 20 |#.# . but%<>0:. | 0000acd0 47 65 74 20 74 6f 70 20 6c 65 66 74 20 70 6f 69 |Get top left poi| 0000ace0 6e 74 0d 23 1e 3e 20 f5 20 f2 6d 6f 75 73 65 28 |nt.#.> . .mouse(| 0000acf0 5f 25 2c 5f 25 2c 62 75 74 25 29 3a fd 20 62 75 |_%,_%,but%):. bu| 0000ad00 74 25 3d 30 3a f4 20 57 61 69 74 20 66 6f 72 20 |t%=0:. Wait for | 0000ad10 62 75 74 74 6f 6e 73 20 72 65 6c 65 61 73 65 64 |buttons released| 0000ad20 0d 23 28 2c 20 78 32 25 3d 78 31 25 3a 79 31 25 |.#(, x2%=x1%:y1%| 0000ad30 3d 79 32 25 3a f4 20 49 6e 69 74 69 61 6c 20 77 |=y2%:. Initial w| 0000ad40 69 6e 64 6f 77 20 63 6f 72 6e 65 72 0d 23 32 3e |indow corner.#2>| 0000ad50 20 c8 97 20 c8 93 20 78 31 25 2c 30 2c 73 69 7a | .. .. x1%,0,siz| 0000ad60 65 78 25 2d 78 73 25 2d 78 31 25 2c 79 32 25 3a |ex%-xs%-x1%,y2%:| 0000ad70 f4 20 54 72 61 70 20 6d 6f 75 73 65 20 74 6f 20 |. Trap mouse to | 0000ad80 64 6f 77 6e 2f 72 69 67 68 74 0d 23 3c 33 20 c8 |down/right.#<3 .| 0000ad90 99 20 57 53 65 74 43 6f 6c 25 2c 28 34 3c 3c 34 |. WSetCol%,(4<<4| 0000ada0 29 2b 30 3a f4 20 49 6e 76 65 72 74 20 63 6f 6c |)+0:. Invert col| 0000adb0 6f 75 72 20 6f 6e 20 73 63 72 65 65 6e 0d 23 46 |our on screen.#F| 0000adc0 41 20 6f 78 25 3d 78 32 25 3a 6f 79 25 3d 79 31 |A ox%=x2%:oy%=y1| 0000add0 25 3a c8 93 20 78 31 25 2c 79 31 25 2c 78 32 25 |%:.. x1%,y1%,x2%| 0000ade0 2d 78 31 25 2c 79 32 25 2d 79 31 25 3a f4 20 46 |-x1%,y2%-y1%:. F| 0000adf0 69 72 73 74 20 72 65 63 74 61 6e 67 6c 65 0d 23 |irst rectangle.#| 0000ae00 50 1c 20 f5 20 f2 72 6d 6f 75 73 65 28 78 32 25 |P. . .rmouse(x2%| 0000ae10 2c 79 31 25 2c 62 75 74 25 29 0d 23 5a 30 20 f2 |,y1%,but%).#Z0 .| 0000ae20 76 61 6c 75 65 5f 70 74 72 28 28 78 32 25 2d 78 |value_ptr((x2%-x| 0000ae30 31 25 29 81 78 73 25 2b 31 2c 28 79 32 25 2d 79 |1%).xs%+1,(y2%-y| 0000ae40 31 25 29 81 79 73 25 2b 31 29 0d 23 64 1d 20 e7 |1%).ys%+1).#d. .| 0000ae50 28 78 32 25 3c 3e 6f 78 25 29 84 28 79 31 25 3c |(x2%<>ox%).(y1%<| 0000ae60 3e 6f 79 25 29 20 8c 0d 23 6e 35 20 20 c8 93 20 |>oy%) ..#n5 .. | 0000ae70 78 31 25 2c 6f 79 25 2c 6f 78 25 2d 78 31 25 2c |x1%,oy%,ox%-x1%,| 0000ae80 79 32 25 2d 6f 79 25 3a f4 20 57 69 70 65 20 6f |y2%-oy%:. Wipe o| 0000ae90 6c 64 20 72 65 63 74 61 6e 67 6c 65 0d 23 78 30 |ld rectangle.#x0| 0000aea0 20 20 c8 93 20 78 31 25 2c 79 31 25 2c 78 32 25 | .. x1%,y1%,x2%| 0000aeb0 2d 78 31 25 2c 79 32 25 2d 79 31 25 3a f4 20 4e |-x1%,y2%-y1%:. N| 0000aec0 65 77 20 72 65 63 74 61 6e 67 6c 65 0d 23 82 2a |ew rectangle.#.*| 0000aed0 20 20 6f 78 25 3d 78 32 25 3a 6f 79 25 3d 79 31 | ox%=x2%:oy%=y1| 0000aee0 25 3a f4 20 4f 6c 64 20 6d 6f 75 73 65 20 70 6f |%:. Old mouse po| 0000aef0 73 69 74 69 6f 6e 0d 23 8c 06 20 cd 0d 23 96 2a |sition.#.. ..#.*| 0000af00 20 fd 20 62 75 74 25 3c 3e 30 3a f4 20 55 6e 74 | . but%<>0:. Unt| 0000af10 69 6c 20 73 65 63 6f 6e 64 20 62 75 74 74 6f 6e |il second button| 0000af20 20 70 72 65 73 73 0d 23 a0 42 20 c8 97 20 c8 93 | press.#.B .. ..| 0000af30 20 30 2c 30 2c 53 63 72 57 25 2c 53 63 72 48 25 | 0,0,ScrW%,ScrH%| 0000af40 3a f4 20 52 65 73 65 74 20 6d 6f 75 73 65 20 72 |:. Reset mouse r| 0000af50 65 63 74 61 6e 67 6c 65 20 74 6f 20 77 68 6f 6c |ectangle to whol| 0000af60 65 20 73 63 72 65 65 6e 0d 23 aa 30 20 c8 93 20 |e screen.#.0 .. | 0000af70 78 31 25 2c 79 31 25 2c 78 32 25 2d 78 31 25 2c |x1%,y1%,x2%-x1%,| 0000af80 79 32 25 2d 79 31 25 3a f4 20 57 69 70 65 20 72 |y2%-y1%:. Wipe r| 0000af90 65 63 74 61 6e 67 6c 65 0d 23 b4 22 20 ec 20 30 |ectangle.#." . 0| 0000afa0 2c 30 3a f4 20 57 69 70 65 20 73 75 72 72 6f 75 |,0:. Wipe surrou| 0000afb0 6e 64 69 6e 67 20 61 72 65 61 0d 23 be 3a 20 5f |nding area.#.: _| 0000afc0 25 3d 78 31 25 2d 78 73 25 3a e7 5f 25 3e 3d 30 |%=x1%-xs%:._%>=0| 0000afd0 20 8c 20 f0 20 31 30 33 2c 5f 25 2c 31 30 32 34 | . . 103,_%,1024| 0000afe0 2d 79 73 25 20 8b 20 ec 20 5f 25 2c 31 30 32 34 |-ys% . . _%,1024| 0000aff0 2d 79 73 25 0d 23 c8 3d 20 5f 25 3d 79 32 25 2b |-ys%.#.= _%=y2%+| 0000b000 79 73 25 3a e7 5f 25 3c 53 63 72 48 25 20 8c 20 |ys%:._%<ScrH% . | 0000b010 f0 20 31 30 33 2c 31 32 38 30 2d 78 73 25 2c 5f |. 103,1280-xs%,_| 0000b020 25 20 8b 20 ec 20 31 32 38 30 2d 78 73 25 2c 5f |% . . 1280-xs%,_| 0000b030 25 0d 23 d2 2f 20 5f 25 3d 78 32 25 2b 78 73 25 |%.#./ _%=x2%+xs%| 0000b040 3a e7 5f 25 3c 53 63 72 57 25 20 8c 20 f0 20 31 |:._%<ScrW% . . 1| 0000b050 30 33 2c 5f 25 2c 30 20 8b 20 ec 20 5f 25 2c 30 |03,_%,0 . . _%,0| 0000b060 0d 23 dc 38 20 5f 25 3d 79 31 25 2d 79 73 25 3a |.#.8 _%=y1%-ys%:| 0000b070 e7 5f 25 3e 3d 30 20 8c 20 f0 20 31 30 33 2c 78 |._%>=0 . . 103,x| 0000b080 31 25 2d 78 73 25 2c 5f 25 20 8b 20 ec 20 78 31 |1%-xs%,_% . . x1| 0000b090 25 2d 78 73 25 2c 5f 25 0d 23 e6 36 20 c8 99 20 |%-xs%,_%.#.6 .. | 0000b0a0 22 4f 53 5f 43 4c 49 22 2c 22 50 6f 69 6e 74 65 |"OS_CLI","Pointe| 0000b0b0 72 20 31 22 3a f4 20 52 65 73 74 6f 72 65 20 64 |r 1":. Restore d| 0000b0c0 65 66 61 75 6c 74 20 70 6f 69 6e 74 65 72 0d 23 |efault pointer.#| 0000b0d0 f0 45 cc 20 78 31 25 3d 30 3a 79 31 25 3d 30 3a |.E. x1%=0:y1%=0:| 0000b0e0 78 32 25 3d 73 69 7a 65 78 25 2d 78 73 25 3a 79 |x2%=sizex%-xs%:y| 0000b0f0 32 25 3d 73 69 7a 65 79 25 2d 79 73 25 3a f4 20 |2%=sizey%-ys%:. | 0000b100 57 68 6f 6c 65 20 73 70 72 69 74 65 20 77 69 6e |Whole sprite win| 0000b110 64 6f 77 0d 23 fa 05 cd 0d 24 04 26 ef 32 34 2c |dow.#....$.&.24,| 0000b120 78 31 25 3b 79 31 25 3b 78 32 25 3b 79 32 25 3b |x1%;y1%;x2%;y2%;| 0000b130 3a f4 20 43 6c 69 70 20 77 69 6e 64 6f 77 0d 24 |:. Clip window.$| 0000b140 0e 05 e1 0d 24 18 05 20 0d 24 22 1e dd f2 72 6d |....$.. .$"...rm| 0000b150 6f 75 73 65 28 f8 20 78 25 2c f8 20 79 25 2c f8 |ouse(. x%,. y%,.| 0000b160 20 62 75 74 25 29 0d 24 2c 4a f4 20 52 65 74 75 | but%).$,J. Retu| 0000b170 72 6e 73 20 6d 6f 75 73 65 20 63 6f 6f 72 64 69 |rns mouse coordi| 0000b180 6e 61 74 65 73 20 61 6e 64 20 62 75 74 74 6f 6e |nates and button| 0000b190 73 2c 20 72 6f 75 6e 64 65 64 20 74 6f 20 65 78 |s, rounded to ex| 0000b1a0 61 63 74 20 70 69 78 65 6c 20 63 6f 6f 72 64 73 |act pixel coords| 0000b1b0 0d 24 36 24 f2 6d 6f 75 73 65 28 78 25 2c 79 25 |.$6$.mouse(x%,y%| 0000b1c0 2c 62 75 74 25 29 3a f4 20 4d 6f 75 73 65 20 73 |,but%):. Mouse s| 0000b1d0 74 61 74 65 0d 24 40 2a 78 25 2d 3d 78 25 20 83 |tate.$@*x%-=x% .| 0000b1e0 20 78 73 25 3a 79 25 2d 3d 79 25 20 83 20 79 73 | xs%:y%-=y% . ys| 0000b1f0 25 3a f4 20 52 6f 75 6e 64 20 64 6f 77 6e 0d 24 |%:. Round down.$| 0000b200 4a 05 e1 0d 24 54 05 20 0d 24 5e 1c dd f2 76 61 |J...$T. .$^...va| 0000b210 6c 75 65 5f 70 74 72 28 76 61 6c 31 25 2c 76 61 |lue_ptr(val1%,va| 0000b220 6c 32 25 29 0d 24 68 1c f4 20 50 75 74 73 20 76 |l2%).$h.. Puts v| 0000b230 61 6c 75 65 73 20 69 6e 20 70 6f 69 6e 74 65 72 |alues in pointer| 0000b240 0d 24 72 45 c8 99 20 4f 53 53 70 6f 70 25 2c 36 |.$rE.. OSSpop%,6| 0000b250 30 2b 32 35 36 2c 70 6f 69 6e 74 65 72 2c 70 74 |0+256,pointer,pt| 0000b260 72 24 2c 30 20 b8 20 72 30 2c 72 31 2c 72 32 2c |r$,0 . r0,r1,r2,| 0000b270 72 33 3a f4 20 4f 75 74 70 75 74 20 74 6f 20 73 |r3:. Output to s| 0000b280 70 72 69 74 65 0d 24 7c 77 fb 31 32 39 3a fb 32 |prite.$|w.129:.2| 0000b290 3a f1 8a 30 2c 32 29 3b c2 22 20 20 20 22 2b c3 |:..0,2);." "+.| 0000b2a0 76 61 6c 31 25 2c 34 29 27 c2 22 20 20 20 22 2b |val1%,4)'." "+| 0000b2b0 c3 76 61 6c 32 25 2c 34 29 3b 3a c8 99 20 4f 53 |.val2%,4);:.. OS| 0000b2c0 53 70 6f 70 25 2c 33 36 2b 32 35 36 2c 70 6f 69 |Spop%,36+256,poi| 0000b2d0 6e 74 65 72 2c 70 74 72 24 2c 25 30 30 30 30 30 |nter,ptr$,%00000| 0000b2e0 31 30 3a f4 20 50 72 69 6e 74 20 76 61 6c 75 65 |10:. Print value| 0000b2f0 73 20 61 6e 64 20 64 65 66 69 6e 65 0d 24 86 35 |s and define.$.5| 0000b300 c8 99 20 4f 53 53 70 6f 70 25 2c 72 30 2c 72 31 |.. OSSpop%,r0,r1| 0000b310 2c 72 32 2c 72 33 3a f4 20 52 65 73 74 6f 72 65 |,r2,r3:. Restore| 0000b320 20 6f 75 74 70 75 74 20 74 6f 20 73 63 72 65 65 | output to scree| 0000b330 6e 0d 24 90 05 e1 0d 24 9a 05 20 0d 24 a4 1a dd |n.$....$.. .$...| 0000b340 f2 6f 70 74 69 6f 6e 73 5f 6d 65 6e 75 28 63 72 |.options_menu(cr| 0000b350 65 61 74 65 29 0d 24 ae 34 f4 20 28 52 65 29 77 |eate).$.4. (Re)w| 0000b360 72 69 74 65 73 20 6f 70 74 69 6f 6e 73 20 6d 65 |rites options me| 0000b370 6e 75 2c 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 63 |nu, optionally c| 0000b380 72 65 61 74 65 73 20 69 74 0d 24 b8 0d ea 20 69 |reates it.$... i| 0000b390 31 24 2c 69 32 24 0d 24 c2 39 69 31 24 3d a4 73 |1$,i2$.$.9i1$=.s| 0000b3a0 65 6c 28 30 2c 31 2c 30 2c ac 49 6d 67 2c 30 29 |el(0,1,0,.Img,0)| 0000b3b0 2b 22 49 6d 61 67 65 20 69 6e 66 6f 23 22 2b c3 |+"Image info#"+.| 0000b3c0 77 69 6e 5f 69 6d 69 6e 66 6f 25 2b 22 7c 22 0d |win_iminfo%+"|".| 0000b3d0 24 cc 2d 69 31 24 2b 3d a4 73 65 6c 28 30 2c 31 |$.-i1$+=.sel(0,1| 0000b3e0 2c 30 2c 30 2c 30 29 2b 22 50 6f 70 20 75 70 23 |,0,0,0)+"Pop up#| 0000b3f0 22 2b c3 73 75 62 31 25 2b 22 7c 22 0d 24 d6 31 |"+.sub1%+"|".$.1| 0000b400 69 31 24 2b 3d a4 73 65 6c 28 30 2c 31 2c 30 2c |i1$+=.sel(0,1,0,| 0000b410 30 2c 30 29 2b 22 50 72 6f 63 65 73 73 69 6e 67 |0,0)+"Processing| 0000b420 23 22 2b c3 73 75 62 31 25 2b 22 7c 22 0d 24 e0 |#"+.sub1%+"|".$.| 0000b430 2c 69 31 24 2b 3d a4 73 65 6c 28 30 2c 30 2c 30 |,i1$+=.sel(0,0,0| 0000b440 2c ac 49 6d 67 2c 30 29 2b 22 49 6d 61 67 65 20 |,.Img,0)+"Image | 0000b450 70 61 6c 65 74 74 65 7c 22 0d 24 ea 34 69 32 24 |palette|".$.4i2$| 0000b460 2b 3d a4 73 65 6c 28 30 2c 30 2c 30 2c ac 49 6d |+=.sel(0,0,0,.Im| 0000b470 67 2c 30 29 2b 22 5a 6f 6f 6d 20 69 6d 61 67 65 |g,0)+"Zoom image| 0000b480 23 22 2b c3 73 75 62 31 25 2b 22 7c 22 0d 24 f4 |#"+.sub1%+"|".$.| 0000b490 2b 69 32 24 2b 3d a4 73 65 6c 28 30 2c 30 2c 30 |+i2$+=.sel(0,0,0| 0000b4a0 2c ac 49 6d 67 2c 30 29 2b 22 52 6f 74 61 74 65 |,.Img,0)+"Rotate| 0000b4b0 20 69 6d 61 67 65 7c 22 0d 24 fe 36 69 32 24 2b | image|".$.6i2$+| 0000b4c0 3d a4 73 65 6c 28 30 2c 31 2c 30 2c ac 49 6d 67 |=.sel(0,1,0,.Img| 0000b4d0 2c 30 29 2b 22 4d 69 72 72 6f 72 20 69 6d 61 67 |,0)+"Mirror imag| 0000b4e0 65 23 22 2b c3 73 75 62 31 25 2b 22 7c 22 0d 25 |e#"+.sub1%+"|".%| 0000b4f0 08 32 69 32 24 2b 3d a4 73 65 6c 28 50 61 6c 6f |.2i2$+=.sel(Palo| 0000b500 6e 6f 66 66 2c 30 2c 30 2c 30 2c 30 29 2b 22 49 |noff,0,0,0,0)+"I| 0000b510 6e 63 6c 75 64 65 20 70 61 6c 65 74 74 65 7c 22 |nclude palette|"| 0000b520 0d 25 12 34 69 32 24 2b 3d a4 73 65 6c 28 30 2c |.%.4i2$+=.sel(0,| 0000b530 31 2c 30 2c ac 49 6d 67 2c 30 29 2b 22 53 61 76 |1,0,.Img,0)+"Sav| 0000b540 65 20 69 6d 61 67 65 23 22 2b c3 73 75 62 31 25 |e image#"+.sub1%| 0000b550 2b 22 7c 22 0d 25 1c 1e 69 32 24 2b 3d 22 20 53 |+"|".%..i2$+=" S| 0000b560 74 61 74 75 73 23 22 2b c3 73 75 62 31 25 2b 22 |tatus#"+.sub1%+"| 0000b570 7c 22 0d 25 26 3b f2 63 72 65 61 74 65 5f 6d 65 ||".%&;.create_me| 0000b580 6e 75 28 2d 31 2c 30 2c 22 54 72 61 6e 73 6c 61 |nu(-1,0,"Transla| 0000b590 74 6f 72 22 2c 32 36 30 2c 34 30 2c 30 2c 69 31 |tor",260,40,0,i1| 0000b5a0 24 2c 69 32 24 2c 63 72 65 61 74 65 29 0d 25 30 |$,i2$,create).%0| 0000b5b0 05 e1 0d 25 3a 05 20 0d 25 44 1b dd f2 73 75 62 |...%:. .%D...sub| 0000b5c0 6d 65 6e 75 28 70 61 74 68 24 2c 63 72 65 61 74 |menu(path$,creat| 0000b5d0 65 29 0d 25 4e 35 f4 20 28 52 65 29 77 72 69 74 |e).%N5. (Re)writ| 0000b5e0 65 73 20 73 75 62 6d 65 6e 75 20 70 61 74 68 24 |es submenu path$| 0000b5f0 2c 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 63 72 65 |, optionally cre| 0000b600 61 74 65 73 20 69 74 0d 25 58 0c ea 20 69 24 2c |ates it.%X.. i$,| 0000b610 69 32 24 0d 25 62 32 43 75 72 72 53 75 62 24 3d |i2$.%b2CurrSub$=| 0000b620 70 61 74 68 24 3a f4 20 52 65 6d 65 6d 62 65 72 |path$:. Remember| 0000b630 20 63 75 72 72 65 6e 74 20 73 75 62 6d 65 6e 75 | current submenu| 0000b640 20 70 61 74 68 0d 25 6c 0e c8 8e 20 70 61 74 68 | path.%l... path| 0000b650 24 20 ca 0d 25 76 bb 20 c9 20 22 50 6f 70 20 75 |$ ..%v. . "Pop u| 0000b660 70 22 20 3a 20 69 24 3d a4 73 65 6c 28 41 75 74 |p" : i$=.sel(Aut| 0000b670 6f 4d 6f 64 65 2c 30 2c 30 2c 30 2c 30 29 2b 22 |oMode,0,0,0,0)+"| 0000b680 41 75 74 6f 20 6d 6f 64 65 7c 22 2b a4 73 65 6c |Auto mode|"+.sel| 0000b690 28 41 75 74 6f 50 61 6c 2c 30 2c 30 2c 30 2c 30 |(AutoPal,0,0,0,0| 0000b6a0 29 2b 22 41 75 74 6f 20 70 61 6c 65 74 74 65 7c |)+"Auto palette|| 0000b6b0 22 2b a4 73 65 6c 28 41 75 74 6f 5a 6f 6f 6d 2c |"+.sel(AutoZoom,| 0000b6c0 30 2c 30 2c 30 2c 30 29 2b 22 41 75 74 6f 20 7a |0,0,0,0)+"Auto z| 0000b6d0 6f 6f 6d 7c 22 2b a4 73 65 6c 28 28 4d 6f 64 65 |oom|"+.sel((Mode| 0000b6e0 53 65 74 3e 30 29 2c 30 2c 30 2c ac 41 75 74 6f |Set>0),0,0,.Auto| 0000b6f0 4d 6f 64 65 2c 30 29 2b 22 4d 6f 64 65 20 73 65 |Mode,0)+"Mode se| 0000b700 74 23 22 2b c3 73 75 62 32 25 2b 22 7c 22 0d 25 |t#"+.sub2%+"|".%| 0000b710 80 40 20 20 20 20 20 20 f2 63 72 65 61 74 65 5f |.@ .create_| 0000b720 6d 65 6e 75 28 78 25 2c 79 25 2c 22 5e 31 50 6f |menu(x%,y%,"^1Po| 0000b730 70 20 75 70 22 2c 31 33 2a 31 36 2c 34 30 2c 30 |p up",13*16,40,0| 0000b740 2c 69 24 2c 22 22 2c 63 72 65 61 74 65 29 0d 25 |,i$,"",create).%| 0000b750 8a bc 20 c9 20 22 50 6f 70 20 75 70 2e 4d 6f 64 |.. . "Pop up.Mod| 0000b760 65 20 73 65 74 22 20 3a 20 69 24 3d a4 73 65 6c |e set" : i$=.sel| 0000b770 28 28 4d 6f 64 65 53 65 74 3d 30 29 2c 30 2c 30 |((ModeSet=0),0,0| 0000b780 2c 30 2c 30 29 2b 22 4e 6f 6e 65 7c 22 2b a4 73 |,0,0)+"None|"+.s| 0000b790 65 6c 28 28 4d 6f 64 65 53 65 74 3d 31 29 2c 30 |el((ModeSet=1),0| 0000b7a0 2c 30 2c 30 2c 30 29 2b 22 4e 6f 72 6d 61 6c 7c |,0,0,0)+"Normal|| 0000b7b0 22 2b a4 73 65 6c 28 28 4d 6f 64 65 53 65 74 3d |"+.sel((ModeSet=| 0000b7c0 32 29 2c 30 2c 30 2c ac 4d 75 6c 74 69 53 79 6e |2),0,0,.MultiSyn| 0000b7d0 63 2c 30 29 2b 22 4d 75 6c 74 69 73 79 6e 63 7c |c,0)+"Multisync|| 0000b7e0 22 2b a4 73 65 6c 28 28 4d 6f 64 65 53 65 74 3d |"+.sel((ModeSet=| 0000b7f0 33 29 2c 30 2c 31 2c 30 2c 30 29 2b a4 75 6d 73 |3),0,1,0,0)+.ums| 0000b800 2b 22 26 61 30 2d 39 2c 7c 22 0d 25 94 42 20 20 |+"&a0-9,|".%.B | 0000b810 20 20 20 20 f2 63 72 65 61 74 65 5f 6d 65 6e 75 | .create_menu| 0000b820 28 78 25 2c 79 25 2c 22 5e 32 4d 6f 64 65 20 73 |(x%,y%,"^2Mode s| 0000b830 65 74 22 2c 31 30 2a 31 36 2c 34 30 2c 30 2c 69 |et",10*16,40,0,i| 0000b840 24 2c 22 22 2c 63 72 65 61 74 65 29 0d 25 9e 9e |$,"",create).%..| 0000b850 20 c9 20 22 50 72 6f 63 65 73 73 69 6e 67 22 20 | . "Processing" | 0000b860 3a 20 69 24 3d a4 73 65 6c 28 43 6c 65 61 72 46 |: i$=.sel(ClearF| 0000b870 69 6c 65 2c 30 2c 30 2c 30 2c 30 29 2b 22 43 6c |ile,0,0,0,0)+"Cl| 0000b880 65 61 72 20 6f 75 74 70 75 74 23 22 2b c3 77 69 |ear output#"+.wi| 0000b890 6e 5f 66 69 6c 65 25 2b 22 7c 20 4f 75 74 70 75 |n_file%+"| Outpu| 0000b8a0 74 20 6d 6f 64 65 23 22 2b c3 73 75 62 32 25 2b |t mode#"+.sub2%+| 0000b8b0 22 7c 22 2b a4 73 65 6c 28 30 2c 30 2c 30 2c 28 |"|"+.sel(0,0,0,(| 0000b8c0 4f 75 74 4d 6f 64 65 3d 31 29 2c 30 29 2b 22 4f |OutMode=1),0)+"O| 0000b8d0 75 74 70 75 74 20 70 61 6c 65 74 74 65 23 22 2b |utput palette#"+| 0000b8e0 c3 73 75 62 32 25 2b 22 7c 22 0d 25 a8 a8 20 20 |.sub2%+"|".%.. | 0000b8f0 20 20 20 20 69 24 2b 3d a4 73 65 6c 28 28 28 58 | i$+=.sel(((X| 0000b900 4d 75 6c 25 3c 3e 58 44 69 76 25 29 84 28 59 4d |Mul%<>XDiv%).(YM| 0000b910 75 6c 25 3c 3e 59 44 69 76 25 29 29 2c 30 2c 30 |ul%<>YDiv%)),0,0| 0000b920 2c 30 2c 30 29 2b 22 53 63 61 6c 69 6e 67 23 22 |,0,0)+"Scaling#"| 0000b930 2b c3 73 75 62 32 25 2b 22 7c 22 2b a4 73 65 6c |+.sub2%+"|"+.sel| 0000b940 28 45 72 72 53 70 72 65 61 64 2c 30 2c 30 2c 30 |(ErrSpread,0,0,0| 0000b950 2c 30 29 2b 22 45 72 72 6f 72 20 73 70 72 65 61 |,0)+"Error sprea| 0000b960 64 69 6e 67 7c 22 2b a4 73 65 6c 28 42 6c 61 63 |ding|"+.sel(Blac| 0000b970 6b 57 68 69 74 65 2c 30 2c 30 2c 30 2c 30 29 2b |kWhite,0,0,0,0)+| 0000b980 22 42 6c 61 63 6b 20 61 6e 64 20 77 68 69 74 65 |"Black and white| 0000b990 7c 22 0d 25 b2 dd 20 20 20 20 20 20 69 32 24 3d ||".%.. i2$=| 0000b9a0 a4 73 65 6c 28 5a 69 67 5a 61 67 2c 30 2c 30 2c |.sel(ZigZag,0,0,| 0000b9b0 30 2c 30 29 2b 22 5a 69 67 20 7a 61 67 7c 22 2b |0,0)+"Zig zag|"+| 0000b9c0 22 20 52 47 42 20 72 65 73 6f 6c 75 74 69 6f 6e |" RGB resolution| 0000b9d0 23 22 2b c3 77 69 6e 5f 72 67 62 62 69 74 73 25 |#"+.win_rgbbits%| 0000b9e0 2b 22 7c 22 2b a4 73 65 6c 28 49 6e 76 65 72 74 |+"|"+.sel(Invert| 0000b9f0 52 47 42 2c 31 2c 30 2c 30 2c 30 29 2b 22 49 6e |RGB,1,0,0,0)+"In| 0000ba00 76 65 72 74 20 52 47 42 7c 22 2b a4 73 65 6c 28 |vert RGB|"+.sel(| 0000ba10 42 6c 61 6e 6b 69 6e 67 2c 30 2c 30 2c 30 2c 30 |Blanking,0,0,0,0| 0000ba20 29 2b 22 53 63 72 65 65 6e 20 62 6c 61 6e 6b 69 |)+"Screen blanki| 0000ba30 6e 67 7c 22 2b a4 73 65 6c 28 47 49 46 53 63 61 |ng|"+.sel(GIFSca| 0000ba40 6e 2c 30 2c 30 2c 30 2c 30 29 2b 22 47 49 46 20 |n,0,0,0,0)+"GIF | 0000ba50 73 63 61 6e 7c 20 49 6d 61 67 65 20 6e 75 6d 62 |scan| Image numb| 0000ba60 65 72 23 22 2b c3 73 75 62 32 25 2b 22 7c 22 0d |er#"+.sub2%+"|".| 0000ba70 25 bc 45 20 20 20 20 20 20 f2 63 72 65 61 74 65 |%.E .create| 0000ba80 5f 6d 65 6e 75 28 78 25 2c 79 25 2c 22 5e 31 50 |_menu(x%,y%,"^1P| 0000ba90 72 6f 63 65 73 73 69 6e 67 22 2c 31 36 2a 31 36 |rocessing",16*16| 0000baa0 2c 34 30 2c 30 2c 69 24 2c 69 32 24 2c 63 72 65 |,40,0,i$,i2$,cre| 0000bab0 61 74 65 29 0d 25 c6 99 20 c9 20 22 50 72 6f 63 |ate).%.. . "Proc| 0000bac0 65 73 73 69 6e 67 2e 4f 75 74 70 75 74 20 6d 6f |essing.Output mo| 0000bad0 64 65 22 20 3a 20 f2 63 72 65 61 74 65 5f 6d 65 |de" : .create_me| 0000bae0 6e 75 28 78 25 2c 79 25 2c 22 5e 32 4d 6f 64 65 |nu(x%,y%,"^2Mode| 0000baf0 22 2c 38 2a 31 36 2c 34 30 2c 30 2c a4 73 65 6c |",8*16,40,0,.sel| 0000bb00 28 28 4f 75 74 4d 6f 64 65 3d 31 29 2c 30 2c 30 |((OutMode=1),0,0| 0000bb10 2c 30 2c 30 29 2b 22 41 75 74 6f 7c 22 2b a4 73 |,0,0)+"Auto|"+.s| 0000bb20 65 6c 28 28 4f 75 74 4d 6f 64 65 3d 32 29 2c 30 |el((OutMode=2),0| 0000bb30 2c 30 2c 30 2c 30 29 2b 22 43 75 72 72 65 6e 74 |,0,0,0)+"Current| 0000bb40 7c 22 2c 22 22 2c 63 72 65 61 74 65 29 0d 25 d0 ||","",create).%.| 0000bb50 c7 20 c9 20 22 50 72 6f 63 65 73 73 69 6e 67 2e |. . "Processing.| 0000bb60 4f 75 74 70 75 74 20 70 61 6c 65 74 74 65 22 20 |Output palette" | 0000bb70 3a 20 f2 63 72 65 61 74 65 5f 6d 65 6e 75 28 78 |: .create_menu(x| 0000bb80 25 2c 79 25 2c 22 5e 32 50 61 6c 65 74 74 65 22 |%,y%,"^2Palette"| 0000bb90 2c 31 30 2a 31 36 2c 34 30 2c 30 2c a4 73 65 6c |,10*16,40,0,.sel| 0000bba0 28 28 4f 75 74 50 61 6c 3d 31 29 2c 30 2c 30 2c |((OutPal=1),0,0,| 0000bbb0 30 2c 30 29 2b 22 43 75 72 72 65 6e 74 7c 22 2b |0,0)+"Current|"+| 0000bbc0 a4 73 65 6c 28 28 4f 75 74 50 61 6c 3d 32 29 2c |.sel((OutPal=2),| 0000bbd0 30 2c 30 2c 30 2c 30 29 2b 22 44 65 66 61 75 6c |0,0,0,0)+"Defaul| 0000bbe0 74 7c 22 2b a4 73 65 6c 28 28 4f 75 74 50 61 6c |t|"+.sel((OutPal| 0000bbf0 3d 33 29 2c 30 2c 30 2c 30 2c 30 29 2b 22 47 72 |=3),0,0,0,0)+"Gr| 0000bc00 65 79 73 63 61 6c 65 7c 22 2c 22 22 2c 63 72 65 |eyscale|","",cre| 0000bc10 61 74 65 29 0d 25 da b0 20 c9 20 22 50 72 6f 63 |ate).%.. . "Proc| 0000bc20 65 73 73 69 6e 67 2e 53 63 61 6c 69 6e 67 22 20 |essing.Scaling" | 0000bc30 3a 20 f2 63 72 65 61 74 65 5f 6d 65 6e 75 28 78 |: .create_menu(x| 0000bc40 25 2c 79 25 2c 22 5e 32 53 63 61 6c 69 6e 67 22 |%,y%,"^2Scaling"| 0000bc50 2c 35 2a 31 36 2c 34 30 2c 30 2c a4 73 65 6c 28 |,5*16,40,0,.sel(| 0000bc60 28 58 4d 75 6c 25 3c 3e 58 44 69 76 25 29 2c 30 |(XMul%<>XDiv%),0| 0000bc70 2c 30 2c 30 2c 30 29 2b 22 78 23 22 2b c3 73 75 |,0,0,0)+"x#"+.su| 0000bc80 62 33 25 2b 22 7c 22 2b a4 73 65 6c 28 28 59 4d |b3%+"|"+.sel((YM| 0000bc90 75 6c 25 3c 3e 59 44 69 76 25 29 2c 30 2c 30 2c |ul%<>YDiv%),0,0,| 0000bca0 30 2c 30 29 2b 22 79 23 22 2b c3 73 75 62 33 25 |0,0)+"y#"+.sub3%| 0000bcb0 2b 22 7c 20 31 3a 31 7c 22 2c 22 22 2c 63 72 65 |+"| 1:1|","",cre| 0000bcc0 61 74 65 29 0d 25 e4 72 20 c9 20 22 50 72 6f 63 |ate).%.r . "Proc| 0000bcd0 65 73 73 69 6e 67 2e 53 63 61 6c 69 6e 67 2e 78 |essing.Scaling.x| 0000bce0 22 20 3a 20 f2 63 72 65 61 74 65 5f 6d 65 6e 75 |" : .create_menu| 0000bcf0 28 78 25 2c 79 25 2c 22 5e 33 58 22 2c 31 30 2a |(x%,y%,"^3X",10*| 0000bd00 31 36 2c 34 30 2c 30 2c 22 24 22 2b c3 28 58 4d |16,40,0,"$"+.(XM| 0000bd10 75 6c 25 29 2b 22 3a 22 2b c3 28 58 44 69 76 25 |ul%)+":"+.(XDiv%| 0000bd20 29 2b 22 26 61 30 2d 39 3a 7c 22 2c 22 22 2c 63 |)+"&a0-9:|","",c| 0000bd30 72 65 61 74 65 29 0d 25 ee 72 20 c9 20 22 50 72 |reate).%.r . "Pr| 0000bd40 6f 63 65 73 73 69 6e 67 2e 53 63 61 6c 69 6e 67 |ocessing.Scaling| 0000bd50 2e 79 22 20 3a 20 f2 63 72 65 61 74 65 5f 6d 65 |.y" : .create_me| 0000bd60 6e 75 28 78 25 2c 79 25 2c 22 5e 33 59 22 2c 31 |nu(x%,y%,"^3Y",1| 0000bd70 30 2a 31 36 2c 34 30 2c 30 2c 22 24 22 2b c3 28 |0*16,40,0,"$"+.(| 0000bd80 59 4d 75 6c 25 29 2b 22 3a 22 2b c3 28 59 44 69 |YMul%)+":"+.(YDi| 0000bd90 76 25 29 2b 22 26 61 30 2d 39 3a 7c 22 2c 22 22 |v%)+"&a0-9:|",""| 0000bda0 2c 63 72 65 61 74 65 29 0d 25 f8 6e 20 c9 20 22 |,create).%.n . "| 0000bdb0 50 72 6f 63 65 73 73 69 6e 67 2e 49 6d 61 67 65 |Processing.Image| 0000bdc0 20 6e 75 6d 62 65 72 22 20 3a 20 f2 63 72 65 61 | number" : .crea| 0000bdd0 74 65 5f 6d 65 6e 75 28 78 25 2c 79 25 2c 22 5e |te_menu(x%,y%,"^| 0000bde0 32 4e 75 6d 62 65 72 22 2c 36 2a 31 36 2c 34 30 |2Number",6*16,40| 0000bdf0 2c 30 2c 22 24 22 2b c3 28 49 6d 61 67 65 4e 72 |,0,"$"+.(ImageNr| 0000be00 25 29 2b 22 26 61 30 2d 39 7c 22 2c 22 22 2c 63 |%)+"&a0-9|","",c| 0000be10 72 65 61 74 65 29 0d 26 02 93 20 c9 20 22 5a 6f |reate).&.. . "Zo| 0000be20 6f 6d 20 69 6d 61 67 65 22 20 3a 20 f2 63 72 65 |om image" : .cre| 0000be30 61 74 65 5f 6d 65 6e 75 28 78 25 2c 79 25 2c 22 |ate_menu(x%,y%,"| 0000be40 5e 31 5a 6f 6f 6d 22 2c 34 2a 31 36 2c 34 30 2c |^1Zoom",4*16,40,| 0000be50 30 2c 22 20 49 6e 23 22 2b c3 73 75 62 32 25 2b |0," In#"+.sub2%+| 0000be60 22 7c 20 4f 75 74 23 22 2b c3 73 75 62 32 25 2b |"| Out#"+.sub2%+| 0000be70 22 7c 22 2b a4 73 65 6c 28 28 28 5a 6f 6f 6d 58 |"|"+.sel(((ZoomX| 0000be80 3d 31 29 80 28 5a 6f 6f 6d 59 3d 31 29 29 2c 30 |=1).(ZoomY=1)),0| 0000be90 2c 30 2c 30 2c 30 29 2b 22 31 3a 31 7c 22 2c 22 |,0,0,0)+"1:1|","| 0000bea0 22 2c 63 72 65 61 74 65 29 0d 26 0c 70 20 c9 20 |",create).&.p . | 0000beb0 22 5a 6f 6f 6d 20 69 6d 61 67 65 2e 49 6e 22 2c |"Zoom image.In",| 0000bec0 22 5a 6f 6f 6d 20 69 6d 61 67 65 2e 4f 75 74 22 |"Zoom image.Out"| 0000bed0 20 3a 20 f2 63 72 65 61 74 65 5f 6d 65 6e 75 28 | : .create_menu(| 0000bee0 78 25 2c 79 25 2c 22 5e 32 22 2b c1 70 61 74 68 |x%,y%,"^2"+.path| 0000bef0 24 2c 31 32 29 2c 35 2a 31 36 2c 34 30 2c 30 2c |$,12),5*16,40,0,| 0000bf00 22 20 42 6f 74 68 7c 20 78 7c 20 79 7c 22 2c 22 |" Both| x| y|","| 0000bf10 22 2c 63 72 65 61 74 65 29 0d 26 16 53 20 c9 20 |",create).&.S . | 0000bf20 22 4d 69 72 72 6f 72 20 69 6d 61 67 65 22 20 3a |"Mirror image" :| 0000bf30 20 f2 63 72 65 61 74 65 5f 6d 65 6e 75 28 78 25 | .create_menu(x%| 0000bf40 2c 79 25 2c 22 5e 31 4d 69 72 72 6f 72 22 2c 36 |,y%,"^1Mirror",6| 0000bf50 2a 31 36 2c 34 30 2c 30 2c 22 20 78 7c 20 79 7c |*16,40,0," x| y|| 0000bf60 22 2c 22 22 2c 63 72 65 61 74 65 29 0d 26 20 59 |","",create).& Y| 0000bf70 20 c9 20 22 53 74 61 74 75 73 22 20 3a 20 f2 63 | . "Status" : .c| 0000bf80 72 65 61 74 65 5f 6d 65 6e 75 28 78 25 2c 79 25 |reate_menu(x%,y%| 0000bf90 2c 22 5e 31 53 74 61 74 75 73 22 2c 35 2a 31 36 |,"^1Status",5*16| 0000bfa0 2c 34 30 2c 30 2c 22 20 53 61 76 65 7c 20 4c 6f |,40,0," Save| Lo| 0000bfb0 61 64 7c 20 4b 69 6c 6c 7c 22 2c 22 22 2c 63 72 |ad| Kill|","",cr| 0000bfc0 65 61 74 65 29 0d 26 2a 82 20 c9 20 22 53 61 76 |eate).&*. . "Sav| 0000bfd0 65 20 69 6d 61 67 65 22 20 3a 20 f2 63 72 65 61 |e image" : .crea| 0000bfe0 74 65 5f 6d 65 6e 75 28 78 25 2c 79 25 2c 22 5e |te_menu(x%,y%,"^| 0000bff0 31 53 61 76 65 20 69 6d 61 67 65 22 2c 31 35 2a |1Save image",15*| 0000c000 31 36 2c 34 30 2c 30 2c 22 20 46 75 6c 6c 7c 20 |16,40,0," Full| | 0000c010 57 68 6f 6c 65 7c 20 57 68 6f 6c 65 20 28 73 63 |Whole| Whole (sc| 0000c020 61 6c 65 64 29 7c 20 50 61 72 74 7c 20 50 61 72 |aled)| Part| Par| 0000c030 74 20 28 73 63 61 6c 65 64 29 7c 22 2c 22 22 2c |t (scaled)|","",| 0000c040 63 72 65 61 74 65 29 0d 26 34 14 20 7f 20 3a 20 |create).&4. . : | 0000c050 43 75 72 72 53 75 62 24 3d 22 22 0d 26 3e 05 cb |CurrSub$="".&>..| 0000c060 0d 26 48 05 e1 0d 26 52 05 20 0d 26 5c 15 dd f2 |.&H...&R. .&\...| 0000c070 73 65 74 5f 6d 6f 64 65 28 6d 6f 64 65 25 29 0d |set_mode(mode%).| 0000c080 26 66 32 f4 20 53 65 74 73 20 6e 65 77 20 6d 6f |&f2. Sets new mo| 0000c090 64 65 20 28 69 66 20 65 6e 61 62 6c 65 64 29 20 |de (if enabled) | 0000c0a0 66 6f 72 20 69 6d 61 67 65 20 64 69 73 70 6c 61 |for image displa| 0000c0b0 79 0d 26 70 0e ea 20 6c 6f 67 32 62 70 70 25 0d |y.&p.. log2bpp%.| 0000c0c0 26 7a 3e e7 41 75 74 6f 4d 6f 64 65 20 8b 20 f2 |&z>.AutoMode . .| 0000c0d0 73 65 74 5f 74 72 61 6e 73 3a e1 3a f4 20 41 75 |set_trans:.:. Au| 0000c0e0 74 6f 20 6d 6f 64 65 20 73 65 6c 65 63 74 69 6f |to mode selectio| 0000c0f0 6e 20 6e 6f 74 20 65 6e 61 62 6c 65 64 0d 26 84 |n not enabled.&.| 0000c100 29 6c 6f 67 32 62 70 70 25 3d a4 6d 6f 64 65 5f |)log2bpp%=.mode_| 0000c110 76 61 72 28 6d 6f 64 65 25 2c 39 29 3a f4 20 4c |var(mode%,9):. L| 0000c120 6f 67 32 42 50 50 0d 26 8e 10 c8 8e 20 4d 6f 64 |og2BPP.&.... Mod| 0000c130 65 53 65 74 20 ca 0d 26 98 34 20 c9 20 30 20 3a |eSet ..&.4 . 0 :| 0000c140 20 f4 20 4e 6f 20 6d 6f 64 65 20 73 65 74 20 3a | . No mode set :| 0000c150 20 6e 6f 20 63 68 61 6e 67 65 20 6f 66 20 64 69 | no change of di| 0000c160 73 70 6c 61 79 20 6d 6f 64 65 0d 26 a2 3a 20 c9 |splay mode.&.: .| 0000c170 20 31 20 3a 20 6d 6f 64 65 25 3d bb c1 22 20 30 | 1 : mode%=.." 0| 0000c180 20 38 31 32 31 35 22 2c 6c 6f 67 32 62 70 70 25 | 81215",log2bpp%| 0000c190 2a 32 2b 31 2c 32 29 3a f4 20 4e 6f 72 6d 61 6c |*2+1,2):. Normal| 0000c1a0 20 73 65 74 0d 26 ac 3d 20 c9 20 32 20 3a 20 6d | set.&.= . 2 : m| 0000c1b0 6f 64 65 25 3d bb c1 22 31 38 31 39 32 30 32 31 |ode%=.."18192021| 0000c1c0 22 2c 6c 6f 67 32 62 70 70 25 2a 32 2b 31 2c 32 |",log2bpp%*2+1,2| 0000c1d0 29 3a f4 20 4d 75 6c 74 69 73 79 6e 63 20 73 65 |):. Multisync se| 0000c1e0 74 0d 26 b6 34 20 c9 20 33 20 3a 20 6d 6f 64 65 |t.&.4 . 3 : mode| 0000c1f0 25 3d 55 73 65 72 4d 6f 64 65 53 65 74 25 28 6c |%=UserModeSet%(l| 0000c200 6f 67 32 62 70 70 25 2b 31 29 3a f4 20 55 73 65 |og2bpp%+1):. Use| 0000c210 72 20 73 65 74 0d 26 c0 05 cb 0d 26 ca 7d e7 ac |r set.&....&.}..| 0000c220 4d 75 6c 74 69 53 79 6e 63 20 8c 20 e7 28 6d 6f |MultiSync . .(mo| 0000c230 64 65 25 3e 3d 31 38 29 80 28 6d 6f 64 65 25 3c |de%>=18).(mode%<| 0000c240 3d 32 38 29 20 8c 20 6d 6f 64 65 25 3d bb 28 c1 |=28) . mode%=.(.| 0000c250 22 30 30 30 38 31 32 31 35 31 35 30 30 32 34 30 |"000812151500240| 0000c260 30 30 38 31 32 31 35 22 2c 28 6d 6f 64 65 25 2d |0081215",(mode%-| 0000c270 31 38 29 2a 32 2b 31 2c 32 29 29 3a f4 20 4d 61 |18)*2+1,2)):. Ma| 0000c280 70 20 74 6f 20 6e 6f 6e 2d 6d 75 6c 74 69 73 79 |p to non-multisy| 0000c290 6e 63 20 6d 6f 64 65 0d 26 d4 25 f2 6d 6f 64 65 |nc mode.&.%.mode| 0000c2a0 5f 63 68 61 6e 67 65 28 6d 6f 64 65 25 29 3a f4 |_change(mode%):.| 0000c2b0 20 53 65 6c 65 63 74 20 6d 6f 64 65 0d 26 de 05 | Select mode.&..| 0000c2c0 e1 0d 26 e8 05 20 0d 26 f2 18 dd f2 6d 6f 64 65 |..&.. .&....mode| 0000c2d0 5f 63 68 61 6e 67 65 28 6d 6f 64 65 25 29 0d 26 |_change(mode%).&| 0000c2e0 fc 29 f4 20 4d 6f 64 65 20 68 61 73 20 63 68 61 |.). Mode has cha| 0000c2f0 6e 67 65 64 20 6f 72 20 73 65 6c 65 63 74 20 6e |nged or select n| 0000c300 65 77 20 6d 6f 64 65 0d 27 06 29 f4 20 49 66 20 |ew mode.'.). If | 0000c310 6d 6f 64 65 25 3e 3d 30 2c 20 6d 6f 64 65 20 6d |mode%>=0, mode m| 0000c320 6f 64 65 25 20 69 73 20 73 65 6c 65 63 74 65 64 |ode% is selected| 0000c330 0d 27 10 4a ea 20 5f 25 2c 78 77 69 6e 64 25 2c |.'.J. _%,xwind%,| 0000c340 79 77 69 6e 64 25 2c 6f 74 68 65 72 6d 6f 64 65 |ywind%,othermode| 0000c350 2c 63 6f 6c 6f 75 72 73 25 2c 70 6f 73 25 2c 61 |,colours%,pos%,a| 0000c360 6c 74 6d 6f 64 65 24 2c 6d 6f 64 65 63 6f 6c 73 |ltmode$,modecols| 0000c370 25 2c 73 70 72 63 6f 6c 73 25 0d 27 1a 33 c8 99 |%,sprcols%.'.3..| 0000c380 20 57 52 65 61 64 50 25 2c 2c 77 69 6d 70 70 61 | WReadP%,,wimppa| 0000c390 6c 3a f4 20 52 65 61 64 20 63 75 72 72 65 6e 74 |l:. Read current| 0000c3a0 20 57 49 4d 50 20 70 61 6c 65 74 74 65 0d 27 24 | WIMP palette.'$| 0000c3b0 1e e7 28 6d 6f 64 65 25 3e 3d 30 29 20 80 20 28 |..(mode%>=0) . (| 0000c3c0 6d 6f 64 65 25 3c 3e eb 29 20 8c 0d 27 2e 22 20 |mode%<>.) ..'." | 0000c3d0 c8 99 20 57 53 65 74 4d 25 2c 6d 6f 64 65 25 3a |.. WSetM%,mode%:| 0000c3e0 f4 20 43 68 61 6e 67 65 20 6d 6f 64 65 0d 27 38 |. Change mode.'8| 0000c3f0 10 20 e7 6d 6f 64 65 25 3c 3e eb 20 8c 0d 27 42 |. .mode%<>. ..'B| 0000c400 47 20 20 d4 20 31 2c 2d 31 30 2c 31 38 30 2c 31 |G . 1,-10,180,1| 0000c410 3a f4 20 41 6c 65 72 74 20 75 73 65 72 20 74 68 |:. Alert user th| 0000c420 61 74 20 27 69 64 65 61 6c 27 20 6d 6f 64 65 20 |at 'ideal' mode | 0000c430 63 6f 75 6c 64 6e 27 74 20 62 65 20 73 65 6c 65 |couldn't be sele| 0000c440 63 74 65 64 0d 27 4c 3a 20 20 63 6f 6c 6f 75 72 |cted.'L: colour| 0000c450 73 25 3d 32 5e 28 32 5e a4 6d 6f 64 65 5f 76 61 |s%=2^(2^.mode_va| 0000c460 72 28 6d 6f 64 65 25 2c 39 29 29 3a f4 20 43 6f |r(mode%,9)):. Co| 0000c470 6c 6f 75 72 73 20 72 65 71 75 69 72 65 64 0d 27 |lours required.'| 0000c480 56 a8 20 20 e7 63 6f 6c 6f 75 72 73 25 3d 32 20 |V. .colours%=2 | 0000c490 8c 20 61 6c 74 6d 6f 64 65 24 3d 22 7c 31 38 30 |. altmode$="|180| 0000c4a0 30 22 20 8b 20 e7 63 6f 6c 6f 75 72 73 25 3d 34 |0" . .colours%=4| 0000c4b0 20 8c 20 61 6c 74 6d 6f 64 65 24 3d 22 7c 31 39 | . altmode$="|19| 0000c4c0 30 38 7c 30 38 30 31 22 20 8b 20 e7 63 6f 6c 6f |08|0801" . .colo| 0000c4d0 75 72 73 25 3d 31 36 20 8c 20 61 6c 74 6d 6f 64 |urs%=16 . altmod| 0000c4e0 65 24 3d 22 7c 32 30 31 32 7c 31 36 31 32 7c 31 |e$="|2012|1612|1| 0000c4f0 32 30 39 22 20 8b 20 e7 63 6f 6c 6f 75 72 73 25 |209" . .colours%| 0000c500 3d 32 35 36 20 8c 20 61 6c 74 6d 6f 64 65 24 3d |=256 . altmode$=| 0000c510 22 7c 32 31 31 35 7c 32 34 31 35 7c 31 35 31 33 |"|2115|2415|1513| 0000c520 7c 31 33 31 30 22 0d 27 60 07 20 20 f5 0d 27 6a ||1310".'`. ..'j| 0000c530 bf 20 20 e7 eb 3d 6d 6f 64 65 25 20 8b 20 70 6f |. ..=mode% . po| 0000c540 73 25 3d a7 61 6c 74 6d 6f 64 65 24 2c 22 7c 22 |s%=.altmode$,"|"| 0000c550 2b c2 22 30 22 2b c3 6d 6f 64 65 25 2c 32 29 29 |+."0"+.mode%,2))| 0000c560 3a e7 70 6f 73 25 3e 30 20 8c 20 6d 6f 64 65 25 |:.pos%>0 . mode%| 0000c570 3d bb 28 c1 61 6c 74 6d 6f 64 65 24 2c 70 6f 73 |=.(.altmode$,pos| 0000c580 25 2b 33 29 29 20 8b 20 f2 65 72 72 6f 72 28 2d |%+3)) . .error(-| 0000c590 31 2c 22 49 20 66 61 69 6c 65 64 20 74 6f 20 73 |1,"I failed to s| 0000c5a0 65 6c 65 63 74 20 74 68 65 20 69 64 65 61 6c 20 |elect the ideal | 0000c5b0 6d 6f 64 65 2c 20 6e 6f 72 20 61 6e 79 20 61 6c |mode, nor any al| 0000c5c0 74 65 72 6e 61 74 69 76 65 20 6d 6f 64 65 20 21 |ternative mode !| 0000c5d0 20 4e 6f 77 20 79 6f 75 20 74 72 79 20 69 74 20 | Now you try it | 0000c5e0 21 22 29 3a 6d 6f 64 65 25 3d 2d 31 0d 27 74 23 |!"):mode%=-1.'t#| 0000c5f0 20 20 c8 99 20 57 53 65 74 4d 25 2c 6d 6f 64 65 | .. WSetM%,mode| 0000c600 25 3a f4 20 43 68 61 6e 67 65 20 6d 6f 64 65 0d |%:. Change mode.| 0000c610 27 7e 1d 20 20 fd 20 28 eb 3d 6d 6f 64 65 25 29 |'~. . (.=mode%)| 0000c620 20 84 20 28 6d 6f 64 65 25 3c 30 29 0d 27 88 06 | . (mode%<0).'..| 0000c630 20 cd 0d 27 92 05 cd 0d 27 9c 40 6f 74 68 65 72 | ..'....'.@other| 0000c640 6d 6f 64 65 3d 28 eb 3c 3e 43 75 72 72 4d 6f 64 |mode=(.<>CurrMod| 0000c650 65 25 29 3a 43 75 72 72 4d 6f 64 65 25 3d eb 3a |e%):CurrMode%=.:| 0000c660 f4 20 4d 6f 64 65 20 6f 74 68 65 72 20 74 68 61 |. Mode other tha| 0000c670 6e 20 6f 6c 64 20 3f 0d 27 a6 41 58 65 69 67 25 |n old ?.'.AXeig%| 0000c680 3d a4 6d 6f 64 65 5f 76 61 72 28 eb 2c 34 29 3a |=.mode_var(.,4):| 0000c690 59 65 69 67 25 3d a4 6d 6f 64 65 5f 76 61 72 28 |Yeig%=.mode_var(| 0000c6a0 eb 2c 35 29 3a f4 20 52 65 61 64 20 58 2f 59 45 |.,5):. Read X/YE| 0000c6b0 69 67 46 61 63 74 6f 72 0d 27 b0 42 78 77 69 6e |igFactor.'.Bxwin| 0000c6c0 64 25 3d a4 6d 6f 64 65 5f 76 61 72 28 eb 2c 31 |d%=.mode_var(.,1| 0000c6d0 31 29 2b 31 3a 79 77 69 6e 64 25 3d a4 6d 6f 64 |1)+1:ywind%=.mod| 0000c6e0 65 5f 76 61 72 28 eb 2c 31 32 29 2b 31 3a f4 20 |e_var(.,12)+1:. | 0000c6f0 52 65 73 6f 6c 75 74 69 6f 6e 0d 27 ba 41 53 63 |Resolution.'.ASc| 0000c700 72 57 25 3d 28 31 3c 3c 58 65 69 67 25 29 2a 78 |rW%=(1<<Xeig%)*x| 0000c710 77 69 6e 64 25 3a 53 63 72 48 25 3d 28 31 3c 3c |wind%:ScrH%=(1<<| 0000c720 59 65 69 67 25 29 2a 79 77 69 6e 64 25 3a f4 20 |Yeig%)*ywind%:. | 0000c730 53 63 72 65 65 6e 20 73 69 7a 65 0d 27 c4 0a e7 |Screen size.'...| 0000c740 49 6d 67 20 8c 0d 27 ce 2b 20 f2 73 65 74 5f 74 |Img ..'.+ .set_t| 0000c750 72 61 6e 73 3a f4 20 52 65 2d 73 65 74 20 73 70 |rans:. Re-set sp| 0000c760 72 69 74 65 20 74 72 61 6e 73 6c 61 74 69 6f 6e |rite translation| 0000c770 0d 27 d8 41 20 e7 41 75 74 6f 50 61 6c 20 8c 20 |.'.A .AutoPal . | 0000c780 f2 73 65 74 5f 70 61 6c 65 74 74 65 28 31 29 3a |.set_palette(1):| 0000c790 f4 20 53 65 6c 65 63 74 20 69 6d 61 67 65 20 70 |. Select image p| 0000c7a0 61 6c 65 74 74 65 20 69 66 20 65 6e 61 62 6c 65 |alette if enable| 0000c7b0 64 0d 27 e2 23 20 e7 6f 74 68 65 72 6d 6f 64 65 |d.'.# .othermode| 0000c7c0 20 8c 20 f2 6e 65 77 5f 69 6d 61 67 65 5f 77 69 | . .new_image_wi| 0000c7d0 6e 64 6f 77 0d 27 ec 05 cd 0d 27 f6 05 e1 0d 28 |ndow.'....'....(| 0000c7e0 00 05 20 0d 28 0a 0f dd f2 73 65 74 5f 74 72 61 |.. .(....set_tra| 0000c7f0 6e 73 0d 28 14 43 f4 20 53 65 74 73 20 74 72 61 |ns.(.C. Sets tra| 0000c800 6e 73 6c 61 74 69 6f 6e 20 66 61 63 74 6f 72 73 |nslation factors| 0000c810 20 28 74 72 61 6e 73 74 61 62 20 26 20 70 61 6c | (transtab & pal| 0000c820 65 74 74 65 29 20 66 6f 72 20 73 70 72 69 74 65 |ette) for sprite| 0000c830 20 70 6c 6f 74 0d 28 1e 21 ea 20 6d 63 25 2c 73 | plot.(.!. mc%,s| 0000c840 63 25 2c 76 25 2c 63 25 2c 67 76 25 2c 67 69 25 |c%,v%,c%,gv%,gi%| 0000c850 2c 69 25 2c 70 25 0d 28 28 3c 6d 63 25 3d 32 5e |,i%,p%.((<mc%=2^| 0000c860 28 32 5e a4 6c 6f 67 32 42 50 50 29 3a 73 63 25 |(2^.log2BPP):sc%| 0000c870 3d 32 5e 53 70 72 43 6f 6c 62 69 74 73 25 3a f4 |=2^SprColbits%:.| 0000c880 20 43 6f 6c 6f 75 72 73 20 61 76 61 69 6c 61 62 | Colours availab| 0000c890 6c 65 0d 28 32 47 53 68 6f 77 50 61 6c 25 28 29 |le.(2GShowPal%()| 0000c8a0 3d 49 6d 67 50 61 6c 25 28 29 3a 53 68 6f 77 50 |=ImgPal%():ShowP| 0000c8b0 61 6c 25 28 30 29 3d 32 5e 53 68 6f 77 50 61 6c |al%(0)=2^ShowPal| 0000c8c0 25 28 30 29 3a f4 20 43 6f 70 79 20 69 6d 61 67 |%(0):. Copy imag| 0000c8d0 65 20 70 61 6c 65 74 74 65 0d 28 3c 25 e7 6d 63 |e palette.(<%.mc| 0000c8e0 25 3d 73 63 25 20 8c 20 54 72 61 6e 73 54 61 62 |%=sc% . TransTab| 0000c8f0 49 64 3d b9 3a e1 3a f4 20 49 64 65 61 6c 0d 28 |Id=.:.:. Ideal.(| 0000c900 46 25 54 72 61 6e 73 54 61 62 49 64 3d a3 3a f4 |F%TransTabId=.:.| 0000c910 20 41 6c 77 61 79 73 20 74 72 61 6e 73 6c 61 74 | Always translat| 0000c920 69 6f 6e 0d 28 50 0e e7 6d 63 25 3e 73 63 25 20 |ion.(P..mc%>sc% | 0000c930 8c 0d 28 5a 3a 20 e7 6d 63 25 3c 3d 31 36 20 8c |..(Z: .mc%<=16 .| 0000c940 20 e3 20 63 25 3d 30 20 b8 20 73 63 25 2d 31 3a | . c%=0 . sc%-1:| 0000c950 74 72 61 6e 73 74 61 62 25 3f 63 25 3d 63 25 80 |transtab%?c%=c%.| 0000c960 28 6d 63 25 2d 31 29 3a ed 3a e1 0d 28 64 3b 20 |(mc%-1):.:..(d; | 0000c970 c8 99 20 22 54 72 61 6e 73 6c 61 74 6f 72 5f 50 |.. "Translator_P| 0000c980 61 6c 65 74 74 65 22 2c 38 2c 64 75 6d 25 2c 31 |alette",8,dum%,1| 0000c990 3a f4 20 47 65 74 20 63 75 72 72 65 6e 74 20 70 |:. Get current p| 0000c9a0 61 6c 65 74 74 65 0d 28 6e 5f 20 e3 20 63 25 3d |alette.(n_ . c%=| 0000c9b0 30 20 b8 20 73 63 25 2d 31 3a c8 99 20 22 54 72 |0 . sc%-1:.. "Tr| 0000c9c0 61 6e 73 6c 61 74 6f 72 5f 43 6c 6f 73 65 73 74 |anslator_Closest| 0000c9d0 54 6f 52 47 42 22 2c 53 68 6f 77 50 61 6c 25 28 |ToRGB",ShowPal%(| 0000c9e0 63 25 2b 31 29 2c 32 35 36 2c 64 75 6d 25 20 b8 |c%+1),256,dum% .| 0000c9f0 20 76 25 3a 74 72 61 6e 73 74 61 62 25 3f 63 25 | v%:transtab%?c%| 0000ca00 3d 76 25 3a ed 0d 28 78 31 cc 20 f4 20 4c 65 73 |=v%:..(x1. . Les| 0000ca10 73 20 63 6f 6c 6f 75 72 73 20 74 68 61 6e 20 72 |s colours than r| 0000ca20 65 71 75 69 72 65 64 2c 20 73 6f 20 63 6f 6d 70 |equired, so comp| 0000ca30 72 6f 6d 69 73 65 0d 28 82 85 20 e7 ac 46 72 65 |romise.(.. ..Fre| 0000ca40 71 43 61 6c 63 20 8c 20 f2 68 6f 75 72 5f 6f 6e |qCalc . .hour_on| 0000ca50 3a c8 99 20 22 54 72 61 6e 73 6c 61 74 6f 72 5f |:.. "Translator_| 0000ca60 50 69 78 65 6c 46 72 65 71 22 2c 53 70 72 50 74 |PixelFreq",SprPt| 0000ca70 72 25 2c 66 72 65 71 25 3a f2 68 6f 75 72 5f 6f |r%,freq%:.hour_o| 0000ca80 66 66 3a 46 72 65 71 43 61 6c 63 3d b9 3a f4 20 |ff:FreqCalc=.:. | 0000ca90 43 61 6c 63 75 6c 61 74 65 20 70 69 78 65 6c 20 |Calculate pixel | 0000caa0 66 72 65 71 75 65 6e 63 69 65 73 20 69 6e 20 69 |frequencies in i| 0000cab0 6d 61 67 65 20 73 70 72 69 74 65 0d 28 8c 1c 20 |mage sprite.(.. | 0000cac0 f2 68 6f 75 72 5f 6f 6e 3a f4 20 48 6f 75 72 67 |.hour_on:. Hourg| 0000cad0 6c 61 73 73 20 6f 6e 0d 28 96 43 20 70 25 3d 64 |lass on.(.C p%=d| 0000cae0 75 6d 25 3a e3 20 63 25 3d 31 20 b8 20 73 63 25 |um%:. c%=1 . sc%| 0000caf0 3a 21 70 25 3d 49 6d 67 50 61 6c 25 28 63 25 29 |:!p%=ImgPal%(c%)| 0000cb00 3a 70 25 2b 3d 34 3a ed 3a f4 20 49 6d 61 67 65 |:p%+=4:.:. Image| 0000cb10 27 73 20 70 61 6c 65 74 74 65 0d 28 a0 3a 20 f4 |'s palette.(.: .| 0000cb20 20 43 61 6c 63 75 6c 61 74 65 20 74 72 61 6e 73 | Calculate trans| 0000cb30 6c 61 74 69 6f 6e 20 74 61 62 6c 65 20 61 6e 64 |lation table and| 0000cb40 20 70 61 6c 65 74 74 65 20 66 6f 72 20 64 69 73 | palette for dis| 0000cb50 70 6c 61 79 0d 28 aa 4b 20 c8 99 20 22 54 72 61 |play.(.K .. "Tra| 0000cb60 6e 73 6c 61 74 6f 72 5f 43 61 6c 63 54 72 61 6e |nslator_CalcTran| 0000cb70 73 22 2c 73 63 25 2c 66 72 65 71 25 2c 64 75 6d |s",sc%,freq%,dum| 0000cb80 25 2c 6d 63 25 2c 74 72 61 6e 73 74 61 62 25 2c |%,mc%,transtab%,| 0000cb90 61 72 67 25 20 b8 20 2c 2c 2c 75 73 65 64 25 0d |arg% . ,,,used%.| 0000cba0 28 b4 43 20 70 25 3d 61 72 67 25 3a e3 20 63 25 |(.C p%=arg%:. c%| 0000cbb0 3d 31 20 b8 20 75 73 65 64 25 3a 53 68 6f 77 50 |=1 . used%:ShowP| 0000cbc0 61 6c 25 28 63 25 29 3d 21 70 25 3a 70 25 2b 3d |al%(c%)=!p%:p%+=| 0000cbd0 34 3a ed 3a f4 20 52 65 61 64 20 70 61 6c 65 74 |4:.:. Read palet| 0000cbe0 74 65 0d 28 be 38 20 53 68 6f 77 50 61 6c 25 28 |te.(.8 ShowPal%(| 0000cbf0 30 29 3d 75 73 65 64 25 3a f4 20 43 6f 6c 6f 75 |0)=used%:. Colou| 0000cc00 72 73 20 75 73 65 64 20 69 6e 20 64 69 73 70 6c |rs used in displ| 0000cc10 61 79 20 70 61 6c 65 74 74 65 0d 28 c8 1e 20 f2 |ay palette.(.. .| 0000cc20 68 6f 75 72 5f 6f 66 66 3a f4 20 48 6f 75 72 67 |hour_off:. Hourg| 0000cc30 6c 61 73 73 20 6f 66 66 0d 28 d2 05 cd 0d 28 dc |lass off.(....(.| 0000cc40 05 e1 0d 28 e6 05 20 0d 28 f0 0e dd f2 61 75 74 |...(.. .(....aut| 0000cc50 6f 7a 6f 6f 6d 0d 28 fa 33 f4 20 41 64 6a 75 73 |ozoom.(.3. Adjus| 0000cc60 74 20 7a 6f 6f 6d 20 66 61 63 74 6f 72 20 66 6f |t zoom factor fo| 0000cc70 72 20 61 75 74 6f 20 7a 6f 6f 6d 20 28 69 66 20 |r auto zoom (if | 0000cc80 65 6e 61 62 6c 65 64 29 0d 29 04 08 ea 20 5f 25 |enabled).)... _%| 0000cc90 0d 29 0e 0f e7 41 75 74 6f 5a 6f 6f 6d 20 8c 0d |.)...AutoZoom ..| 0000cca0 29 18 37 20 5f 25 3d a4 73 70 72 57 2a 5a 6f 6f |).7 _%=.sprW*Zoo| 0000ccb0 6d 58 3a c8 95 20 5f 25 3e 53 63 72 57 25 3a 5a |mX:.. _%>ScrW%:Z| 0000ccc0 6f 6f 6d 58 3d 5a 6f 6f 6d 58 2f 32 3a 5f 25 3d |oomX=ZoomX/2:_%=| 0000ccd0 5f 25 2f 32 3a ce 0d 29 22 36 20 e7 5a 6f 6f 6d |_%/2:..)"6 .Zoom| 0000cce0 58 3c 31 20 8c 20 c8 95 20 5f 25 2a 32 3c 3d 53 |X<1 . .. _%*2<=S| 0000ccf0 63 72 57 25 3a 5a 6f 6f 6d 58 3d 5a 6f 6f 6d 58 |crW%:ZoomX=ZoomX| 0000cd00 2a 32 3a 5f 25 3d 5f 25 2a 32 3a ce 0d 29 2c 37 |*2:_%=_%*2:..),7| 0000cd10 20 5f 25 3d a4 73 70 72 48 2a 5a 6f 6f 6d 59 3a | _%=.sprH*ZoomY:| 0000cd20 c8 95 20 5f 25 3e 53 63 72 48 25 3a 5a 6f 6f 6d |.. _%>ScrH%:Zoom| 0000cd30 59 3d 5a 6f 6f 6d 59 2f 32 3a 5f 25 3d 5f 25 2f |Y=ZoomY/2:_%=_%/| 0000cd40 32 3a ce 0d 29 36 36 20 e7 5a 6f 6f 6d 59 3c 31 |2:..)66 .ZoomY<1| 0000cd50 20 8c 20 c8 95 20 5f 25 2a 32 3c 3d 53 63 72 48 | . .. _%*2<=ScrH| 0000cd60 25 3a 5a 6f 6f 6d 59 3d 5a 6f 6f 6d 59 2a 32 3a |%:ZoomY=ZoomY*2:| 0000cd70 5f 25 3d 5f 25 2a 32 3a ce 0d 29 40 05 cd 0d 29 |_%=_%*2:..)@...)| 0000cd80 4a 05 e1 0d 29 54 05 20 0d 29 5e 23 dd f2 70 6c |J...)T. .)^#..pl| 0000cd90 6f 74 5f 69 6d 61 67 65 28 78 25 2c 79 25 2c 61 |ot_image(x%,y%,a| 0000cda0 63 74 25 2c 73 63 61 6c 65 25 29 0d 29 68 2f f4 |ct%,scale%).)h/.| 0000cdb0 20 50 6c 6f 74 73 20 69 6d 61 67 65 20 73 70 72 | Plots image spr| 0000cdc0 69 74 65 20 77 69 74 68 20 74 72 61 6e 73 6c 61 |ite with transla| 0000cdd0 74 69 6f 6e 20 74 61 62 6c 65 0d 29 72 7f e7 54 |tion table.)r..T| 0000cde0 72 61 6e 73 54 61 62 49 64 20 8c 20 c8 99 20 4f |ransTabId . .. O| 0000cdf0 53 53 70 6f 70 25 2c 35 36 34 2c 53 70 72 69 74 |SSpop%,564,Sprit| 0000ce00 65 25 2c 53 70 72 50 74 72 25 2c 78 25 2c 79 25 |e%,SprPtr%,x%,y%| 0000ce10 2c 61 63 74 25 2c 73 63 61 6c 65 25 20 8b 20 c8 |,act%,scale% . .| 0000ce20 99 20 4f 53 53 70 6f 70 25 2c 35 36 34 2c 53 70 |. OSSpop%,564,Sp| 0000ce30 72 69 74 65 25 2c 53 70 72 50 74 72 25 2c 78 25 |rite%,SprPtr%,x%| 0000ce40 2c 79 25 2c 61 63 74 25 2c 73 63 61 6c 65 25 2c |,y%,act%,scale%,| 0000ce50 74 72 61 6e 73 74 61 62 25 0d 29 7c 05 e1 0d 29 |transtab%.)|...)| 0000ce60 86 05 20 0d 29 90 13 dd f2 75 6e 70 61 63 6b 28 |.. .)....unpack(| 0000ce70 74 79 70 65 24 29 0d 29 9a 2b f4 20 55 6e 70 61 |type$).).+. Unpa| 0000ce80 63 6b 73 20 69 6d 61 67 65 20 28 66 69 6e 61 6c |cks image (final| 0000ce90 20 75 6e 70 61 63 6b 69 6e 67 20 70 68 61 73 65 | unpacking phase| 0000cea0 29 0d 29 a4 11 ea 20 63 25 2c 62 70 70 25 2c 70 |).)... c%,bpp%,p| 0000ceb0 63 25 0d 29 ae 29 62 70 70 25 3d 49 6e 50 61 6c |c%.).)bpp%=InPal| 0000cec0 25 28 30 29 3a f4 20 42 69 74 73 20 70 65 72 20 |%(0):. Bits per | 0000ced0 70 69 78 65 6c 20 69 6e 70 75 74 0d 29 b8 34 f2 |pixel input.).4.| 0000cee0 76 61 72 28 22 69 6e 62 69 22 2c 62 70 70 25 29 |var("inbi",bpp%)| 0000cef0 3a f4 20 49 6e 70 75 74 20 28 69 6d 61 67 65 29 |:. Input (image)| 0000cf00 20 62 69 74 73 20 70 65 72 20 70 69 78 65 6c 0d | bits per pixel.| 0000cf10 29 c2 26 f2 76 61 72 28 22 62 77 68 69 22 2c 42 |).&.var("bwhi",B| 0000cf20 6c 61 63 6b 57 68 69 74 65 29 3a f4 20 42 2f 77 |lackWhite):. B/w| 0000cf30 20 66 6c 61 67 0d 29 cc 31 f2 76 61 72 28 22 65 | flag.).1.var("e| 0000cf40 73 70 72 22 2c 45 72 72 53 70 72 65 61 64 29 3a |spr",ErrSpread):| 0000cf50 f4 20 45 72 72 6f 72 20 73 70 72 65 61 64 69 6e |. Error spreadin| 0000cf60 67 20 66 6c 61 67 0d 29 d6 26 f2 76 61 72 28 22 |g flag.).&.var("| 0000cf70 7a 69 67 7a 22 2c 5a 69 67 5a 61 67 29 3a f4 20 |zigz",ZigZag):. | 0000cf80 5a 69 67 20 7a 61 67 20 66 6c 61 67 0d 29 e0 2c |Zig zag flag.).,| 0000cf90 f2 76 61 72 28 22 69 6e 76 74 22 2c 49 6e 76 65 |.var("invt",Inve| 0000cfa0 72 74 52 47 42 29 3a f4 20 49 6e 76 65 72 74 20 |rtRGB):. Invert | 0000cfb0 52 47 42 20 66 6c 61 67 0d 29 ea 2a f2 76 61 72 |RGB flag.).*.var| 0000cfc0 28 22 70 68 61 73 22 2c 31 29 3a f4 20 46 69 6e |("phas",1):. Fin| 0000cfd0 61 6c 20 75 6e 70 61 63 6b 69 6e 67 20 70 68 61 |al unpacking pha| 0000cfe0 73 65 0d 29 f4 26 f2 76 61 72 28 22 72 67 62 62 |se.).&.var("rgbb| 0000cff0 22 2c 52 47 42 62 69 74 73 25 29 3a f4 20 52 2f |",RGBbits%):. R/| 0000d000 47 2f 42 20 62 69 74 73 0d 29 fe 3d f2 76 61 72 |G/B bits.).=.var| 0000d010 28 22 79 6d 75 6c 22 2c 59 4d 75 6c 25 29 3a f2 |("ymul",YMul%):.| 0000d020 76 61 72 28 22 79 64 69 76 22 2c 59 44 69 76 25 |var("ydiv",YDiv%| 0000d030 29 3a f4 20 53 63 61 6c 69 6e 67 20 66 61 63 74 |):. Scaling fact| 0000d040 6f 72 73 20 59 0d 2a 08 3d f2 76 61 72 28 22 78 |ors Y.*.=.var("x| 0000d050 6d 75 6c 22 2c 58 4d 75 6c 25 29 3a f2 76 61 72 |mul",XMul%):.var| 0000d060 28 22 78 64 69 76 22 2c 58 44 69 76 25 29 3a f4 |("xdiv",XDiv%):.| 0000d070 20 53 63 61 6c 69 6e 67 20 66 61 63 74 6f 72 73 | Scaling factors| 0000d080 20 58 0d 2a 12 38 f4 20 53 65 74 20 70 61 6c 65 | X.*.8. Set pale| 0000d090 74 74 65 20 28 69 66 20 72 65 6c 65 76 61 6e 74 |tte (if relevant| 0000d0a0 2c 20 69 2e 65 2e 20 6e 6f 74 20 70 75 72 65 20 |, i.e. not pure | 0000d0b0 52 47 42 20 69 6e 70 75 74 29 0d 2a 1c 3f e7 62 |RGB input).*.?.b| 0000d0c0 70 70 25 3c 3d 38 20 8c 20 e3 20 63 25 3d 30 20 |pp%<=8 . . c%=0 | 0000d0d0 b8 20 32 5e 62 70 70 25 2d 31 3a 70 61 6c 72 67 |. 2^bpp%-1:palrg| 0000d0e0 62 25 21 28 63 25 3c 3c 32 29 3d 49 6e 50 61 6c |b%!(c%<<2)=InPal| 0000d0f0 25 28 63 25 2b 31 29 3a ed 0d 2a 26 39 e7 4f 75 |%(c%+1):..*&9.Ou| 0000d100 74 4d 6f 64 65 3d 31 20 8c 20 70 63 25 3d 30 20 |tMode=1 . pc%=0 | 0000d110 8b 20 70 63 25 3d 4f 75 74 50 61 6c 3a f4 20 53 |. pc%=OutPal:. S| 0000d120 65 6c 65 63 74 20 70 61 6c 65 74 74 65 20 63 6f |elect palette co| 0000d130 64 65 0d 2a 30 10 e7 43 6c 65 61 72 46 69 6c 65 |de.*0..ClearFile| 0000d140 20 8c 0d 2a 3a 39 20 4f 75 74 3d ae 28 43 6c 65 | ..*:9 Out=.(Cle| 0000d150 61 72 53 61 76 65 24 29 3a f2 76 61 72 28 22 63 |arSave$):.var("c| 0000d160 61 70 74 22 2c 4f 75 74 29 3a f4 20 4f 70 65 6e |apt",Out):. Open| 0000d170 20 43 6c 65 61 72 20 66 69 6c 65 0d 2a 44 75 20 | Clear file.*Du | 0000d180 f2 6f 73 74 72 69 6e 67 28 4f 75 74 2c 22 54 72 |.ostring(Out,"Tr| 0000d190 61 6e 73 6c 61 74 6f 72 22 29 3a f2 6f 28 4f 75 |anslator"):.o(Ou| 0000d1a0 74 2c 30 2c 31 29 3a f2 6f 28 4f 75 74 2c 36 30 |t,0,1):.o(Out,60| 0000d1b0 30 2c 34 29 3a f2 6f 28 4f 75 74 2c 53 70 72 57 |0,4):.o(Out,SprW| 0000d1c0 25 2c 34 29 3a f2 6f 28 4f 75 74 2c 53 70 72 48 |%,4):.o(Out,SprH| 0000d1d0 25 2c 34 29 3a f2 6f 28 4f 75 74 2c 49 6d 67 42 |%,4):.o(Out,ImgB| 0000d1e0 69 74 73 25 2c 34 29 3a f4 20 48 65 61 64 65 72 |its%,4):. Header| 0000d1f0 0d 2a 4e 6b 20 e7 49 6d 67 42 69 74 73 25 3c 3d |.*Nk .ImgBits%<=| 0000d200 38 20 8c 20 e3 20 63 25 3d 31 20 b8 20 32 5e 49 |8 . . c%=1 . 2^I| 0000d210 6d 67 42 69 74 73 25 3a 72 67 62 25 3d 49 6e 50 |mgBits%:rgb%=InP| 0000d220 61 6c 25 28 63 25 29 3a d5 23 4f 75 74 2c 72 67 |al%(c%):.#Out,rg| 0000d230 62 25 3e 3e 31 36 3a d5 23 4f 75 74 2c 72 67 62 |b%>>16:.#Out,rgb| 0000d240 25 3e 3e 38 3a d5 23 4f 75 74 2c 72 67 62 25 3a |%>>8:.#Out,rgb%:| 0000d250 ed 3a f4 20 50 61 6c 65 74 74 65 0d 2a 58 05 cd |.:. Palette.*X..| 0000d260 0d 2a 62 3a c8 99 20 22 54 72 61 6e 73 6c 61 74 |.*b:.. "Translat| 0000d270 6f 72 5f 55 6e 70 61 63 6b 50 72 65 22 2c 70 61 |or_UnpackPre",pa| 0000d280 6c 72 67 62 25 2c 70 63 25 3a f4 20 49 6e 69 74 |lrgb%,pc%:. Init| 0000d290 20 75 6e 70 61 63 6b 69 6e 67 0d 2a 6c 68 49 6d | unpacking.*lhIm| 0000d2a0 67 50 61 6c 25 28 30 29 3d 53 70 72 43 6f 6c 62 |gPal%(0)=SprColb| 0000d2b0 69 74 73 25 3a e3 20 63 25 3d 30 20 b8 20 32 5e |its%:. c%=0 . 2^| 0000d2c0 53 70 72 43 6f 6c 62 69 74 73 25 2d 31 3a 49 6d |SprColbits%-1:Im| 0000d2d0 67 50 61 6c 25 28 63 25 2b 31 29 3d 70 61 6c 72 |gPal%(c%+1)=palr| 0000d2e0 67 62 25 21 28 63 25 3c 3c 32 29 3a ed 3a f4 20 |gb%!(c%<<2):.:. | 0000d2f0 52 65 61 64 20 69 6d 61 67 65 20 70 61 6c 65 74 |Read image palet| 0000d300 74 65 0d 2a 76 37 f2 75 6e 70 61 63 6b 5f 70 68 |te.*v7.unpack_ph| 0000d310 61 73 65 28 74 79 70 65 24 2c 31 29 3a f4 20 45 |ase(type$,1):. E| 0000d320 78 65 63 75 74 65 20 66 69 6e 61 6c 20 75 6e 70 |xecute final unp| 0000d330 61 63 6b 20 70 68 61 73 65 0d 2a 80 10 e7 43 6c |ack phase.*...Cl| 0000d340 65 61 72 46 69 6c 65 20 8c 0d 2a 8a a9 20 43 6c |earFile ..*.. Cl| 0000d350 65 61 72 46 69 6c 65 3d a3 3a d9 23 4f 75 74 3a |earFile=.:.#Out:| 0000d360 e7 a4 76 61 72 28 22 63 61 70 74 22 29 3d 30 20 |..var("capt")=0 | 0000d370 8c 20 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 36 |. .. "OS_File",6| 0000d380 2c 43 6c 65 61 72 53 61 76 65 24 3a f2 65 72 72 |,ClearSave$:.err| 0000d390 6f 72 28 2d 31 2c 22 45 72 72 6f 72 20 64 75 72 |or(-1,"Error dur| 0000d3a0 69 6e 67 20 6f 75 74 70 75 74 20 74 6f 20 43 6c |ing output to Cl| 0000d3b0 65 61 72 20 66 69 6c 65 20 3a 20 22 2b a4 73 74 |ear file : "+.st| 0000d3c0 72 69 6e 67 28 a4 76 61 72 28 22 65 72 72 6f 22 |ring(.var("erro"| 0000d3d0 29 2b 34 29 29 3a f4 20 52 65 6d 6f 76 65 20 43 |)+4)):. Remove C| 0000d3e0 6c 65 61 72 20 66 69 6c 65 20 69 66 20 65 72 72 |lear file if err| 0000d3f0 6f 72 0d 2a 94 05 cd 0d 2a 9e 05 e1 0d 2a a8 05 |or.*....*....*..| 0000d400 20 0d 2a b2 20 dd f2 75 6e 70 61 63 6b 5f 70 68 | .*. ..unpack_ph| 0000d410 61 73 65 28 74 79 70 65 24 2c 70 68 61 73 65 25 |ase(type$,phase%| 0000d420 29 0d 2a bc 35 f4 20 45 78 65 63 75 74 65 73 20 |).*.5. Executes | 0000d430 75 6e 70 61 63 6b 20 70 68 61 73 65 2c 20 62 6c |unpack phase, bl| 0000d440 61 6e 6b 73 20 73 63 72 65 65 6e 20 69 66 20 65 |anks screen if e| 0000d450 6e 61 62 6c 65 64 0d 2a c6 2d f2 76 61 72 28 22 |nabled.*.-.var("| 0000d460 70 68 61 73 22 2c 70 68 61 73 65 25 29 3a f4 20 |phas",phase%):. | 0000d470 53 65 74 20 75 6e 70 61 63 6b 69 6e 67 20 70 68 |Set unpacking ph| 0000d480 61 73 65 0d 2a d0 2b 24 64 75 6d 25 3d c0 74 79 |ase.*.+$dum%=.ty| 0000d490 70 65 24 2b 22 20 20 20 20 22 2c 34 29 3a f4 20 |pe$+" ",4):. | 0000d4a0 54 79 70 65 20 74 6f 20 75 6e 70 61 63 6b 0d 2a |Type to unpack.*| 0000d4b0 da 3d e7 42 6c 61 6e 6b 69 6e 67 20 8c 20 c8 99 |.=.Blanking . ..| 0000d4c0 20 22 54 72 61 6e 73 6c 61 74 6f 72 5f 56 69 64 | "Translator_Vid| 0000d4d0 65 6f 44 4d 41 22 2c 30 3a f4 20 42 6c 61 6e 6b |eoDMA",0:. Blank| 0000d4e0 20 69 66 20 65 6e 61 62 6c 65 64 0d 2a e4 37 c8 | if enabled.*.7.| 0000d4f0 99 20 22 54 72 61 6e 73 6c 61 74 6f 72 5f 55 6e |. "Translator_Un| 0000d500 70 61 63 6b 22 2c 21 64 75 6d 25 3a f4 20 45 78 |pack",!dum%:. Ex| 0000d510 65 63 75 74 65 20 75 6e 70 61 63 6b 20 70 68 61 |ecute unpack pha| 0000d520 73 65 0d 2a ee 41 e7 42 6c 61 6e 6b 69 6e 67 20 |se.*.A.Blanking | 0000d530 8c 20 c8 99 20 22 54 72 61 6e 73 6c 61 74 6f 72 |. .. "Translator| 0000d540 5f 56 69 64 65 6f 44 4d 41 22 2c 31 3a f4 20 52 |_VideoDMA",1:. R| 0000d550 65 2d 65 6e 61 62 6c 65 20 69 66 20 62 6c 61 6e |e-enable if blan| 0000d560 6b 65 64 0d 2a f8 05 e1 0d 2b 02 05 20 0d 2b 0c |ked.*....+.. .+.| 0000d570 1b dd f2 73 65 74 5f 70 61 6c 65 74 74 65 28 70 |...set_palette(p| 0000d580 61 6c 65 74 74 65 25 29 0d 2b 16 2a f4 20 53 65 |alette%).+.*. Se| 0000d590 74 73 20 61 20 70 61 6c 65 74 74 65 20 61 63 63 |ts a palette acc| 0000d5a0 6f 72 64 69 6e 67 20 74 6f 20 70 61 6c 65 74 74 |ording to palett| 0000d5b0 65 25 0d 2b 20 1a f4 20 20 30 20 2d 20 44 65 73 |e%.+ .. 0 - Des| 0000d5c0 6b 74 6f 70 20 70 61 6c 65 74 74 65 0d 2b 2a 49 |ktop palette.+*I| 0000d5d0 f4 20 20 31 20 2d 20 49 6d 61 67 65 27 73 20 6f |. 1 - Image's o| 0000d5e0 77 6e 20 70 61 6c 65 74 74 65 20 28 77 68 65 6e |wn palette (when| 0000d5f0 20 70 6f 73 73 69 62 6c 65 2c 20 65 6c 73 65 20 | possible, else | 0000d600 64 65 73 6b 74 6f 70 20 70 61 6c 65 74 74 65 20 |desktop palette | 0000d610 75 73 65 64 29 0d 2b 34 08 ea 20 63 25 0d 2b 3e |used).+4.. c%.+>| 0000d620 11 c8 8e 20 70 61 6c 65 74 74 65 25 20 ca 0d 2b |... palette% ..+| 0000d630 48 1d 20 c9 20 30 20 3a 20 c8 99 20 57 53 65 74 |H. . 0 : .. WSet| 0000d640 50 25 2c 2c 77 69 6d 70 70 61 6c 0d 2b 52 74 20 |P%,,wimppal.+Rt | 0000d650 c9 20 31 20 3a 20 e7 a4 63 32 35 36 20 8b 20 e3 |. 1 : ..c256 . .| 0000d660 20 63 25 3d 30 20 b8 20 53 68 6f 77 50 61 6c 25 | c%=0 . ShowPal%| 0000d670 28 30 29 2d 31 3a 64 75 6d 25 21 28 63 25 3c 3c |(0)-1:dum%!(c%<<| 0000d680 32 29 3d 53 68 6f 77 50 61 6c 25 28 63 25 2b 31 |2)=ShowPal%(c%+1| 0000d690 29 3a ed 3a c8 99 20 22 54 72 61 6e 73 6c 61 74 |):.:.. "Translat| 0000d6a0 6f 72 5f 53 65 74 50 61 6c 65 74 74 65 22 2c 53 |or_SetPalette",S| 0000d6b0 68 6f 77 50 61 6c 25 28 30 29 2c 64 75 6d 25 0d |howPal%(0),dum%.| 0000d6c0 2b 5c 05 cb 0d 2b 66 05 e1 0d 2b 70 05 20 0d 2b |+\...+f...+p. .+| 0000d6d0 7a 25 dd f2 73 74 61 6e 64 61 72 64 5f 70 61 6c |z%..standard_pal| 0000d6e0 65 74 74 65 28 f8 20 50 61 6c 25 28 29 2c 62 70 |ette(. Pal%(),bp| 0000d6f0 70 25 29 0d 2b 84 48 f4 20 53 65 74 73 20 61 20 |p%).+.H. Sets a | 0000d700 70 61 6c 65 74 74 65 20 74 6f 20 73 74 61 6e 64 |palette to stand| 0000d710 61 72 64 20 41 72 63 68 69 6d 65 64 65 73 20 32 |ard Archimedes 2| 0000d720 2c 34 2c 31 36 20 6f 72 20 32 35 36 20 63 6f 6c |,4,16 or 256 col| 0000d730 6f 75 72 20 70 61 6c 65 74 74 65 0d 2b 8e 0b ea |our palette.+...| 0000d740 20 63 25 2c 70 25 0d 2b 98 44 c8 99 20 22 54 72 | c%,p%.+.D.. "Tr| 0000d750 61 6e 73 6c 61 74 6f 72 5f 50 61 6c 65 74 74 65 |anslator_Palette| 0000d760 22 2c 62 70 70 25 2c 64 75 6d 25 2c 32 3a f4 20 |",bpp%,dum%,2:. | 0000d770 43 61 6c 63 75 6c 61 74 65 20 73 74 61 6e 64 61 |Calculate standa| 0000d780 72 64 20 70 61 6c 65 74 74 65 0d 2b a2 3d 70 25 |rd palette.+.=p%| 0000d790 3d 64 75 6d 25 3a e3 20 63 25 3d 31 20 b8 20 32 |=dum%:. c%=1 . 2| 0000d7a0 5e 62 70 70 25 3a 50 61 6c 25 28 63 25 29 3d 21 |^bpp%:Pal%(c%)=!| 0000d7b0 70 25 3a 70 25 2b 3d 34 3a ed 3a 50 61 6c 25 28 |p%:p%+=4:.:Pal%(| 0000d7c0 30 29 3d 62 70 70 25 0d 2b ac 05 e1 0d 2b b6 05 |0)=bpp%.+....+..| 0000d7d0 20 0d 2b c0 1d dd f2 67 72 65 79 5f 70 61 6c 65 | .+....grey_pale| 0000d7e0 74 74 65 28 62 70 70 25 2c 64 69 72 25 29 0d 2b |tte(bpp%,dir%).+| 0000d7f0 ca 3d f4 20 53 65 74 73 20 69 6e 70 75 74 20 70 |.=. Sets input p| 0000d800 61 6c 65 74 74 65 20 74 6f 20 67 72 65 79 73 63 |alette to greysc| 0000d810 61 6c 65 20 66 6f 72 20 62 70 70 25 20 62 69 74 |ale for bpp% bit| 0000d820 73 20 70 65 72 20 70 69 78 65 6c 0d 2b d4 3f f4 |s per pixel.+.?.| 0000d830 20 64 69 72 25 3d 31 20 67 69 76 65 73 20 62 6c | dir%=1 gives bl| 0000d840 61 63 6b 20 74 6f 20 77 68 69 74 65 2c 20 64 69 |ack to white, di| 0000d850 72 25 3d 2d 31 20 67 69 76 65 73 20 77 68 69 74 |r%=-1 gives whit| 0000d860 65 20 74 6f 20 62 6c 61 63 6b 0d 2b de 11 ea 20 |e to black.+... | 0000d870 63 6f 64 65 25 2c 63 25 2c 70 25 0d 2b e8 1f e7 |code%,c%,p%.+...| 0000d880 64 69 72 25 3d 31 20 8c 20 63 6f 64 65 25 3d 33 |dir%=1 . code%=3| 0000d890 20 8b 20 63 6f 64 65 25 3d 34 0d 2b f2 41 c8 99 | . code%=4.+.A..| 0000d8a0 20 22 54 72 61 6e 73 6c 61 74 6f 72 5f 50 61 6c | "Translator_Pal| 0000d8b0 65 74 74 65 22 2c 62 70 70 25 2c 64 75 6d 25 2c |ette",bpp%,dum%,| 0000d8c0 63 6f 64 65 25 3a f4 20 43 61 6c 63 75 6c 61 74 |code%:. Calculat| 0000d8d0 65 20 67 72 65 79 73 63 61 6c 65 0d 2b fc 41 70 |e greyscale.+.Ap| 0000d8e0 25 3d 64 75 6d 25 3a e3 20 63 25 3d 31 20 b8 20 |%=dum%:. c%=1 . | 0000d8f0 32 5e 62 70 70 25 3a 49 6e 50 61 6c 25 28 63 25 |2^bpp%:InPal%(c%| 0000d900 29 3d 21 70 25 3a 70 25 2b 3d 34 3a ed 3a 49 6e |)=!p%:p%+=4:.:In| 0000d910 50 61 6c 25 28 30 29 3d 62 70 70 25 0d 2c 06 05 |Pal%(0)=bpp%.,..| 0000d920 e1 0d 2c 10 05 20 0d 2c 1a 34 dd f2 6d 6f 64 65 |..,.. .,.4..mode| 0000d930 5f 69 6e 66 6f 28 6d 6f 64 65 25 2c f8 20 77 69 |_info(mode%,. wi| 0000d940 64 74 68 25 2c f8 20 68 65 69 67 68 74 25 2c f8 |dth%,. height%,.| 0000d950 20 63 6f 6c 6f 75 72 73 25 29 0d 2c 24 31 f4 20 | colours%).,$1. | 0000d960 52 65 74 75 72 6e 73 20 69 6e 66 6f 72 6d 61 74 |Returns informat| 0000d970 69 6f 6e 20 61 62 6f 75 74 20 61 20 70 61 72 74 |ion about a part| 0000d980 69 63 75 6c 61 72 20 6d 6f 64 65 0d 2c 2e 6e 63 |icular mode.,.nc| 0000d990 6f 6c 6f 75 72 73 25 3d 32 5e 28 32 5e a4 6d 6f |olours%=2^(2^.mo| 0000d9a0 64 65 5f 76 61 72 28 6d 6f 64 65 25 2c 39 29 29 |de_var(mode%,9))| 0000d9b0 3a 77 69 64 74 68 25 3d 31 2b a4 6d 6f 64 65 5f |:width%=1+.mode_| 0000d9c0 76 61 72 28 6d 6f 64 65 25 2c 31 31 29 3a 68 65 |var(mode%,11):he| 0000d9d0 69 67 68 74 25 3d 31 2b a4 6d 6f 64 65 5f 76 61 |ight%=1+.mode_va| 0000d9e0 72 28 6d 6f 64 65 25 2c 31 32 29 3a f4 20 52 65 |r(mode%,12):. Re| 0000d9f0 74 75 72 6e 20 69 6e 66 6f 0d 2c 38 05 e1 0d 2c |turn info.,8...,| 0000da00 42 05 20 0d 2c 4c 17 dd f2 69 6e 76 61 6c 69 64 |B. .,L...invalid| 0000da10 61 74 65 5f 73 63 72 65 65 6e 0d 2c 56 1f f4 20 |ate_screen.,V.. | 0000da20 49 6e 76 61 6c 69 64 61 74 65 73 20 65 6e 74 69 |Invalidates enti| 0000da30 72 65 20 73 63 72 65 65 6e 0d 2c 60 3d c8 99 20 |re screen.,`=.. | 0000da40 57 46 6f 72 63 65 25 2c 2d 31 2c 30 2c 30 2c 53 |WForce%,-1,0,0,S| 0000da50 63 72 57 25 2c 53 63 72 48 25 3a f4 20 46 6f 72 |crW%,ScrH%:. For| 0000da60 63 65 20 72 65 64 72 61 77 20 77 68 6f 6c 65 20 |ce redraw whole | 0000da70 73 63 72 65 65 6e 0d 2c 6a 05 e1 0d 2c 74 05 20 |screen.,j...,t. | 0000da80 0d 2c 7e 16 dd f2 69 6e 76 61 6c 69 64 61 74 65 |.,~...invalidate| 0000da90 5f 69 6d 61 67 65 0d 2c 88 17 f4 20 49 6e 76 61 |_image.,... Inva| 0000daa0 6c 69 64 61 74 65 73 20 69 6d 61 67 65 0d 2c 92 |lidates image.,.| 0000dab0 15 49 6d 67 3d a3 3a 46 72 65 71 43 61 6c 63 3d |.Img=.:FreqCalc=| 0000dac0 a3 3a 0d 2c 9c 05 e1 0d 2c a6 05 20 0d 2c b0 19 |.:.,....,.. .,..| 0000dad0 dd f2 6e 65 77 5f 77 69 6e 64 6f 77 28 68 61 6e |..new_window(han| 0000dae0 64 6c 65 25 29 0d 2c ba 20 f4 20 52 65 64 72 61 |dle%).,. . Redra| 0000daf0 77 73 20 65 6e 74 69 72 65 20 77 69 6e 64 6f 77 |ws entire window| 0000db00 20 61 72 65 61 0d 2c c4 1d f2 72 65 64 72 61 77 | area.,...redraw| 0000db10 5f 77 69 6e 64 6f 77 28 68 61 6e 64 6c 65 25 2c |_window(handle%,| 0000db20 b9 29 0d 2c ce 05 e1 0d 2c d8 05 20 0d 2c e2 22 |.).,....,.. .,."| 0000db30 dd f2 72 65 64 72 61 77 5f 77 69 6e 64 6f 77 28 |..redraw_window(| 0000db40 68 61 6e 64 6c 65 25 2c 66 6f 72 63 65 29 0d 2c |handle%,force).,| 0000db50 ec 28 f4 20 52 65 64 72 61 77 73 20 77 69 6e 64 |.(. Redraws wind| 0000db60 6f 77 20 77 69 74 68 20 68 61 6e 64 6c 65 20 68 |ow with handle h| 0000db70 61 6e 64 6c 65 25 0d 2c f6 3c f4 20 49 66 20 66 |andle%.,.<. If f| 0000db80 6f 72 63 65 3d 54 52 55 45 20 74 68 65 20 77 69 |orce=TRUE the wi| 0000db90 6e 64 6f 77 27 73 20 65 6e 74 69 72 65 20 77 6f |ndow's entire wo| 0000dba0 72 6b 20 61 72 65 61 20 69 73 20 75 70 64 61 74 |rk area is updat| 0000dbb0 65 64 0d 2d 00 2b ea 20 6d 6f 72 65 25 2c 6e 78 |ed.-.+. more%,nx| 0000dbc0 25 2c 6e 79 25 2c 76 77 25 2c 76 68 25 2c 73 6d |%,ny%,vw%,vh%,sm| 0000dbd0 61 6c 6c 25 2c 78 25 2c 79 25 2c 73 25 0d 2d 0a |all%,x%,y%,s%.-.| 0000dbe0 28 21 62 6c 6f 63 6b 3d 68 61 6e 64 6c 65 25 3a |(!block=handle%:| 0000dbf0 f4 20 53 65 74 20 77 69 6e 64 6f 77 27 73 20 68 |. Set window's h| 0000dc00 61 6e 64 6c 65 0d 2d 14 78 e7 66 6f 72 63 65 20 |andle.-.x.force | 0000dc10 8c 20 62 6c 6f 63 6b 21 34 3d 30 3a 62 6c 6f 63 |. block!4=0:bloc| 0000dc20 6b 21 38 3d 30 3a 62 6c 6f 63 6b 21 31 32 3d 26 |k!8=0:block!12=&| 0000dc30 37 46 46 46 3a 62 6c 6f 63 6b 21 31 36 3d 26 37 |7FFF:block!16=&7| 0000dc40 46 46 46 3a c8 99 20 57 55 70 64 61 74 65 57 25 |FFF:.. WUpdateW%| 0000dc50 2c 2c 62 6c 6f 63 6b 20 b8 20 6d 6f 72 65 25 20 |,,block . more% | 0000dc60 8b 20 c8 99 20 57 52 65 64 72 61 77 57 25 2c 2c |. .. WRedrawW%,,| 0000dc70 62 6c 6f 63 6b 20 b8 20 6d 6f 72 65 25 0d 2d 1e |block . more%.-.| 0000dc80 46 6e 78 25 3d 28 62 6c 6f 63 6b 21 34 2d 62 6c |Fnx%=(block!4-bl| 0000dc90 6f 63 6b 21 32 30 29 3a 6e 79 25 3d 28 62 6c 6f |ock!20):ny%=(blo| 0000dca0 63 6b 21 31 36 2d 62 6c 6f 63 6b 21 32 34 29 3a |ck!16-block!24):| 0000dcb0 f4 20 47 65 74 20 73 70 72 69 74 65 20 6f 72 69 |. Get sprite ori| 0000dcc0 67 69 6e 0d 2d 28 41 76 77 25 3d 62 6c 6f 63 6b |gin.-(Avw%=block| 0000dcd0 21 31 32 2d 62 6c 6f 63 6b 21 34 3a 76 68 25 3d |!12-block!4:vh%=| 0000dce0 62 6c 6f 63 6b 21 31 36 2d 62 6c 6f 63 6b 21 38 |block!16-block!8| 0000dcf0 3a f4 20 56 69 73 69 62 6c 65 20 61 72 65 61 20 |:. Visible area | 0000dd00 73 69 7a 65 0d 2d 32 10 c8 8e 20 68 61 6e 64 6c |size.-2... handl| 0000dd10 65 25 20 ca 0d 2d 3c 27 20 c9 20 77 69 6e 5f 69 |e% ..-<' . win_i| 0000dd20 6d 67 25 20 3a 20 f4 20 52 65 64 72 61 77 20 69 |mg% : . Redraw i| 0000dd30 6d 61 67 65 20 77 69 6e 64 6f 77 0d 2d 46 3f 20 |mage window.-F? | 0000dd40 20 e7 5a 6f 6f 6d 58 3e 3d 31 20 8c 20 21 61 72 | .ZoomX>=1 . !ar| 0000dd50 67 25 3d 5a 6f 6f 6d 58 3a 61 72 67 25 21 38 3d |g%=ZoomX:arg%!8=| 0000dd60 31 20 8b 20 21 61 72 67 25 3d 31 3a 61 72 67 25 |1 . !arg%=1:arg%| 0000dd70 21 38 3d 31 2f 5a 6f 6f 6d 58 0d 2d 50 43 20 20 |!8=1/ZoomX.-PC | 0000dd80 e7 5a 6f 6f 6d 59 3e 3d 31 20 8c 20 61 72 67 25 |.ZoomY>=1 . arg%| 0000dd90 21 34 3d 5a 6f 6f 6d 59 3a 61 72 67 25 21 31 32 |!4=ZoomY:arg%!12| 0000dda0 3d 31 20 8b 20 61 72 67 25 21 34 3d 31 3a 61 72 |=1 . arg%!4=1:ar| 0000ddb0 67 25 21 31 32 3d 31 2f 5a 6f 6f 6d 59 0d 2d 5a |g%!12=1/ZoomY.-Z| 0000ddc0 40 20 20 73 6d 61 6c 6c 25 3d 28 28 76 77 25 3c |@ small%=((vw%<| 0000ddd0 3d 31 36 30 29 84 28 76 68 25 3c 3d 31 36 30 29 |=160).(vh%<=160)| 0000dde0 29 3a f4 20 57 69 6e 64 6f 77 20 70 6f 73 73 69 |):. Window possi| 0000ddf0 62 6c 79 20 74 6f 6f 20 73 6d 61 6c 6c 0d 2d 64 |bly too small.-d| 0000de00 44 20 20 e7 73 6d 61 6c 6c 25 20 8c 20 78 25 3d |D .small% . x%=| 0000de10 62 6c 6f 63 6b 21 34 3a 79 25 3d 62 6c 6f 63 6b |block!4:y%=block| 0000de20 21 38 3a 73 25 3d a4 6d 61 78 28 76 77 25 2c 76 |!8:s%=.max(vw%,v| 0000de30 68 25 29 3a c8 99 20 57 53 65 74 43 6f 6c 25 2c |h%):.. WSetCol%,| 0000de40 30 0d 2d 6e 2a 20 20 c8 95 20 6d 6f 72 65 25 3a |0.-n* .. more%:| 0000de50 e7 73 6d 61 6c 6c 25 20 8c 20 c8 93 20 c8 90 20 |.small% . .. .. | 0000de60 78 25 2c 79 25 2c 73 25 2c 73 25 0d 2d 78 38 20 |x%,y%,s%,s%.-x8 | 0000de70 20 f2 70 6c 6f 74 5f 69 6d 61 67 65 28 6e 78 25 | .plot_image(nx%| 0000de80 2c 6e 79 25 2c 30 2c 61 72 67 25 29 3a f4 20 44 |,ny%,0,arg%):. D| 0000de90 69 73 70 6c 61 79 20 69 6d 61 67 65 20 73 70 72 |isplay image spr| 0000dea0 69 74 65 0d 2d 82 35 20 20 c8 99 20 57 47 65 74 |ite.-.5 .. WGet| 0000deb0 52 25 2c 2c 62 6c 6f 63 6b 20 b8 20 6d 6f 72 65 |R%,,block . more| 0000dec0 25 3a ce 3a f4 20 47 65 74 20 6e 65 78 74 20 72 |%:.:. Get next r| 0000ded0 65 63 74 61 6e 67 6c 65 0d 2d 8c 05 cb 0d 2d 96 |ectangle.-....-.| 0000dee0 05 e1 0d 2d a0 05 20 0d 2d aa 1f dd f2 6f 70 65 |...-.. .-....ope| 0000def0 6e 5f 77 69 6e 64 6f 77 28 68 61 6e 64 6c 65 25 |n_window(handle%| 0000df00 2c 69 6e 66 6f 29 0d 2d b4 26 f4 20 4f 70 65 6e |,info).-.&. Open| 0000df10 73 20 77 69 6e 64 6f 77 20 77 69 74 68 20 68 61 |s window with ha| 0000df20 6e 64 6c 65 20 68 61 6e 64 6c 65 25 0d 2d be 3a |ndle handle%.-.:| 0000df30 f4 20 49 66 20 69 6e 66 6f 3c 3e 30 20 74 68 65 |. If info<>0 the| 0000df40 6e 20 69 6e 66 6f 20 69 73 20 72 65 61 64 79 20 |n info is ready | 0000df50 61 74 20 69 6e 66 6f 2c 20 65 6c 73 65 20 67 65 |at info, else ge| 0000df60 74 20 69 6e 66 6f 0d 2d c8 1b ea 20 62 25 2c 70 |t info.-... b%,p| 0000df70 78 25 2c 70 79 25 2c 5f 25 2c 78 73 25 2c 79 73 |x%,py%,_%,xs%,ys| 0000df80 25 0d 2d d2 0e e7 69 6e 66 6f 3c 3e 30 20 8c 0d |%.-...info<>0 ..| 0000df90 2d dc 27 20 e3 20 62 25 3d 30 20 b8 20 33 31 20 |-.' . b%=0 . 31 | 0000dfa0 88 20 34 3a 62 6c 6f 63 6b 21 62 25 3d 69 6e 66 |. 4:block!b%=inf| 0000dfb0 6f 21 62 25 3a ed 0d 2d e6 26 cc 20 21 62 6c 6f |o!b%:..-.&. !blo| 0000dfc0 63 6b 3d 68 61 6e 64 6c 65 25 3a c8 99 20 57 47 |ck=handle%:.. WG| 0000dfd0 65 74 57 53 25 2c 2c 62 6c 6f 63 6b 0d 2d f0 c8 |etWS%,,block.-..| 0000dfe0 20 e7 68 61 6e 64 6c 65 25 3c 3e 77 69 6e 5f 69 | .handle%<>win_i| 0000dff0 6d 67 25 20 8c 20 f2 6d 6f 75 73 65 28 70 78 25 |mg% . .mouse(px%| 0000e000 2c 70 79 25 2c 5f 25 29 3a 78 73 25 3d 62 6c 6f |,py%,_%):xs%=blo| 0000e010 63 6b 21 31 32 2d 62 6c 6f 63 6b 21 34 3a 79 73 |ck!12-block!4:ys| 0000e020 25 3d 62 6c 6f 63 6b 21 31 36 2d 62 6c 6f 63 6b |%=block!16-block| 0000e030 21 38 3a 62 6c 6f 63 6b 21 34 3d 70 78 25 2d 36 |!8:block!4=px%-6| 0000e040 34 3a 62 6c 6f 63 6b 21 38 3d 70 79 25 2d 79 73 |4:block!8=py%-ys| 0000e050 25 2b 31 36 3a 62 6c 6f 63 6b 21 31 32 3d 62 6c |%+16:block!12=bl| 0000e060 6f 63 6b 21 34 2b 78 73 25 3a 62 6c 6f 63 6b 21 |ock!4+xs%:block!| 0000e070 31 36 3d 62 6c 6f 63 6b 21 38 2b 79 73 25 3a f4 |16=block!8+ys%:.| 0000e080 20 50 6f 70 20 75 70 20 61 74 20 6d 6f 75 73 65 | Pop up at mouse| 0000e090 20 69 66 20 6e 6f 74 20 69 6d 61 67 65 20 77 69 | if not image wi| 0000e0a0 6e 64 6f 77 0d 2d fa 05 cd 0d 2e 04 15 c8 99 20 |ndow.-......... | 0000e0b0 57 4f 70 65 6e 57 25 2c 2c 62 6c 6f 63 6b 0d 2e |WOpenW%,,block..| 0000e0c0 0e 05 e1 0d 2e 18 05 20 0d 2e 22 1b dd f2 63 6c |....... .."...cl| 0000e0d0 6f 73 65 5f 77 69 6e 64 6f 77 28 68 61 6e 64 6c |ose_window(handl| 0000e0e0 65 25 29 0d 2e 2c 27 f4 20 43 6c 6f 73 65 73 20 |e%)..,'. Closes | 0000e0f0 77 69 6e 64 6f 77 20 77 69 74 68 20 68 61 6e 64 |window with hand| 0000e100 6c 65 20 68 61 6e 64 6c 65 25 0d 2e 36 25 21 62 |le handle%..6%!b| 0000e110 6c 6f 63 6b 3d 68 61 6e 64 6c 65 25 3a c8 99 20 |lock=handle%:.. | 0000e120 57 43 6c 6f 73 65 57 25 2c 2c 62 6c 6f 63 6b 0d |WCloseW%,,block.| 0000e130 2e 40 05 e1 0d 2e 4a 05 20 0d 2e 54 11 dd a4 70 |.@....J. ..T...p| 0000e140 6f 6c 6c 28 6d 61 73 6b 25 29 0d 2e 5e 40 f4 20 |oll(mask%)..^@. | 0000e150 52 65 74 75 72 6e 73 20 70 6f 6c 6c 20 72 65 61 |Returns poll rea| 0000e160 73 6f 6e 20 63 6f 64 65 2c 20 6d 61 73 6b 69 6e |son code, maskin| 0000e170 67 20 77 69 74 68 20 6d 61 73 6b 25 2c 20 64 61 |g with mask%, da| 0000e180 74 61 20 61 74 20 70 6f 6c 6c 0d 2e 68 10 ea 20 |ta at poll..h.. | 0000e190 72 65 61 73 6f 6e 63 6f 64 65 0d 2e 72 25 c8 99 |reasoncode..r%..| 0000e1a0 20 57 50 6f 6c 6c 25 2c 6d 61 73 6b 25 2c 70 6f | WPoll%,mask%,po| 0000e1b0 6c 6c 20 b8 20 72 65 61 73 6f 6e 63 6f 64 65 0d |ll . reasoncode.| 0000e1c0 2e 7c 0f 3d 72 65 61 73 6f 6e 63 6f 64 65 0d 2e |.|.=reasoncode..| 0000e1d0 86 05 20 0d 2e 90 10 dd f2 69 6e 69 74 69 61 6c |.. ......initial| 0000e1e0 69 73 65 0d 2e 9a 19 f4 20 49 6e 69 74 69 61 6c |ise..... Initial| 0000e1f0 69 73 65 73 20 70 72 6f 67 72 61 6d 0d 2e a4 3e |ises program...>| 0000e200 c8 99 20 22 57 69 6d 70 5f 52 65 61 64 50 61 6c |.. "Wimp_ReadPal| 0000e210 65 74 74 65 22 2c 2c 77 69 6d 70 70 61 6c 3a f4 |ette",,wimppal:.| 0000e220 20 52 65 61 64 20 63 75 72 72 65 6e 74 20 57 49 | Read current WI| 0000e230 4d 50 20 70 61 6c 65 74 74 65 0d 2e ae 37 f2 68 |MP palette...7.h| 0000e240 6f 75 72 5f 6f 6e 3a f2 69 6e 69 74 5f 6d 6f 64 |our_on:.init_mod| 0000e250 75 6c 65 3a f2 68 6f 75 72 5f 6f 66 66 3a f4 20 |ule:.hour_off:. | 0000e260 49 6e 69 74 69 61 6c 69 73 65 20 6d 6f 64 75 6c |Initialise modul| 0000e270 65 0d 2e b8 44 c8 99 20 22 4f 53 5f 43 68 65 63 |e...D.. "OS_Chec| 0000e280 6b 4d 6f 64 65 56 61 6c 69 64 22 2c 31 38 20 b8 |kModeValid",18 .| 0000e290 20 5f 25 3a 4d 75 6c 74 69 53 79 6e 63 3d 28 5f | _%:MultiSync=(_| 0000e2a0 25 3c 3e 2d 31 29 3a f4 20 4d 6f 6e 69 74 6f 72 |%<>-1):. Monitor| 0000e2b0 20 74 79 70 65 0d 2e c2 30 61 70 70 6c 6e 61 6d | type...0applnam| 0000e2c0 65 24 3d 22 54 72 61 6e 73 6c 61 74 6f 72 22 3a |e$="Translator":| 0000e2d0 f4 20 4e 61 6d 65 20 6f 66 20 61 70 70 6c 69 63 |. Name of applic| 0000e2e0 61 74 69 6f 6e 0d 2e cc 46 c8 99 20 22 57 69 6d |ation...F.. "Wim| 0000e2f0 70 5f 49 6e 69 74 69 61 6c 69 73 65 22 2c 32 30 |p_Initialise",20| 0000e300 30 2c 26 34 42 35 33 34 31 35 34 2c 61 70 70 6c |0,&4B534154,appl| 0000e310 6e 61 6d 65 24 20 b8 20 76 65 72 73 69 6f 6e 2c |name$ . version,| 0000e320 54 61 73 6b 48 61 6e 64 6c 65 25 0d 2e d6 39 e7 |TaskHandle%...9.| 0000e330 76 65 72 73 69 6f 6e 3c 32 30 30 20 8c 20 85 20 |version<200 . . | 0000e340 31 2c 22 49 20 63 61 6e 6e 6f 74 20 77 6f 72 6b |1,"I cannot work| 0000e350 20 77 69 74 68 20 57 49 4d 50 20 70 72 65 2d 32 | with WIMP pre-2| 0000e360 2e 30 30 22 0d 2e e0 36 57 25 3d a4 73 77 69 5f |.00"...6W%=.swi_| 0000e370 74 6f 5f 6e 72 28 22 57 69 6d 70 5f 49 6e 69 74 |to_nr("Wimp_Init| 0000e380 69 61 6c 69 73 65 22 29 3a f4 20 42 61 73 65 20 |ialise"):. Base | 0000e390 53 57 49 20 6e 75 6d 62 65 72 0d 2e ea 9e 57 43 |SWI number....WC| 0000e3a0 72 65 61 74 65 57 25 3d 57 25 2b 31 3a 57 43 72 |reateW%=W%+1:WCr| 0000e3b0 65 61 74 65 49 25 3d 57 25 2b 32 3a 57 44 65 6c |eateI%=W%+2:WDel| 0000e3c0 65 74 65 57 25 3d 57 25 2b 33 3a 57 4f 70 65 6e |eteW%=W%+3:WOpen| 0000e3d0 57 25 3d 57 25 2b 35 3a 57 43 6c 6f 73 65 57 25 |W%=W%+5:WCloseW%| 0000e3e0 3d 57 25 2b 36 3a 57 50 6f 6c 6c 25 3d 57 25 2b |=W%+6:WPoll%=W%+| 0000e3f0 37 3a 57 52 65 64 72 61 77 57 25 3d 57 25 2b 38 |7:WRedrawW%=W%+8| 0000e400 3a 57 55 70 64 61 74 65 57 25 3d 57 25 2b 39 3a |:WUpdateW%=W%+9:| 0000e410 57 47 65 74 52 25 3d 57 25 2b 31 30 3a 57 47 65 |WGetR%=W%+10:WGe| 0000e420 74 57 53 25 3d 57 25 2b 31 31 3a 57 53 65 74 49 |tWS%=W%+11:WSetI| 0000e430 53 25 3d 57 25 2b 31 33 0d 2e f4 92 57 47 65 74 |S%=W%+13....WGet| 0000e440 49 53 25 3d 57 25 2b 31 34 3a 57 47 65 74 50 49 |IS%=W%+14:WGetPI| 0000e450 25 3d 57 25 2b 31 35 3a 57 44 72 61 67 42 25 3d |%=W%+15:WDragB%=| 0000e460 57 25 2b 31 36 3a 57 46 6f 72 63 65 25 3d 57 25 |W%+16:WForce%=W%| 0000e470 2b 31 37 3a 57 43 72 65 61 74 65 4d 25 3d 57 25 |+17:WCreateM%=W%| 0000e480 2b 32 30 3a 57 44 65 63 6f 64 65 4d 25 3d 57 25 |+20:WDecodeM%=W%| 0000e490 2b 32 31 3a 57 53 65 74 45 25 3d 57 25 2b 32 33 |+21:WSetE%=W%+23| 0000e4a0 3a 57 4c 6f 61 64 54 25 3d 57 25 2b 32 37 3a 57 |:WLoadT%=W%+27:W| 0000e4b0 52 65 70 6f 72 74 25 3d 57 25 2b 33 31 3a 57 53 |Report%=W%+31:WS| 0000e4c0 65 74 4d 25 3d 57 25 2b 33 35 0d 2e fe 4e 57 53 |etM%=W%+35...NWS| 0000e4d0 65 74 50 25 3d 57 25 2b 33 36 3a 57 52 65 61 64 |etP%=W%+36:WRead| 0000e4e0 50 25 3d 57 25 2b 33 37 3a 57 53 65 74 43 6f 6c |P%=W%+37:WSetCol| 0000e4f0 25 3d 57 25 2b 33 38 3a 57 53 65 6e 64 4d 73 67 |%=W%+38:WSendMsg| 0000e500 25 3d 57 25 2b 33 39 3a 57 43 72 65 61 74 65 53 |%=W%+39:WCreateS| 0000e510 4d 25 3d 57 25 2b 34 30 0d 2f 08 7d 4f 53 53 70 |M%=W%+40./.}OSSp| 0000e520 6f 70 25 3d a4 73 77 69 5f 74 6f 5f 6e 72 28 22 |op%=.swi_to_nr("| 0000e530 4f 53 5f 53 70 72 69 74 65 4f 70 22 29 3a 4f 53 |OS_SpriteOp"):OS| 0000e540 52 65 61 64 56 56 25 3d a4 73 77 69 5f 74 6f 5f |ReadVV%=.swi_to_| 0000e550 6e 72 28 22 4f 53 5f 52 65 61 64 56 64 75 56 61 |nr("OS_ReadVduVa| 0000e560 72 69 61 62 6c 65 73 22 29 3a 4f 53 52 65 61 64 |riables"):OSRead| 0000e570 4d 56 25 3d a4 73 77 69 5f 74 6f 5f 6e 72 28 22 |MV%=.swi_to_nr("| 0000e580 4f 53 5f 52 65 61 64 4d 6f 64 65 56 61 72 69 61 |OS_ReadModeVaria| 0000e590 62 6c 65 22 29 0d 2f 12 33 c8 99 20 57 52 65 61 |ble")./.3.. WRea| 0000e5a0 64 50 25 2c 2c 77 69 6d 70 70 61 6c 3a f4 20 52 |dP%,,wimppal:. R| 0000e5b0 65 61 64 20 63 75 72 72 65 6e 74 20 57 49 4d 50 |ead current WIMP| 0000e5c0 20 70 61 6c 65 74 74 65 0d 2f 1c 3d 74 66 25 3d | palette./.=tf%=| 0000e5d0 37 3a 74 62 25 3d 32 3a 77 66 25 3d 37 3a 77 62 |7:tb%=2:wf%=7:wb| 0000e5e0 25 3d 30 3a 73 69 25 3d 31 3a 73 6f 25 3d 33 3a |%=0:si%=1:so%=3:| 0000e5f0 f4 20 57 69 6e 64 6f 77 2f 6d 65 6e 75 20 63 6f |. Window/menu co| 0000e600 6c 6f 75 72 73 0d 2f 26 94 21 62 6c 6f 63 6b 3d |lours./&.!block=| 0000e610 2d 31 3a 62 6c 6f 63 6b 21 34 3d 30 3a 62 6c 6f |-1:block!4=0:blo| 0000e620 63 6b 21 38 3d 30 3a 62 6c 6f 63 6b 21 31 32 3d |ck!8=0:block!12=| 0000e630 36 38 3a 62 6c 6f 63 6b 21 31 36 3d 36 38 3a 62 |68:block!16=68:b| 0000e640 6c 6f 63 6b 21 32 30 3d 26 32 37 30 30 33 30 30 |lock!20=&2700300| 0000e650 32 3a 24 28 62 6c 6f 63 6b 2b 32 34 29 3d 22 21 |2:$(block+24)="!| 0000e660 74 72 61 6e 73 6c 61 74 72 22 3a c8 99 20 57 43 |translatr":.. WC| 0000e670 72 65 61 74 65 49 25 2c 2c 62 6c 6f 63 6b 20 b8 |reateI%,,block .| 0000e680 20 49 69 63 6f 6e 62 61 72 25 3a f4 20 49 63 6f | Iiconbar%:. Ico| 0000e690 6e 62 61 72 20 69 63 6f 6e 0d 2f 30 1c f4 20 4c |nbar icon./0.. L| 0000e6a0 6f 61 64 20 73 70 72 69 74 65 73 20 66 6f 72 20 |oad sprites for | 0000e6b0 69 63 6f 6e 73 0d 2f 3a 48 21 69 63 6f 6e 73 70 |icons./:H!iconsp| 0000e6c0 72 69 74 65 73 3d 32 30 34 38 3a 69 63 6f 6e 73 |rites=2048:icons| 0000e6d0 70 72 69 74 65 73 21 34 3d 30 3a 69 63 6f 6e 73 |prites!4=0:icons| 0000e6e0 70 72 69 74 65 73 21 38 3d 31 36 3a 69 63 6f 6e |prites!8=16:icon| 0000e6f0 73 70 72 69 74 65 73 21 31 32 3d 31 36 0d 2f 44 |sprites!12=16./D| 0000e700 3c c8 99 20 4f 53 53 70 6f 70 25 2c 31 30 2b 32 |<.. OSSpop%,10+2| 0000e710 35 36 2c 69 63 6f 6e 73 70 72 69 74 65 73 2c 22 |56,iconsprites,"| 0000e720 3c 54 72 61 6e 73 6c 61 74 6f 72 24 44 69 72 3e |<Translator$Dir>| 0000e730 2e 53 70 72 69 74 65 73 22 0d 2f 4e 14 f4 20 4c |.Sprites"./N.. L| 0000e740 6f 61 64 20 74 65 6d 70 6c 61 74 65 73 0d 2f 58 |oad templates./X| 0000e750 38 c8 99 20 22 57 69 6d 70 5f 4f 70 65 6e 54 65 |8.. "Wimp_OpenTe| 0000e760 6d 70 6c 61 74 65 22 2c 2c 22 3c 54 72 61 6e 73 |mplate",,"<Trans| 0000e770 6c 61 74 6f 72 24 44 69 72 3e 2e 54 65 6d 70 6c |lator$Dir>.Templ| 0000e780 61 74 65 73 22 0d 2f 62 3c 69 63 3d 69 63 6f 6e |ates"./b<ic=icon| 0000e790 64 61 74 61 3a 69 65 3d 69 63 6f 6e 64 65 6e 64 |data:ie=icondend| 0000e7a0 3a f4 20 49 6e 64 69 72 65 63 74 65 64 20 69 63 |:. Indirected ic| 0000e7b0 6f 6e 20 64 61 74 61 20 77 6f 72 6b 73 70 61 63 |on data workspac| 0000e7c0 65 0d 2f 6c 3b 24 64 75 6d 25 3d 22 73 61 76 65 |e./l;$dum%="save| 0000e7d0 22 3a c8 99 20 57 4c 6f 61 64 54 25 2c 2c 77 69 |":.. WLoadT%,,wi| 0000e7e0 6e 64 6f 77 32 2c 69 63 2c 69 65 2c 2d 31 2c 64 |ndow2,ic,ie,-1,d| 0000e7f0 75 6d 25 2c 30 20 b8 20 2c 2c 69 63 0d 2f 76 24 |um%,0 . ,,ic./v$| 0000e800 77 69 6e 64 6f 77 32 21 28 38 38 2b 32 34 29 3d |window2!(88+24)=| 0000e810 31 3a f4 20 57 49 4d 50 20 61 72 65 61 70 74 72 |1:. WIMP areaptr| 0000e820 0d 2f 80 25 c8 99 20 57 43 72 65 61 74 65 57 25 |./.%.. WCreateW%| 0000e830 2c 2c 77 69 6e 64 6f 77 32 20 b8 20 77 69 6e 5f |,,window2 . win_| 0000e840 66 69 6c 65 25 0d 2f 8a 3f 53 41 56 73 6e 25 3d |file%./.?SAVsn%=| 0000e850 a4 69 63 6f 6e 61 64 64 72 28 77 69 6e 5f 66 69 |.iconaddr(win_fi| 0000e860 6c 65 25 2c 30 29 3a 53 41 56 66 6e 25 3d a4 69 |le%,0):SAVfn%=.i| 0000e870 63 6f 6e 61 64 64 72 28 77 69 6e 5f 66 69 6c 65 |conaddr(win_file| 0000e880 25 2c 31 29 0d 2f 94 3b 24 64 75 6d 25 3d 22 69 |%,1)./.;$dum%="i| 0000e890 6e 66 6f 22 3a c8 99 20 57 4c 6f 61 64 54 25 2c |nfo":.. WLoadT%,| 0000e8a0 2c 77 69 6e 64 6f 77 33 2c 69 63 2c 69 65 2c 2d |,window3,ic,ie,-| 0000e8b0 31 2c 64 75 6d 25 2c 30 20 b8 20 2c 2c 69 63 0d |1,dum%,0 . ,,ic.| 0000e8c0 2f 9e 25 c8 99 20 57 43 72 65 61 74 65 57 25 2c |/.%.. WCreateW%,| 0000e8d0 2c 77 69 6e 64 6f 77 33 20 b8 20 77 69 6e 5f 69 |,window3 . win_i| 0000e8e0 6e 66 6f 25 0d 2f a8 40 24 64 75 6d 25 3d 22 66 |nfo%./.@$dum%="f| 0000e8f0 69 6c 65 74 79 70 65 73 22 3a c8 99 20 57 4c 6f |iletypes":.. WLo| 0000e900 61 64 54 25 2c 2c 77 69 6e 64 6f 77 35 2c 69 63 |adT%,,window5,ic| 0000e910 2c 69 65 2c 2d 31 2c 64 75 6d 25 2c 30 20 b8 20 |,ie,-1,dum%,0 . | 0000e920 2c 2c 69 63 0d 2f b2 26 c8 99 20 57 43 72 65 61 |,,ic./.&.. WCrea| 0000e930 74 65 57 25 2c 2c 77 69 6e 64 6f 77 35 20 b8 20 |teW%,,window5 . | 0000e940 77 69 6e 5f 66 69 6c 65 74 25 0d 2f bc 40 24 64 |win_filet%./.@$d| 0000e950 75 6d 25 3d 22 69 6d 61 67 65 69 6e 66 6f 22 3a |um%="imageinfo":| 0000e960 c8 99 20 57 4c 6f 61 64 54 25 2c 2c 77 69 6e 64 |.. WLoadT%,,wind| 0000e970 6f 77 34 2c 69 63 2c 69 65 2c 2d 31 2c 64 75 6d |ow4,ic,ie,-1,dum| 0000e980 25 2c 30 20 b8 20 2c 2c 69 63 0d 2f c6 27 c8 99 |%,0 . ,,ic./.'..| 0000e990 20 57 43 72 65 61 74 65 57 25 2c 2c 77 69 6e 64 | WCreateW%,,wind| 0000e9a0 6f 77 34 20 b8 20 77 69 6e 5f 69 6d 69 6e 66 6f |ow4 . win_iminfo| 0000e9b0 25 0d 2f d0 89 77 25 3d 77 69 6e 5f 69 6d 69 6e |%./..w%=win_imin| 0000e9c0 66 6f 25 3a 49 4d 49 66 6e 25 3d a4 69 63 6f 6e |fo%:IMIfn%=.icon| 0000e9d0 61 64 64 72 28 77 25 2c 39 29 3a 49 4d 49 69 74 |addr(w%,9):IMIit| 0000e9e0 25 3d a4 69 63 6f 6e 61 64 64 72 28 77 25 2c 31 |%=.iconaddr(w%,1| 0000e9f0 30 29 3a 49 4d 49 69 6e 25 3d a4 69 63 6f 6e 61 |0):IMIin%=.icona| 0000ea00 64 64 72 28 77 25 2c 31 31 29 3a 49 4d 49 69 66 |ddr(w%,11):IMIif| 0000ea10 25 3d a4 69 63 6f 6e 61 64 64 72 28 77 25 2c 31 |%=.iconaddr(w%,1| 0000ea20 32 29 3a 49 4d 49 63 6f 25 3d a4 69 63 6f 6e 61 |2):IMIco%=.icona| 0000ea30 64 64 72 28 77 25 2c 31 33 29 0d 2f da 63 49 4d |ddr(w%,13)./.cIM| 0000ea40 49 77 68 25 3d a4 69 63 6f 6e 61 64 64 72 28 77 |Iwh%=.iconaddr(w| 0000ea50 25 2c 31 34 29 3a 49 4d 49 73 63 25 3d a4 69 63 |%,14):IMIsc%=.ic| 0000ea60 6f 6e 61 64 64 72 28 77 25 2c 31 35 29 3a 49 4d |onaddr(w%,15):IM| 0000ea70 49 62 70 25 3d a4 69 63 6f 6e 61 64 64 72 28 77 |Ibp%=.iconaddr(w| 0000ea80 25 2c 31 36 29 3a 49 4d 49 73 6d 25 3d a4 69 63 |%,16):IMIsm%=.ic| 0000ea90 6f 6e 61 64 64 72 28 77 25 2c 31 37 29 0d 2f e4 |onaddr(w%,17)./.| 0000eaa0 3e 24 64 75 6d 25 3d 22 72 67 62 62 69 74 73 22 |>$dum%="rgbbits"| 0000eab0 3a c8 99 20 57 4c 6f 61 64 54 25 2c 2c 77 69 6e |:.. WLoadT%,,win| 0000eac0 64 6f 77 36 2c 69 63 2c 69 65 2c 2d 31 2c 64 75 |dow6,ic,ie,-1,du| 0000ead0 6d 25 2c 30 20 b8 20 2c 2c 69 63 0d 2f ee 44 e3 |m%,0 . ,,ic./.D.| 0000eae0 20 69 25 3d 33 20 b8 20 35 3a 61 70 25 3d 77 69 | i%=3 . 5:ap%=wi| 0000eaf0 6e 64 6f 77 36 2b 38 38 2b 69 25 2a 33 32 2b 32 |ndow6+88+i%*32+2| 0000eb00 34 3a 21 61 70 25 3d 69 63 6f 6e 73 70 72 69 74 |4:!ap%=iconsprit| 0000eb10 65 73 3a ed 3a f4 20 41 72 65 61 70 74 72 73 0d |es:.:. Areaptrs.| 0000eb20 2f f8 28 c8 99 20 57 43 72 65 61 74 65 57 25 2c |/.(.. WCreateW%,| 0000eb30 2c 77 69 6e 64 6f 77 36 20 b8 20 77 69 6e 5f 72 |,window6 . win_r| 0000eb40 67 62 62 69 74 73 25 0d 30 02 46 24 64 75 6d 25 |gbbits%.0.F$dum%| 0000eb50 3d 22 69 6d 61 67 65 22 3a 49 4d 57 74 74 25 3d |="image":IMWtt%=| 0000eb60 69 63 3a c8 99 20 57 4c 6f 61 64 54 25 2c 2c 77 |ic:.. WLoadT%,,w| 0000eb70 69 6e 64 6f 77 31 2c 69 63 2c 69 65 2c 2d 31 2c |indow1,ic,ie,-1,| 0000eb80 64 75 6d 25 2c 30 20 b8 20 2c 2c 69 63 0d 30 0c |dum%,0 . ,,ic.0.| 0000eb90 2b 77 69 6e 64 6f 77 31 3f 33 35 3d 26 46 46 3a |+window1?35=&FF:| 0000eba0 f4 20 54 72 61 6e 73 70 61 72 65 6e 74 20 62 61 |. Transparent ba| 0000ebb0 63 6b 67 72 6f 75 6e 64 0d 30 16 24 c8 99 20 57 |ckground.0.$.. W| 0000ebc0 43 72 65 61 74 65 57 25 2c 2c 77 69 6e 64 6f 77 |CreateW%,,window| 0000ebd0 31 20 b8 20 77 69 6e 5f 69 6d 67 25 0d 30 20 1b |1 . win_img%.0 .| 0000ebe0 c8 99 20 22 57 69 6d 70 5f 43 6c 6f 73 65 54 65 |.. "Wimp_CloseTe| 0000ebf0 6d 70 6c 61 74 65 22 0d 30 2a 14 f4 20 49 6e 69 |mplate".0*.. Ini| 0000ec00 74 20 76 61 72 69 61 62 6c 65 73 0d 30 34 8d 53 |t variables.04.S| 0000ec10 61 76 65 4b 69 6e 64 24 3d 22 22 3a 49 6d 67 3d |aveKind$="":Img=| 0000ec20 a3 3a 50 61 6c 6f 6e 6f 66 66 3d b9 3a 5a 6f 6f |.:Palonoff=.:Zoo| 0000ec30 6d 58 3d 31 3a 5a 6f 6f 6d 59 3d 31 3a 73 75 62 |mX=1:ZoomY=1:sub| 0000ec40 31 25 3d 73 75 62 6d 65 6e 75 31 3a 73 75 62 32 |1%=submenu1:sub2| 0000ec50 25 3d 73 75 62 6d 65 6e 75 32 3a 73 75 62 33 25 |%=submenu2:sub3%| 0000ec60 3d 73 75 62 6d 65 6e 75 33 3a 49 6d 61 67 65 53 |=submenu3:ImageS| 0000ec70 70 72 24 3d 22 69 6d 61 67 65 22 3a 43 75 72 72 |pr$="image":Curr| 0000ec80 53 75 62 24 3d 22 22 3a 46 6c 65 6e 25 3d 30 3a |Sub$="":Flen%=0:| 0000ec90 4c 6f 61 64 24 3d 22 22 0d 30 3e 8c 44 61 74 61 |Load$="".0>.Data| 0000eca0 53 61 76 65 52 65 66 25 3d 2d 31 3a 44 61 74 61 |SaveRef%=-1:Data| 0000ecb0 4c 6f 61 64 52 65 66 25 3d a3 3a 59 4d 75 6c 25 |LoadRef%=.:YMul%| 0000ecc0 3d 31 3a 59 44 69 76 25 3d 31 3a 58 4d 75 6c 25 |=1:YDiv%=1:XMul%| 0000ecd0 3d 31 3a 58 44 69 76 25 3d 31 3a 43 6c 65 61 72 |=1:XDiv%=1:Clear| 0000ece0 46 69 6c 65 3d a3 3a 53 61 76 65 53 70 72 24 3d |File=.:SaveSpr$=| 0000ecf0 22 49 6d 61 67 65 22 3a 53 61 76 65 43 6c 65 61 |"Image":SaveClea| 0000ed00 72 24 3d 22 43 6c 65 61 72 22 3a 53 70 72 53 61 |r$="Clear":SprSa| 0000ed10 76 65 24 3d 22 22 3a 43 6c 65 61 72 53 61 76 65 |ve$="":ClearSave| 0000ed20 24 3d 22 22 0d 30 48 85 46 69 6c 65 28 29 3d 30 |$="".0H.File()=0| 0000ed30 3a 53 70 72 57 25 3d 30 3a 53 70 72 48 25 3d 30 |:SprW%=0:SprH%=0| 0000ed40 3a 49 6d 61 67 65 4e 72 25 3d 31 3a 41 75 74 6f |:ImageNr%=1:Auto| 0000ed50 4d 6f 64 65 3d b9 3a 41 75 74 6f 50 61 6c 3d b9 |Mode=.:AutoPal=.| 0000ed60 3a 43 75 72 72 4d 6f 64 65 25 3d 2d 31 3a 45 72 |:CurrMode%=-1:Er| 0000ed70 72 53 70 72 65 61 64 3d b9 3a 4d 6f 64 65 53 65 |rSpread=.:ModeSe| 0000ed80 74 3d 30 3a 55 73 65 72 4d 6f 64 65 53 65 74 25 |t=0:UserModeSet%| 0000ed90 28 29 3d 30 2c 30 2c 38 2c 31 32 2c 31 35 3a 41 |()=0,0,8,12,15:A| 0000eda0 75 74 6f 5a 6f 6f 6d 3d a3 0d 30 52 81 42 6c 61 |utoZoom=..0R.Bla| 0000edb0 63 6b 57 68 69 74 65 3d a3 3a 54 72 61 6e 73 54 |ckWhite=.:TransT| 0000edc0 61 62 49 64 3d a3 3a 49 6d 67 4d 6f 64 65 25 3d |abId=.:ImgMode%=| 0000edd0 30 3a 47 49 46 53 63 61 6e 3d a3 3a 52 47 42 62 |0:GIFScan=.:RGBb| 0000ede0 69 74 73 25 3d 26 30 38 30 38 30 38 3a 42 6c 61 |its%=&080808:Bla| 0000edf0 6e 6b 69 6e 67 3d a3 3a 5a 69 67 5a 61 67 3d b9 |nking=.:ZigZag=.| 0000ee00 3a 49 6e 76 65 72 74 52 47 42 3d a3 3a 46 72 65 |:InvertRGB=.:Fre| 0000ee10 71 43 61 6c 63 3d a3 3a 4f 75 74 4d 6f 64 65 3d |qCalc=.:OutMode=| 0000ee20 31 3a 4f 75 74 50 61 6c 3d 31 0d 30 5c 30 e7 a4 |1:OutPal=1.0\0..| 0000ee30 6c 6f 61 64 5f 73 74 61 74 75 73 3a f4 20 4c 6f |load_status:. Lo| 0000ee40 61 64 20 64 65 66 61 75 6c 74 20 73 74 61 74 75 |ad default statu| 0000ee50 73 20 28 69 66 20 61 6e 79 29 0d 30 66 2e f2 73 |s (if any).0f..s| 0000ee60 70 72 69 74 65 5f 68 65 61 64 65 72 28 30 29 3a |prite_header(0):| 0000ee70 f4 20 49 6e 69 74 69 61 6c 69 73 65 20 73 70 72 |. Initialise spr| 0000ee80 69 74 65 20 61 72 65 61 0d 30 70 05 e1 0d 30 7a |ite area.0p...0z| 0000ee90 05 20 0d 30 84 19 dd a4 69 63 6f 6e 61 64 64 72 |. .0....iconaddr| 0000eea0 28 77 69 6e 25 2c 69 63 6f 25 29 0d 30 8e 2c f4 |(win%,ico%).0.,.| 0000eeb0 20 52 65 74 75 72 6e 73 20 69 6e 64 69 72 65 63 | Returns indirec| 0000eec0 74 65 64 20 69 63 6f 6e 27 73 20 64 61 74 61 20 |ted icon's data | 0000eed0 61 64 64 72 65 73 73 0d 30 98 3e 21 62 6c 6f 63 |address.0.>!bloc| 0000eee0 6b 3d 77 69 6e 25 3a 62 6c 6f 63 6b 21 34 3d 69 |k=win%:block!4=i| 0000eef0 63 6f 25 3a c8 99 20 57 47 65 74 49 53 25 2c 2c |co%:.. WGetIS%,,| 0000ef00 62 6c 6f 63 6b 3a f4 20 47 65 74 20 69 63 6f 6e |block:. Get icon| 0000ef10 20 69 6e 66 6f 0d 30 a2 0d 3d 62 6c 6f 63 6b 21 | info.0..=block!| 0000ef20 32 38 0d 30 ac 05 20 0d 30 b6 11 dd a4 6c 6f 61 |28.0.. .0....loa| 0000ef30 64 5f 73 74 61 74 75 73 0d 30 c0 23 f4 20 4c 6f |d_status.0.#. Lo| 0000ef40 61 64 73 20 64 65 66 61 75 6c 74 20 73 74 61 74 |ads default stat| 0000ef50 75 73 20 28 69 66 20 61 6e 79 29 0d 30 ca 48 f4 |us (if any).0.H.| 0000ef60 20 52 65 74 75 72 6e 73 20 54 52 55 45 20 69 66 | Returns TRUE if| 0000ef70 20 73 75 63 63 65 73 66 75 6c 2c 20 65 6c 73 65 | succesful, else| 0000ef80 20 46 41 4c 53 45 20 28 69 2e 65 2e 20 73 74 61 | FALSE (i.e. sta| 0000ef90 74 75 73 20 66 69 6c 65 20 6e 6f 74 20 66 6f 75 |tus file not fou| 0000efa0 6e 64 29 0d 30 d4 36 53 74 61 74 75 73 3d 8e 28 |nd).0.6Status=.(| 0000efb0 22 3c 54 72 61 6e 73 6c 61 74 6f 72 24 44 69 72 |"<Translator$Dir| 0000efc0 3e 2e 53 74 61 74 75 73 22 29 3a e7 53 74 61 74 |>.Status"):.Stat| 0000efd0 75 73 3d 30 20 8c 20 3d a3 0d 30 de 38 e8 23 53 |us=0 . =..0.8.#S| 0000efe0 74 61 74 75 73 2c 41 75 74 6f 4d 6f 64 65 2c 41 |tatus,AutoMode,A| 0000eff0 75 74 6f 50 61 6c 2c 4d 6f 64 65 53 65 74 2c 45 |utoPal,ModeSet,E| 0000f000 72 72 53 70 72 65 61 64 2c 50 61 6c 6f 6e 6f 66 |rrSpread,Palonof| 0000f010 66 0d 30 e8 99 e7 ac c5 23 53 74 61 74 75 73 20 |f.0.....#Status | 0000f020 8c 20 e8 23 53 74 61 74 75 73 2c 55 73 65 72 4d |. .#Status,UserM| 0000f030 6f 64 65 53 65 74 25 28 31 29 2c 55 73 65 72 4d |odeSet%(1),UserM| 0000f040 6f 64 65 53 65 74 25 28 32 29 2c 55 73 65 72 4d |odeSet%(2),UserM| 0000f050 6f 64 65 53 65 74 25 28 33 29 2c 55 73 65 72 4d |odeSet%(3),UserM| 0000f060 6f 64 65 53 65 74 25 28 34 29 3a e7 ac c5 23 53 |odeSet%(4):...#S| 0000f070 74 61 74 75 73 20 8c 20 e8 23 53 74 61 74 75 73 |tatus . .#Status| 0000f080 2c 41 75 74 6f 5a 6f 6f 6d 3a e7 ac c5 23 53 74 |,AutoZoom:...#St| 0000f090 61 74 75 73 20 8c 20 e8 23 53 74 61 74 75 73 2c |atus . .#Status,| 0000f0a0 42 6c 61 63 6b 57 68 69 74 65 0d 30 f2 7d e7 ac |BlackWhite.0.}..| 0000f0b0 c5 23 53 74 61 74 75 73 20 8c 20 e8 23 53 74 61 |.#Status . .#Sta| 0000f0c0 74 75 73 2c 47 49 46 53 63 61 6e 3a e7 ac c5 23 |tus,GIFScan:...#| 0000f0d0 53 74 61 74 75 73 20 8c 20 e8 23 53 74 61 74 75 |Status . .#Statu| 0000f0e0 73 2c 42 6c 61 6e 6b 69 6e 67 3a e7 ac c5 23 53 |s,Blanking:...#S| 0000f0f0 74 61 74 75 73 20 8c 20 e8 23 53 74 61 74 75 73 |tatus . .#Status| 0000f100 2c 49 6e 76 65 72 74 52 47 42 3a e7 ac c5 23 53 |,InvertRGB:...#S| 0000f110 74 61 74 75 73 20 8c 20 e8 23 53 74 61 74 75 73 |tatus . .#Status| 0000f120 2c 5a 69 67 5a 61 67 0d 30 fc 0f d9 23 53 74 61 |,ZigZag.0...#Sta| 0000f130 74 75 73 3a 3d b9 0d 31 06 05 20 0d 31 10 48 dd |tus:=..1.. .1.H.| 0000f140 f2 63 72 65 61 74 65 5f 6d 65 6e 75 28 78 25 2c |.create_menu(x%,| 0000f150 79 25 2c 74 69 74 6c 65 24 2c 77 69 64 74 68 25 |y%,title$,width%| 0000f160 2c 68 65 69 67 68 74 25 2c 67 61 70 25 2c 69 63 |,height%,gap%,ic| 0000f170 6f 6e 31 24 2c 69 63 6f 6e 32 24 2c 63 72 65 61 |on1$,icon2$,crea| 0000f180 74 65 29 0d 31 1a 36 f4 20 57 72 69 74 65 73 20 |te).1.6. Writes | 0000f190 6d 65 6e 75 20 73 74 72 75 63 74 75 72 65 2c 20 |menu structure, | 0000f1a0 63 72 65 61 74 65 73 20 69 74 20 69 66 20 63 72 |creates it if cr| 0000f1b0 65 61 74 65 3d 54 52 55 45 0d 31 24 3d f4 20 2d |eate=TRUE.1$=. -| 0000f1c0 20 49 66 20 78 25 3c 30 20 74 68 65 6e 20 78 2f | If x%<0 then x/| 0000f1d0 79 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 61 72 |y coordinates ar| 0000f1e0 65 20 28 6d 6f 75 73 65 58 2d 36 34 29 2c 28 6d |e (mouseX-64),(m| 0000f1f0 6f 75 73 65 59 29 0d 31 2e 4a f4 20 2d 20 49 66 |ouseY).1.J. - If| 0000f200 20 74 69 74 6c 65 24 20 73 74 61 72 74 73 20 22 | title$ starts "| 0000f210 5e 3c 6e 72 3e 22 20 74 68 65 6e 20 74 68 69 73 |^<nr>" then this| 0000f220 20 62 65 63 6f 6d 65 73 20 61 20 3c 6e 72 3e 27 | becomes a <nr>'| 0000f230 74 68 20 73 75 62 6d 65 6e 75 20 28 31 2f 32 29 |th submenu (1/2)| 0000f240 0d 31 38 41 f4 20 2d 20 4d 65 6e 75 20 69 63 6f |.18A. - Menu ico| 0000f250 6e 73 20 69 6e 20 69 63 6f 6e 20 73 74 72 69 6e |ns in icon strin| 0000f260 67 73 20 3a 20 3f 3c 69 63 6f 6e 31 3e 7c 3f 3c |gs : ?<icon1>|?<| 0000f270 69 63 6f 6e 32 3e 7c 2e 2e 2e 2e 2e 20 65 74 63 |icon2>|..... etc| 0000f280 2e 0d 31 42 31 f4 20 2d 20 3f 20 69 73 20 61 20 |..1B1. - ? is a | 0000f290 63 68 61 72 61 63 74 65 72 20 63 6f 6e 74 61 69 |character contai| 0000f2a0 6e 69 6e 67 20 73 65 6c 65 63 74 20 62 69 74 73 |ning select bits| 0000f2b0 20 3a 0d 31 4c 1e f4 20 20 20 62 69 74 20 30 20 | :.1L.. bit 0 | 0000f2c0 3a 20 69 63 6f 6e 20 69 73 20 74 69 63 6b 65 64 |: icon is ticked| 0000f2d0 0d 31 56 31 f4 20 20 20 62 69 74 20 31 20 3a 20 |.1V1. bit 1 : | 0000f2e0 69 63 6f 6e 20 69 73 20 66 6f 6c 6c 6f 77 65 64 |icon is followed| 0000f2f0 20 62 79 20 61 20 64 6f 74 74 65 64 20 6c 69 6e | by a dotted lin| 0000f300 65 0d 31 60 20 f4 20 20 20 62 69 74 20 32 20 3a |e.1` . bit 2 :| 0000f310 20 69 63 6f 6e 20 69 73 20 77 72 69 74 61 62 6c | icon is writabl| 0000f320 65 0d 31 6a 34 f4 20 20 20 62 69 74 20 33 20 3a |e.1j4. bit 3 :| 0000f330 20 69 63 6f 6e 20 69 73 20 73 68 61 64 65 64 20 | icon is shaded | 0000f340 28 69 2e 65 2e 20 6e 6f 74 20 73 65 6c 65 63 74 |(i.e. not select| 0000f350 61 62 6c 65 29 0d 31 74 3e f4 20 20 20 62 69 74 |able).1t>. bit| 0000f360 20 34 20 3a 20 77 72 69 74 61 62 6c 65 20 69 63 | 4 : writable ic| 0000f370 6f 6e 20 68 61 73 20 34 30 20 63 68 61 72 61 63 |on has 40 charac| 0000f380 74 65 72 73 20 72 6f 6f 6d 20 28 65 6c 73 65 20 |ters room (else | 0000f390 31 36 29 0d 31 7e 18 f4 20 20 20 62 69 74 20 35 |16).1~.. bit 5| 0000f3a0 20 3a 20 61 6c 77 61 79 73 20 31 0d 31 88 41 f4 | : always 1.1.A.| 0000f3b0 20 2d 20 69 63 6f 6e 73 20 6f 66 20 66 6f 72 6d | - icons of form| 0000f3c0 20 27 3f 3c 73 74 72 3e 26 3c 76 61 6c 3e 27 20 | '?<str>&<val>' | 0000f3d0 68 61 76 65 20 76 61 6c 69 64 61 74 69 6f 6e 20 |have validation | 0000f3e0 73 74 72 69 6e 67 20 3c 76 61 6c 3e 0d 31 92 46 |string <val>.1.F| 0000f3f0 f4 20 2d 20 69 63 6f 6e 73 20 6f 66 20 66 6f 72 |. - icons of for| 0000f400 6d 20 27 3f 3c 73 74 72 3e 23 3c 76 61 6c 3e 27 |m '?<str>#<val>'| 0000f410 20 68 61 76 65 20 73 75 62 2d 77 69 6e 64 6f 77 | have sub-window| 0000f420 20 77 69 74 68 20 68 61 6e 64 6c 65 20 3c 76 61 | with handle <va| 0000f430 6c 3e 0d 31 9c 34 f4 20 20 20 61 6c 73 6f 2c 20 |l>.1.4. also, | 0000f440 74 68 65 20 27 6d 65 6e 75 20 77 61 72 6e 69 6e |the 'menu warnin| 0000f450 67 20 6d 65 73 73 61 67 65 27 20 69 73 20 73 65 |g message' is se| 0000f460 6c 65 63 74 65 64 0d 31 a6 39 ea 20 69 24 2c 70 |lected.1.9. i$,p| 0000f470 74 72 25 2c 69 78 25 2c 64 61 74 61 70 74 72 25 |tr%,ix%,dataptr%| 0000f480 2c 69 6c 65 6e 25 2c 70 25 2c 69 74 24 2c 74 79 |,ilen%,p%,it$,ty| 0000f490 70 65 25 2c 64 61 74 61 24 2c 6d 65 6e 75 25 0d |pe%,data$,menu%.| 0000f4a0 31 b0 22 ea 20 76 61 6c 69 64 24 2c 73 75 62 2c |1.". valid$,sub,| 0000f4b0 63 61 6c 6c 25 2c 74 69 63 6b 25 2c 77 72 69 74 |call%,tick%,writ| 0000f4c0 25 0d 31 ba 34 ea 20 62 75 74 74 79 25 2c 73 68 |%.1.4. butty%,sh| 0000f4d0 61 64 65 64 25 2c 64 6f 74 74 65 64 25 2c 73 75 |aded%,dotted%,su| 0000f4e0 62 25 2c 73 75 62 77 61 72 6e 25 2c 69 63 6f 6e |b%,subwarn%,icon| 0000f4f0 25 2c 6e 72 25 0d 31 c4 3f e7 78 25 3c 30 20 8c |%,nr%.1.?.x%<0 .| 0000f500 20 f2 6d 6f 75 73 65 28 78 25 2c 79 25 2c 5f 25 | .mouse(x%,y%,_%| 0000f510 29 3a 78 25 2d 3d 36 34 3a f4 20 47 65 74 20 63 |):x%-=64:. Get c| 0000f520 6f 6f 72 64 69 6e 61 74 65 73 20 76 69 61 20 6d |oordinates via m| 0000f530 6f 75 73 65 0d 31 ce 15 e7 c0 74 69 74 6c 65 24 |ouse.1....title$| 0000f540 2c 31 29 3d 22 5e 22 20 8c 0d 31 d8 1e 20 73 75 |,1)="^" ..1.. su| 0000f550 62 3d b9 3a 6e 72 25 3d bb 28 c1 74 69 74 6c 65 |b=.:nr%=.(.title| 0000f560 24 2c 32 2c 31 29 29 0d 31 e2 47 20 e7 6e 72 25 |$,2,1)).1.G .nr%| 0000f570 3d 31 20 8c 20 6d 65 6e 75 25 3d 73 75 62 6d 65 |=1 . menu%=subme| 0000f580 6e 75 31 20 8b 20 e7 6e 72 25 3d 32 20 8c 20 6d |nu1 . .nr%=2 . m| 0000f590 65 6e 75 25 3d 73 75 62 6d 65 6e 75 32 20 8b 20 |enu%=submenu2 . | 0000f5a0 6d 65 6e 75 25 3d 73 75 62 6d 65 6e 75 33 0d 31 |menu%=submenu3.1| 0000f5b0 ec 16 20 74 69 74 6c 65 24 3d c1 74 69 74 6c 65 |.. title$=.title| 0000f5c0 24 2c 33 29 0d 31 f6 17 cc 20 73 75 62 3d a3 3a |$,3).1... sub=.:| 0000f5d0 6d 65 6e 75 25 3d 6d 65 6e 75 31 0d 32 00 05 cd |menu%=menu1.2...| 0000f5e0 0d 32 0a 74 24 6d 65 6e 75 25 3d 74 69 74 6c 65 |.2.t$menu%=title| 0000f5f0 24 3a 6d 65 6e 75 25 3f 31 32 3d 74 66 25 3a 6d |$:menu%?12=tf%:m| 0000f600 65 6e 75 25 3f 31 33 3d 74 62 25 3a 6d 65 6e 75 |enu%?13=tb%:menu| 0000f610 25 3f 31 34 3d 77 66 25 3a 6d 65 6e 75 25 3f 31 |%?14=wf%:menu%?1| 0000f620 35 3d 77 62 25 3a 6d 65 6e 75 25 21 31 36 3d 77 |5=wb%:menu%!16=w| 0000f630 69 64 74 68 25 3a 6d 65 6e 75 25 21 32 30 3d 68 |idth%:menu%!20=h| 0000f640 65 69 67 68 74 25 3a 6d 65 6e 75 25 21 32 34 3d |eight%:menu%!24=| 0000f650 67 61 70 25 0d 32 14 12 f4 20 44 65 66 69 6e 65 |gap%.2... Define| 0000f660 20 69 63 6f 6e 73 0d 32 1e 29 69 24 3d 69 63 6f | icons.2.)i$=ico| 0000f670 6e 31 24 3a 69 63 6f 6e 25 3d 31 3a f4 20 46 69 |n1$:icon%=1:. Fi| 0000f680 72 73 74 20 69 63 6f 6e 20 73 74 72 69 6e 67 0d |rst icon string.| 0000f690 32 28 35 70 74 72 25 3d 6d 65 6e 75 25 2b 32 38 |2(5ptr%=menu%+28| 0000f6a0 3a 69 78 25 3d 30 3a 64 61 74 61 70 74 72 25 3d |:ix%=0:dataptr%=| 0000f6b0 6d 65 6e 75 25 2b 35 31 32 3a f4 20 50 6f 69 6e |menu%+512:. Poin| 0000f6c0 74 65 72 73 0d 32 32 19 c8 95 20 69 24 3c 3e 22 |ters.22... i$<>"| 0000f6d0 22 3a 70 25 3d a7 69 24 2c 22 7c 22 29 0d 32 3c |":p%=.i$,"|").2<| 0000f6e0 0b e7 70 25 3d 30 20 8c 0d 32 46 0a 20 69 24 3d |..p%=0 ..2F. i$=| 0000f6f0 22 22 0d 32 50 13 cc 20 f4 20 44 65 66 69 6e 65 |"".2P.. . Define| 0000f700 20 69 63 6f 6e 0d 32 5a 21 20 69 74 24 3d c0 69 | icon.2Z! it$=.i| 0000f710 24 2c 70 25 2d 31 29 3a 69 24 3d c2 69 24 2c a9 |$,p%-1):i$=.i$,.| 0000f720 69 24 2d 70 25 29 0d 32 64 26 20 74 79 70 65 25 |i$-p%).2d& type%| 0000f730 3d 97 c0 69 74 24 2c 31 29 3a 64 61 74 61 24 3d |=..it$,1):data$=| 0000f740 c2 69 74 24 2c a9 69 74 24 2d 31 29 0d 32 6e 82 |.it$,.it$-1).2n.| 0000f750 20 74 69 63 6b 25 3d 28 74 79 70 65 25 80 25 30 | tick%=(type%.%0| 0000f760 30 30 30 30 31 29 3a 64 6f 74 74 65 64 25 3d 28 |00001):dotted%=(| 0000f770 74 79 70 65 25 80 25 30 30 30 30 31 30 29 3e 3e |type%.%000010)>>| 0000f780 31 3a 77 72 69 74 25 3d 28 74 79 70 65 25 80 25 |1:writ%=(type%.%| 0000f790 30 30 30 31 30 30 29 3e 3e 32 3a 73 68 61 64 65 |000100)>>2:shade| 0000f7a0 64 25 3d 28 74 79 70 65 25 80 25 30 30 31 30 30 |d%=(type%.%00100| 0000f7b0 30 29 3e 3e 33 3a 6c 6f 6e 67 25 3d 28 74 79 70 |0)>>3:long%=(typ| 0000f7c0 65 25 80 25 30 31 30 30 30 30 29 3e 3e 34 0d 32 |e%.%010000)>>4.2| 0000f7d0 78 71 20 76 61 6c 69 64 24 3d 22 22 3a 70 25 3d |xq valid$="":p%=| 0000f7e0 a7 64 61 74 61 24 2c 22 26 22 29 3a e7 70 25 3e |.data$,"&"):.p%>| 0000f7f0 30 20 8c 20 76 61 6c 69 64 24 3d c1 64 61 74 61 |0 . valid$=.data| 0000f800 24 2c 70 25 2b 31 29 3a 64 61 74 61 24 3d c0 64 |$,p%+1):data$=.d| 0000f810 61 74 61 24 2c 70 25 2d 31 29 3a f4 20 45 78 74 |ata$,p%-1):. Ext| 0000f820 72 61 63 74 20 76 61 6c 69 64 61 74 69 6f 6e 20 |ract validation | 0000f830 73 74 72 69 6e 67 20 28 69 66 20 61 6e 79 29 0d |string (if any).| 0000f840 32 82 85 20 73 75 62 25 3d 2d 31 3a 73 75 62 77 |2.. sub%=-1:subw| 0000f850 61 72 6e 25 3d 30 3a 70 25 3d a7 64 61 74 61 24 |arn%=0:p%=.data$| 0000f860 2c 22 23 22 29 3a e7 70 25 3e 30 20 8c 20 73 75 |,"#"):.p%>0 . su| 0000f870 62 25 3d bb 28 c1 64 61 74 61 24 2c 70 25 2b 31 |b%=.(.data$,p%+1| 0000f880 29 29 3a 73 75 62 77 61 72 6e 25 3d 31 3a 64 61 |)):subwarn%=1:da| 0000f890 74 61 24 3d c0 64 61 74 61 24 2c 70 25 2d 31 29 |ta$=.data$,p%-1)| 0000f8a0 3a f4 20 45 78 74 72 61 63 74 20 73 75 62 77 69 |:. Extract subwi| 0000f8b0 6e 64 6f 77 20 68 61 6e 64 6c 65 20 28 69 66 20 |ndow handle (if | 0000f8c0 61 6e 79 29 0d 32 8c 3e 20 e7 77 72 69 74 25 3d |any).2.> .writ%=| 0000f8d0 30 20 8c 20 69 6c 65 6e 25 3d a9 64 61 74 61 24 |0 . ilen%=.data$| 0000f8e0 2b 31 20 8b e7 6c 6f 6e 67 25 3d 30 20 8c 20 69 |+1 ..long%=0 . i| 0000f8f0 6c 65 6e 25 3d 31 36 20 8b 20 69 6c 65 6e 25 3d |len%=16 . ilen%=| 0000f900 34 30 0d 32 96 43 20 21 70 74 72 25 3d 28 73 75 |40.2.C !ptr%=(su| 0000f910 62 77 61 72 6e 25 3c 3c 33 29 2b 28 77 72 69 74 |bwarn%<<3)+(writ| 0000f920 25 3c 3c 32 29 2b 28 64 6f 74 74 65 64 25 3c 3c |%<<2)+(dotted%<<| 0000f930 31 29 2b 74 69 63 6b 25 3a f4 20 4d 65 6e 75 20 |1)+tick%:. Menu | 0000f940 66 6c 61 67 73 0d 32 a0 22 20 70 74 72 25 21 34 |flags.2." ptr%!4| 0000f950 3d 73 75 62 25 3a f4 20 53 75 62 20 6d 65 6e 75 |=sub%:. Sub menu| 0000f960 2f 77 69 6e 64 6f 77 0d 32 aa 3e 20 70 74 72 25 |/window.2.> ptr%| 0000f970 21 38 3d 28 77 62 25 3c 3c 32 38 29 2b 28 77 66 |!8=(wb%<<28)+(wf| 0000f980 25 3c 3c 32 34 29 2b 28 73 68 61 64 65 64 25 3c |%<<24)+(shaded%<| 0000f990 3c 32 32 29 2b 28 31 3c 3c 38 29 2b 31 3a f4 20 |<22)+(1<<8)+1:. | 0000f9a0 46 6c 61 67 73 0d 32 b4 45 20 24 64 61 74 61 70 |Flags.2.E $datap| 0000f9b0 74 72 25 3d 64 61 74 61 24 3a 70 74 72 25 21 31 |tr%=data$:ptr%!1| 0000f9c0 32 3d 64 61 74 61 70 74 72 25 3a 70 74 72 25 21 |2=dataptr%:ptr%!| 0000f9d0 32 30 3d 69 6c 65 6e 25 3a 64 61 74 61 70 74 72 |20=ilen%:dataptr| 0000f9e0 25 2b 3d 69 6c 65 6e 25 2b 31 0d 32 be 54 20 e7 |%+=ilen%+1.2.T .| 0000f9f0 76 61 6c 69 64 24 3d 22 22 20 8c 20 70 74 72 25 |valid$="" . ptr%| 0000fa00 21 31 36 3d 2d 31 20 8b 20 24 64 61 74 61 70 74 |!16=-1 . $datapt| 0000fa10 72 25 3d 76 61 6c 69 64 24 3a 70 74 72 25 21 31 |r%=valid$:ptr%!1| 0000fa20 36 3d 64 61 74 61 70 74 72 25 3a 64 61 74 61 70 |6=dataptr%:datap| 0000fa30 74 72 25 2b 3d a9 76 61 6c 69 64 24 2b 31 0d 32 |tr%+=.valid$+1.2| 0000fa40 c8 14 20 70 74 72 25 2b 3d 32 34 3a 69 78 25 2b |.. ptr%+=24:ix%+| 0000fa50 3d 31 0d 32 d2 05 cd 0d 32 dc 2a e7 69 24 3d 22 |=1.2....2.*.i$="| 0000fa60 22 20 8c 20 e7 69 63 6f 6e 25 3d 31 20 8c 20 69 |" . .icon%=1 . i| 0000fa70 24 3d 69 63 6f 6e 32 24 3a 69 63 6f 6e 25 2b 3d |$=icon2$:icon%+=| 0000fa80 31 0d 32 e6 05 ce 0d 32 f0 32 70 74 72 25 21 2d |1.2....2.2ptr%!-| 0000fa90 32 34 3d 28 70 74 72 25 21 2d 32 34 29 84 26 38 |24=(ptr%!-24).&8| 0000faa0 30 3a f4 20 49 6e 64 69 63 61 74 65 20 27 6c 61 |0:. Indicate 'la| 0000fab0 73 74 20 69 63 6f 6e 27 0d 32 fa 10 e7 ac 63 72 |st icon'.2....cr| 0000fac0 65 61 74 65 20 8c 20 e1 0d 33 04 41 e7 73 75 62 |eate . ..3.A.sub| 0000fad0 20 8c 20 c8 99 20 57 43 72 65 61 74 65 53 4d 25 | . .. WCreateSM%| 0000fae0 2c 2c 6d 65 6e 75 25 2c 78 25 2c 79 25 20 8b 20 |,,menu%,x%,y% . | 0000faf0 c8 99 20 57 43 72 65 61 74 65 4d 25 2c 2c 6d 65 |.. WCreateM%,,me| 0000fb00 6e 75 25 2c 78 25 2c 79 25 0d 33 0e 05 e1 0d 33 |nu%,x%,y%.3....3| 0000fb10 18 05 20 0d 33 22 19 dd a4 73 65 6c 28 74 25 2c |.. .3"...sel(t%,| 0000fb20 64 25 2c 77 25 2c 73 25 2c 72 25 29 0d 33 2c 32 |d%,w%,s%,r%).3,2| 0000fb30 f4 20 52 65 74 75 72 6e 73 20 73 65 6c 65 63 74 |. Returns select| 0000fb40 20 63 68 61 72 61 63 74 65 72 20 66 6f 72 20 69 | character for i| 0000fb50 63 6f 6e 20 61 74 74 72 69 62 75 74 65 73 0d 33 |con attributes.3| 0000fb60 36 45 3d bd 28 28 31 3c 3c 35 29 2b 28 28 72 25 |6E=.((1<<5)+((r%| 0000fb70 80 31 29 3c 3c 34 29 2b 28 28 73 25 80 31 29 3c |.1)<<4)+((s%.1)<| 0000fb80 3c 33 29 2b 28 28 77 25 80 31 29 3c 3c 32 29 2b |<3)+((w%.1)<<2)+| 0000fb90 28 28 64 25 80 31 29 3c 3c 31 29 2b 28 74 25 80 |((d%.1)<<1)+(t%.| 0000fba0 31 29 29 0d 33 40 05 20 0d 33 4a 09 dd a4 75 6d |1)).3@. .3J...um| 0000fbb0 73 0d 33 54 37 f4 20 52 65 74 75 72 6e 73 20 73 |s.3T7. Returns s| 0000fbc0 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 69 |tring representi| 0000fbd0 6e 67 20 63 75 72 72 65 6e 74 20 75 73 65 72 20 |ng current user | 0000fbe0 6d 6f 64 65 20 73 65 74 0d 33 5e 5c 3d c3 28 55 |mode set.3^\=.(U| 0000fbf0 73 65 72 4d 6f 64 65 53 65 74 25 28 31 29 29 2b |serModeSet%(1))+| 0000fc00 22 2c 22 2b c3 28 55 73 65 72 4d 6f 64 65 53 65 |","+.(UserModeSe| 0000fc10 74 25 28 32 29 29 2b 22 2c 22 2b c3 28 55 73 65 |t%(2))+","+.(Use| 0000fc20 72 4d 6f 64 65 53 65 74 25 28 33 29 29 2b 22 2c |rModeSet%(3))+",| 0000fc30 22 2b c3 28 55 73 65 72 4d 6f 64 65 53 65 74 25 |"+.(UserModeSet%| 0000fc40 28 34 29 29 0d 33 68 05 20 0d 33 72 1b dd a4 61 |(4)).3h. .3r...a| 0000fc50 76 61 69 6c 61 62 6c 65 5f 6d 6f 64 65 28 6d 6f |vailable_mode(mo| 0000fc60 64 65 25 29 0d 33 7c 43 f4 20 43 68 65 63 6b 73 |de%).3|C. Checks| 0000fc70 20 69 66 20 6d 6f 64 65 25 20 69 73 20 61 20 76 | if mode% is a v| 0000fc80 61 6c 69 64 20 57 49 4d 50 20 6d 6f 64 65 20 61 |alid WIMP mode a| 0000fc90 6e 64 20 61 76 61 69 6c 61 62 6c 65 20 6f 6e 20 |nd available on | 0000fca0 6d 6f 6e 69 74 6f 72 0d 33 86 30 e7 6d 6f 64 65 |monitor.3.0.mode| 0000fcb0 25 3d 33 20 84 20 6d 6f 64 65 25 3d 36 20 84 20 |%=3 . mode%=6 . | 0000fcc0 6d 6f 64 65 25 3d 37 20 84 20 6d 6f 64 65 25 3d |mode%=7 . mode%=| 0000fcd0 32 33 20 8c 20 3d a3 0d 33 90 1c e7 6d 6f 64 65 |23 . =..3...mode| 0000fce0 25 3c 30 20 84 20 6d 6f 64 65 25 3e 32 38 20 8c |%<0 . mode%>28 .| 0000fcf0 20 3d a3 0d 33 9a 2a e7 6d 6f 64 65 25 3d 32 34 | =..3.*.mode%=24| 0000fd00 20 84 20 6d 6f 64 65 25 3c 31 38 20 8c 20 3d b9 | . mode%<18 . =.| 0000fd10 20 8b 20 3d 4d 75 6c 74 69 53 79 6e 63 0d 33 a4 | . =MultiSync.3.| 0000fd20 05 20 0d 33 ae 11 dd a4 61 6c 69 67 6e 28 76 61 |. .3....align(va| 0000fd30 6c 25 29 0d 33 b8 30 f4 20 52 65 74 75 72 6e 73 |l%).3.0. Returns| 0000fd40 20 6e 65 78 74 2d 75 70 20 77 6f 72 64 20 61 6c | next-up word al| 0000fd50 69 67 6e 65 64 20 76 61 6c 75 65 20 6f 66 20 76 |igned value of v| 0000fd60 61 6c 25 0d 33 c2 10 3d 28 76 61 6c 25 2b 33 29 |al%.3..=(val%+3)| 0000fd70 80 ac 33 0d 33 cc 05 20 0d 33 d6 16 dd a4 72 65 |..3.3.. .3....re| 0000fd80 61 64 70 61 6c 76 61 6c 28 72 67 62 25 29 0d 33 |adpalval(rgb%).3| 0000fd90 e0 33 f4 20 52 65 74 75 72 6e 73 20 27 4f 53 5f |.3. Returns 'OS_| 0000fda0 52 65 61 64 50 61 6c 65 74 74 65 27 20 77 6f 72 |ReadPalette' wor| 0000fdb0 64 20 66 72 6f 6d 20 26 52 47 42 20 76 61 6c 75 |d from &RGB valu| 0000fdc0 65 0d 33 ea 3f 3d 28 28 72 67 62 25 80 26 46 46 |e.3.?=((rgb%.&FF| 0000fdd0 29 3c 3c 32 34 29 2b 28 28 72 67 62 25 80 26 46 |)<<24)+((rgb%.&F| 0000fde0 46 30 30 29 3c 3c 38 29 2b 28 28 72 67 62 25 80 |F00)<<8)+((rgb%.| 0000fdf0 26 46 46 30 30 30 30 29 3e 3e 38 29 2b 26 31 30 |&FF0000)>>8)+&10| 0000fe00 0d 33 f4 05 20 0d 33 fe 13 dd a4 73 74 72 69 6e |.3.. .3....strin| 0000fe10 67 28 61 64 64 72 25 29 0d 34 08 32 f4 20 52 65 |g(addr%).4.2. Re| 0000fe20 74 75 72 6e 73 20 43 54 52 4c 2d 63 68 61 72 20 |turns CTRL-char | 0000fe30 74 65 72 6d 69 6e 61 74 65 64 20 73 74 72 69 6e |terminated strin| 0000fe40 67 20 61 74 20 61 64 64 72 25 0d 34 12 0f ea 20 |g at addr%.4... | 0000fe50 5f 25 2c 5f 63 25 2c 5f 24 0d 34 1c 1f 5f 25 3d |_%,_c%,_$.4.._%=| 0000fe60 2d 31 3a f5 20 5f 25 2b 3d 31 3a fd 20 61 64 64 |-1:. _%+=1:. add| 0000fe70 72 25 3f 5f 25 3c 33 32 0d 34 26 33 5f 63 25 3d |r%?_%<32.4&3_c%=| 0000fe80 61 64 64 72 25 3f 5f 25 3a 61 64 64 72 25 3f 5f |addr%?_%:addr%?_| 0000fe90 25 3d 31 33 3a 5f 24 3d 24 61 64 64 72 25 3a 61 |%=13:_$=$addr%:a| 0000fea0 64 64 72 25 3f 5f 25 3d 5f 63 25 0d 34 30 07 3d |ddr%?_%=_c%.40.=| 0000feb0 5f 24 0d 34 3a 05 20 0d 34 44 12 dd a4 75 70 73 |_$.4:. .4D...ups| 0000fec0 74 72 69 6e 67 28 6d 24 29 0d 34 4e 1b f4 20 52 |tring(m$).4N.. R| 0000fed0 65 74 75 72 6e 73 20 75 70 70 65 72 20 63 61 73 |eturns upper cas| 0000fee0 65 20 6d 24 0d 34 58 0e ea 20 63 25 2c 76 25 2c |e m$.4X.. c%,v%,| 0000fef0 75 24 0d 34 62 52 75 24 3d 6d 24 3a e3 20 63 25 |u$.4bRu$=m$:. c%| 0000ff00 3d 31 20 b8 20 a9 20 6d 24 3a 76 25 3d 97 c1 6d |=1 . . m$:v%=..m| 0000ff10 24 2c 63 25 2c 31 29 3a e7 28 76 25 3c 3d 97 22 |$,c%,1):.(v%<=."| 0000ff20 7a 22 29 80 28 76 25 3e 3d 97 22 61 22 29 20 8c |z").(v%>=."a") .| 0000ff30 20 c1 75 24 2c 63 25 2c 31 29 3d bd 28 76 25 80 | .u$,c%,1)=.(v%.| 0000ff40 26 35 46 29 0d 34 6c 09 ed 3a 3d 75 24 0d 34 76 |&5F).4l..:=u$.4v| 0000ff50 05 20 0d 34 80 1d dd f2 6d 6f 75 73 65 28 f8 20 |. .4....mouse(. | 0000ff60 78 25 2c f8 20 79 25 2c f8 20 62 75 74 25 29 0d |x%,. y%,. but%).| 0000ff70 34 8a 2b f4 20 52 65 74 75 72 6e 73 20 78 2c 79 |4.+. Returns x,y| 0000ff80 20 61 6e 64 20 62 75 74 74 6f 6e 20 73 74 61 74 | and button stat| 0000ff90 65 20 6f 66 20 6d 6f 75 73 65 0d 34 94 11 c8 97 |e of mouse.4....| 0000ffa0 20 78 25 2c 79 25 2c 62 75 74 25 0d 34 9e 05 e1 | x%,y%,but%.4...| 0000ffb0 0d 34 a8 05 20 0d 34 b2 0a dd a4 63 32 35 36 0d |.4.. .4....c256.| 0000ffc0 34 bc 35 f4 20 52 65 74 75 72 6e 73 20 54 52 55 |4.5. Returns TRU| 0000ffd0 45 20 69 66 20 63 75 72 72 65 6e 74 20 6d 6f 64 |E if current mod| 0000ffe0 65 20 69 73 20 32 35 36 20 63 6f 6c 6f 75 72 20 |e is 256 colour | 0000fff0 6d 6f 64 65 0d 34 c6 11 3d 28 a4 6c 6f 67 32 42 |mode.4..=(.log2B| 00010000 50 50 3d 33 29 0d 34 d0 05 20 0d 34 da 0d dd a4 |PP=3).4.. .4....| 00010010 6c 6f 67 32 42 50 50 0d 34 e4 26 f4 20 52 65 74 |log2BPP.4.&. Ret| 00010020 75 72 6e 73 20 4c 6f 67 32 42 50 50 20 66 6f 72 |urns Log2BPP for| 00010030 20 63 75 72 72 65 6e 74 20 6d 6f 64 65 0d 34 ee | current mode.4.| 00010040 13 3d a4 6d 6f 64 65 5f 76 61 72 28 eb 2c 39 29 |.=.mode_var(.,9)| 00010050 0d 34 f8 05 20 0d 35 02 15 dd a4 76 64 75 5f 76 |.4.. .5....vdu_v| 00010060 61 72 28 76 61 72 6e 72 25 29 0d 35 0c 21 f4 20 |ar(varnr%).5.!. | 00010070 52 65 74 75 72 6e 73 20 56 44 55 20 76 61 72 69 |Returns VDU vari| 00010080 61 62 6c 65 20 76 61 72 6e 72 25 0d 35 16 3b 21 |able varnr%.5.;!| 00010090 61 72 67 25 3d 76 61 72 6e 72 25 3a 61 72 67 25 |arg%=varnr%:arg%| 000100a0 21 34 3d 2d 31 3a c8 99 20 4f 53 52 65 61 64 56 |!4=-1:.. OSReadV| 000100b0 56 25 2c 61 72 67 25 2c 61 72 67 25 2b 38 3a 3d |V%,arg%,arg%+8:=| 000100c0 61 72 67 25 21 38 0d 35 20 05 20 0d 35 2a 1c dd |arg%!8.5 . .5*..| 000100d0 a4 6d 6f 64 65 5f 76 61 72 28 6d 6f 64 65 25 2c |.mode_var(mode%,| 000100e0 76 61 72 6e 72 25 29 0d 35 34 28 f4 20 52 65 74 |varnr%).54(. Ret| 000100f0 75 72 6e 73 20 6d 6f 64 65 20 6d 6f 64 65 25 20 |urns mode mode% | 00010100 76 61 72 69 61 62 6c 65 20 76 61 72 6e 72 25 0d |variable varnr%.| 00010110 35 3e 0d ea 20 72 65 73 75 6c 74 25 0d 35 48 32 |5>.. result%.5H2| 00010120 c8 99 20 4f 53 52 65 61 64 4d 56 25 2c 6d 6f 64 |.. OSReadMV%,mod| 00010130 65 25 2c 76 61 72 6e 72 25 20 b8 20 2c 2c 72 65 |e%,varnr% . ,,re| 00010140 73 75 6c 74 25 3a 3d 72 65 73 75 6c 74 25 0d 35 |sult%:=result%.5| 00010150 52 05 20 0d 35 5c 10 dd a4 4f 53 5f 76 61 72 28 |R. .5\...OS_var(| 00010160 5f 24 29 0d 35 66 2e f4 20 41 74 74 65 6d 70 74 |_$).5f.. Attempt| 00010170 73 20 74 6f 20 72 65 74 75 72 6e 20 4f 53 2d 76 |s to return OS-v| 00010180 61 72 27 73 20 73 74 72 69 6e 67 20 76 61 6c 75 |ar's string valu| 00010190 65 0d 35 70 0d ea 20 5f 72 24 2c 5f 6c 25 0d 35 |e.5p.. _r$,_l%.5| 000101a0 7a 37 c8 99 20 22 58 4f 53 5f 52 65 61 64 56 61 |z7.. "XOS_ReadVa| 000101b0 72 56 61 6c 22 2c 5f 24 2c c4 31 30 30 2c 22 20 |rVal",_$,.100," | 000101c0 22 29 2c 31 30 30 2c 30 2c 33 20 b8 20 2c 5f 72 |"),100,0,3 . ,_r| 000101d0 24 2c 5f 6c 25 0d 35 84 16 5f 72 24 3d c0 5f 72 |$,_l%.5.._r$=._r| 000101e0 24 2c 5f 6c 25 29 3a 3d 5f 72 24 0d 35 8e 05 20 |$,_l%):=_r$.5.. | 000101f0 0d 35 98 15 dd a4 73 77 69 5f 74 6f 5f 6e 72 28 |.5....swi_to_nr(| 00010200 73 77 69 24 29 0d 35 a2 29 f4 20 52 65 74 75 72 |swi$).5.). Retur| 00010210 6e 73 20 53 57 49 20 6e 75 6d 62 65 72 20 6f 66 |ns SWI number of| 00010220 20 53 57 49 20 63 61 6c 6c 20 73 77 69 24 0d 35 | SWI call swi$.5| 00010230 ac 0c ea 20 73 77 69 6e 72 25 0d 35 b6 2f c8 99 |... swinr%.5./..| 00010240 20 22 58 4f 53 5f 53 57 49 4e 75 6d 62 65 72 46 | "XOS_SWINumberF| 00010250 72 6f 6d 53 74 72 69 6e 67 22 2c 2c 73 77 69 24 |romString",,swi$| 00010260 20 b8 20 73 77 69 6e 72 25 0d 35 c0 0b 3d 73 77 | . swinr%.5..=sw| 00010270 69 6e 72 25 0d 35 ca 05 20 0d 35 d4 1a dd f2 65 |inr%.5.. .5....e| 00010280 72 72 6f 72 28 65 72 72 6e 72 2c 65 72 72 6d 73 |rror(errnr,errms| 00010290 67 24 29 0d 35 de 14 f4 20 48 61 6e 64 6c 65 73 |g$).5... Handles| 000102a0 20 65 72 72 6f 72 73 0d 35 e8 16 ea 20 62 75 74 | errors.5... but| 000102b0 25 2c 6f 6c 64 70 61 6c 2c 6f 70 74 25 0d 35 f2 |%,oldpal,opt%.5.| 000102c0 39 c8 99 20 22 54 72 61 6e 73 6c 61 74 6f 72 5f |9.. "Translator_| 000102d0 56 69 64 65 6f 44 4d 41 22 2c 31 3a f4 20 45 6e |VideoDMA",1:. En| 000102e0 73 75 72 65 20 76 69 64 65 6f 20 44 4d 41 20 65 |sure video DMA e| 000102f0 6e 61 62 6c 65 64 0d 35 fc 27 e7 65 72 72 6e 72 |nabled.5.'.errnr| 00010300 3d 2d 31 20 8c 20 65 72 72 6e 72 3d 31 3a 6f 70 |=-1 . errnr=1:op| 00010310 74 25 3d 31 20 8b 20 6f 70 74 25 3d 33 0d 36 06 |t%=1 . opt%=3.6.| 00010320 1f 21 65 72 72 3d 65 72 72 6e 72 3a 24 28 65 72 |.!err=errnr:$(er| 00010330 72 2b 34 29 3d 65 72 72 6d 73 67 24 0d 36 10 44 |r+4)=errmsg$.6.D| 00010340 c8 99 20 22 54 72 61 6e 73 6c 61 74 6f 72 5f 50 |.. "Translator_P| 00010350 61 6c 65 74 74 65 22 2c 32 5e a4 6c 6f 67 32 42 |alette",2^.log2B| 00010360 50 50 2c 64 75 6d 25 2c 31 3a f4 20 52 65 61 64 |PP,dum%,1:. Read| 00010370 20 63 75 72 72 65 6e 74 20 70 61 6c 65 74 74 65 | current palette| 00010380 0d 36 1a 29 f2 73 65 74 5f 70 61 6c 65 74 74 65 |.6.).set_palette| 00010390 28 30 29 3a f4 20 53 65 6c 65 63 74 20 57 49 4d |(0):. Select WIM| 000103a0 50 20 70 61 6c 65 74 74 65 0d 36 24 2a c8 99 20 |P palette.6$*.. | 000103b0 57 52 65 70 6f 72 74 25 2c 65 72 72 2c 6f 70 74 |WReport%,err,opt| 000103c0 25 2c 61 70 70 6c 6e 61 6d 65 24 20 b8 20 2c 62 |%,applname$ . ,b| 000103d0 75 74 25 0d 36 2e 13 e7 62 75 74 25 3c 3e 31 20 |ut%.6...but%<>1 | 000103e0 8c 20 f2 64 69 65 0d 36 38 42 c8 99 20 22 54 72 |. .die.68B.. "Tr| 000103f0 61 6e 73 6c 61 74 6f 72 5f 53 65 74 50 61 6c 65 |anslator_SetPale| 00010400 74 74 65 22 2c 32 5e 28 32 5e a4 6c 6f 67 32 42 |tte",2^(2^.log2B| 00010410 50 50 29 2c 64 75 6d 25 3a f4 20 52 65 73 65 74 |PP),dum%:. Reset| 00010420 20 70 61 6c 65 74 74 65 0d 36 42 05 e1 0d 36 4c | palette.6B...6L| 00010430 05 20 0d 36 56 0a dd a4 73 70 72 57 0d 36 60 3f |. .6V...sprW.6`?| 00010440 f4 20 52 65 74 75 72 6e 73 20 69 6d 61 67 65 20 |. Returns image | 00010450 73 70 72 69 74 65 27 73 20 77 69 64 74 68 20 69 |sprite's width i| 00010460 6e 20 4f 53 20 70 69 78 65 6c 73 20 69 6e 20 63 |n OS pixels in c| 00010470 75 72 72 65 6e 74 20 6d 6f 64 65 0d 36 6a 1b 3d |urrent mode.6j.=| 00010480 53 70 72 57 25 2a 32 5e a4 6d 6f 64 65 5f 76 61 |SprW%*2^.mode_va| 00010490 72 28 eb 2c 34 29 0d 36 74 05 20 0d 36 7e 0a dd |r(.,4).6t. .6~..| 000104a0 a4 73 70 72 48 0d 36 88 40 f4 20 52 65 74 75 72 |.sprH.6.@. Retur| 000104b0 6e 73 20 69 6d 61 67 65 20 73 70 72 69 74 65 27 |ns image sprite'| 000104c0 73 20 68 65 69 67 68 74 20 69 6e 20 4f 53 20 70 |s height in OS p| 000104d0 69 78 65 6c 73 20 69 6e 20 63 75 72 72 65 6e 74 |ixels in current| 000104e0 20 6d 6f 64 65 0d 36 92 1b 3d 53 70 72 48 25 2a | mode.6..=SprH%*| 000104f0 32 5e a4 6d 6f 64 65 5f 76 61 72 28 eb 2c 35 29 |2^.mode_var(.,5)| 00010500 0d 36 9c 05 20 0d 36 a6 12 dd a4 6d 61 78 28 76 |.6.. .6....max(v| 00010510 31 25 2c 76 32 25 29 0d 36 b0 24 f4 20 52 65 74 |1%,v2%).6.$. Ret| 00010520 75 72 6e 73 20 6d 61 78 69 6d 75 6d 20 6f 66 20 |urns maximum of | 00010530 76 31 25 20 61 6e 64 20 76 32 25 0d 36 ba 1a e7 |v1% and v2%.6...| 00010540 76 31 25 3e 76 32 25 20 8c 20 3d 76 31 25 20 8b |v1%>v2% . =v1% .| 00010550 20 3d 76 32 25 0d 36 c4 05 20 0d 36 ce 09 dd f2 | =v2%.6.. .6....| 00010560 64 69 65 0d 36 d8 19 f4 20 54 69 64 69 65 73 20 |die.6... Tidies | 00010570 75 70 20 61 6e 64 20 65 78 69 74 73 0d 36 e2 15 |up and exits.6..| 00010580 f2 66 69 6e 69 73 68 3a f4 20 54 69 64 79 20 75 |.finish:. Tidy u| 00010590 70 0d 36 ec 10 c8 99 20 22 4f 53 5f 45 78 69 74 |p.6.... "OS_Exit| 000105a0 22 0d 36 f6 05 e1 0d 37 00 05 20 0d 37 0a 0c dd |".6....7.. .7...| 000105b0 f2 66 69 6e 69 73 68 0d 37 14 0f f4 20 54 69 64 |.finish.7... Tid| 000105c0 69 65 73 20 75 70 0d 37 1e 31 f4 20 53 65 6e 64 |ies up.7.1. Send| 000105d0 20 6d 65 73 73 61 67 65 20 74 6f 20 61 73 6b 20 | message to ask | 000105e0 69 66 20 6d 6f 64 75 6c 65 20 63 61 6e 20 62 65 |if module can be| 000105f0 20 6b 69 6c 6c 65 64 0d 37 28 c4 21 62 6c 6f 63 | killed.7(.!bloc| 00010600 6b 3d 32 30 3a 62 6c 6f 63 6b 21 31 32 3d 30 3a |k=20:block!12=0:| 00010610 62 6c 6f 63 6b 21 31 36 3d 26 43 43 45 30 30 3a |block!16=&CCE00:| 00010620 c8 99 20 57 53 65 6e 64 4d 73 67 25 2c 31 38 2c |.. WSendMsg%,18,| 00010630 62 6c 6f 63 6b 2c 30 3a 6b 69 6c 6c 3d a3 3a f5 |block,0:kill=.:.| 00010640 20 6c 69 73 74 65 6e 25 3d a4 70 6f 6c 6c 28 30 | listen%=.poll(0| 00010650 29 3a 6b 69 6c 6c 3d 6b 69 6c 6c 20 84 20 28 28 |):kill=kill . ((| 00010660 6c 69 73 74 65 6e 25 3d 31 39 29 80 28 70 6f 6c |listen%=19).(pol| 00010670 6c 21 31 36 3d 26 43 43 45 30 30 29 80 28 70 6f |l!16=&CCE00).(po| 00010680 6c 6c 21 31 32 3d 30 29 29 3a fd 20 6c 69 73 74 |ll!12=0)):. list| 00010690 65 6e 25 3d 30 3a e7 6b 69 6c 6c 20 8c 20 c8 99 |en%=0:.kill . ..| 000106a0 20 22 4f 53 5f 4d 6f 64 75 6c 65 22 2c 34 2c 22 | "OS_Module",4,"| 000106b0 54 72 61 6e 73 6c 61 74 6f 72 22 0d 37 32 26 c8 |Translator".72&.| 000106c0 99 20 57 53 65 74 50 25 2c 2c 77 69 6d 70 70 61 |. WSetP%,,wimppa| 000106d0 6c 3a f4 20 52 65 73 65 74 20 70 61 6c 65 74 74 |l:. Reset palett| 000106e0 65 0d 37 3c 2d c8 99 20 22 57 69 6d 70 5f 43 6c |e.7<-.. "Wimp_Cl| 000106f0 6f 73 65 44 6f 77 6e 22 2c 54 61 73 6b 48 61 6e |oseDown",TaskHan| 00010700 64 6c 65 25 2c 26 34 42 35 33 34 31 35 34 0d 37 |dle%,&4B534154.7| 00010710 46 05 e1 0d 37 50 05 20 0d 37 5a 23 dd a4 6d 6f |F...7P. .7Z#..mo| 00010720 64 65 28 77 69 64 74 68 25 2c 68 65 69 67 68 74 |de(width%,height| 00010730 25 2c 63 6f 6c 6f 75 72 73 25 29 0d 37 64 4c f4 |%,colours%).7dL.| 00010740 20 52 65 74 75 72 6e 73 2c 20 69 66 20 70 6f 73 | Returns, if pos| 00010750 73 69 62 6c 65 2c 20 61 20 73 74 61 6e 64 61 72 |sible, a standar| 00010760 64 20 73 63 72 65 65 6e 20 6d 6f 64 65 20 74 68 |d screen mode th| 00010770 61 74 20 69 73 20 6d 6f 73 74 20 73 75 69 74 61 |at is most suita| 00010780 62 6c 65 20 66 6f 72 0d 37 6e 4b f4 20 64 69 73 |ble for.7nK. dis| 00010790 70 6c 61 79 69 6e 67 20 61 20 70 69 63 74 75 72 |playing a pictur| 000107a0 65 20 6f 66 20 28 77 69 64 74 68 25 29 78 28 68 |e of (width%)x(h| 000107b0 65 69 67 68 74 25 29 20 70 69 78 65 6c 73 20 69 |eight%) pixels i| 000107c0 6e 20 63 6f 6c 6f 75 72 73 25 20 63 6f 6c 6f 75 |n colours% colou| 000107d0 72 73 0d 37 78 36 f4 20 52 65 74 75 72 6e 73 20 |rs.7x6. Returns | 000107e0 2d 31 20 69 66 20 6e 75 6d 62 65 72 20 6f 66 20 |-1 if number of | 000107f0 63 6f 6c 6f 75 72 73 20 67 72 65 61 74 65 72 20 |colours greater | 00010800 74 68 61 6e 20 32 35 36 0d 37 82 29 ea 20 61 72 |than 256.7.). ar| 00010810 63 63 6f 6c 73 25 2c 61 72 63 77 69 64 74 68 25 |ccols%,arcwidth%| 00010820 2c 61 72 63 68 65 69 67 68 74 25 2c 6d 6f 64 65 |,archeight%,mode| 00010830 25 0d 37 8c 13 e7 4f 75 74 4d 6f 64 65 3d 32 20 |%.7...OutMode=2 | 00010840 8c 20 3d eb 0d 37 96 2f f4 20 52 61 6e 67 65 20 |. =..7./. Range | 00010850 63 68 65 63 6b 20 66 6f 72 20 63 6f 6c 6f 75 72 |check for colour| 00010860 73 2c 20 77 69 64 74 68 20 61 6e 64 20 68 65 69 |s, width and hei| 00010870 67 68 74 0d 37 a0 26 e7 63 6f 6c 6f 75 72 73 25 |ght.7.&.colours%| 00010880 3e 32 35 36 20 8c 20 3d 2d 31 3a f4 20 49 6d 70 |>256 . =-1:. Imp| 00010890 6f 73 73 69 62 6c 65 20 21 0d 37 aa 2c f4 20 44 |ossible !.7.,. D| 000108a0 65 74 65 72 6d 69 6e 65 20 63 6c 6f 73 65 73 74 |etermine closest| 000108b0 20 63 6f 6c 6f 75 72 73 2f 77 69 64 74 68 2f 68 | colours/width/h| 000108c0 65 69 67 68 74 0d 37 b4 63 e7 63 6f 6c 6f 75 72 |eight.7.c.colour| 000108d0 73 25 3e 31 36 20 8c 20 61 72 63 63 6f 6c 73 25 |s%>16 . arccols%| 000108e0 3d 32 35 36 20 8b 20 e7 63 6f 6c 6f 75 72 73 25 |=256 . .colours%| 000108f0 3e 34 20 8c 20 61 72 63 63 6f 6c 73 25 3d 31 36 |>4 . arccols%=16| 00010900 20 8b 20 e7 63 6f 6c 6f 75 72 73 25 3e 32 20 8c | . .colours%>2 .| 00010910 20 61 72 63 63 6f 6c 73 25 3d 34 20 8b 20 61 72 | arccols%=4 . ar| 00010920 63 63 6f 6c 73 25 3d 32 0d 37 be 4e e7 77 69 64 |ccols%=2.7.N.wid| 00010930 74 68 25 3e 36 34 30 20 8c 20 61 72 63 77 69 64 |th%>640 . arcwid| 00010940 74 68 25 3d 31 30 35 36 20 8b 20 e7 77 69 64 74 |th%=1056 . .widt| 00010950 68 25 3e 33 32 30 20 8c 20 61 72 63 77 69 64 74 |h%>320 . arcwidt| 00010960 68 25 3d 36 34 30 20 8b 20 61 72 63 77 69 64 74 |h%=640 . arcwidt| 00010970 68 25 3d 33 32 30 0d 37 c8 33 e7 68 65 69 67 68 |h%=320.7.3.heigh| 00010980 74 25 3c 3d 32 35 36 20 8c 20 61 72 63 68 65 69 |t%<=256 . archei| 00010990 67 68 74 25 3d 32 35 36 20 8b 20 61 72 63 68 65 |ght%=256 . arche| 000109a0 69 67 68 74 25 3d 35 31 32 0d 37 d2 11 c8 8e 20 |ight%=512.7.... | 000109b0 61 72 63 63 6f 6c 73 25 20 ca 0d 37 dc 2f 20 c9 |arccols% ..7./ .| 000109c0 20 32 20 3a 20 e7 61 72 63 68 65 69 67 68 74 25 | 2 : .archeight%| 000109d0 3d 35 31 32 20 8c 20 6d 6f 64 65 25 3d 31 38 20 |=512 . mode%=18 | 000109e0 8b 20 6d 6f 64 65 25 3d 30 0d 37 e6 4b 20 c9 20 |. mode%=0.7.K . | 000109f0 34 20 3a 20 e7 61 72 63 68 65 69 67 68 74 25 3d |4 : .archeight%=| 00010a00 35 31 32 20 8c 20 6d 6f 64 65 25 3d 31 39 20 8b |512 . mode%=19 .| 00010a10 20 e7 61 72 63 77 69 64 74 68 25 3c 3d 33 32 30 | .arcwidth%<=320| 00010a20 20 8c 20 6d 6f 64 65 25 3d 31 20 8b 20 6d 6f 64 | . mode%=1 . mod| 00010a30 65 25 3d 38 0d 37 f0 69 20 c9 20 31 36 20 3a 20 |e%=8.7.i . 16 : | 00010a40 e7 61 72 63 68 65 69 67 68 74 25 3d 35 31 32 20 |.archeight%=512 | 00010a50 8c 20 6d 6f 64 65 25 3d 32 30 20 8b 20 e7 61 72 |. mode%=20 . .ar| 00010a60 63 77 69 64 74 68 25 3c 3d 33 32 30 20 8c 20 6d |cwidth%<=320 . m| 00010a70 6f 64 65 25 3d 39 20 8b 20 e7 61 72 63 77 69 64 |ode%=9 . .arcwid| 00010a80 74 68 25 3d 36 34 30 20 8c 20 6d 6f 64 65 25 3d |th%=640 . mode%=| 00010a90 31 32 20 8b 20 6d 6f 64 65 25 3d 31 36 0d 37 fa |12 . mode%=16.7.| 00010aa0 86 20 c9 20 32 35 36 20 3a 20 e7 61 72 63 68 65 |. . 256 : .arche| 00010ab0 69 67 68 74 25 3d 35 31 32 20 8c 20 6d 6f 64 65 |ight%=512 . mode| 00010ac0 25 3d 32 31 20 8b 20 e7 61 72 63 77 69 64 74 68 |%=21 . .arcwidth| 00010ad0 25 3d 31 36 30 20 8c 20 6d 6f 64 65 25 3d 31 30 |%=160 . mode%=10| 00010ae0 20 8b 20 e7 61 72 63 77 69 64 74 68 25 3d 33 32 | . .arcwidth%=32| 00010af0 30 20 8c 20 6d 6f 64 65 25 3d 31 33 20 8b 20 e7 |0 . mode%=13 . .| 00010b00 61 72 63 77 69 64 74 68 25 3d 36 34 30 20 8c 20 |arcwidth%=640 . | 00010b10 6d 6f 64 65 25 3d 31 35 20 8b 20 6d 6f 64 65 25 |mode%=15 . mode%| 00010b20 3d 32 34 0d 38 04 05 cb 0d 38 0e 0a 3d 6d 6f 64 |=24.8....8..=mod| 00010b30 65 25 0d 38 18 05 20 0d 38 22 13 dd a4 74 69 6d |e%.8.. .8"...tim| 00010b40 65 73 28 76 61 6c 75 65 25 29 0d 38 2c 30 f4 20 |es(value%).8,0. | 00010b50 52 65 74 75 72 6e 73 20 53 54 52 24 76 61 6c 75 |Returns STR$valu| 00010b60 65 25 20 77 69 74 68 20 27 70 6c 75 72 61 6c 20 |e% with 'plural | 00010b70 65 78 74 65 6e 73 69 6f 6e 27 0d 38 36 09 ea 20 |extension'.86.. | 00010b80 5f 64 25 0d 38 40 33 5f 64 25 3d 76 61 6c 75 65 |_d%.8@3_d%=value| 00010b90 25 83 31 30 3a f4 20 4c 61 73 74 20 64 69 67 69 |%.10:. Last digi| 00010ba0 74 20 64 65 74 65 72 6d 69 6e 65 73 20 65 78 74 |t determines ext| 00010bb0 65 6e 73 69 6f 6e 0d 38 4a 3a e7 28 28 28 76 61 |ension.8J:.(((va| 00010bc0 6c 75 65 25 83 31 30 30 29 81 31 30 29 3d 31 29 |lue%.100).10)=1)| 00010bd0 84 28 5f 64 25 3e 33 29 84 28 5f 64 25 3d 30 29 |.(_d%>3).(_d%=0)| 00010be0 20 8c 20 3d c3 76 61 6c 75 65 25 2b 22 74 68 22 | . =.value%+"th"| 00010bf0 0d 38 54 0c c8 8e 20 5f 64 25 20 ca 0d 38 5e 18 |.8T... _d% ..8^.| 00010c00 20 c9 20 31 20 3a 20 3d c3 76 61 6c 75 65 25 2b | . 1 : =.value%+| 00010c10 22 73 74 22 0d 38 68 18 20 c9 20 32 20 3a 20 3d |"st".8h. . 2 : =| 00010c20 c3 76 61 6c 75 65 25 2b 22 6e 64 22 0d 38 72 18 |.value%+"nd".8r.| 00010c30 20 c9 20 33 20 3a 20 3d c3 76 61 6c 75 65 25 2b | . 3 : =.value%+| 00010c40 22 72 64 22 0d 38 7c 05 cb 0d 38 86 05 20 0d 38 |"rd".8|...8.. .8| 00010c50 90 17 dd a4 69 73 74 72 69 6e 67 28 66 6e 25 2c |....istring(fn%,| 00010c60 6c 65 6e 25 29 0d 38 9a 21 f4 20 52 65 74 75 72 |len%).8.!. Retur| 00010c70 6e 73 20 73 74 72 69 6e 67 20 6f 66 20 66 72 6f |ns string of fro| 00010c80 6d 20 66 69 6c 65 0d 38 a4 30 f4 20 49 66 20 6c |m file.8.0. If l| 00010c90 65 6e 25 3e 30 20 74 68 65 20 6e 75 6d 62 65 72 |en%>0 the number| 00010ca0 20 6f 66 20 63 68 61 72 61 63 74 65 72 73 20 69 | of characters i| 00010cb0 73 20 6c 65 6e 25 0d 38 ae 38 f4 20 49 66 20 6c |s len%.8.8. If l| 00010cc0 65 6e 25 3d 2d 31 20 74 68 65 20 73 74 72 69 6e |en%=-1 the strin| 00010cd0 67 20 69 73 20 43 54 52 4c 2d 63 68 61 72 61 63 |g is CTRL-charac| 00010ce0 74 65 72 20 74 65 72 6d 69 6e 61 74 65 64 0d 38 |ter terminated.8| 00010cf0 b8 0e ea 20 5f 25 2c 72 24 2c 63 25 0d 38 c2 6c |... _%,r$,c%.8.l| 00010d00 5f 24 3d 22 22 3a e7 6c 65 6e 25 3e 30 20 8c 20 |_$="":.len%>0 . | 00010d10 e3 20 5f 25 3d 31 20 b8 20 6c 65 6e 25 3a 72 24 |. _%=1 . len%:r$| 00010d20 2b 3d bd a4 69 31 28 66 6e 25 29 3a ed 20 8b 20 |+=..i1(fn%):. . | 00010d30 e7 6c 65 6e 25 3d 2d 31 20 8c 20 63 25 3d a4 69 |.len%=-1 . c%=.i| 00010d40 31 28 66 6e 25 29 3a c8 95 20 63 25 3e 3d 97 22 |1(fn%):.. c%>=."| 00010d50 20 22 3a 72 24 2b 3d bd 63 25 3a 63 25 3d a4 69 | ":r$+=.c%:c%=.i| 00010d60 31 28 66 6e 25 29 3a ce 0d 38 cc 07 3d 72 24 0d |1(fn%):..8..=r$.| 00010d70 38 d6 05 20 0d 38 e0 18 dd f2 69 73 6b 69 70 28 |8.. .8....iskip(| 00010d80 66 6e 25 2c 61 6d 6f 75 6e 74 25 29 0d 38 ea 21 |fn%,amount%).8.!| 00010d90 f4 20 53 6b 69 70 73 20 61 6d 6f 75 6e 74 25 20 |. Skips amount% | 00010da0 62 79 74 65 73 20 69 6e 20 66 69 6c 65 0d 38 f4 |bytes in file.8.| 00010db0 23 cf 23 46 69 6c 65 28 66 6e 25 29 3d 61 6d 6f |#.#File(fn%)=amo| 00010dc0 75 6e 74 25 2b 8f 23 46 69 6c 65 28 66 6e 25 29 |unt%+.#File(fn%)| 00010dd0 0d 38 fe 05 e1 0d 39 08 05 20 0d 39 12 17 dd f2 |.8....9.. .9....| 00010de0 69 70 74 72 28 66 6e 25 2c 6e 65 77 70 74 72 25 |iptr(fn%,newptr%| 00010df0 29 0d 39 1c 1d f4 20 53 65 74 73 20 6e 65 77 20 |).9... Sets new | 00010e00 6f 66 66 73 65 74 20 69 6e 20 66 69 6c 65 0d 39 |offset in file.9| 00010e10 26 17 cf 23 46 69 6c 65 28 66 6e 25 29 3d 6e 65 |&..#File(fn%)=ne| 00010e20 77 70 74 72 25 0d 39 30 05 e1 0d 39 3a 05 20 0d |wptr%.90...9:. .| 00010e30 39 44 0f dd a4 69 70 74 72 28 66 6e 25 29 0d 39 |9D...iptr(fn%).9| 00010e40 4e 24 f4 20 52 65 74 75 72 6e 73 20 63 75 72 72 |N$. Returns curr| 00010e50 65 6e 74 20 6f 66 66 73 65 74 20 69 6e 20 66 69 |ent offset in fi| 00010e60 6c 65 0d 39 58 10 3d 8f 23 46 69 6c 65 28 66 6e |le.9X.=.#File(fn| 00010e70 25 29 0d 39 62 05 20 0d 39 6c 0f dd a4 69 6c 65 |%).9b. .9l...ile| 00010e80 6e 28 66 6e 25 29 0d 39 76 1c f4 20 52 65 74 75 |n(fn%).9v.. Retu| 00010e90 72 6e 73 20 6c 65 6e 67 74 68 20 6f 66 20 66 69 |rns length of fi| 00010ea0 6c 65 0d 39 80 10 3d a2 23 46 69 6c 65 28 66 6e |le.9..=.#File(fn| 00010eb0 25 29 0d 39 8a 05 20 0d 39 94 0f dd a4 69 65 6f |%).9.. .9....ieo| 00010ec0 66 28 66 6e 25 29 0d 39 9e 28 f4 20 52 65 74 75 |f(fn%).9.(. Retu| 00010ed0 72 6e 73 20 65 6e 64 2d 6f 66 2d 66 69 6c 65 20 |rns end-of-file | 00010ee0 73 74 61 74 75 73 20 6f 66 20 66 69 6c 65 0d 39 |status of file.9| 00010ef0 a8 10 3d c5 23 46 69 6c 65 28 66 6e 25 29 0d 39 |..=.#File(fn%).9| 00010f00 b2 05 20 0d 39 bc 0c dd f2 69 63 6c 6f 73 65 0d |.. .9....iclose.| 00010f10 39 c6 1c f4 20 43 6c 6f 73 65 73 20 61 6c 6c 20 |9... Closes all | 00010f20 69 6e 70 75 74 20 66 69 6c 65 73 0d 39 d0 08 ea |input files.9...| 00010f30 20 66 25 0d 39 da 33 e3 20 66 25 3d 31 20 b8 20 | f%.9.3. f%=1 . | 00010f40 31 30 3a e7 46 69 6c 65 28 66 25 29 3e 30 20 8c |10:.File(f%)>0 .| 00010f50 20 d9 23 46 69 6c 65 28 66 25 29 3a 46 69 6c 65 | .#File(f%):File| 00010f60 28 66 25 29 3d 30 0d 39 e4 05 ed 0d 39 ee 05 e1 |(f%)=0.9....9...| 00010f70 0d 39 f8 05 20 0d 3a 02 1c dd f2 69 67 65 74 28 |.9.. .:....iget(| 00010f80 66 6e 25 2c 61 64 72 25 2c 61 6d 6f 75 6e 74 25 |fn%,adr%,amount%| 00010f90 29 0d 3a 0c 2d f4 20 52 65 74 75 72 6e 73 20 61 |).:.-. Returns a| 00010fa0 6d 6f 75 6e 74 25 20 62 79 74 65 73 20 61 74 20 |mount% bytes at | 00010fb0 61 64 72 25 20 66 72 6f 6d 20 66 69 6c 65 0d 3a |adr% from file.:| 00010fc0 16 29 c8 99 20 22 4f 53 5f 47 42 50 42 22 2c 34 |.).. "OS_GBPB",4| 00010fd0 2c 46 69 6c 65 28 66 6e 25 29 2c 61 64 72 25 2c |,File(fn%),adr%,| 00010fe0 61 6d 6f 75 6e 74 25 0d 3a 20 05 e1 0d 3a 2a 05 |amount%.: ...:*.| 00010ff0 20 0d 3a 34 18 dd a4 69 31 28 66 6e 25 29 3a 3d | .:4...i1(fn%):=| 00011000 a4 69 28 66 6e 25 2c 31 29 0d 3a 3e 18 dd a4 69 |.i(fn%,1).:>...i| 00011010 32 28 66 6e 25 29 3a 3d a4 69 28 66 6e 25 2c 32 |2(fn%):=.i(fn%,2| 00011020 29 0d 3a 48 18 dd a4 69 33 28 66 6e 25 29 3a 3d |).:H...i3(fn%):=| 00011030 a4 69 28 66 6e 25 2c 33 29 0d 3a 52 18 dd a4 69 |.i(fn%,3).:R...i| 00011040 34 28 66 6e 25 29 3a 3d a4 69 28 66 6e 25 2c 34 |4(fn%):=.i(fn%,4| 00011050 29 0d 3a 5c 05 20 0d 3a 66 11 dd a4 69 28 66 6e |).:\. .:f...i(fn| 00011060 25 2c 6c 65 6e 25 29 0d 3a 70 27 f4 20 52 65 74 |%,len%).:p'. Ret| 00011070 75 72 6e 73 20 6c 65 6e 25 2d 62 79 74 65 20 76 |urns len%-byte v| 00011080 61 6c 75 65 20 66 72 6f 6d 20 66 69 6c 65 0d 3a |alue from file.:| 00011090 7a 0c ea 20 5f 25 2c 5f 72 25 0d 3a 84 17 5f 72 |z.. _%,_r%.:.._r| 000110a0 25 3d 30 3a e3 20 5f 25 3d 31 20 b8 20 6c 65 6e |%=0:. _%=1 . len| 000110b0 25 0d 3a 8e 0f c8 8e 20 69 54 79 70 65 25 20 ca |%.:.... iType% .| 000110c0 0d 3a 98 23 20 c9 20 31 20 3a 20 5f 72 25 3d 28 |.:.# . 1 : _r%=(| 000110d0 5f 72 25 3c 3c 38 29 2b 9a 23 46 69 6c 65 28 66 |_r%<<8)+.#File(f| 000110e0 6e 25 29 0d 3a a2 28 20 7f 20 20 3a 20 5f 72 25 |n%).:.( . : _r%| 000110f0 2b 3d 28 28 9a 23 46 69 6c 65 28 66 6e 25 29 29 |+=((.#File(fn%))| 00011100 3c 3c 28 5f 25 2d 31 29 2a 38 29 0d 3a ac 07 cb |<<(_%-1)*8).:...| 00011110 3a ed 0d 3a b6 08 3d 5f 72 25 0d 3a c0 05 20 0d |:..:..=_r%.:.. .| 00011120 3a ca 18 dd f2 6f 28 66 68 25 2c 76 61 6c 25 2c |:....o(fh%,val%,| 00011130 62 79 74 65 73 25 29 0d 3a d4 2b f4 20 4f 75 74 |bytes%).:.+. Out| 00011140 70 75 74 73 20 76 61 6c 75 65 20 6f 66 20 62 79 |puts value of by| 00011150 74 65 73 25 20 62 79 74 65 73 20 74 6f 20 66 69 |tes% bytes to fi| 00011160 6c 65 0d 3a de 08 ea 20 69 25 0d 3a e8 2d e3 20 |le.:... i%.:.-. | 00011170 69 25 3d 31 20 b8 20 62 79 74 65 73 25 3a d5 23 |i%=1 . bytes%:.#| 00011180 66 68 25 2c 76 61 6c 25 3a 76 61 6c 25 3d 76 61 |fh%,val%:val%=va| 00011190 6c 25 3e 3e 38 3a ed 0d 3a f2 05 e1 0d 3a fc 05 |l%>>8:..:....:..| 000111a0 20 0d 3b 06 15 dd f2 6f 73 74 72 69 6e 67 28 66 | .;....ostring(f| 000111b0 68 25 2c 76 24 29 0d 3b 10 1c f4 20 4f 75 74 70 |h%,v$).;... Outp| 000111c0 75 74 73 20 73 74 72 69 6e 67 20 74 6f 20 66 69 |uts string to fi| 000111d0 6c 65 0d 3b 1a 08 ea 20 69 25 0d 3b 24 23 e3 20 |le.;... i%.;$#. | 000111e0 69 25 3d 31 20 b8 20 a9 76 24 3a d5 23 66 68 25 |i%=1 . .v$:.#fh%| 000111f0 2c 97 c1 76 24 2c 69 25 2c 31 29 3a ed 0d 3b 2e |,..v$,i%,1):..;.| 00011200 05 e1 0d 3b 38 04 0d 3b 42 11 dd f2 69 6e 69 74 |...;8..;B...init| 00011210 5f 6d 6f 64 75 6c 65 0d 3b 4c 18 f4 20 49 6e 69 |_module.;L.. Ini| 00011220 74 69 61 6c 69 73 65 73 20 6d 6f 64 75 6c 65 0d |tialises module.| 00011230 3b 56 2e c8 99 20 22 54 72 61 6e 73 6c 61 74 6f |;V... "Translato| 00011240 72 5f 4d 61 6b 65 4d 61 70 73 22 3a f4 20 49 6e |r_MakeMaps":. In| 00011250 69 74 69 61 6c 69 73 65 20 6d 61 70 73 0d 3b 60 |itialise maps.;`| 00011260 05 e1 0d 3b 6a 05 20 0d 3b 74 1a dd f2 76 61 72 |...;j. .;t...var| 00011270 28 76 61 72 6e 61 6d 65 24 2c 76 61 6c 75 65 25 |(varname$,value%| 00011280 29 0d 3b 7e 1c f4 20 57 72 69 74 65 73 20 6d 6f |).;~.. Writes mo| 00011290 64 75 6c 65 20 76 61 72 69 61 62 6c 65 0d 3b 88 |dule variable.;.| 000112a0 3b 24 64 75 6d 25 3d 76 61 72 6e 61 6d 65 24 3a |;$dum%=varname$:| 000112b0 c8 99 20 22 54 72 61 6e 73 6c 61 74 6f 72 5f 53 |.. "Translator_S| 000112c0 65 74 56 61 72 69 61 62 6c 65 22 2c 21 64 75 6d |etVariable",!dum| 000112d0 25 2c 76 61 6c 75 65 25 0d 3b 92 05 e1 0d 3b 9c |%,value%.;....;.| 000112e0 05 20 0d 3b a6 13 dd a4 76 61 72 28 76 61 72 6e |. .;....var(varn| 000112f0 61 6d 65 24 29 0d 3b b0 1b f4 20 52 65 61 64 73 |ame$).;... Reads| 00011300 20 6d 6f 64 75 6c 65 20 76 61 72 69 61 62 6c 65 | module variable| 00011310 0d 3b ba 0c ea 20 76 61 6c 75 65 25 0d 3b c4 3e |.;... value%.;.>| 00011320 24 64 75 6d 25 3d 76 61 72 6e 61 6d 65 24 3a c8 |$dum%=varname$:.| 00011330 99 20 22 54 72 61 6e 73 6c 61 74 6f 72 5f 52 65 |. "Translator_Re| 00011340 61 64 56 61 72 69 61 62 6c 65 22 2c 21 64 75 6d |adVariable",!dum| 00011350 25 20 b8 20 76 61 6c 75 65 25 0d 3b ce 0b 3d 76 |% . value%.;..=v| 00011360 61 6c 75 65 25 0d 3b d8 05 20 0d 3b e2 12 dd a4 |alue%.;.. .;....| 00011370 4f 53 76 61 72 28 6e 61 6d 65 24 29 0d 3b ec 2e |OSvar(name$).;..| 00011380 f4 20 41 74 74 65 6d 70 74 73 20 74 6f 20 72 65 |. Attempts to re| 00011390 74 75 72 6e 20 4f 53 2d 76 61 72 27 73 20 73 74 |turn OS-var's st| 000113a0 72 69 6e 67 20 76 61 6c 75 65 0d 3b f6 0d ea 20 |ring value.;... | 000113b0 5f 72 24 2c 5f 6c 25 0d 3c 00 43 5f 72 24 3d c4 |_r$,_l%.<.C_r$=.| 000113c0 31 30 30 2c 22 20 22 29 3a c8 99 20 22 58 4f 53 |100," "):.. "XOS| 000113d0 5f 52 65 61 64 56 61 72 56 61 6c 22 2c 6e 61 6d |_ReadVarVal",nam| 000113e0 65 24 2c 5f 72 24 2c a9 5f 72 24 2c 30 2c 33 20 |e$,_r$,._r$,0,3 | 000113f0 b8 20 2c 5f 72 |. ,_r| 000113f5