Home » Archimedes archive » Acorn User » AU 1997-11 A.adf » Regulars1 » MikeC/Software/!Sim84/Simulate

MikeC/Software/!Sim84/Simulate

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 » Acorn User » AU 1997-11 A.adf » Regulars1
Filename: MikeC/Software/!Sim84/Simulate
Read OK:
File size: 7382 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM Pic 18C84 Simulator
   20REM Version 1.0 By Mike Cook
   30REM All rights reserved
   40DIM q% &300,qc% 80, Wn% &2500,temp% 256,buffers% 512,menu% 256,SW% 2096,cb% 18,SWM% 2096,WnM% &2500
   50DIM TextWarn% 100, ww% 256
   60
   70ON ERROR PROCerrorbox
   80DIM taskid% 4,intmess% 20:$taskid%="TASK"
   90intmess%!0=1:intmess%!4=2:intmess%!8=3:intmess%!12=&502:intmess%!16=0
  100SYS "Wimp_Initialise",300,!taskid%,"PIC18C84-Simulator",intmess% TO version%,taskhand%
  110
  120MxL%=300
  130DIM Mne$(38),Op%(38),It%(38),Reg%(&FF)
  140Ni%=44:NiM%=72
  150DIM SPoint%(Ni%),IX%(Ni%),IY%(Ni%),IX1%(Ni%),IY1%(Ni%),Stack%(7)
  160DIM SPointM%(NiM%),IXM%(NiM%),IYM%(NiM%),IX1M%(NiM%),IY1M%(NiM%)
  170DIM Break%(3)
  180DIM ProgMemS% &800,DataMemS% 128, ConfigMem% 16
  190
  200SYS "Wimp_OpenTemplate",,"<EM84$Dir>.Templates"
  210ON ERROR SYS "Wimp_CloseTemplate":PROCerrorbox
  220SYS "Wimp_LoadTemplate",,q%,temp%,temp%+256,-1,"Info",0
  230SYS "Wimp_CreateWindow",,q% TO info%
  240
  250SYS "Wimp_LoadTemplate",,Wn%+4,SW%,SW%+2096,-1,"Control",0
  260Wn%!28=-1
  270FOR A%=0 TO Ni%
  280SPoint%(A%)=!(Wn%+4+88+20+32*A%)
  290IX%(A%)=!(Wn%+4+88+32*A%):IY%(A%)=!(Wn%+4+88+4+32*A%)
  300IX1%(A%)=!(Wn%+4+88+8+32*A%):IY1%(A%)=!(Wn%+4+88+12+32*A%)
  310NEXT
  320
  330SYS "Wimp_CreateWindow",,Wn%+4 TO conW%
  340Wn%!0=conW%:Wn%!28=-1
  350
  360SYS "Wimp_LoadTemplate",,WnM%+4,SWM%,SWM%+2096,-1,"Monitor",0
  370WnM%!28=-1
  380FOR A%=0 TO NiM%
  390SPointM%(A%)=!(WnM%+4+88+20+32*A%)
  400IXM%(A%)=!(WnM%+4+88+32*A%):IYM%(A%)=!(WnM%+4+88+4+32*A%)
  410IX1M%(A%)=!(WnM%+4+88+8+32*A%):IY1M%(A%)=!(WnM%+4+88+12+32*A%)
  420NEXT
  430
  440SYS "Wimp_CreateWindow",,WnM%+4 TO monW%
  450WnM%!0=monW%:WnM%!28=-1
  460
  470SYS "Wimp_LoadTemplate",,q%,ww%,ww%+256,-1,"Warning",0
  480q%!108=TextWarn%:q%!112=-1:q%!116=300
  490XQ%=q%!8-q%!0:YQ%=q%!12-q%!4
  500SYS "Wimp_CreateWindow",,q% TO warningW%
  510SYS "Wimp_CloseTemplate"
  520
  530smpicon%=FNicon
  540wopen%=FALSE:warnOn%=FALSE:Mopen%=FALSE
  550InWin%=FALSE
  560PROC_PutPramsS(0,"Drag File Here")
  570Step%=TRUE:Running%=FALSE
  580Watchdog%=FALSE:Merge%=FALSE:OscOpt%=0
  590Reseting%=FALSE:HiPC%=0:Wreg%=0:OPcode%=0
  600Status%=0:goto%=FALSE:Sleep%=FALSE
  610Reg%()=0:WatchdogTime%=0:WatchLimit%=1800
  611Reg%(5)=&1F:Reg%(6)=&FF
  620Smon%=FALSE:Scont%=TRUE:RB0%=0:PBchange%=0
  630EtimeOut%=0:Etime%=100:Prescale%=0
  640ProgMem%=TRUE:Skip%=FALSE
  650PROCwipeProg:PROCwipeData
  660PROCsetupmenu
  670PROC_INIT
  680
  690REPEAT
  700 SYS "Wimp_Poll",0,q% TO A%
  710  CASE A% OF
  720   WHEN 0:PROC_Null
  730   WHEN 1:VDU7
  740   WHEN 2:SYS"OS_ReadModeVariable",-1,3 TO ,,Ncolours%: SYS "Wimp_OpenWindow",,q%
  750   WHEN 3:PROC_close
  760   WHEN 4:InWin%=FALSE:LX%=-1:LY%=-1
  770   WHEN 5:InWin%=TRUE
  780   WHEN 6:PROC_do_click(q%)
  790   WHEN 7:PROC_PutDown(q%)
  800   WHEN 8:PROC_KeyPress
  810   WHEN 9:PROC_SORT_Menu
  820   WHEN 17,18:PROCreceive(q%)
  830   ENDCASE
  840 UNTIL FALSE
  850
  860END
  870
  880DEF PROC_Null
  890LOCAL X%,Y%,B%
  900IF wopen% THEN
  910MOUSE X%,Y%,B%
  920IF Reseting%=TRUE AND B%=0 THEN $SPoint%(8)="radiooff":Reseting%=FALSE:SYS"Wimp_ForceRedraw",conW%,IX%(8),IY%(8),IX1%(8),IY1%(8):PROCreset
  930IF Running% THEN PROCcycle
  940IF Running% AND Step% THEN Running%=FALSE:$SPoint%(10)="Go":SYS"Wimp_ForceRedraw",conW%,IX%(10),IY%(10),IX1%(10),IY1%(10)
  950ENDIF
  960ENDPROC
  970
  980DEF PROC_SORT_Menu
  990CASE !q% OF
 1000 WHEN 1: Scont%=NOT(Scont%):IF Scont% THEN menu%?52=menu%?52 OR 1 ELSE menu%?52=menu%?52 AND &FE
 1010         IF Scont%=FALSE AND wopen%=TRUE THEN q%!0=conW%:PROC_close
 1020         IF Scont%=TRUE AND wopen%=FALSE THEN PROC_Open
 1030 WHEN 2: Smon%=NOT(Smon%):IF Smon% THEN menu%?76=menu%?76 OR 1 ELSE menu%?76=menu%?76 AND &FE:Merge%=TRUE
 1040         IF Smon%=FALSE AND Mopen%=TRUE THEN q%!0=monW%:PROC_close
 1050         IF Smon%=TRUE AND Mopen%=FALSE THEN PROC_Open
 1060 WHEN 3: PROCdie
 1070 
 1080ENDCASE
 1090ENDPROC
 1100DEF PROC_close
 1110IF q%!0=conW% THEN SYS"Wimp_GetWindowInfo",,Wn%:wopen%=FALSE
 1120IF q%!0=monW% THEN SYS"Wimp_GetWindowInfo",,WnM%:Mopen%=FALSE
 1130IF q%!0=warningW% THEN warnOn%=FALSE
 1140SYS "Wimp_CloseWindow",,q%
 1150ENDPROC
 1160
 1170DEF PROC_do_click(q%)
 1180i%=q%!16
 1190CASE q%!12 OF
 1200WHEN warningW%: q%!0=warningW% :PROC_close
 1210WHEN -2: REM Look first at Icon Bar Click
 1220        IF q%!16=smpicon% THEN
 1230        IF q%!8=2 THEN SYS"Wimp_CreateMenu",,menu%,q%!0-74,310:IconMenu%=TRUE
 1240        IF q%!8=4 THEN PROC_Open
 1250        ENDIF
 1260WHEN monW%: IF q%!8=4 THEN PROC_Click
 1270WHEN conW%:
 1280     IF q%!8=4 THEN PROC_MonClick
 1290     IF q%!8=2 THEN SYS"Wimp_CreateMenu",,menu%,q%!0-96,q%!4:IconMenu%=FALSE
 1300     
 1310WHEN saveW%: DragOn%=TRUE: SaveProg%=TRUE  : PROC_DoSave
 1320WHEN saveD%: DragOn%=TRUE: SaveProg%=FALSE : PROC_DoSave
 1330             
 1340ENDCASE
 1350ENDPROC
 1360
 1370DEF PROC_Click
 1380LOCAL A%,C%,B%
 1390 IF i%<23 AND i%>-1 THEN
 1400 A%=i%-9
 1410 C%=&B
 1420 IF i%<8 THEN C%=&81:A%=i%
 1430 IF i%>17 THEN C%=&88:A%=i%-18
 1440 B%=2^A%
 1450 Reg%(C%)=Reg%(C%) EOR B%
 1460 IF (Reg%(C%) AND B%)=0 THEN $SPointM%(i%)="emzero" ELSE $SPointM%(i%)="emone"
 1470 SYS"Wimp_ForceRedraw",monW%,IXM%(i%),IYM%(i%),IX1M%(i%),IY1M%(i%)
 1480ENDIF
 1490ENDPROC
 1500
 1510DEF PROCupRad
 1520SYS"Wimp_ForceRedraw",conW%,IX%(6),IY%(6),IX1%(6),IY1%(6)
 1530SYS"Wimp_ForceRedraw",conW%,IX%(7),IY%(7),IX1%(7),IY1%(7)
 1540SYS"Wimp_ForceRedraw",conW%,IX%(44),IY%(44),IX1%(44),IY1%(44)
 1550ENDPROC
 1560
 1570DEF PROC_MonClick
 1580LOCAL A%,C%,B%
 1590REM Do the action for a window click
 1600CASE i% OF
 1610   
 1620   WHEN 5: Watchdog%=NOT(Watchdog%)
 1630           IF Watchdog%=TRUE THEN $SPoint%(5)="yes" ELSE $SPoint%(5)="no"
 1640           SYS"Wimp_ForceRedraw",conW%,IX%(5),IY%(5),IX1%(5),IY1%(5)
 1650           
 1660   WHEN 6:
 1670           IF Step%=FALSE THEN Step%=TRUE:Skip%=FALSE
 1680           IF Step% THEN $SPoint%(6)="radioon":$SPoint%(7)="radiooff":$SPoint%(44)="radiooff"
 1690           PROCupRad
 1700           
 1710   WHEN 7:
 1720           IF Step%=TRUE OR Skip%=TRUE THEN Step%=FALSE:Skip%=FALSE
 1730           IF Step%=FALSE THEN $SPoint%(7)="radioon":$SPoint%(6)="radiooff":$SPoint%(44)="radiooff"
 1740           PROCupRad
 1750           
 1760   WHEN 44: IF Skip%=FALSE THEN Skip%=TRUE:Step%=TRUE
 1770            IF Skip% THEN $SPoint%(44)="radioon":$SPoint%(6)="radiooff":$SPoint%(7)="radiooff"
 1780            PROCupRad
 1790            
 1800   WHEN 8: $SPoint%(8)="radioon"
 1810           Reseting%=TRUE
 1820           SYS"Wimp_ForceRedraw",conW%,IX%(8),IY%(8),IX1%(8),IY1%(8)
 1830
 1840   WHEN 10: Running%=NOT(Running%)
 1850           IF Running% THEN $SPoint%(10)="Stop" ELSE $SPoint%(10)="Go"
 1860           SYS"Wimp_ForceRedraw",conW%,IX%(10),IY%(10),IX1%(10),IY1%(10)
 1870           
 1880 ENDCASE
 1890 
 1900 IF i%>23 AND i%<32 THEN
 1910 A%=i%-24
 1920 B%=2^A%
 1930 Reg%(3)=Reg%(3) EOR B%
 1940 IF (Reg%(3) AND B%)=0 THEN $SPoint%(i%)="emzero" ELSE $SPoint%(i%)="emone"
 1950 SYS"Wimp_ForceRedraw",conW%,IX%(i%),IY%(i%),IX1%(i%),IY1%(i%)
 1960 ENDIF
 1970 
 1980 IF i%>10 AND i%<19 THEN
 1990 A%=i%-11
 2000 B%=2^A%
 2010 Reg%(6)=Reg%(6) EOR B%
 2020 IF (Reg%(&86) AND B%)<>0 THEN
 2030 IF (Reg%(6) AND B%)=0 THEN $SPoint%(i%)="emswoff" ELSE $SPoint%(i%)="emswon"
 2040 ELSE
 2050 IF (Reg%(6) AND B%)=0 THEN $SPoint%(i%)="emledoff" ELSE $SPoint%(i%)="emledon"
 2060 
 2070 ENDIF
 2080 SYS"Wimp_ForceRedraw",conW%,IX%(i%),IY%(i%),IX1%(i%),IY1%(i%)
 2090 ENDIF
 2100 
 2110 IF i%>18 AND i%<24 THEN
 2120 A%=i%-19
 2130 B%=2^A%
 2140 Reg%(5)=Reg%(5) EOR B%
 2150 IF (Reg%(&85) AND B%)<>0 THEN
 2160 IF (Reg%(5) AND B%)=0 THEN $SPoint%(i%)="emswoff" ELSE $SPoint%(i%)="emswon"
 2170 ELSE
 2180 IF (Reg%(5) AND B%)=0 THEN $SPoint%(i%)="emledoff" ELSE $SPoint%(i%)="emledon"
 2190 ENDIF
 2200 SYS"Wimp_ForceRedraw",conW%,IX%(i%),IY%(i%),IX1%(i%),IY1%(i%)
 2210 ENDIF
 2220 
 2230ENDPROC
 2240
 2250DEF PROC_Open
 2260SYS"OS_ReadModeVariable",-1,3 TO ,,Ncolours%
 2270REM OPEN UP WINDOW HERE
 2280IF Smon% THEN
 2290IF Mopen% THEN
 2300q%!0=monW%
 2310SYS"Wimp_GetWindowState",,q%
 2320  IF q%!28<>-1 THEN q%!28=-1: SYS "Wimp_OpenWindow",,q%
 2330ELSE
 2340SYS "Wimp_OpenWindow",,WnM%
 2350Mopen%=TRUE
 2360ENDIF
 2370ENDIF
 2380
 2390IF Scont% THEN
 2400IF wopen% THEN
 2410q%!0=conW%
 2420SYS"Wimp_GetWindowState",,q%
 2430  IF q%!28<>-1 THEN q%!28=-1: SYS "Wimp_OpenWindow",,q%
 2440ELSE
 2450SYS "Wimp_OpenWindow",,Wn%
 2460wopen%=TRUE
 2470ENDIF
 2480ENDIF
 2490
 2500ENDPROC
 2510
 2520DEFPROCsetupmenu
 2530LOCAL m%
 2540
 2550$menu%="Simulate"
 2560menu%?12=7
 2570menu%?13=2
 2580menu%?14=7
 2590menu%?15=0
 2600menu%!16=128
 2610menu%!20=40
 2620menu%!24=0
 2630m%=menu%+28
 2640m%!0=2
 2650m%!4=info%
 2660m%!8=(7<<24)OR %10001
 2670$(m%+12)="Info"
 2680
 2690m%+=24
 2700m%!0=1
 2710m%!4=0
 2720m%!8=(7<<24)OR %10001
 2730$(m%+12)="Control"
 2740
 2750m%+=24
 2760m%!0=2
 2770m%!4=0
 2780m%!8=(7<<24)OR %10001
 2790$(m%+12)="Monitor"
 2800
 2810m%+=24
 2820m%!0=&80
 2830m%!4=0
 2840m%!8=(7<<24)OR %10001
 2850$(m%+12)="Quit"
 2860
 2870ENDPROC
 2880
 2890DEF PROCreceive(q%)
 2900LOCAL A%
 2910A%=q%!16
 2920CASE A% OF
 2930WHEN 0:PROCdie
 2940
 2950WHEN 3:n$=FNsget(q%+44)
 2960       sendth%=q%!4:icontype%=q%!40
 2970       myref%=q%!8
 2980       IF icontype%=&84 AND ( (q%!20=-2 AND q%!24=smpicon%) OR q%!20=conW%) THEN
 2990        PROC_Fname(n$)
 3000        PROC_Dack
 3010        PROC_Load(n$)
 3020        IF wopen%=FALSE THEN PROC_Open
 3030        ELSE
 3040        IF icontype%<>&84 THEN PROC_setupW("Need a 16C84 object file")
 3050       ENDIF
 3060WHEN &502:   CASE TRUE OF
 3070             WHEN q%!32=-2 AND q%!36=smpicon%:mes$="This is the PIC Simulator icon.|MRun PIC chip programmes"
 3080             OTHERWISE:mes$=""
 3090             ENDCASE
 3100    IF mes$<>"" THEN
 3110    q%!12=q%!8
 3120    $(q%+20)=mes$+CHR$0
 3130    q%!0=(20+LENmes$+4)AND NOT 3
 3140    q%!16=&503
 3150    SYS "Wimp_SendMessage",18,q%,q%!4
 3160ENDCASE
 3170ENDPROC
 3180
 3190DEF PROC_Dack
 3200sendth%=q%!4
 3210myref%=q%!8
 3220SYS "Wimp_GetPointerInfo",,q%+8
 3230q%!28=q%!8
 3240q%!32=q%!12
 3250q%!0=(44+LENn$+4)AND NOT 3
 3260q%!12=myref%
 3270q%!16=4
 3280q%!36=-1
 3290q%!40=&FF9
 3300$(q%+44)=n$+CHR$0
 3310SYS "Wimp_SendMessage",17,q%,sendth%
 3320ENDIF
 3330ENDPROC
 3340
 3350DEFFNsget(x%)
 3360LOCAL x$
 3370WHILE ?x%>&1F x$+=CHR$(?x%):x%+=1:ENDWHILE
 3380=x$
 3390
 3400DEFFNicon
 3410q%!0=-1
 3420q%!4=0
 3430q%!8=10 : REM Y DIRECTION
 3440q%!12=70 : REM X DIRECTION
 3450q%!16=96
 3460q%!20=&2002
 3470$(q%+24)="!sim84"
 3480SYS "Wimp_CreateIcon",,q% TO icon%
 3490=icon%
 3500
 3510DEF PROCdragicon(mousex%,mousey%,handle%,icon%)
 3520LOCAL bx%,by%,ix0%,iy0%,ix1%,iy1%
 3530PROCgetw(handle%)
 3540PROCgeti(handle%,icon%)
 3550!q%=handle%:q%!4=5
 3560q%!8=bx%+ix0%:q%!12=by%+iy0%:q%!16=bx%+ix1%:q%!20=by%+iy1%
 3570q%!24=q%!8-mousex%:q%!28=q%!12-mousey%
 3580SYS "Wimp_DragBox",,q%
 3590SFLAG%=TRUE
 3600ENDPROC
 3610
 3620DEF PROCinfo(p%)
 3630LOCAL x0%,y0%
 3640x0%=!p%:y0%=p%!4:x1%=p%!8:y1%=p%!12
 3650scx%=p%!16:scy%=p%!20:bhandle%=p%!24:flags%=p%!28
 3660bx%=x0%-scx%:by%=y1%-scy%
 3670ENDPROC
 3680
 3690DEF PROCgetw(handle%)
 3700!q%=handle%:SYS "Wimp_GetWindowState",,q%:PROCinfo(q%+4)
 3710ENDPROC
 3720DEF PROCgeti(h%,i%)
 3730!q%=h%:q%!4=i%:SYS "Wimp_GetIconState",,q%
 3740ix0%=q%!8:iy0%=q%!12:ix1%=q%!16:iy1%=q%!20
 3750iflags%=q%!24:idata%=q%+28
 3760ENDPROC
 3770
 3780DEFFNhpg(n%)
 3790LOCAL A$,B%,V%,W%,T%
 3800A$=FNsget(SPoint%(n%))
 3810IF ASC(A$)=&20 THEN A$=RIGHT$(A$)
 3820IF RIGHT$(A$,1)=" " THEN A$=LEFT$(A$)
 3830V%=0:W%=1
 3840FOR B%=LEN(A$) TO 1 STEP -1
 3850T%=ASC(MID$(A$,B%,1))
 3860IF T%>&39 THEN T%=(T%-&40)+9 ELSE T%=T% AND &F
 3870V%=V%+T%*W%
 3880W%=W%<<4
 3890NEXT
 3900=V%
 3910
 3920DEFFNhpgM(n%)
 3930LOCAL A$,B%,V%,W%,T%
 3940A$=FNsget(SPointM%(n%))
 3950IF ASC(A$)=&20 THEN A$=RIGHT$(A$)
 3960IF RIGHT$(A$,1)=" " THEN A$=LEFT$(A$)
 3970V%=0:W%=1
 3980FOR B%=LEN(A$) TO 1 STEP -1
 3990T%=ASC(MID$(A$,B%,1))
 4000IF T%>&39 THEN T%=(T%-&40)+9 ELSE T%=T% AND &F
 4010V%=V%+T%*W%
 4020W%=W%<<4
 4030NEXT
 4040=V%
 4050
 4060DEF PROC_setupW(t$)
 4070!q%=warningW%:q%!4=200:q%!8=200:q%!12=200+XQ%:q%!16=200+YQ%:q%!20=0:q%!24=0:q%!28=-1
 4080$TextWarn%=t$
 4090TextWarn%?LEN(t$)=0
 4100VDU 7
 4110warnOn%=TRUE
 4120SYS "Wimp_OpenWindow",,q%
 4130ENDPROC
 4140
 4150DEF PROCerrorbox
 4160REM SYS "Wimp_DragBox",,-1
 4170!buffers%=ERR:$(buffers%+4)=REPORT$+" at line "+STR$ERL+CHR$0
 4180SYS "Wimp_ReportError",buffers%,1,"PIC"
 4190PROCdie
 4200ENDPROC
 4210
 4220DEFPROCdie
 4230SYS "Wimp_CloseDown",taskhand%,!taskid%
 4240END
 4250ENDPROC
 4260
 4270DEF PROC_KeyPress
 4280LOCAL A%,K%,i%
 4290i%=q%!4
 4300K%=q%!24
 4310IF K%=13 THEN
 4320CASE q%!0 OF
 4330WHEN  conW%: IF i%>31 AND i%<40 THEN Stack%(i%-32)=FNhpg(i%)
 4340             IF i%=4 THEN Wreg%=FNhpg(4)
 4350             IF i%>39 AND i%<44 THEN
 4360             Break%(i%-40)=FNhpg(i%)
 4370             IF Break%(i%-40)>&3FF THEN PROC_PutPramsS(i%," ")
 4380             ENDIF
 4390             
 4400             IF i%=1 THEN A%=FNhpg(1):Reg%(2)=A% AND &FF:HiPC%=A% AND &FF00:PROCfetchN
 4410             IF i%=0 THEN PROC_GetinName: PROC_Load(fn$)
 4420WHEN monW%:  A%=FNhpgM(i%)
 4430             IF i%>25 AND i%<>27 THEN
 4440             IF A%>255 THEN A%=A% AND &FF:PROC_PPHm(i%,A%)
 4450             IF i%=30 OR i%=31 THEN
 4460               IF i%=30 THEN PROC_upIO(Reg%(&85),A%,19,5,5)
 4470               IF i%=31 THEN PROC_upIO(Reg%(&86),A%,11,8,6)
 4480               Reg%(i%+103)=A%
 4490               ELSE
 4500               Reg%(i%-25)=A%
 4510               ENDIF
 4520             ENDIF
 4530             IF i%=23 THEN Prescale%=A%
 4540             IF i%=24 THEN WatchLimit%=A%
 4550             IF i%=25 THEN WatchdogTime%=A%
 4560             IF i%=27 THEN EtimeOut%=A%:Etime%=A%
 4570             IF i%=34 THEN Reg%(8)=DataMemS%?(((Reg%(9) AND &3F)<<1)+1):PROC_PPHm(33,Reg%(8))
 4580ENDCASE
 4590ELSE
 4600SYS"Wimp_ProcessKey",K%
 4610ENDIF
 4620ENDPROC
 4630
 4640DEF FN_spath(n$)
 4650WHILE INSTR(n$,".")
 4660n$=RIGHT$(n$,LEN(n$)-1)
 4670ENDWHILE
 4680IF LEN(n$)>10 THEN n$=RIGHT$(n$,10)
 4690=n$
 4700
 4710DEF PROC_GetName
 4720LOCAL T%,A%,F$
 4730F$="":fn$=""
 4740q%!0=saveW%:q%!4=1
 4750SYS "Wimp_GetIconState",,q%
 4760T%=q%!28
 4770T%-=1
 4780REPEAT
 4790T%+=1
 4800F$=F$+CHR$(?T%)
 4810UNTIL ?T%=0
 4820fn$=MID$(F$,1,LEN(F$)-1)
 4830ENDPROC
 4840
 4850DEF PROC_GetinName
 4860LOCAL T%,A%,F$
 4870F$="":fn$=""
 4880q%!0=conW%:q%!4=0
 4890SYS "Wimp_GetIconState",,q%
 4900T%=q%!28
 4910T%-=1
 4920REPEAT
 4930T%+=1
 4940F$=F$+CHR$(?T%)
 4950UNTIL ?T%=0
 4960fn$=MID$(F$,1,LEN(F$)-1)
 4970ENDPROC
 4980
 4990DEF PROC_GetPrams
 5000LOCAL A$
 5010q%!0=Wn%!0
 5020InFile$=FNsget(SPoint%(0))
 5030ENDPROC
 5040
 5050REM Verify file names
 5060DEF FNvfn
 5070LOCAL V%
 5080V%=1
 5090IF INSTR(InFile$,"$")=0 THEN V%=0
 5100=V%
 5110
 5120DEF FNopf
 5130LOCAL V%
 5140V%=1
 5150F%=OPENIN(InFile$)
 5160IF F%=0 THEN
 5170V%=0
 5180ELSE
 5190REM Load in the object file
 5200CLOSE#F%
 5210ENDIF
 5220=V%
 5230
 5240DEF PROC_PutPrams(n%,V%)
 5250PROC_sput(SPoint%(n%),STR$(V%))
 5260SYS"Wimp_ForceRedraw",conW%,IX%(n%),IY%(n%),IX1%(n%),IY1%(n%)
 5270ENDPROC
 5280
 5290DEF PROC_PutPramHex(n%,V%)
 5300LOCAL H$
 5310H$=STR$~(V%)
 5320WHILE LEN(H$)<4
 5330H$="0"+H$
 5340ENDWHILE
 5350PROC_sput(SPoint%(n%),H$)
 5360SYS"Wimp_ForceRedraw",conW%,IX%(n%),IY%(n%),IX1%(n%),IY1%(n%)
 5370ENDPROC
 5380
 5390DEF PROC_PPHm(n%,V%)
 5400LOCAL H$
 5410H$=STR$~(V%)
 5420WHILE LEN(H$)<2
 5430H$="0"+H$
 5440ENDWHILE
 5450PROC_sput(SPointM%(n%),H$)
 5460SYS"Wimp_ForceRedraw",monW%,IXM%(n%),IYM%(n%),IX1M%(n%),IY1M%(n%)
 5470ENDPROC
 5480
 5490DEF PROC_PutPramHex2(n%,V%)
 5500LOCAL H$
 5510H$=STR$~(V%)
 5520WHILE LEN(H$)<2
 5530H$="0"+H$
 5540ENDWHILE
 5550PROC_sput(SPoint%(n%),H$)
 5560SYS"Wimp_ForceRedraw",conW%,IX%(n%),IY%(n%),IX1%(n%),IY1%(n%)
 5570ENDPROC
 5580
 5590DEF PROC_PutPramsS(n%,V$)
 5600PROC_sput(SPoint%(n%),V$)
 5610SYS"Wimp_ForceRedraw",conW%,IX%(n%),IY%(n%),IX1%(n%),IY1%(n%)
 5620ENDPROC
 5630
 5640DEF PROC_sput(x%,X$)
 5650LOCAL A%
 5660FOR A%=1 TO LEN(X$)
 5670?x%=ASC(MID$(X$,A%,1))
 5680x%+=1
 5690NEXT
 5700?x%=0
 5710ENDPROC
 5720
 5730DEF PROC_Fname(n$)
 5740InFile$=n$
 5750PROC_PutPramsS(0,n$)
 5760ENDPROC
 5770
 5780DEF PROCwipeProg
 5790LOCAL A%
 5800FOR A%=0 TO &800 STEP 4
 5810ProgMemS%!A%=&FF3FFF3F
 5820NEXT
 5830ENDPROC
 5840
 5850DEF PROCwipeData
 5860LOCAL A%
 5870FOR A%=0 TO 128 STEP 4
 5880DataMemS%!A%=&FF00FF00
 5890NEXT
 5900FOR A%=0 TO 15
 5910ConfigMem%?A%=0
 5920NEXT
 5930ENDPROC
 5940
 5950DEF PROC_Load(F$)
 5960LOCAL A%,B%,C%,F%
 5970F%=OPENIN(F$)
 5980IF F%<>0 THEN
 5990IF NOT(Merge%) THEN PROCwipeData:PROCwipeProg
 6000PROCreadHF
 6010CLOSE#F%
 6020PROCPUPreset
 6030PROCsetConfig
 6040Stack%()=0
 6050PROCudStack
 6060Sleep%=FALSE
 6070ELSE
 6080PROC_setupW("Can't open this file")
 6090ENDIF
 6100ENDPROC
 6110
 6120DEF PROCreadHF
 6130LOCAL P%,Base%,B%,C%,CB%,Limit%,Line%
 6140Line%=0
 6150REPEAT
 6160REPEAT
 6170IF NOT(EOF#F%) THEN B%=BGET#F% ELSE PROC_setupW("Unexpected end of file"):ENDPROC
 6180UNTIL CHR$(B%)=":"
 6190Check%=0:Line%+=1
 6200L%=FNrb>>1
 6210P%=(FNrb<<8 OR FNrb)>>1
 6220Base%=ProgMemS%
 6230IF P%>&3FF AND P%<&2000 THEN P%=P% AND &3FF
 6240IF P%>&1FFF AND P%<&2010 THEN Base%=ConfigMem%:P%=P% AND &F
 6250IF P%>&20FF THEN Base%=DataMemS%:P%=P% AND &3F
 6260B%=FNrb
 6270IF B%=1 THEN ENDPROC
 6280A%=0
 6290FOR B%=1 TO L%
 6300Base%?(A%+1+(P%<<1))=FNrb
 6310Base%?(A%+(P%<<1))=FNrb
 6320A%+=2
 6330NEXT
 6340C%=(NOT(Check%)+1) AND &FF
 6350CB%=FNrb
 6360IF CB%<>C% THEN PROC_setupW("Check sum error line "+STR$(Line%)):ENDPROC
 6370UNTIL FALSE
 6380ENDPROC
 6390
 6400DEF FNrb
 6410LOCAL B%,C%,D%
 6420IF NOT(EOF#F%) THEN B%=BGET#F% ELSE B%=ASC("F")
 6430IF NOT(EOF#F%) THEN C%=BGET#F% ELSE C%=ASC("F")
 6440D%=FNth(B%,C%)
 6450Check%+=D%
 6460=D%
 6470
 6480REM Convert two digit hex text into a number
 6490DEF FNth(M%,K%)
 6500=FNh(M%)<<4 OR FNh(K%)
 6510
 6520DEF FNh(n%)
 6530IF n%>&39 THEN n%=9 + (n% AND &F) ELSE n%=n% AND &F
 6540=n%
 6550
 6560DEF FNincR(n%)
 6570Reg%(n%)+=1
 6580IF Reg%(n%)>255 THEN Reg%(n%)=Reg%(n%)-256
 6590=Reg%(n%)
 6600
 6610DEF PROCudStack
 6620LOCAL A%
 6630FOR A%=32 TO 39
 6640PROC_PutPramHex(A%,Stack%(A%-32))
 6650NEXT
 6660ENDPROC
 6670
 6680REM -----------------------------------------------------------
 6690DEF PROC_INIT
 6700FOR A%=1 TO 37
 6710  READ Mne$(A%),Op%(A%),It%(A%)
 6720NEXT
 6730Reg%(5)=&1F:Reg%(6)=&FF:Reg%(&85)=&1F:Reg%(&86)=&FF
 6740Break%(0)=&400:Break%(1)=&400:Break%(2)=&400:Break%(3)=&400
 6750ENDPROC
 6760
 6770REM Mnemonic, opcode, type
 6780DATA addwf,&700,1, andwf, &500,1,  clrf,&180,4, clrw,&100,0
 6790DATA comf,&900,1, decf,&300,1, decfsz,&B00,1, incf,&A00,1
 6800DATA incfsz,&F00,1, iorwf,&400,1, movf,&800,1, movwf,&080,4
 6810DATA nop,0,0, rlf,&D00,1, rrf,&C00,1, subwf,&200,1
 6820DATA swapf,&E00,1, xorwf,&600,1, bcf,&1000,2, bsf,&1400,2
 6830DATA btfsc,&1800,2, btfss,&1C00,2, addlw,&3E00,3, andlw,&3900,3, call,&2000,3
 6840DATA clrwdt,&64,0, goto,&2800,5, iorlw,&3800,3, movlw,&3000,3
 6850DATA retfie, &9,0, retlw,&3400,3, return,&8,0, sleep,&063,0
 6860DATA sublw,&3C00,3, xorlw,&3A00,3
 6870REM Instructions to phase out
 6880DATA tris,&60,4,  option,&062,0
 6890
 6900
 6910REM -----------------------------------------------------------
 6920DEF PROCPUPreset
 6930LOCAL A%
 6940REM PROC_upIO(Reg%(&85),&1F,19,5,5):PROC_upIO(Reg%(&86),&FF,11,8,6)
 6950
 6960Reg%(&85)=&1F:Reg%(&86)=&FF:Reg%(3)=(Reg%(3) AND 7) OR &18
 6970Reg%(&81)=&FF:Reg%(&88)=0:Reg%(&A)=0:Reg%(&B)=Reg%(&B) AND 1
 6980PROC_upIO(0,&1F,19,5,5):PROC_upIO(0,&FF,11,8,6)
 6990
 7000PROCupStat(Reg%(3) EOR &FF,Reg%(3))
 7010PROCupB(Reg%(&81) EOR &FF,Reg%(&81),0,8)
 7020PROCupB(Reg%(&B) EOR &FF,Reg%(&B),9,8)
 7030PROCupB(Reg%(&88) EOR &FF,Reg%(&88),18,5)
 7040WatchdogTime%=0
 7050PROC_PPHm(25,WatchdogTime%):PROC_PPHm(24,WatchLimit%)
 7060FOR A%=26 TO 72
 7070IF NOT(A%=28 OR A%=32 OR A%=35 OR A%=36) THEN PROC_sput(SPointM%(A%)," ")
 7080SYS"Wimp_ForceRedraw",monW%,IXM%(A%),IYM%(A%),IX1M%(A%),IY1M%(A%)
 7090NEXT
 7100FOR A%=0 TO 3
 7110Break%(A%)=&400
 7120PROC_PutPramsS(A%+40," ")
 7130NEXT
 7140REM PROCreset
 7150Reg%(2)=0:HiPC%=0:PROC_PutPramHex(1,Reg%(2)+HiPC%):PROCfetchN
 7160t%=(Reg%(3) AND &7) OR &18:PROCupStat(Reg%(3),t%):Reg%(3)=t%
 7170Sleep%=FALSE:$SPoint%(9)="emledoff"
 7180SYS"Wimp_ForceRedraw",conW%,IX%(9),IY%(9),IX1%(9),IY1%(9)
 7190ENDPROC
 7200
 7210DEF PROCreset
 7220LOCAL t%
 7230Reg%(2)=0:HiPC%=0:PROC_PutPramHex(1,Reg%(2)+HiPC%):PROCfetchN
 7240t%=Reg%(3):Reg%(3)=t% AND &1F:PROCupStat(t%,Reg%(3))
 7250t%=Reg%(&85):Reg%(&85)=&1F:PROC_upIO(t%,Reg%(&85),19,5,5)
 7260t%=Reg%(&86):Reg%(&86)=&FF:PROC_upIO(t%,Reg%(&86),11,8,6)
 7270t%=Reg%(&81):Reg%(&81)=&FF:PROCupB(t%,Reg%(&81),0,8)
 7280
 7290IF Sleep% THEN
 7300t%=(Reg%(3) AND &7) OR &10:PROCupStat(Reg%(3),t%):Reg%(3)=t%
 7310Sleep%=FALSE:$SPoint%(9)="emledoff"
 7320SYS"Wimp_ForceRedraw",conW%,IX%(9),IY%(9),IX1%(9),IY1%(9)
 7330ENDIF
 7340ENDPROC
 7350
 7360REM Set the watchdog bit
 7370DEF PROCsetConfig
 7380LOCAL A%,B%
 7390A%=(ConfigMem%?15) AND &4
 7400IF A%=0 THEN B%=FALSE ELSE B%=TRUE
 7410IF B%<>Watchdog% THEN
 7420Watchdog%=B%
 7430IF B% THEN $SPoint%(5)="yes" ELSE $SPoint%(5)="no"
 7440SYS"Wimp_ForceRedraw",conW%,IX%(5),IY%(5),IX1%(5),IY1%(5)
 7450ENDIF
 7460ENDPROC
 7470
 7480DEF PROCcycle
 7490LOCAL P%
 7500IF NOT(Sleep%) AND NOT(Skip%) THEN PROCexe
 7510PROCincPC
 7520PROCchkInt
 7530IF NOT(Sleep%) THEN PROCfetchN
 7540IF NOT(Step%) AND NOT(Sleep%) THEN
 7550P%=FNhpg(1)
 7560FOR A%=0 TO 3
 7570IF Break%(A%)=P% THEN
 7580Step%=TRUE:$SPoint%(10)="Go":SYS"Wimp_ForceRedraw",conW%,IX%(10),IY%(10),IX1%(10),IY1%(10)
 7590$SPoint%(6)="radioon":$SPoint%(7)="radiooff"
 7600SYS"Wimp_ForceRedraw",conW%,IX%(6),IY%(6),IX1%(6),IY1%(6)
 7610SYS"Wimp_ForceRedraw",conW%,IX%(7),IY%(7),IX1%(7),IY1%(7)
 7620ENDIF
 7630NEXT
 7640ENDIF
 7650ENDPROC
 7660
 7670DEF PROCfetchN
 7680LOCAL A%
 7690A%=(Reg%(2)+HiPC%) AND &3FF
 7700OPcode%=((ProgMemS%?(A%<<1))<<8) + (ProgMemS%?(1+(A%<<1)))
 7710PROC_PutPramHex(2,OPcode%)
 7720PROCdiss
 7730ENDPROC
 7740
 7750DEF PROCchkInt
 7760LOCAL F%,t%,E%
 7770
 7780F%=Reg%(&B)
 7790
 7800REM Check INT
 7810IF (F% AND &10)<>0 AND ((Reg%(&86) AND 1)<>0) THEN
 7820   IF RB0% <>(Reg%(6) AND 1) THEN
 7830     t%=Reg%(&81) AND &40
 7840     IF (t%=0 AND RB0%=1) OR (t%<>0 AND RB0%=0) THEN t%=Reg%(&B) OR &2:PROCupB(Reg%(&B),t%,9,8):Reg%(&B)=t%
 7850   ENDIF
 7860ENDIF
 7870 
 7880 REM Check Prort RB
 7890t%=(Reg%(6) AND &F0) AND Reg%(&86)
 7900 IF t%<>PBchange% AND (F% AND &8)<>0 THEN
 7910 t%=Reg%(&B) OR &1:PROCupB(Reg%(&B),t%,9,8):Reg%(&B)=t%
 7920 ENDIF
 7930 
 7940 REM Eprom write interrupt
 7950 IF EtimeOut%<>0 THEN
 7960 EtimeOut%-=1
 7970 PROC_PPHm(27,EtimeOut%)
 7980 IF EtimeOut%=0 THEN
 7990  t%=Reg%(&B) OR &8:PROCupB(Reg%(&B),t%,9,8):Reg%(&B)=t%
 8000  t%=Reg%(&88) AND &1D:PROCupB(Reg%(&88),t%,18,5):Reg%(&88)=t%
 8010  ENDIF
 8020 ENDIF
 8030 
 8040REM now respond to any interrupt flags
 8050E%=(Reg%(&B)>>3) AND 7
 8060 IF ((Reg%(&B) AND E%)<>0 OR (Reg%(&88) AND &10)<>0) AND (Reg%(&B) AND &80)<>0 THEN
 8070   IF Sleep% AND ((Reg%(&B) AND 2)<>0) THEN
 8080    REM Wake up from sleep
 8090    Sleep%=FALSE
 8100    t%=(Reg%(3) AND &F7) OR &10
 8110    PROCupStat(Reg%(3),t%)
 8120    Reg%(3)=t%
 8130    $SPoint%(9)="emledoff"
 8140    SYS"Wimp_ForceRedraw",conW%,IX%(9),IY%(9),IX1%(9),IY1%(9)
 8150   ELSE
 8160   PROCpush:Stack%(0)=Reg%(2)+HiPC%:PROCudStack
 8170   Reg%(2)=4:HiPC%=0
 8180   PROC_PutPramHex(1,4)
 8190 ENDIF
 8200  t%=Reg%(&B) AND &7F
 8210  PROCupB(Reg%(&B),t%,9,8)
 8220  Reg%(&B)=t%
 8230 ENDIF
 8240RB0%=Reg%(6) AND 1
 8250PBchange%=(Reg%(6) AND &F0) AND Reg%(&86)
 8260ENDPROC
 8270
 8280DEF PROCincTimer
 8290LOCAL pst%,psi%
 8300IF Sleep% THEN ENDPROC
 8310pst%=FALSE
 8320IF (Reg%(&81) AND 8)=0 THEN
 8330psi%=Reg%(&81) AND 7
 8340psi%=2^(psi% EOR 7)
 8350Prescale%+=psi%
 8360IF Prescale%>&FF THEN Prescale%=0:pst%=TRUE
 8370PROC_PPHm(23,Prescale%)
 8380ELSE
 8390pst%=TRUE
 8400ENDIF
 8410
 8420IF pst% THEN
 8430Reg%(1)+=1
 8440IF Reg%(1)>&FF THEN
 8450Reg%(1)=0
 8460t%=Reg%(&B) OR &4:PROCupB(Reg%(&B),t%,9,8):Reg%(&B)=t%
 8470ENDIF
 8480PROC_PPHm(26,Reg%(1))
 8490ENDIF
 8500ENDPROC
 8510
 8520DEF PROCincPC
 8530LOCAL A%,t%
 8540IF (Reg%(&81) AND &20)=0 THEN
 8550PROCincTimer
 8560ELSE
 8570 IF (Reg%(&B) AND &A0)=&A0 THEN
 8580  IF (Reg%(5) AND &10)<>RA4% THEN
 8590   IF RA4%=0 AND (Reg%(&81) AND &10)=0 THEN PROCincTimer
 8600   IF RA4%<>0 AND (Reg%(&81) AND &10)<>0 THEN PROCincTimer
 8610  ENDIF
 8620 ENDIF
 8630ENDIF
 8640
 8650RA4%=Reg%(5) AND &10
 8660
 8670IF goto%=FALSE AND Sleep%=FALSE THEN
 8680A%=FNincR(2)
 8690IF A%=0 THEN HiPC%=(HiPC%+256) AND &1F00
 8700PROC_PutPramHex(1,A%+HiPC%)
 8710ELSE
 8720goto%=FALSE
 8730PROC_PutPramHex(1,Reg%(2)+HiPC%)
 8740ENDIF
 8750
 8760IF Watchdog% THEN
 8770WatchdogTime%+=1
 8780PROC_PPHm(25,WatchdogTime%)
 8790
 8800IF WatchdogTime%>WatchLimit% THEN
 8810 WatchdogTime%=0:PROC_PPHm(25,WatchdogTime%)
 8820 IF (Reg%(&81) AND 8)<>0 THEN
 8830  A%=FALSE
 8840  t%=(Reg%(&81) AND 7) EOR 7
 8850  t%=(2^t%)<<1
 8860  Prescale%+=t%
 8870  IF Prescale%>&FF THEN A%=TRUE:Prescale%=0
 8880  PROC_PPHm(23,Prescale%)
 8890  ELSE
 8900  A%=TRUE
 8910 ENDIF
 8920 
 8930 IF A% AND NOT(Sleep%) THEN
 8940  t%=(Reg%(3) AND &7) OR &8:PROCupStat(Reg%(3),t%):Reg%(3)=t%
 8950  HiPC%=0:Reg%(2)=0
 8960  PROC_PutPramHex(1,Reg%(2)+HiPC%)
 8970 ENDIF
 8980 
 8990 IF Sleep% AND A% THEN
 9000  t%=Reg%(3) AND &EF:PROCupStat(Reg%(3),t%):Reg%(3)=t%
 9010  Sleep%=FALSE:$SPoint%(9)="emledoff"
 9020  SYS"Wimp_ForceRedraw",conW%,IX%(9),IY%(9),IX1%(9),IY1%(9)
 9030 ENDIF
 9040ENDIF
 9050ENDIF
 9060
 9070ENDPROC
 9080
 9090DEF PROCdiss
 9100LOCAL op$
 9110Found%=FALSE
 9120IF (OPcode% AND &3000) = 0 THEN PROCfbyte
 9130IF NOT(Found%) AND (OPcode% AND &3000) =&1000 THEN PROCfbit
 9140IF NOT(Found%) THEN PROCfcont
 9150IF NOT(Found%) THEN PROC_setupW("Unimplemented Op-code at "+STR$~(Reg%(2)+HiPC%)):PROC_PutPramsS(3,"Unimplemented")
 9160ENDPROC
 9170
 9180DEF PROCfcont
 9190LOCAL T%
 9200CASE OPcode% OF
 9210WHEN &64: PROCsmake(26,&F00,FALSE)
 9220WHEN &63: PROCsmake(33,&F00,FALSE)
 9230WHEN  &9: PROCsmake(30,&F00,FALSE)
 9240WHEN  &8: PROCsmake(32,&F00,FALSE)
 9250OTHERWISE
 9260IF (OPcode% AND &3800)=&2000 THEN PROCgmake(25,OPcode% AND &3FF,"address")
 9270IF (OPcode% AND &3800)=&2800 THEN PROCgmake(27,OPcode% AND &3FF,"address")
 9280  IF NOT(Found%) THEN
 9290  T%=(OPcode% AND &3F00)>>8
 9300  CASE T% OF
 9310  WHEN &39:PROCgmake(24,OPcode% AND &FF,"value")
 9320  WHEN &38:PROCgmake(28,OPcode% AND &FF,"value")
 9330  WHEN &3A:PROCgmake(35,OPcode% AND &FF,"value")
 9340  ENDCASE
 9350   IF NOT(Found%) THEN
 9360     IF (OPcode% AND &3E00)=&3E00 THEN PROCgmake(23,OPcode% AND &FF,"value")
 9370     IF (OPcode% AND &3C00)=&3000 THEN PROCgmake(29,OPcode% AND &FF,"value")
 9380     IF (OPcode% AND &3C00)=&3400 THEN PROCgmake(31,OPcode% AND &FF,"value")
 9390     IF (OPcode% AND &3E00)=&3C00 THEN PROCgmake(34,OPcode% AND &FF,"value")
 9400   ENDIF
 9410  ENDIF
 9420ENDCASE
 9430ENDPROC
 9440
 9450DEF PROCfbit
 9460LOCAL A%,p$
 9470A%=((OPcode% AND &C00)>>10)+19
 9480p$=Mne$(A%)+" file "+STR$~(OPcode% AND &7F)+"h, bit "+STR$((OPcode% AND &380)>>7)
 9490PROC_PutPramsS(3,p$)
 9500Found%=TRUE:OPnumber%=A%
 9510ENDPROC
 9520
 9530DEF PROCfbyte
 9540LOCAL Trial%,A%
 9550Trial%=OPcode% AND &3F80
 9560IF Trial%=&180 THEN PROCsmake(3,OPcode% AND &7F,FALSE):ENDPROC
 9570IF Trial%=&100 THEN PROCsmake(4,&F00,FALSE):ENDPROC
 9580IF Trial%=0 AND (OPcode% AND &9F)=0 THEN PROCsmake(13,&F00,FALSE):ENDPROC
 9590IF Trial%=&80 THEN PROCsmake(12,OPcode% AND &7F,FALSE):ENDPROC
 9600Trial%=OPcode% AND &3F00
 9610A%=0
 9620REPEAT
 9630A%+=1
 9640IF A%=13 THEN A%+=1
 9650UNTIL Op%(A%)=Trial% OR A%=23
 9660IF A%<>23 THEN PROCsmake(A%,OPcode% AND &7F,TRUE)
 9670IF OPcode%=&66 THEN PROCsmake(36,&86,FALSE)
 9680IF OPcode%=&65 THEN PROCsmake(36,&85,FALSE)
 9690IF OPcode%=&62 THEN PROCsmake(37,&F00,FALSE)
 9700ENDPROC
 9710
 9720DEF PROCsmake(o%,v%,d%)
 9730LOCAL p$
 9740IF v%>&800 THEN p$="" ELSE p$="file "+STR$~(v%)+"h"
 9750IF d% THEN
 9760IF (OPcode% AND &80)=0 THEN p$=p$+", w" ELSE p$=p$+", f"
 9770ENDIF
 9780PROC_PutPramsS(3,Mne$(o%)+" "+p$)
 9790Found%=TRUE
 9800OPnumber%=o%
 9810ENDPROC
 9820
 9830DEF PROCgmake(o%,v%,a$)
 9840LOCAL p$
 9850IF v%>&800 THEN p$="" ELSE p$=a$+" "+STR$~(v%)+"h"
 9860PROC_PutPramsS(3,Mne$(o%)+" "+p$)
 9870Found%=TRUE
 9880OPnumber%=o%
 9890ENDPROC
 9900
 9910DEF PROC_upIO(o%,new%,s%,n%,r%)
 9920LOCAL B%,A%
 9930FOR A%=s% TO s%+n%-1
 9940B%=2^(A%-s%)
 9950IF (o% AND B%) <> (new% AND B%) THEN
 9960 IF (new% AND B%)=0 THEN
 9970 IF (Reg%(r%) AND B%)=0 THEN $SPoint%(A%)="emledoff" ELSE $SPoint%(A%)="emledon"
 9980 ELSE
 9990 IF (Reg%(r%) AND B%)=0 THEN $SPoint%(A%)="emswoff" ELSE $SPoint%(A%)="emswon"
10000 ENDIF
10010 SYS"Wimp_ForceRedraw",conW%,IX%(A%),IY%(A%),IX1%(A%),IY1%(A%)
10020ENDIF
10030
10040NEXT
10050ENDPROC
10060
10070DEF PROCupPb(old%,new%)
10080LOCAL A%,B%
10090FOR A%=0 TO 7
10100B%=2^A%
10110IF ((old% AND B%) <> (new% AND B%)) AND ((Reg%(&86) AND B%)=0) THEN
10120IF (new% AND B%)=0 THEN $SPoint%(A%+11)="emledoff" ELSE $SPoint%(A%+11)="emledon"
10130SYS"Wimp_ForceRedraw",conW%,IX%(A%+11),IY%(A%+11),IX1%(A%+11),IY1%(A%+11)
10140ENDIF
10150NEXT
10160ENDPROC
10170
10180DEF PROCupStat(old%,new%)
10190LOCAL A%,B%
10200FOR A%=0 TO 7
10210B%=2^A%
10220IF (old% AND B%) <> (new% AND B%) THEN
10230IF (new% AND B%)=0 THEN $SPoint%(A%+24)="emzero" ELSE $SPoint%(A%+24)="emone"
10240SYS"Wimp_ForceRedraw",conW%,IX%(A%+24),IY%(A%+24),IX1%(A%+24),IY1%(A%+24)
10250ENDIF
10260NEXT
10270ENDPROC
10280
10290DEF PROCupPa(old%,new%)
10300LOCAL A%,B%
10310FOR A%=0 TO 4
10320B%=2^A%
10330IF ((old% AND B%) <> (new% AND B%)) AND ((Reg%(&85) AND B%)=0) THEN
10340IF (new% AND B%)=0 THEN $SPoint%(A%+19)="emledoff" ELSE $SPoint%(A%+19)="emledon"
10350SYS"Wimp_ForceRedraw",conW%,IX%(A%+19),IY%(A%+19),IX1%(A%+19),IY1%(A%+19)
10351ENDIF
10370NEXT
10380ENDPROC
10390
10400DEF PROCupB(old%,new%,i%,n%)
10410LOCAL A%,B%
10420FOR A%=0 TO n%-1
10430B%=2^A%
10440IF (old% AND B%) <> (new% AND B%) THEN
10450IF (new% AND B%)=0 THEN $SPointM%(A%+i%)="emzero" ELSE $SPointM%(A%+i%)="emone"
10460SYS"Wimp_ForceRedraw",monW%,IXM%(A%+i%),IYM%(A%+i%),IX1M%(A%+i%),IY1M%(A%+i%)
10470ENDIF
10480NEXT
10490ENDPROC
10500
10510REM -----------------------------------------------------------
10520DEF FNfile
10530LOCAL f%,s%
10540f%=OPcode% AND &7F
10550s%=(Reg%(3) AND &20)<<2
10560f%=f% OR s%
10570IF f%=0 OR f%=&80 THEN f%=Reg%(4)
10580IF f%>&89 THEN f%=f% AND &7F
10590IF f%>&81 AND f%<&85 THEN f%=f% AND &7F
10600=f%
10610
10620DEF FNbn
10630=2^((OPcode% AND &380)>>7)
10640
10650DEF PROCput
10660LOCAL o%,d%,s%
10670IF (OPcode% AND &80)=0 THEN
10680Wreg%=t%:PROC_PutPramHex2(4,t%)
10690s%=Reg%(3):Reg%(3)=(s% AND &F8) OR NewStat%
10700IF s%<>Reg%(3) THEN PROCupStat(s%,Reg%(3))
10710ELSE
10720o%=Reg%(r%)
10730Reg%(r%)=t%
10740CASE r% OF
10750WHEN   3: Reg%(3)=(t% AND &E7) OR (o% AND &18):PROCupStat(o%,Reg%(3))
10760WHEN   1: IF (Reg%(&81) AND 8)=0 THEN Prescale%=0:PROC_PPHm(23,Prescale%)
10770WHEN   5: Reg%(5)=(Reg%(&85) AND o%) OR ((Reg%(&85) EOR &1F) AND t%) :PROCupPa(o%,t%)
10780WHEN   6:  Reg%(6)=(Reg%(&86) AND o%) OR ((Reg%(&86) EOR &FF) AND t%) :PROCupPb(o%,t%)
10790WHEN   7: PROC_setupW("Can't write to register 7")
10800WHEN   9: Reg%(8)=DataMemS%?(((t% AND &3F)<<1)+1):PROC_PPHm(33,Reg%(8))
10810WHEN &87: PROC_setupW("Can't write to register 87")
10820WHEN  10: PROC_setupW("Can't write to register 0A")
10830WHEN &85: PROC_upIO(o%,t%,19,5,5)
10840WHEN &86: PROC_upIO(o%,t%,11,8,6)
10850WHEN &88: IF (t% AND 6)=6 AND (o% AND 2)=0 THEN
10860          EtimeOut%=Etime%
10870          DataMemS%?(((Reg%(9) AND &3F)<<1)+1)=Reg%(8)
10880          ENDIF
10890ENDCASE
10900s%=Reg%(3):Reg%(3)=(s% AND &F8) OR NewStat%
10910IF s%<>Reg%(3) THEN PROCupStat(s%,Reg%(3))
10920
10930 IF Mopen% THEN
10940 CASE r% OF
10950 WHEN &81: PROCupB(o%,t%,0,8)
10960 WHEN &0B: PROCupB(o%,t%,9,8)
10970 WHEN &88: PROCupB(o%,t%,18,5)
10980 WHEN &85: PROC_PPHm(30,t%)
10990 WHEN &86: PROC_PPHm(31,t%)
11000 OTHERWISE
11010   IF NOT(r%=3 OR r%=5 OR r%=6 OR r%=7 OR r%=10 OR r%=2) AND r% <&30 THEN
11020   PROC_PPHm(r%+25,t%)
11030   ENDIF
11040  ENDCASE
11050 ENDIF
11060ENDIF
11070ENDPROC
11080
11090
11100DEF PROCbput
11110OPcode%=OPcode% OR &80
11120PROCput
11130ENDPROC
11140
11150DEF PROCwput
11160OPcode%=OPcode% AND NOT(&80)
11170PROCput
11180ENDPROC
11190
11200DEF PROCcarry
11210LOCAL s%
11220s%=0
11230IF t%>&FF THEN s%=1:t%=t% AND &FF
11240NewStat%=(NewStat% AND &FE) OR s%
11250ENDPROC
11260
11270DEF PROCzero
11280LOCAL s%
11290s%=0
11300IF t%=0 THEN s%=4
11310NewStat%=(NewStat% AND &FB) OR s%
11320ENDPROC
11330
11340DEF PROCdc
11350LOCAL s%
11360s%=0
11370IF t%>&F THEN s%=2
11380NewStat%=(NewStat% AND &FD) OR s%
11390ENDPROC
11400
11410DEF PROCpop
11420LOCAL A%
11430FOR A%=1 TO 7
11440Stack%(A%-1)=Stack%(A%)
11450NEXT
11460Stack%(7)=0
11470PROCudStack
11480ENDPROC
11490
11500DEF PROCpush
11510LOCAL A%
11520FOR A%=6 TO 0 STEP -1
11530Stack%(A%+1)=Stack%(A%)
11540NEXT
11550ENDPROC
11560
11570REM Execuite a command
11580DEF PROCexe
11590LOCAL r%,t%,b%
11600NewStat%=Reg%(3) AND 7
11610r%=FNfile
11620CASE OPnumber% OF
11630WHEN  1: t%=(Wreg% AND &F) + (Reg%(r%) AND &F) :PROCdc
11640         t%=Wreg% + Reg%(r%):PROCcarry:PROCzero:PROCput
11650WHEN  2: t%=Wreg% AND Reg%(r%):PROCzero:PROCput
11660WHEN  3: t%=0:IF r%=3 THEN NewStat%=0
11670         PROCzero:PROCput
11680WHEN  4: t%=0:OPcode%=OPcode% AND &3F7F:PROCzero:PROCput
11690WHEN  5: t%=Reg%(r%) EOR &FF:PROCzero:PROCput
11700WHEN  6: t%=(Reg%(r%)-1) AND &FF:PROCzero:PROCput
11710WHEN  7: t%=(Reg%(r%)-1) AND &FF:PROCzero:PROCput
11720         IF t%=0 THEN PROCincPC
11730WHEN  8: t%=(Reg%(r%)+1) AND &FF:PROCzero:PROCput
11740WHEN  9: t%=(Reg%(r%)+1) AND &FF:PROCzero:PROCput
11750         IF t%=0 THEN PROCincPC
11760WHEN 10: t%=Wreg% EOR Reg%(r%):PROCzero:PROCput
11770WHEN 11: t%=Reg%(r%):PROCzero:PROCput
11780WHEN 12: t%=Wreg%: IF r%=2 THEN goto%=TRUE
11790         IF r%=3 THEN NewStat%=t% AND 7
11800         PROCput
11810WHEN 14: t%=(Reg%(r%)<<1) OR (Reg%(3) AND 1):PROCcarry:PROCput
11820WHEN 15: t%=(Reg%(r%)>>1) OR ((Reg%(3) AND 1)<<7) OR ((Reg%(r%) AND 1)<<8)
11830         PROCcarry:PROCput
11840WHEN 16: t%=((Reg%(r%) AND &F)-(Wreg% AND &F)) AND &FF :PROCdc
11850         t%=((Reg%(r%)-Wreg%) AND &1FF):PROCcarry:PROCzero
11860         NewStat%=NewStat% EOR 1:PROCput
11870WHEN 17: t%=((Reg%(r%) AND &F)<<4) OR ((Reg%(r%) AND &F0)>>4)
11880         IF ((OPcode% AND &80)<>0) AND r%=3 THEN NewStat%=t% AND 7
11890         PROCput
11900WHEN 18: t%=Reg%(r%) EOR Wreg%:PROCzero:PROCput
11910WHEN 19: b%=(NOT(FNbn)) AND &FF:t%=Reg%(r%) AND b%
11920         IF r%=3 THEN NewStat%=NewStat% AND b% OR (Reg%(3) AND &18)
11930         PROCbput
11940WHEN 20: b%=FNbn:t%=Reg%(r%) OR b%
11950         IF r%=3 THEN NewStat%=NewStat% AND b% OR (Reg%(3) AND &18)
11960         PROCbput
11970WHEN 21: b%=FNbn:IF (b% AND Reg%(r%))=0 THEN PROCincPC
11980WHEN 22: b%=FNbn:IF (b% AND Reg%(r%))<>0 THEN PROCincPC
11990WHEN 23: b%=OPcode% AND &FF:t%=(Wreg% AND &F) + (b% AND &F) :PROCdc
12000         t%=Wreg%+b%:PROCcarry:PROCzero:PROCwput
12010WHEN 24: b%=OPcode% AND &FF :t%=Wreg% AND b%:PROCzero:PROCwput
12020WHEN 25: PROCpush:PROCincPC:Stack%(0)=Reg%(2)+HiPC%:PROCudStack
12030         goto%=TRUE:Reg%(2)=OPcode% AND &FF:HiPC%=(OPcode% AND &700) OR (HiPC% AND &1800)
12040WHEN 26: WatchdogTime%=0:t%=Reg%(3) OR &18:PROCupStat(Reg%(3),t%):Reg%(3)=t%
12050WHEN 27: goto%=TRUE:Reg%(2)=OPcode% AND &FF:HiPC%=(OPcode% AND &700) OR (HiPC% AND &1800)
12060WHEN 28: b%=OPcode% AND &FF :t%=Wreg% OR b%:PROCzero:PROCwput
12070WHEN 29: Wreg%=OPcode% AND &FF:PROC_PutPramHex2(4,Wreg%)
12080WHEN 30: Reg%(2)=Stack%(0) AND &FF:HiPC%=Stack%(0) AND &700:goto%=TRUE:PROCpop
12090         t%=Reg%(&B) OR &80:PROCupB(Reg%(&B),t%,9,8):Reg%(&B)=t%
12100WHEN 31: Reg%(2)=Stack%(0) AND &FF:HiPC%=Stack%(0) AND &700:goto%=TRUE:PROCpop
12110         t%=OPcode% AND &FF:OPcode%=OPcode% AND &3F7F:PROCput
12120WHEN 32: Reg%(2)=Stack%(0) AND &FF:HiPC%=Stack%(0) AND &700:goto%=TRUE:PROCpop
12130WHEN 33: PROCincPC:PROCfetchN:Sleep%=TRUE:$SPoint%(9)="emledon"
12140         SYS"Wimp_ForceRedraw",conW%,IX%(9),IY%(9),IX1%(9),IY1%(9)
12150         t%=(Reg%(3) OR &10) AND &F7:r%=3:PROCupStat(Reg%(3),t%):Reg%(3)=t%
12160WHEN 34: b%=OPcode% AND &FF:t%=(b% AND &F)-(Wreg% AND &F):PROCdc
12170         t%=((b%-Wreg%) AND &1FF):PROCcarry:PROCzero
12180         NewStat%=NewStat% EOR 1:PROCwput
12190WHEN 35: b%=OPcode% AND &FF :t%=Wreg% EOR b%:PROCzero:PROCwput
12200WHEN 37: r%=&81:t%=Wreg%:PROCbput
12210WHEN 36: r%=(OPcode% AND 7) OR &80:PROCbput
12220ENDCASE
12230ENDPROC

� Pic 18C84 Simulator
� Version 1.0 By Mike Cook
� All rights reserved
(e� q% &300,qc% 80, Wn% &2500,temp% 256,buffers% 512,menu% 256,SW% 2096,cb% 18,SWM% 2096,WnM% &2500
2� TextWarn% 100, ww% 256
<
F� � �errorbox
P+� taskid% 4,intmess% 20:$taskid%="TASK"
ZIintmess%!0=1:intmess%!4=2:intmess%!8=3:intmess%!12=&502:intmess%!16=0
dXș "Wimp_Initialise",300,!taskid%,"PIC18C84-Simulator",intmess% � version%,taskhand%
n
xMxL%=300
�(� Mne$(38),Op%(38),It%(38),Reg%(&FF)
�Ni%=44:NiM%=72
�B� SPoint%(Ni%),IX%(Ni%),IY%(Ni%),IX1%(Ni%),IY1%(Ni%),Stack%(7)
�B� SPointM%(NiM%),IXM%(NiM%),IYM%(NiM%),IX1M%(NiM%),IY1M%(NiM%)
�� Break%(3)
�1� ProgMemS% &800,DataMemS% 128, ConfigMem% 16
�
�2ș "Wimp_OpenTemplate",,"<EM84$Dir>.Templates"
�)� � ș "Wimp_CloseTemplate":�errorbox
�:ș "Wimp_LoadTemplate",,q%,temp%,temp%+256,-1,"Info",0
�&ș "Wimp_CreateWindow",,q% � info%
�
�=ș "Wimp_LoadTemplate",,Wn%+4,SW%,SW%+2096,-1,"Control",0

Wn%!28=-1
� A%=0 � Ni%
$SPoint%(A%)=!(Wn%+4+88+20+32*A%)
"9IX%(A%)=!(Wn%+4+88+32*A%):IY%(A%)=!(Wn%+4+88+4+32*A%)
,>IX1%(A%)=!(Wn%+4+88+8+32*A%):IY1%(A%)=!(Wn%+4+88+12+32*A%)
6�
@
J)ș "Wimp_CreateWindow",,Wn%+4 � conW%
TWn%!0=conW%:Wn%!28=-1
^
h@ș "Wimp_LoadTemplate",,WnM%+4,SWM%,SWM%+2096,-1,"Monitor",0
rWnM%!28=-1
|� A%=0 � NiM%
�&SPointM%(A%)=!(WnM%+4+88+20+32*A%)
�=IXM%(A%)=!(WnM%+4+88+32*A%):IYM%(A%)=!(WnM%+4+88+4+32*A%)
�BIX1M%(A%)=!(WnM%+4+88+8+32*A%):IY1M%(A%)=!(WnM%+4+88+12+32*A%)
��
�
�*ș "Wimp_CreateWindow",,WnM%+4 � monW%
�WnM%!0=monW%:WnM%!28=-1
�
�9ș "Wimp_LoadTemplate",,q%,ww%,ww%+256,-1,"Warning",0
�)q%!108=TextWarn%:q%!112=-1:q%!116=300
� XQ%=q%!8-q%!0:YQ%=q%!12-q%!4
�*ș "Wimp_CreateWindow",,q% � warningW%
�ș "Wimp_CloseTemplate"

smpicon%=�icon
wopen%=�:warnOn%=�:Mopen%=�
&InWin%=�
0#�_PutPramsS(0,"Drag File Here")
:Step%=�:Running%=�
D"Watchdog%=�:Merge%=�:OscOpt%=0
N)Reseting%=�:HiPC%=0:Wreg%=0:OPcode%=0
XStatus%=0:goto%=�:Sleep%=�
b-Reg%()=0:WatchdogTime%=0:WatchLimit%=1800
cReg%(5)=&1F:Reg%(6)=&FF
l'Smon%=�:Scont%=�:RB0%=0:PBchange%=0
v&EtimeOut%=0:Etime%=100:Prescale%=0
�ProgMem%=�:Skip%=�
��wipeProg:�wipeData
��setupmenu
�
�_INIT
�
��
� ș "Wimp_Poll",0,q% � A%
�
  Ȏ A% �
�   � 0:�_Null
�
   � 1:�7
�O   � 2:ș"OS_ReadModeVariable",-1,3 � ,,Ncolours%: ș "Wimp_OpenWindow",,q%
�   � 3:�_close
�!   � 4:InWin%=�:LX%=-1:LY%=-1
   � 5:InWin%=�
   � 6:�_do_click(q%)
   � 7:�_PutDown(q%)
    � 8:�_KeyPress
*   � 9:�_SORT_Menu
4   � 17,18:�receive(q%)
>   �
H � �
R
\�
f
p� �_Null
z� X%,Y%,B%
�� wopen% �
�ȗ X%,Y%,B%
�}� Reseting%=� � B%=0 � $SPoint%(8)="radiooff":Reseting%=�:ș"Wimp_ForceRedraw",conW%,IX%(8),IY%(8),IX1%(8),IY1%(8):�reset
�� Running% � �cycle
�r� Running% � Step% � Running%=�:$SPoint%(10)="Go":ș"Wimp_ForceRedraw",conW%,IX%(10),IY%(10),IX1%(10),IY1%(10)
��
��
�
�� �_SORT_Menu
�Ȏ !q% �
�U � 1: Scont%=�(Scont%):� Scont% � menu%?52=menu%?52 � 1 � menu%?52=menu%?52 � &FE
�7         � Scont%=� � wopen%=� � q%!0=conW%:�_close
�+         � Scont%=� � wopen%=� � �_Open
[ � 2: Smon%=�(Smon%):� Smon% � menu%?76=menu%?76 � 1 � menu%?76=menu%?76 � &FE:Merge%=�
6         � Smon%=� � Mopen%=� � q%!0=monW%:�_close
*         � Smon%=� � Mopen%=� � �_Open
$ � 3: �die
. 
8�
B�
L
� �_close
V7� q%!0=conW% � ș"Wimp_GetWindowInfo",,Wn%:wopen%=�
`8� q%!0=monW% � ș"Wimp_GetWindowInfo",,WnM%:Mopen%=�
j � q%!0=warningW% � warnOn%=�
tș "Wimp_CloseWindow",,q%
~�
�
�� �_do_click(q%)
�i%=q%!16
�Ȏ q%!12 �
�(� warningW%: q%!0=warningW% :�_close
�(� -2: � Look first at Icon Bar Click
�        � q%!16=smpicon% �
�I        � q%!8=2 � ș"Wimp_CreateMenu",,menu%,q%!0-74,310:IconMenu%=�
�        � q%!8=4 � �_Open
�
        �
�� monW%: � q%!8=4 � �_Click
�� conW%:
     � q%!8=4 � �_MonClick

G     � q%!8=2 � ș"Wimp_CreateMenu",,menu%,q%!0-96,q%!4:IconMenu%=�
	     
0� saveW%: DragOn%=�: SaveProg%=�  : �_DoSave
(/� saveD%: DragOn%=�: SaveProg%=� : �_DoSave
2             
<�
F�
P
Z
� �_Click
d� A%,C%,B%
n � i%<23 � i%>-1 �
x A%=i%-9
�
 C%=&B
� � i%<8 � C%=&81:A%=i%
� � i%>17 � C%=&88:A%=i%-18
� B%=2^A%
� Reg%(C%)=Reg%(C%) � B%
�I � (Reg%(C%) � B%)=0 � $SPointM%(i%)="emzero" � $SPointM%(i%)="emone"
�E ș"Wimp_ForceRedraw",monW%,IXM%(i%),IYM%(i%),IX1M%(i%),IY1M%(i%)
��
��
�
�� �upRad
�<ș"Wimp_ForceRedraw",conW%,IX%(6),IY%(6),IX1%(6),IY1%(6)
�<ș"Wimp_ForceRedraw",conW%,IX%(7),IY%(7),IX1%(7),IY1%(7)
@ș"Wimp_ForceRedraw",conW%,IX%(44),IY%(44),IX1%(44),IY1%(44)
�

"� �_MonClick
,� A%,C%,B%
6&� Do the action for a window click
@Ȏ i% �
J   
T"   � 5: Watchdog%=�(Watchdog%)
^C           � Watchdog%=� � $SPoint%(5)="yes" � $SPoint%(5)="no"
hG           ș"Wimp_ForceRedraw",conW%,IX%(5),IY%(5),IX1%(5),IY1%(5)
r           
|   � 6:
�*           � Step%=� � Step%=�:Skip%=�
�]           � Step% � $SPoint%(6)="radioon":$SPoint%(7)="radiooff":$SPoint%(44)="radiooff"
�           �upRad
�           
�   � 7:
�4           � Step%=� � Skip%=� � Step%=�:Skip%=�
�_           � Step%=� � $SPoint%(7)="radioon":$SPoint%(6)="radiooff":$SPoint%(44)="radiooff"
�           �upRad
�           
�(   � 44: � Skip%=� � Skip%=�:Step%=�
�^            � Skip% � $SPoint%(44)="radioon":$SPoint%(6)="radiooff":$SPoint%(7)="radiooff"
�            �upRad
�            
!   � 8: $SPoint%(8)="radioon"
           Reseting%=�
G           ș"Wimp_ForceRedraw",conW%,IX%(8),IY%(8),IX1%(8),IY1%(8)
&
0!   � 10: Running%=�(Running%)
:C           � Running% � $SPoint%(10)="Stop" � $SPoint%(10)="Go"
DK           ș"Wimp_ForceRedraw",conW%,IX%(10),IY%(10),IX1%(10),IY1%(10)
N           
X �
b 
l � i%>23 � i%<32 �
v
 A%=i%-24
� B%=2^A%
� Reg%(3)=Reg%(3) � B%
�F � (Reg%(3) � B%)=0 � $SPoint%(i%)="emzero" � $SPoint%(i%)="emone"
�A ș"Wimp_ForceRedraw",conW%,IX%(i%),IY%(i%),IX1%(i%),IY1%(i%)
� �
� 
� � i%>10 � i%<19 �
�
 A%=i%-11
� B%=2^A%
� Reg%(6)=Reg%(6) � B%
� � (Reg%(&86) � B%)<>0 �
�H � (Reg%(6) � B%)=0 � $SPoint%(i%)="emswoff" � $SPoint%(i%)="emswon"
� �
J � (Reg%(6) � B%)=0 � $SPoint%(i%)="emledoff" � $SPoint%(i%)="emledon"
 
 �
 A ș"Wimp_ForceRedraw",conW%,IX%(i%),IY%(i%),IX1%(i%),IY1%(i%)
* �
4 
> � i%>18 � i%<24 �
H
 A%=i%-19
R B%=2^A%
\ Reg%(5)=Reg%(5) � B%
f � (Reg%(&85) � B%)<>0 �
pH � (Reg%(5) � B%)=0 � $SPoint%(i%)="emswoff" � $SPoint%(i%)="emswon"
z �
�J � (Reg%(5) � B%)=0 � $SPoint%(i%)="emledoff" � $SPoint%(i%)="emledon"
� �
�A ș"Wimp_ForceRedraw",conW%,IX%(i%),IY%(i%),IX1%(i%),IY1%(i%)
� �
� 
��
�
�� �_Open
�.ș"OS_ReadModeVariable",-1,3 � ,,Ncolours%
�� OPEN UP WINDOW HERE
�
� Smon% �
�� Mopen% �
�q%!0=monW%
	ș"Wimp_GetWindowState",,q%
	6  � q%!28<>-1 � q%!28=-1: ș "Wimp_OpenWindow",,q%
	�
	$ș "Wimp_OpenWindow",,WnM%
	.Mopen%=�
	8�
	B�
	L
	V� Scont% �
	`� wopen% �
	jq%!0=conW%
	tș"Wimp_GetWindowState",,q%
	~6  � q%!28<>-1 � q%!28=-1: ș "Wimp_OpenWindow",,q%
	��
	�ș "Wimp_OpenWindow",,Wn%
	�wopen%=�
	��
	��
	�
	��
	�
	���setupmenu
	�� m%
	�
	�$menu%="Simulate"
menu%?12=7

menu%?13=2
menu%?14=7
menu%?15=0
(menu%!16=128
2menu%!20=40
<menu%!24=0
Fm%=menu%+28
P
m%!0=2
Zm%!4=info%
dm%!8=(7<<24)� %10001
n$(m%+12)="Info"
x
�
m%+=24
�
m%!0=1
�
m%!4=0
�m%!8=(7<<24)� %10001
�$(m%+12)="Control"
�
�
m%+=24
�
m%!0=2
�
m%!4=0
�m%!8=(7<<24)� %10001
�$(m%+12)="Monitor"
�
�
m%+=24
m%!0=&80

m%!4=0
m%!8=(7<<24)� %10001
"$(m%+12)="Quit"
,
6�
@
J� �receive(q%)
T� A%
^A%=q%!16
hȎ A% �
r� 0:�die
|
�� 3:n$=�sget(q%+44)
�'       sendth%=q%!4:icontype%=q%!40
�       myref%=q%!8
�K       � icontype%=&84 � ( (q%!20=-2 � q%!24=smpicon%) � q%!20=conW%) �
�        �_Fname(n$)
�        �_Dack
�        �_Load(n$)
�        � wopen%=� � �_Open
�
        �
�C        � icontype%<>&84 � �_setupW("Need a 16C84 object file")
�       �
�� &502:   Ȏ � �
�l             � q%!32=-2 � q%!36=smpicon%:mes$="This is the PIC Simulator icon.|MRun PIC chip programmes"
             :mes$=""
             �
    � mes$<>"" �
&    q%!12=q%!8
0    $(q%+20)=mes$+�0
:    q%!0=(20+�mes$+4)� � 3
D    q%!16=&503
N(    ș "Wimp_SendMessage",18,q%,q%!4
X�
b�
l
v� �_Dack
�sendth%=q%!4
�myref%=q%!8
�"ș "Wimp_GetPointerInfo",,q%+8
�q%!28=q%!8
�q%!32=q%!12
�q%!0=(44+�n$+4)� � 3
�q%!12=myref%
�q%!16=4
�q%!36=-1
�q%!40=&FF9
�$(q%+44)=n$+�0
�'ș "Wimp_SendMessage",17,q%,sendth%
��

�



ݤsget(x%)

 � x$

*!ȕ ?x%>&1F x$+=�(?x%):x%+=1:�

4=x$

>

H
ݤicon

Rq%!0=-1

\
q%!4=0

fq%!8=10 : � Y DIRECTION

pq%!12=70 : � X DIRECTION

zq%!16=96

�q%!20=&2002

�$(q%+24)="!sim84"

�$ș "Wimp_CreateIcon",,q% � icon%

�
=icon%

�

�.� �dragicon(mousex%,mousey%,handle%,icon%)

�!� bx%,by%,ix0%,iy0%,ix1%,iy1%

��getw(handle%)

��geti(handle%,icon%)

�!q%=handle%:q%!4=5

�>q%!8=bx%+ix0%:q%!12=by%+iy0%:q%!16=bx%+ix1%:q%!20=by%+iy1%

�*q%!24=q%!8-mousex%:q%!28=q%!12-mousey%

�ș "Wimp_DragBox",,q%
SFLAG%=�
�

$� �info(p%)
.
� x0%,y0%
8'x0%=!p%:y0%=p%!4:x1%=p%!8:y1%=p%!12
B5scx%=p%!16:scy%=p%!20:bhandle%=p%!24:flags%=p%!28
Lbx%=x0%-scx%:by%=y1%-scy%
V�
`
j� �getw(handle%)
t8!q%=handle%:ș "Wimp_GetWindowState",,q%:�info(q%+4)
~�
�� �geti(h%,i%)
�-!q%=h%:q%!4=i%:ș "Wimp_GetIconState",,q%
�.ix0%=q%!8:iy0%=q%!12:ix1%=q%!16:iy1%=q%!20
�iflags%=q%!24:idata%=q%+28
��
�
�
ݤhpg(n%)
�� A$,B%,V%,W%,T%
�A$=�sget(SPoint%(n%))
�� �(A$)=&20 � A$=�A$)
�� �A$,1)=" " � A$=�A$)
�
V%=0:W%=1
� B%=�(A$) � 1 � -1

T%=�(�A$,B%,1))
)� T%>&39 � T%=(T%-&40)+9 � T%=T% � &F
V%=V%+T%*W%
(W%=W%<<4
2�
<=V%
F
PݤhpgM(n%)
Z� A$,B%,V%,W%,T%
dA$=�sget(SPointM%(n%))
n� �(A$)=&20 � A$=�A$)
x� �A$,1)=" " � A$=�A$)
�
V%=0:W%=1
�� B%=�(A$) � 1 � -1
�T%=�(�A$,B%,1))
�)� T%>&39 � T%=(T%-&40)+9 � T%=T% � &F
�V%=V%+T%*W%
�W%=W%<<4
��
�=V%
�
�� �_setupW(t$)
�X!q%=warningW%:q%!4=200:q%!8=200:q%!12=200+XQ%:q%!16=200+YQ%:q%!20=0:q%!24=0:q%!28=-1
�$TextWarn%=t$
�TextWarn%?�(t$)=0
� 7

warnOn%=�
ș "Wimp_OpenWindow",,q%
"�
,
6� �errorbox
@� SYS "Wimp_DragBox",,-1
J2!buffers%=�:$(buffers%+4)=�$+" at line "+Þ+�0
T*ș "Wimp_ReportError",buffers%,1,"PIC"
^�die
h�
r
|	��die
�*ș "Wimp_CloseDown",taskhand%,!taskid%
��
��
�
�� �_KeyPress
�� A%,K%,i%
�i%=q%!4
�K%=q%!24
�
� K%=13 �
�
Ȏ q%!0 �
�6�  conW%: � i%>31 � i%<40 � Stack%(i%-32)=�hpg(i%)
�'             � i%=4 � Wreg%=�hpg(4)
�"             � i%>39 � i%<44 �
'             Break%(i%-40)=�hpg(i%)
;             � Break%(i%-40)>&3FF � �_PutPramsS(i%," ")
             �
&             
0N             � i%=1 � A%=�hpg(1):Reg%(2)=A% � &FF:HiPC%=A% � &FF00:�fetchN
:2             � i%=0 � �_GetinName: �_Load(fn$)
D� monW%:  A%=�hpgM(i%)
N#             � i%>25 � i%<>27 �
X5             � A%>255 � A%=A% � &FF:�_PPHm(i%,A%)
b"             � i%=30 � i%=31 �
l8               � i%=30 � �_upIO(Reg%(&85),A%,19,5,5)
v8               � i%=31 � �_upIO(Reg%(&86),A%,11,8,6)
�"               Reg%(i%+103)=A%
�               �
�!               Reg%(i%-25)=A%
�               �
�             �
�'             � i%=23 � Prescale%=A%
�)             � i%=24 � WatchLimit%=A%
�+             � i%=25 � WatchdogTime%=A%
�1             � i%=27 � EtimeOut%=A%:Etime%=A%
�X             � i%=34 � Reg%(8)=DataMemS%?(((Reg%(9) � &3F)<<1)+1):�_PPHm(33,Reg%(8))
��
��
�ș"Wimp_ProcessKey",K%
�
�

 � �_spath(n$)
*ȕ �n$,".")
4n$=�n$,�(n$)-1)
>�
H� �(n$)>10 � n$=�n$,10)
R=n$
\
f� �_GetName
p� T%,A%,F$
zF$="":fn$=""
�q%!0=saveW%:q%!4=1
�ș "Wimp_GetIconState",,q%
�T%=q%!28
�	T%-=1
��
�	T%+=1
�F$=F$+�(?T%)
�� ?T%=0
�fn$=�F$,1,�(F$)-1)
��
�
�� �_GetinName
�� T%,A%,F$
F$="":fn$=""
q%!0=conW%:q%!4=0
ș "Wimp_GetIconState",,q%
$T%=q%!28
.	T%-=1
8�
B	T%+=1
LF$=F$+�(?T%)
V� ?T%=0
`fn$=�F$,1,�(F$)-1)
j�
t
~� �_GetPrams
�� A$
�q%!0=Wn%!0
�InFile$=�sget(SPoint%(0))
��
�
�� Verify file names
�
� �vfn
�� V%
�V%=1
�� �InFile$,"$")=0 � V%=0
�=V%
�

� �opf

� V%
V%=1
F%=�(InFile$)
(� F%=0 �
2V%=0
<�
F� Load in the object file
P�#F%
Z�
d=V%
n
x� �_PutPrams(n%,V%)
��_sput(SPoint%(n%),�(V%))
�@ș"Wimp_ForceRedraw",conW%,IX%(n%),IY%(n%),IX1%(n%),IY1%(n%)
��
�
�� �_PutPramHex(n%,V%)
�� H$
�
H$=�~(V%)
�ȕ �(H$)<4
�
H$="0"+H$
��
��_sput(SPoint%(n%),H$)
�@ș"Wimp_ForceRedraw",conW%,IX%(n%),IY%(n%),IX1%(n%),IY1%(n%)
��

� �_PPHm(n%,V%)
� H$
"
H$=�~(V%)
,ȕ �(H$)<2
6
H$="0"+H$
@�
J�_sput(SPointM%(n%),H$)
TDș"Wimp_ForceRedraw",monW%,IXM%(n%),IYM%(n%),IX1M%(n%),IY1M%(n%)
^�
h
r� �_PutPramHex2(n%,V%)
|� H$
�
H$=�~(V%)
�ȕ �(H$)<2
�
H$="0"+H$
��
��_sput(SPoint%(n%),H$)
�@ș"Wimp_ForceRedraw",conW%,IX%(n%),IY%(n%),IX1%(n%),IY1%(n%)
��
�
�� �_PutPramsS(n%,V$)
��_sput(SPoint%(n%),V$)
�@ș"Wimp_ForceRedraw",conW%,IX%(n%),IY%(n%),IX1%(n%),IY1%(n%)
��
�
� �_sput(x%,X$)
� A%
� A%=1 � �(X$)
&?x%=�(�X$,A%,1))
0	x%+=1
:�
D	?x%=0
N�
X
b� �_Fname(n$)
lInFile$=n$
v�_PutPramsS(0,n$)
��
�
�� �wipeProg
�� A%
�� A%=0 � &800 � 4
�ProgMemS%!A%=&FF3FFF3F
��
��
�
�� �wipeData
�� A%
�� A%=0 � 128 � 4
�DataMemS%!A%=&FF00FF00
�
� A%=0 � 15
ConfigMem%?A%=0
 �
*�
4
>� �_Load(F$)
H� A%,B%,C%,F%
RF%=�(F$)
\
� F%<>0 �
f%� �(Merge%) � �wipeData:�wipeProg
p�readHF
z�#F%
�
�PUPreset
��setConfig
�Stack%()=0
��udStack
�Sleep%=�
��
�$�_setupW("Can't open this file")
��
��
�
�
� �readHF
�%� P%,Base%,B%,C%,CB%,Limit%,Line%
�Line%=0
�
�
>� �(�#F%) � B%=�#F% � �_setupW("Unexpected end of file"):�
$� �(B%)=":"
.Check%=0:Line%+=1
8
L%=�rb>>1
BP%=(�rb<<8 � �rb)>>1
LBase%=ProgMemS%
V'� P%>&3FF � P%<&2000 � P%=P% � &3FF
`7� P%>&1FFF � P%<&2010 � Base%=ConfigMem%:P%=P% � &F
j,� P%>&20FF � Base%=DataMemS%:P%=P% � &3F
t
B%=�rb
~� B%=1 � �
�A%=0
�� B%=1 � L%
�Base%?(A%+1+(P%<<1))=�rb
�Base%?(A%+(P%<<1))=�rb
�	A%+=2
��
�C%=(�(Check%)+1) � &FF
�CB%=�rb
�<� CB%<>C% � �_setupW("Check sum error line "+�(Line%)):�
�� �
��
�
	� �rb

� B%,C%,D%
#� �(�#F%) � B%=�#F% � B%=�("F")
#� �(�#F%) � C%=�#F% � C%=�("F")
(D%=�th(B%,C%)
2Check%+=D%
<=D%
F
P.� Convert two digit hex text into a number
Z� �th(M%,K%)
d=�h(M%)<<4 � �h(K%)
n
x� �h(n%)
�,� n%>&39 � n%=9 + (n% � &F) � n%=n% � &F
�=n%
�
�� �incR(n%)
�Reg%(n%)+=1
�*� Reg%(n%)>255 � Reg%(n%)=Reg%(n%)-256
�
=Reg%(n%)
�
�� �udStack
�� A%
�� A%=32 � 39
�"�_PutPramHex(A%,Stack%(A%-32))
��
�

A� -----------------------------------------------------------
"� �_INIT
,� A%=1 � 37
6   � Mne$(A%),Op%(A%),It%(A%)
@�
J7Reg%(5)=&1F:Reg%(6)=&FF:Reg%(&85)=&1F:Reg%(&86)=&FF
T?Break%(0)=&400:Break%(1)=&400:Break%(2)=&400:Break%(3)=&400
^�
h
r� Mnemonic, opcode, type
|<� addwf,&700,1, andwf, &500,1,  clrf,&180,4, clrw,&100,0
�:� comf,&900,1, decf,&300,1, decfsz,&B00,1, incf,&A00,1
�<� incfsz,&F00,1, iorwf,&400,1, movf,&800,1, movwf,&080,4
�3� nop,0,0, rlf,&D00,1, rrf,&C00,1, subwf,&200,1
�:� swapf,&E00,1, xorwf,&600,1, bcf,&1000,2, bsf,&1400,2
�N� btfsc,&1800,2, btfss,&1C00,2, addlw,&3E00,3, andlw,&3900,3, call,&2000,3
�>� clrwdt,&64,0, goto,&2800,5, iorlw,&3800,3, movlw,&3000,3
�<� retfie, &9,0, retlw,&3400,3, return,&8,0, sleep,&063,0
�"� sublw,&3C00,3, xorlw,&3A00,3
�� Instructions to phase out
� � tris,&60,4,  option,&062,0
�
�
�A� -----------------------------------------------------------
� �PUPreset
� A%
E� PROC_upIO(Reg%(&85),&1F,19,5,5):PROC_upIO(Reg%(&86),&FF,11,8,6)
&
0;Reg%(&85)=&1F:Reg%(&86)=&FF:Reg%(3)=(Reg%(3) � 7) � &18
:>Reg%(&81)=&FF:Reg%(&88)=0:Reg%(&A)=0:Reg%(&B)=Reg%(&B) � 1
D-�_upIO(0,&1F,19,5,5):�_upIO(0,&FF,11,8,6)
N
X"�upStat(Reg%(3) � &FF,Reg%(3))
b'�upB(Reg%(&81) � &FF,Reg%(&81),0,8)
l%�upB(Reg%(&B) � &FF,Reg%(&B),9,8)
v(�upB(Reg%(&88) � &FF,Reg%(&88),18,5)
�WatchdogTime%=0
�3�_PPHm(25,WatchdogTime%):�_PPHm(24,WatchLimit%)
�� A%=26 � 72
�A� �(A%=28 � A%=32 � A%=35 � A%=36) � �_sput(SPointM%(A%)," ")
�Dș"Wimp_ForceRedraw",monW%,IXM%(A%),IYM%(A%),IX1M%(A%),IY1M%(A%)
��
�� A%=0 � 3
�Break%(A%)=&400
��_PutPramsS(A%+40," ")
��
�� PROCreset
�;Reg%(2)=0:HiPC%=0:�_PutPramHex(1,Reg%(2)+HiPC%):�fetchN
�:t%=(Reg%(3) � &7) � &18:�upStat(Reg%(3),t%):Reg%(3)=t%
#Sleep%=�:$SPoint%(9)="emledoff"
<ș"Wimp_ForceRedraw",conW%,IX%(9),IY%(9),IX1%(9),IY1%(9)
�
 
*� �reset
4� t%
>;Reg%(2)=0:HiPC%=0:�_PutPramHex(1,Reg%(2)+HiPC%):�fetchN
H3t%=Reg%(3):Reg%(3)=t% � &1F:�upStat(t%,Reg%(3))
R:t%=Reg%(&85):Reg%(&85)=&1F:�_upIO(t%,Reg%(&85),19,5,5)
\:t%=Reg%(&86):Reg%(&86)=&FF:�_upIO(t%,Reg%(&86),11,8,6)
f5t%=Reg%(&81):Reg%(&81)=&FF:�upB(t%,Reg%(&81),0,8)
p
z� Sleep% �
�:t%=(Reg%(3) � &7) � &10:�upStat(Reg%(3),t%):Reg%(3)=t%
�#Sleep%=�:$SPoint%(9)="emledoff"
�<ș"Wimp_ForceRedraw",conW%,IX%(9),IY%(9),IX1%(9),IY1%(9)
��
��
�
�� Set the watchdog bit
�� �setConfig
�� A%,B%
�A%=(ConfigMem%?15) � &4
�� A%=0 � B%=� � B%=�
�� B%<>Watchdog% �
�Watchdog%=B%
/� B% � $SPoint%(5)="yes" � $SPoint%(5)="no"
<ș"Wimp_ForceRedraw",conW%,IX%(5),IY%(5),IX1%(5),IY1%(5)
�
$�
.
8� �cycle
B� P%
L!� �(Sleep%) � �(Skip%) � �exe
V
�incPC
`�chkInt
j� �(Sleep%) � �fetchN
t� �(Step%) � �(Sleep%) �
~P%=�hpg(1)
�� A%=0 � 3
�� Break%(A%)=P% �
�ZStep%=�:$SPoint%(10)="Go":ș"Wimp_ForceRedraw",conW%,IX%(10),IY%(10),IX1%(10),IY1%(10)
�0$SPoint%(6)="radioon":$SPoint%(7)="radiooff"
�<ș"Wimp_ForceRedraw",conW%,IX%(6),IY%(6),IX1%(6),IY1%(6)
�<ș"Wimp_ForceRedraw",conW%,IX%(7),IY%(7),IX1%(7),IY1%(7)
��
��
��
��
�
�
� �fetchN
� A%

A%=(Reg%(2)+HiPC%) � &3FF
>OPcode%=((ProgMemS%?(A%<<1))<<8) + (ProgMemS%?(1+(A%<<1)))
�_PutPramHex(2,OPcode%)
(	�diss
2�
<
F
� �chkInt
P� F%,t%,E%
Z
dF%=Reg%(&B)
n
x� Check INT
�,� (F% � &10)<>0 � ((Reg%(&86) � 1)<>0) �
�   � RB0% <>(Reg%(6) � 1) �
�     t%=Reg%(&81) � &40
�b     � (t%=0 � RB0%=1) � (t%<>0 � RB0%=0) � t%=Reg%(&B) � &2:�upB(Reg%(&B),t%,9,8):Reg%(&B)=t%
�   �
��
� 
� � Check Prort RB
�"t%=(Reg%(6) � &F0) � Reg%(&86)
�% � t%<>PBchange% � (F% � &8)<>0 �
�7 t%=Reg%(&B) � &1:�upB(Reg%(&B),t%,9,8):Reg%(&B)=t%
� �
� 
 � Eprom write interrupt
 � EtimeOut%<>0 �
 EtimeOut%-=1
" �_PPHm(27,EtimeOut%)
, � EtimeOut%=0 �
68  t%=Reg%(&B) � &8:�upB(Reg%(&B),t%,9,8):Reg%(&B)=t%
@=  t%=Reg%(&88) � &1D:�upB(Reg%(&88),t%,18,5):Reg%(&88)=t%
J  �
T �
^ 
h(� now respond to any interrupt flags
rE%=(Reg%(&B)>>3) � 7
|J � ((Reg%(&B) � E%)<>0 � (Reg%(&88) � &10)<>0) � (Reg%(&B) � &80)<>0 �
�'   � Sleep% � ((Reg%(&B) � 2)<>0) �
�    � Wake up from sleep
�    Sleep%=�
�     t%=(Reg%(3) � &F7) � &10
�    �upStat(Reg%(3),t%)
�    Reg%(3)=t%
�    $SPoint%(9)="emledoff"
�@    ș"Wimp_ForceRedraw",conW%,IX%(9),IY%(9),IX1%(9),IY1%(9)
�   �
�-   �push:Stack%(0)=Reg%(2)+HiPC%:�udStack
�   Reg%(2)=4:HiPC%=0
�   �_PutPramHex(1,4)
� �
   t%=Reg%(&B) � &7F
   �upB(Reg%(&B),t%,9,8)
   Reg%(&B)=t%
 & �
 0RB0%=Reg%(6) � 1
 :)PBchange%=(Reg%(6) � &F0) � Reg%(&86)
 D�
 N
 X� �incTimer
 b� pst%,psi%
 l� Sleep% � �
 v
pst%=�
 �� (Reg%(&81) � 8)=0 �
 �psi%=Reg%(&81) � 7
 �psi%=2^(psi% � 7)
 �Prescale%+=psi%
 �(� Prescale%>&FF � Prescale%=0:pst%=�
 ��_PPHm(23,Prescale%)
 ��
 �
pst%=�
 ��
 �
 �� pst% �
 �Reg%(1)+=1
 �� Reg%(1)>&FF �
!
Reg%(1)=0
!6t%=Reg%(&B) � &4:�upB(Reg%(&B),t%,9,8):Reg%(&B)=t%
!�
! �_PPHm(26,Reg%(1))
!*�
!4�
!>
!H� �incPC
!R� A%,t%
!\� (Reg%(&81) � &20)=0 �
!f
�incTimer
!p�
!z � (Reg%(&B) � &A0)=&A0 �
!�  � (Reg%(5) � &10)<>RA4% �
!�1   � RA4%=0 � (Reg%(&81) � &10)=0 � �incTimer
!�3   � RA4%<>0 � (Reg%(&81) � &10)<>0 � �incTimer
!�  �
!� �
!��
!�
!�RA4%=Reg%(5) � &10
!�
!�� goto%=� � Sleep%=� �
!�A%=�incR(2)
!�&� A%=0 � HiPC%=(HiPC%+256) � &1F00
!��_PutPramHex(1,A%+HiPC%)
"�
"goto%=�
"!�_PutPramHex(1,Reg%(2)+HiPC%)
"$�
".
"8� Watchdog% �
"BWatchdogTime%+=1
"L�_PPHm(25,WatchdogTime%)
"V
"`!� WatchdogTime%>WatchLimit% �
"j- WatchdogTime%=0:�_PPHm(25,WatchdogTime%)
"t � (Reg%(&81) � 8)<>0 �
"~
  A%=�
"�  t%=(Reg%(&81) � 7) � 7
"�  t%=(2^t%)<<1
"�  Prescale%+=t%
"�(  � Prescale%>&FF � A%=�:Prescale%=0
"�  �_PPHm(23,Prescale%)
"�  �
"�
  A%=�
"� �
"� 
"� � A% � �(Sleep%) �
"�;  t%=(Reg%(3) � &7) � &8:�upStat(Reg%(3),t%):Reg%(3)=t%
"�  HiPC%=0:Reg%(2)=0
##  �_PutPramHex(1,Reg%(2)+HiPC%)
#
 �
# 
# � Sleep% � A% �
#(5  t%=Reg%(3) � &EF:�upStat(Reg%(3),t%):Reg%(3)=t%
#2%  Sleep%=�:$SPoint%(9)="emledoff"
#<>  ș"Wimp_ForceRedraw",conW%,IX%(9),IY%(9),IX1%(9),IY1%(9)
#F �
#P�
#Z�
#d
#n�
#x
#�� �diss
#�	� op$
#�Found%=�
#�$� (OPcode% � &3000) = 0 � �fbyte
#�2� �(Found%) � (OPcode% � &3000) =&1000 � �fbit
#�� �(Found%) � �fcont
#�h� �(Found%) � �_setupW("Unimplemented Op-code at "+�~(Reg%(2)+HiPC%)):�_PutPramsS(3,"Unimplemented")
#��
#�
#�� �fcont
#�� T%
#�Ȏ OPcode% �
#�� &64: �smake(26,&F00,�)
$� &63: �smake(33,&F00,�)
$�  &9: �smake(30,&F00,�)
$�  &8: �smake(32,&F00,�)
$"
$,C� (OPcode% � &3800)=&2000 � �gmake(25,OPcode% � &3FF,"address")
$6C� (OPcode% � &3800)=&2800 � �gmake(27,OPcode% � &3FF,"address")
$@  � �(Found%) �
$J  T%=(OPcode% � &3F00)>>8
$T
  Ȏ T% �
$^,  � &39:�gmake(24,OPcode% � &FF,"value")
$h,  � &38:�gmake(28,OPcode% � &FF,"value")
$r,  � &3A:�gmake(35,OPcode% � &FF,"value")
$|  �
$�   � �(Found%) �
$�E     � (OPcode% � &3E00)=&3E00 � �gmake(23,OPcode% � &FF,"value")
$�E     � (OPcode% � &3C00)=&3000 � �gmake(29,OPcode% � &FF,"value")
$�E     � (OPcode% � &3C00)=&3400 � �gmake(31,OPcode% � &FF,"value")
$�E     � (OPcode% � &3E00)=&3C00 � �gmake(34,OPcode% � &FF,"value")
$�   �
$�  �
$��
$��
$�
$�� �fbit
$�� A%,p$
$� A%=((OPcode% � &C00)>>10)+19
%Kp$=Mne$(A%)+" file "+�~(OPcode% � &7F)+"h, bit "+�((OPcode% � &380)>>7)
%�_PutPramsS(3,p$)
%Found%=�:OPnumber%=A%
%&�
%0
%:� �fbyte
%D� Trial%,A%
%NTrial%=OPcode% � &3F80
%X/� Trial%=&180 � �smake(3,OPcode% � &7F,�):�
%b&� Trial%=&100 � �smake(4,&F00,�):�
%l8� Trial%=0 � (OPcode% � &9F)=0 � �smake(13,&F00,�):�
%v/� Trial%=&80 � �smake(12,OPcode% � &7F,�):�
%�Trial%=OPcode% � &3F00
%�A%=0
%��
%�	A%+=1
%�� A%=13 � A%+=1
%�� Op%(A%)=Trial% � A%=23
%�)� A%<>23 � �smake(A%,OPcode% � &7F,�)
%�$� OPcode%=&66 � �smake(36,&86,�)
%�$� OPcode%=&65 � �smake(36,&85,�)
%�%� OPcode%=&62 � �smake(37,&F00,�)
%��
%�
%�� �smake(o%,v%,d%)
&� p$
&-� v%>&800 � p$="" � p$="file "+�~(v%)+"h"
&
� d% �
& 3� (OPcode% � &80)=0 � p$=p$+", w" � p$=p$+", f"
&*�
&4"�_PutPramsS(3,Mne$(o%)+" "+p$)
&>Found%=�
&HOPnumber%=o%
&R�
&\
&f� �gmake(o%,v%,a$)
&p� p$
&z,� v%>&800 � p$="" � p$=a$+" "+�~(v%)+"h"
&�"�_PutPramsS(3,Mne$(o%)+" "+p$)
&�Found%=�
&�OPnumber%=o%
&��
&�
&�� �_upIO(o%,new%,s%,n%,r%)
&�� B%,A%
&�� A%=s% � s%+n%-1
&�B%=2^(A%-s%)
&� � (o% � B%) <> (new% � B%) �
&� � (new% � B%)=0 �
&�K � (Reg%(r%) � B%)=0 � $SPoint%(A%)="emledoff" � $SPoint%(A%)="emledon"
&� �
'I � (Reg%(r%) � B%)=0 � $SPoint%(A%)="emswoff" � $SPoint%(A%)="emswon"
' �
'A ș"Wimp_ForceRedraw",conW%,IX%(A%),IY%(A%),IX1%(A%),IY1%(A%)
'$�
'.
'8�
'B�
'L
'V� �upPb(old%,new%)
'`� A%,B%
'j� A%=0 � 7
'tB%=2^A%
'~;� ((old% � B%) <> (new% � B%)) � ((Reg%(&86) � B%)=0) �
'�L� (new% � B%)=0 � $SPoint%(A%+11)="emledoff" � $SPoint%(A%+11)="emledon"
'�Lș"Wimp_ForceRedraw",conW%,IX%(A%+11),IY%(A%+11),IX1%(A%+11),IY1%(A%+11)
'��
'��
'��
'�
'�� �upStat(old%,new%)
'�� A%,B%
'�� A%=0 � 7
'�B%=2^A%
'�"� (old% � B%) <> (new% � B%) �
'�H� (new% � B%)=0 � $SPoint%(A%+24)="emzero" � $SPoint%(A%+24)="emone"
(Lș"Wimp_ForceRedraw",conW%,IX%(A%+24),IY%(A%+24),IX1%(A%+24),IY1%(A%+24)
(
�
(�
(�
((
(2� �upPa(old%,new%)
(<� A%,B%
(F� A%=0 � 4
(PB%=2^A%
(Z;� ((old% � B%) <> (new% � B%)) � ((Reg%(&85) � B%)=0) �
(dL� (new% � B%)=0 � $SPoint%(A%+19)="emledoff" � $SPoint%(A%+19)="emledon"
(nLș"Wimp_ForceRedraw",conW%,IX%(A%+19),IY%(A%+19),IX1%(A%+19),IY1%(A%+19)
(o�
(��
(��
(�
(�� �upB(old%,new%,i%,n%)
(�� A%,B%
(�� A%=0 � n%-1
(�B%=2^A%
(�"� (old% � B%) <> (new% � B%) �
(�J� (new% � B%)=0 � $SPointM%(A%+i%)="emzero" � $SPointM%(A%+i%)="emone"
(�Pș"Wimp_ForceRedraw",monW%,IXM%(A%+i%),IYM%(A%+i%),IX1M%(A%+i%),IY1M%(A%+i%)
(��
(��
(��
)
)A� -----------------------------------------------------------
)� �file
)"� f%,s%
),f%=OPcode% � &7F
)6s%=(Reg%(3) � &20)<<2
)@f%=f% � s%
)J � f%=0 � f%=&80 � f%=Reg%(4)
)T� f%>&89 � f%=f% � &7F
)^#� f%>&81 � f%<&85 � f%=f% � &7F
)h=f%
)r
)|	� �bn
)�=2^((OPcode% � &380)>>7)
)�
)�
� �put
)�� o%,d%,s%
)�� (OPcode% � &80)=0 �
)� Wreg%=t%:�_PutPramHex2(4,t%)
)�,s%=Reg%(3):Reg%(3)=(s% � &F8) � NewStat%
)�'� s%<>Reg%(3) � �upStat(s%,Reg%(3))
)��
)�o%=Reg%(r%)
)�Reg%(r%)=t%
)�Ȏ r% �
)�>�   3: Reg%(3)=(t% � &E7) � (o% � &18):�upStat(o%,Reg%(3))
*A�   1: � (Reg%(&81) � 8)=0 � Prescale%=0:�_PPHm(23,Prescale%)
*L�   5: Reg%(5)=(Reg%(&85) � o%) � ((Reg%(&85) � &1F) � t%) :�upPa(o%,t%)
*M�   6:  Reg%(6)=(Reg%(&86) � o%) � ((Reg%(&86) � &FF) � t%) :�upPb(o%,t%)
*&0�   7: �_setupW("Can't write to register 7")
*0C�   9: Reg%(8)=DataMemS%?(((t% � &3F)<<1)+1):�_PPHm(33,Reg%(8))
*:1� &87: �_setupW("Can't write to register 87")
*D1�  10: �_setupW("Can't write to register 0A")
*N� &85: �_upIO(o%,t%,19,5,5)
*X� &86: �_upIO(o%,t%,11,8,6)
*b&� &88: � (t% � 6)=6 � (o% � 2)=0 �
*l          EtimeOut%=Etime%
*v8          DataMemS%?(((Reg%(9) � &3F)<<1)+1)=Reg%(8)
*�          �
*��
*�,s%=Reg%(3):Reg%(3)=(s% � &F8) � NewStat%
*�'� s%<>Reg%(3) � �upStat(s%,Reg%(3))
*�
*� � Mopen% �
*� Ȏ r% �
*� � &81: �upB(o%,t%,0,8)
*� � &0B: �upB(o%,t%,9,8)
*� � &88: �upB(o%,t%,18,5)
*� � &85: �_PPHm(30,t%)
*� � &86: �_PPHm(31,t%)
*� 
+@   � �(r%=3 � r%=5 � r%=6 � r%=7 � r%=10 � r%=2) � r% <&30 �
+   �_PPHm(r%+25,t%)
+   �
+   �
+* �
+4�
+>�
+H
+R
+\� �bput
+fOPcode%=OPcode% � &80
+p�put
+z�
+�
+�� �wput
+�OPcode%=OPcode% � �(&80)
+��put
+��
+�
+�� �carry
+�� s%
+�s%=0
+�� t%>&FF � s%=1:t%=t% � &FF
+�"NewStat%=(NewStat% � &FE) � s%
+��
+�
,� �zero
,� s%
,s%=0
,$� t%=0 � s%=4
,."NewStat%=(NewStat% � &FB) � s%
,8�
,B
,L	� �dc
,V� s%
,`s%=0
,j� t%>&F � s%=2
,t"NewStat%=(NewStat% � &FD) � s%
,~�
,�
,�
� �pop
,�� A%
,�� A%=1 � 7
,�Stack%(A%-1)=Stack%(A%)
,��
,�Stack%(7)=0
,��udStack
,��
,�
,�� �push
,�� A%
-� A%=6 � 0 � -1
-
Stack%(A%+1)=Stack%(A%)
-�
-�
-(
-2� Execuite a command
-<
� �exe
-F� r%,t%,b%
-PNewStat%=Reg%(3) � 7
-Zr%=�file
-dȎ OPnumber% �
-n0�  1: t%=(Wreg% � &F) + (Reg%(r%) � &F) :�dc
-x2         t%=Wreg% + Reg%(r%):�carry:�zero:�put
-�(�  2: t%=Wreg% � Reg%(r%):�zero:�put
-�"�  3: t%=0:� r%=3 � NewStat%=0
-�         �zero:�put
-�1�  4: t%=0:OPcode%=OPcode% � &3F7F:�zero:�put
-�&�  5: t%=Reg%(r%) � &FF:�zero:�put
-�*�  6: t%=(Reg%(r%)-1) � &FF:�zero:�put
-�*�  7: t%=(Reg%(r%)-1) � &FF:�zero:�put
-�         � t%=0 � �incPC
-�*�  8: t%=(Reg%(r%)+1) � &FF:�zero:�put
-�*�  9: t%=(Reg%(r%)+1) � &FF:�zero:�put
-�         � t%=0 � �incPC
-�(� 10: t%=Wreg% � Reg%(r%):�zero:�put
-� � 11: t%=Reg%(r%):�zero:�put
.$� 12: t%=Wreg%: � r%=2 � goto%=�
.%         � r%=3 � NewStat%=t% � 7
.         �put
."6� 14: t%=(Reg%(r%)<<1) � (Reg%(3) � 1):�carry:�put
.,E� 15: t%=(Reg%(r%)>>1) � ((Reg%(3) � 1)<<7) � ((Reg%(r%) � 1)<<8)
.6         �carry:�put
.@6� 16: t%=((Reg%(r%) � &F)-(Wreg% � &F)) � &FF :�dc
.J6         t%=((Reg%(r%)-Wreg%) � &1FF):�carry:�zero
.T'         NewStat%=NewStat% � 1:�put
.^9� 17: t%=((Reg%(r%) � &F)<<4) � ((Reg%(r%) � &F0)>>4)
.h<         � ((OPcode% � &80)<>0) � r%=3 � NewStat%=t% � 7
.r         �put
.|(� 18: t%=Reg%(r%) � Wreg%:�zero:�put
.�,� 19: b%=(�(�bn)) � &FF:t%=Reg%(r%) � b%
.�>         � r%=3 � NewStat%=NewStat% � b% � (Reg%(3) � &18)
.�         �bput
.�!� 20: b%=�bn:t%=Reg%(r%) � b%
.�>         � r%=3 � NewStat%=NewStat% � b% � (Reg%(3) � &18)
.�         �bput
.�-� 21: b%=�bn:� (b% � Reg%(r%))=0 � �incPC
.�.� 22: b%=�bn:� (b% � Reg%(r%))<>0 � �incPC
.�;� 23: b%=OPcode% � &FF:t%=(Wreg% � &F) + (b% � &F) :�dc
.�+         t%=Wreg%+b%:�carry:�zero:�wput
.�5� 24: b%=OPcode% � &FF :t%=Wreg% � b%:�zero:�wput
.�7� 25: �push:�incPC:Stack%(0)=Reg%(2)+HiPC%:�udStack
.�S         goto%=�:Reg%(2)=OPcode% � &FF:HiPC%=(OPcode% � &700) � (HiPC% � &1800)
/I� 26: WatchdogTime%=0:t%=Reg%(3) � &18:�upStat(Reg%(3),t%):Reg%(3)=t%
/P� 27: goto%=�:Reg%(2)=OPcode% � &FF:HiPC%=(OPcode% � &700) � (HiPC% � &1800)
/5� 28: b%=OPcode% � &FF :t%=Wreg% � b%:�zero:�wput
/&4� 29: Wreg%=OPcode% � &FF:�_PutPramHex2(4,Wreg%)
/0E� 30: Reg%(2)=Stack%(0) � &FF:HiPC%=Stack%(0) � &700:goto%=�:�pop
/:@         t%=Reg%(&B) � &80:�upB(Reg%(&B),t%,9,8):Reg%(&B)=t%
/DE� 31: Reg%(2)=Stack%(0) � &FF:HiPC%=Stack%(0) � &700:goto%=�:�pop
/N:         t%=OPcode% � &FF:OPcode%=OPcode% � &3F7F:�put
/XE� 32: Reg%(2)=Stack%(0) � &FF:HiPC%=Stack%(0) � &700:goto%=�:�pop
/b7� 33: �incPC:�fetchN:Sleep%=�:$SPoint%(9)="emledon"
/lE         ș"Wimp_ForceRedraw",conW%,IX%(9),IY%(9),IX1%(9),IY1%(9)
/vI         t%=(Reg%(3) � &10) � &F7:r%=3:�upStat(Reg%(3),t%):Reg%(3)=t%
/�8� 34: b%=OPcode% � &FF:t%=(b% � &F)-(Wreg% � &F):�dc
/�0         t%=((b%-Wreg%) � &1FF):�carry:�zero
/�(         NewStat%=NewStat% � 1:�wput
/�5� 35: b%=OPcode% � &FF :t%=Wreg% � b%:�zero:�wput
/�� 37: r%=&81:t%=Wreg%:�bput
/�&� 36: r%=(OPcode% � 7) � &80:�bput
/��
/��
�
00000000  0d 00 0a 19 f4 20 50 69  63 20 31 38 43 38 34 20  |..... Pic 18C84 |
00000010  53 69 6d 75 6c 61 74 6f  72 0d 00 14 1e f4 20 56  |Simulator..... V|
00000020  65 72 73 69 6f 6e 20 31  2e 30 20 42 79 20 4d 69  |ersion 1.0 By Mi|
00000030  6b 65 20 43 6f 6f 6b 0d  00 1e 19 f4 20 41 6c 6c  |ke Cook..... All|
00000040  20 72 69 67 68 74 73 20  72 65 73 65 72 76 65 64  | rights reserved|
00000050  0d 00 28 65 de 20 71 25  20 26 33 30 30 2c 71 63  |..(e. q% &300,qc|
00000060  25 20 38 30 2c 20 57 6e  25 20 26 32 35 30 30 2c  |% 80, Wn% &2500,|
00000070  74 65 6d 70 25 20 32 35  36 2c 62 75 66 66 65 72  |temp% 256,buffer|
00000080  73 25 20 35 31 32 2c 6d  65 6e 75 25 20 32 35 36  |s% 512,menu% 256|
00000090  2c 53 57 25 20 32 30 39  36 2c 63 62 25 20 31 38  |,SW% 2096,cb% 18|
000000a0  2c 53 57 4d 25 20 32 30  39 36 2c 57 6e 4d 25 20  |,SWM% 2096,WnM% |
000000b0  26 32 35 30 30 0d 00 32  1c de 20 54 65 78 74 57  |&2500..2.. TextW|
000000c0  61 72 6e 25 20 31 30 30  2c 20 77 77 25 20 32 35  |arn% 100, ww% 25|
000000d0  36 0d 00 3c 04 0d 00 46  11 ee 20 85 20 f2 65 72  |6..<...F.. . .er|
000000e0  72 6f 72 62 6f 78 0d 00  50 2b de 20 74 61 73 6b  |rorbox..P+. task|
000000f0  69 64 25 20 34 2c 69 6e  74 6d 65 73 73 25 20 32  |id% 4,intmess% 2|
00000100  30 3a 24 74 61 73 6b 69  64 25 3d 22 54 41 53 4b  |0:$taskid%="TASK|
00000110  22 0d 00 5a 49 69 6e 74  6d 65 73 73 25 21 30 3d  |"..ZIintmess%!0=|
00000120  31 3a 69 6e 74 6d 65 73  73 25 21 34 3d 32 3a 69  |1:intmess%!4=2:i|
00000130  6e 74 6d 65 73 73 25 21  38 3d 33 3a 69 6e 74 6d  |ntmess%!8=3:intm|
00000140  65 73 73 25 21 31 32 3d  26 35 30 32 3a 69 6e 74  |ess%!12=&502:int|
00000150  6d 65 73 73 25 21 31 36  3d 30 0d 00 64 58 c8 99  |mess%!16=0..dX..|
00000160  20 22 57 69 6d 70 5f 49  6e 69 74 69 61 6c 69 73  | "Wimp_Initialis|
00000170  65 22 2c 33 30 30 2c 21  74 61 73 6b 69 64 25 2c  |e",300,!taskid%,|
00000180  22 50 49 43 31 38 43 38  34 2d 53 69 6d 75 6c 61  |"PIC18C84-Simula|
00000190  74 6f 72 22 2c 69 6e 74  6d 65 73 73 25 20 b8 20  |tor",intmess% . |
000001a0  76 65 72 73 69 6f 6e 25  2c 74 61 73 6b 68 61 6e  |version%,taskhan|
000001b0  64 25 0d 00 6e 04 0d 00  78 0c 4d 78 4c 25 3d 33  |d%..n...x.MxL%=3|
000001c0  30 30 0d 00 82 28 de 20  4d 6e 65 24 28 33 38 29  |00...(. Mne$(38)|
000001d0  2c 4f 70 25 28 33 38 29  2c 49 74 25 28 33 38 29  |,Op%(38),It%(38)|
000001e0  2c 52 65 67 25 28 26 46  46 29 0d 00 8c 12 4e 69  |,Reg%(&FF)....Ni|
000001f0  25 3d 34 34 3a 4e 69 4d  25 3d 37 32 0d 00 96 42  |%=44:NiM%=72...B|
00000200  de 20 53 50 6f 69 6e 74  25 28 4e 69 25 29 2c 49  |. SPoint%(Ni%),I|
00000210  58 25 28 4e 69 25 29 2c  49 59 25 28 4e 69 25 29  |X%(Ni%),IY%(Ni%)|
00000220  2c 49 58 31 25 28 4e 69  25 29 2c 49 59 31 25 28  |,IX1%(Ni%),IY1%(|
00000230  4e 69 25 29 2c 53 74 61  63 6b 25 28 37 29 0d 00  |Ni%),Stack%(7)..|
00000240  a0 42 de 20 53 50 6f 69  6e 74 4d 25 28 4e 69 4d  |.B. SPointM%(NiM|
00000250  25 29 2c 49 58 4d 25 28  4e 69 4d 25 29 2c 49 59  |%),IXM%(NiM%),IY|
00000260  4d 25 28 4e 69 4d 25 29  2c 49 58 31 4d 25 28 4e  |M%(NiM%),IX1M%(N|
00000270  69 4d 25 29 2c 49 59 31  4d 25 28 4e 69 4d 25 29  |iM%),IY1M%(NiM%)|
00000280  0d 00 aa 0f de 20 42 72  65 61 6b 25 28 33 29 0d  |..... Break%(3).|
00000290  00 b4 31 de 20 50 72 6f  67 4d 65 6d 53 25 20 26  |..1. ProgMemS% &|
000002a0  38 30 30 2c 44 61 74 61  4d 65 6d 53 25 20 31 32  |800,DataMemS% 12|
000002b0  38 2c 20 43 6f 6e 66 69  67 4d 65 6d 25 20 31 36  |8, ConfigMem% 16|
000002c0  0d 00 be 04 0d 00 c8 32  c8 99 20 22 57 69 6d 70  |.......2.. "Wimp|
000002d0  5f 4f 70 65 6e 54 65 6d  70 6c 61 74 65 22 2c 2c  |_OpenTemplate",,|
000002e0  22 3c 45 4d 38 34 24 44  69 72 3e 2e 54 65 6d 70  |"<EM84$Dir>.Temp|
000002f0  6c 61 74 65 73 22 0d 00  d2 29 ee 20 85 20 c8 99  |lates"...). . ..|
00000300  20 22 57 69 6d 70 5f 43  6c 6f 73 65 54 65 6d 70  | "Wimp_CloseTemp|
00000310  6c 61 74 65 22 3a f2 65  72 72 6f 72 62 6f 78 0d  |late":.errorbox.|
00000320  00 dc 3a c8 99 20 22 57  69 6d 70 5f 4c 6f 61 64  |..:.. "Wimp_Load|
00000330  54 65 6d 70 6c 61 74 65  22 2c 2c 71 25 2c 74 65  |Template",,q%,te|
00000340  6d 70 25 2c 74 65 6d 70  25 2b 32 35 36 2c 2d 31  |mp%,temp%+256,-1|
00000350  2c 22 49 6e 66 6f 22 2c  30 0d 00 e6 26 c8 99 20  |,"Info",0...&.. |
00000360  22 57 69 6d 70 5f 43 72  65 61 74 65 57 69 6e 64  |"Wimp_CreateWind|
00000370  6f 77 22 2c 2c 71 25 20  b8 20 69 6e 66 6f 25 0d  |ow",,q% . info%.|
00000380  00 f0 04 0d 00 fa 3d c8  99 20 22 57 69 6d 70 5f  |......=.. "Wimp_|
00000390  4c 6f 61 64 54 65 6d 70  6c 61 74 65 22 2c 2c 57  |LoadTemplate",,W|
000003a0  6e 25 2b 34 2c 53 57 25  2c 53 57 25 2b 32 30 39  |n%+4,SW%,SW%+209|
000003b0  36 2c 2d 31 2c 22 43 6f  6e 74 72 6f 6c 22 2c 30  |6,-1,"Control",0|
000003c0  0d 01 04 0d 57 6e 25 21  32 38 3d 2d 31 0d 01 0e  |....Wn%!28=-1...|
000003d0  10 e3 20 41 25 3d 30 20  b8 20 4e 69 25 0d 01 18  |.. A%=0 . Ni%...|
000003e0  24 53 50 6f 69 6e 74 25  28 41 25 29 3d 21 28 57  |$SPoint%(A%)=!(W|
000003f0  6e 25 2b 34 2b 38 38 2b  32 30 2b 33 32 2a 41 25  |n%+4+88+20+32*A%|
00000400  29 0d 01 22 39 49 58 25  28 41 25 29 3d 21 28 57  |).."9IX%(A%)=!(W|
00000410  6e 25 2b 34 2b 38 38 2b  33 32 2a 41 25 29 3a 49  |n%+4+88+32*A%):I|
00000420  59 25 28 41 25 29 3d 21  28 57 6e 25 2b 34 2b 38  |Y%(A%)=!(Wn%+4+8|
00000430  38 2b 34 2b 33 32 2a 41  25 29 0d 01 2c 3e 49 58  |8+4+32*A%)..,>IX|
00000440  31 25 28 41 25 29 3d 21  28 57 6e 25 2b 34 2b 38  |1%(A%)=!(Wn%+4+8|
00000450  38 2b 38 2b 33 32 2a 41  25 29 3a 49 59 31 25 28  |8+8+32*A%):IY1%(|
00000460  41 25 29 3d 21 28 57 6e  25 2b 34 2b 38 38 2b 31  |A%)=!(Wn%+4+88+1|
00000470  32 2b 33 32 2a 41 25 29  0d 01 36 05 ed 0d 01 40  |2+32*A%)..6....@|
00000480  04 0d 01 4a 29 c8 99 20  22 57 69 6d 70 5f 43 72  |...J).. "Wimp_Cr|
00000490  65 61 74 65 57 69 6e 64  6f 77 22 2c 2c 57 6e 25  |eateWindow",,Wn%|
000004a0  2b 34 20 b8 20 63 6f 6e  57 25 0d 01 54 19 57 6e  |+4 . conW%..T.Wn|
000004b0  25 21 30 3d 63 6f 6e 57  25 3a 57 6e 25 21 32 38  |%!0=conW%:Wn%!28|
000004c0  3d 2d 31 0d 01 5e 04 0d  01 68 40 c8 99 20 22 57  |=-1..^...h@.. "W|
000004d0  69 6d 70 5f 4c 6f 61 64  54 65 6d 70 6c 61 74 65  |imp_LoadTemplate|
000004e0  22 2c 2c 57 6e 4d 25 2b  34 2c 53 57 4d 25 2c 53  |",,WnM%+4,SWM%,S|
000004f0  57 4d 25 2b 32 30 39 36  2c 2d 31 2c 22 4d 6f 6e  |WM%+2096,-1,"Mon|
00000500  69 74 6f 72 22 2c 30 0d  01 72 0e 57 6e 4d 25 21  |itor",0..r.WnM%!|
00000510  32 38 3d 2d 31 0d 01 7c  11 e3 20 41 25 3d 30 20  |28=-1..|.. A%=0 |
00000520  b8 20 4e 69 4d 25 0d 01  86 26 53 50 6f 69 6e 74  |. NiM%...&SPoint|
00000530  4d 25 28 41 25 29 3d 21  28 57 6e 4d 25 2b 34 2b  |M%(A%)=!(WnM%+4+|
00000540  38 38 2b 32 30 2b 33 32  2a 41 25 29 0d 01 90 3d  |88+20+32*A%)...=|
00000550  49 58 4d 25 28 41 25 29  3d 21 28 57 6e 4d 25 2b  |IXM%(A%)=!(WnM%+|
00000560  34 2b 38 38 2b 33 32 2a  41 25 29 3a 49 59 4d 25  |4+88+32*A%):IYM%|
00000570  28 41 25 29 3d 21 28 57  6e 4d 25 2b 34 2b 38 38  |(A%)=!(WnM%+4+88|
00000580  2b 34 2b 33 32 2a 41 25  29 0d 01 9a 42 49 58 31  |+4+32*A%)...BIX1|
00000590  4d 25 28 41 25 29 3d 21  28 57 6e 4d 25 2b 34 2b  |M%(A%)=!(WnM%+4+|
000005a0  38 38 2b 38 2b 33 32 2a  41 25 29 3a 49 59 31 4d  |88+8+32*A%):IY1M|
000005b0  25 28 41 25 29 3d 21 28  57 6e 4d 25 2b 34 2b 38  |%(A%)=!(WnM%+4+8|
000005c0  38 2b 31 32 2b 33 32 2a  41 25 29 0d 01 a4 05 ed  |8+12+32*A%).....|
000005d0  0d 01 ae 04 0d 01 b8 2a  c8 99 20 22 57 69 6d 70  |.......*.. "Wimp|
000005e0  5f 43 72 65 61 74 65 57  69 6e 64 6f 77 22 2c 2c  |_CreateWindow",,|
000005f0  57 6e 4d 25 2b 34 20 b8  20 6d 6f 6e 57 25 0d 01  |WnM%+4 . monW%..|
00000600  c2 1b 57 6e 4d 25 21 30  3d 6d 6f 6e 57 25 3a 57  |..WnM%!0=monW%:W|
00000610  6e 4d 25 21 32 38 3d 2d  31 0d 01 cc 04 0d 01 d6  |nM%!28=-1.......|
00000620  39 c8 99 20 22 57 69 6d  70 5f 4c 6f 61 64 54 65  |9.. "Wimp_LoadTe|
00000630  6d 70 6c 61 74 65 22 2c  2c 71 25 2c 77 77 25 2c  |mplate",,q%,ww%,|
00000640  77 77 25 2b 32 35 36 2c  2d 31 2c 22 57 61 72 6e  |ww%+256,-1,"Warn|
00000650  69 6e 67 22 2c 30 0d 01  e0 29 71 25 21 31 30 38  |ing",0...)q%!108|
00000660  3d 54 65 78 74 57 61 72  6e 25 3a 71 25 21 31 31  |=TextWarn%:q%!11|
00000670  32 3d 2d 31 3a 71 25 21  31 31 36 3d 33 30 30 0d  |2=-1:q%!116=300.|
00000680  01 ea 20 58 51 25 3d 71  25 21 38 2d 71 25 21 30  |.. XQ%=q%!8-q%!0|
00000690  3a 59 51 25 3d 71 25 21  31 32 2d 71 25 21 34 0d  |:YQ%=q%!12-q%!4.|
000006a0  01 f4 2a c8 99 20 22 57  69 6d 70 5f 43 72 65 61  |..*.. "Wimp_Crea|
000006b0  74 65 57 69 6e 64 6f 77  22 2c 2c 71 25 20 b8 20  |teWindow",,q% . |
000006c0  77 61 72 6e 69 6e 67 57  25 0d 01 fe 1b c8 99 20  |warningW%...... |
000006d0  22 57 69 6d 70 5f 43 6c  6f 73 65 54 65 6d 70 6c  |"Wimp_CloseTempl|
000006e0  61 74 65 22 0d 02 08 04  0d 02 12 12 73 6d 70 69  |ate"........smpi|
000006f0  63 6f 6e 25 3d a4 69 63  6f 6e 0d 02 1c 1f 77 6f  |con%=.icon....wo|
00000700  70 65 6e 25 3d a3 3a 77  61 72 6e 4f 6e 25 3d a3  |pen%=.:warnOn%=.|
00000710  3a 4d 6f 70 65 6e 25 3d  a3 0d 02 26 0c 49 6e 57  |:Mopen%=...&.InW|
00000720  69 6e 25 3d a3 0d 02 30  23 f2 5f 50 75 74 50 72  |in%=...0#._PutPr|
00000730  61 6d 73 53 28 30 2c 22  44 72 61 67 20 46 69 6c  |amsS(0,"Drag Fil|
00000740  65 20 48 65 72 65 22 29  0d 02 3a 16 53 74 65 70  |e Here")..:.Step|
00000750  25 3d b9 3a 52 75 6e 6e  69 6e 67 25 3d a3 0d 02  |%=.:Running%=...|
00000760  44 22 57 61 74 63 68 64  6f 67 25 3d a3 3a 4d 65  |D"Watchdog%=.:Me|
00000770  72 67 65 25 3d a3 3a 4f  73 63 4f 70 74 25 3d 30  |rge%=.:OscOpt%=0|
00000780  0d 02 4e 29 52 65 73 65  74 69 6e 67 25 3d a3 3a  |..N)Reseting%=.:|
00000790  48 69 50 43 25 3d 30 3a  57 72 65 67 25 3d 30 3a  |HiPC%=0:Wreg%=0:|
000007a0  4f 50 63 6f 64 65 25 3d  30 0d 02 58 1e 53 74 61  |OPcode%=0..X.Sta|
000007b0  74 75 73 25 3d 30 3a 67  6f 74 6f 25 3d a3 3a 53  |tus%=0:goto%=.:S|
000007c0  6c 65 65 70 25 3d a3 0d  02 62 2d 52 65 67 25 28  |leep%=...b-Reg%(|
000007d0  29 3d 30 3a 57 61 74 63  68 64 6f 67 54 69 6d 65  |)=0:WatchdogTime|
000007e0  25 3d 30 3a 57 61 74 63  68 4c 69 6d 69 74 25 3d  |%=0:WatchLimit%=|
000007f0  31 38 30 30 0d 02 63 1b  52 65 67 25 28 35 29 3d  |1800..c.Reg%(5)=|
00000800  26 31 46 3a 52 65 67 25  28 36 29 3d 26 46 46 0d  |&1F:Reg%(6)=&FF.|
00000810  02 6c 27 53 6d 6f 6e 25  3d a3 3a 53 63 6f 6e 74  |.l'Smon%=.:Scont|
00000820  25 3d b9 3a 52 42 30 25  3d 30 3a 50 42 63 68 61  |%=.:RB0%=0:PBcha|
00000830  6e 67 65 25 3d 30 0d 02  76 26 45 74 69 6d 65 4f  |nge%=0..v&EtimeO|
00000840  75 74 25 3d 30 3a 45 74  69 6d 65 25 3d 31 30 30  |ut%=0:Etime%=100|
00000850  3a 50 72 65 73 63 61 6c  65 25 3d 30 0d 02 80 16  |:Prescale%=0....|
00000860  50 72 6f 67 4d 65 6d 25  3d b9 3a 53 6b 69 70 25  |ProgMem%=.:Skip%|
00000870  3d a3 0d 02 8a 17 f2 77  69 70 65 50 72 6f 67 3a  |=......wipeProg:|
00000880  f2 77 69 70 65 44 61 74  61 0d 02 94 0e f2 73 65  |.wipeData.....se|
00000890  74 75 70 6d 65 6e 75 0d  02 9e 0a f2 5f 49 4e 49  |tupmenu....._INI|
000008a0  54 0d 02 a8 04 0d 02 b2  05 f5 0d 02 bc 1d 20 c8  |T............. .|
000008b0  99 20 22 57 69 6d 70 5f  50 6f 6c 6c 22 2c 30 2c  |. "Wimp_Poll",0,|
000008c0  71 25 20 b8 20 41 25 0d  02 c6 0d 20 20 c8 8e 20  |q% . A%....  .. |
000008d0  41 25 20 ca 0d 02 d0 11  20 20 20 c9 20 30 3a f2  |A% .....   . 0:.|
000008e0  5f 4e 75 6c 6c 0d 02 da  0d 20 20 20 c9 20 31 3a  |_Null....   . 1:|
000008f0  ef 37 0d 02 e4 4f 20 20  20 c9 20 32 3a c8 99 22  |.7...O   . 2:.."|
00000900  4f 53 5f 52 65 61 64 4d  6f 64 65 56 61 72 69 61  |OS_ReadModeVaria|
00000910  62 6c 65 22 2c 2d 31 2c  33 20 b8 20 2c 2c 4e 63  |ble",-1,3 . ,,Nc|
00000920  6f 6c 6f 75 72 73 25 3a  20 c8 99 20 22 57 69 6d  |olours%: .. "Wim|
00000930  70 5f 4f 70 65 6e 57 69  6e 64 6f 77 22 2c 2c 71  |p_OpenWindow",,q|
00000940  25 0d 02 ee 12 20 20 20  c9 20 33 3a f2 5f 63 6c  |%....   . 3:._cl|
00000950  6f 73 65 0d 02 f8 21 20  20 20 c9 20 34 3a 49 6e  |ose...!   . 4:In|
00000960  57 69 6e 25 3d a3 3a 4c  58 25 3d 2d 31 3a 4c 59  |Win%=.:LX%=-1:LY|
00000970  25 3d 2d 31 0d 03 02 13  20 20 20 c9 20 35 3a 49  |%=-1....   . 5:I|
00000980  6e 57 69 6e 25 3d b9 0d  03 0c 19 20 20 20 c9 20  |nWin%=.....   . |
00000990  36 3a f2 5f 64 6f 5f 63  6c 69 63 6b 28 71 25 29  |6:._do_click(q%)|
000009a0  0d 03 16 18 20 20 20 c9  20 37 3a f2 5f 50 75 74  |....   . 7:._Put|
000009b0  44 6f 77 6e 28 71 25 29  0d 03 20 15 20 20 20 c9  |Down(q%).. .   .|
000009c0  20 38 3a f2 5f 4b 65 79  50 72 65 73 73 0d 03 2a  | 8:._KeyPress..*|
000009d0  16 20 20 20 c9 20 39 3a  f2 5f 53 4f 52 54 5f 4d  |.   . 9:._SORT_M|
000009e0  65 6e 75 0d 03 34 1b 20  20 20 c9 20 31 37 2c 31  |enu..4.   . 17,1|
000009f0  38 3a f2 72 65 63 65 69  76 65 28 71 25 29 0d 03  |8:.receive(q%)..|
00000a00  3e 08 20 20 20 cb 0d 03  48 08 20 fd 20 a3 0d 03  |>.   ...H. . ...|
00000a10  52 04 0d 03 5c 05 e0 0d  03 66 04 0d 03 70 0c dd  |R...\....f...p..|
00000a20  20 f2 5f 4e 75 6c 6c 0d  03 7a 0e ea 20 58 25 2c  | ._Null..z.. X%,|
00000a30  59 25 2c 42 25 0d 03 84  0e e7 20 77 6f 70 65 6e  |Y%,B%..... wopen|
00000a40  25 20 8c 0d 03 8e 0f c8  97 20 58 25 2c 59 25 2c  |% ....... X%,Y%,|
00000a50  42 25 0d 03 98 7d e7 20  52 65 73 65 74 69 6e 67  |B%...}. Reseting|
00000a60  25 3d b9 20 80 20 42 25  3d 30 20 8c 20 24 53 50  |%=. . B%=0 . $SP|
00000a70  6f 69 6e 74 25 28 38 29  3d 22 72 61 64 69 6f 6f  |oint%(8)="radioo|
00000a80  66 66 22 3a 52 65 73 65  74 69 6e 67 25 3d a3 3a  |ff":Reseting%=.:|
00000a90  c8 99 22 57 69 6d 70 5f  46 6f 72 63 65 52 65 64  |.."Wimp_ForceRed|
00000aa0  72 61 77 22 2c 63 6f 6e  57 25 2c 49 58 25 28 38  |raw",conW%,IX%(8|
00000ab0  29 2c 49 59 25 28 38 29  2c 49 58 31 25 28 38 29  |),IY%(8),IX1%(8)|
00000ac0  2c 49 59 31 25 28 38 29  3a f2 72 65 73 65 74 0d  |,IY1%(8):.reset.|
00000ad0  03 a2 17 e7 20 52 75 6e  6e 69 6e 67 25 20 8c 20  |.... Running% . |
00000ae0  f2 63 79 63 6c 65 0d 03  ac 72 e7 20 52 75 6e 6e  |.cycle...r. Runn|
00000af0  69 6e 67 25 20 80 20 53  74 65 70 25 20 8c 20 52  |ing% . Step% . R|
00000b00  75 6e 6e 69 6e 67 25 3d  a3 3a 24 53 50 6f 69 6e  |unning%=.:$SPoin|
00000b10  74 25 28 31 30 29 3d 22  47 6f 22 3a c8 99 22 57  |t%(10)="Go":.."W|
00000b20  69 6d 70 5f 46 6f 72 63  65 52 65 64 72 61 77 22  |imp_ForceRedraw"|
00000b30  2c 63 6f 6e 57 25 2c 49  58 25 28 31 30 29 2c 49  |,conW%,IX%(10),I|
00000b40  59 25 28 31 30 29 2c 49  58 31 25 28 31 30 29 2c  |Y%(10),IX1%(10),|
00000b50  49 59 31 25 28 31 30 29  0d 03 b6 05 cd 0d 03 c0  |IY1%(10)........|
00000b60  05 e1 0d 03 ca 04 0d 03  d4 11 dd 20 f2 5f 53 4f  |........... ._SO|
00000b70  52 54 5f 4d 65 6e 75 0d  03 de 0c c8 8e 20 21 71  |RT_Menu...... !q|
00000b80  25 20 ca 0d 03 e8 55 20  c9 20 31 3a 20 53 63 6f  |% ....U . 1: Sco|
00000b90  6e 74 25 3d ac 28 53 63  6f 6e 74 25 29 3a e7 20  |nt%=.(Scont%):. |
00000ba0  53 63 6f 6e 74 25 20 8c  20 6d 65 6e 75 25 3f 35  |Scont% . menu%?5|
00000bb0  32 3d 6d 65 6e 75 25 3f  35 32 20 84 20 31 20 8b  |2=menu%?52 . 1 .|
00000bc0  20 6d 65 6e 75 25 3f 35  32 3d 6d 65 6e 75 25 3f  | menu%?52=menu%?|
00000bd0  35 32 20 80 20 26 46 45  0d 03 f2 37 20 20 20 20  |52 . &FE...7    |
00000be0  20 20 20 20 20 e7 20 53  63 6f 6e 74 25 3d a3 20  |     . Scont%=. |
00000bf0  80 20 77 6f 70 65 6e 25  3d b9 20 8c 20 71 25 21  |. wopen%=. . q%!|
00000c00  30 3d 63 6f 6e 57 25 3a  f2 5f 63 6c 6f 73 65 0d  |0=conW%:._close.|
00000c10  03 fc 2b 20 20 20 20 20  20 20 20 20 e7 20 53 63  |..+         . Sc|
00000c20  6f 6e 74 25 3d b9 20 80  20 77 6f 70 65 6e 25 3d  |ont%=. . wopen%=|
00000c30  a3 20 8c 20 f2 5f 4f 70  65 6e 0d 04 06 5b 20 c9  |. . ._Open...[ .|
00000c40  20 32 3a 20 53 6d 6f 6e  25 3d ac 28 53 6d 6f 6e  | 2: Smon%=.(Smon|
00000c50  25 29 3a e7 20 53 6d 6f  6e 25 20 8c 20 6d 65 6e  |%):. Smon% . men|
00000c60  75 25 3f 37 36 3d 6d 65  6e 75 25 3f 37 36 20 84  |u%?76=menu%?76 .|
00000c70  20 31 20 8b 20 6d 65 6e  75 25 3f 37 36 3d 6d 65  | 1 . menu%?76=me|
00000c80  6e 75 25 3f 37 36 20 80  20 26 46 45 3a 4d 65 72  |nu%?76 . &FE:Mer|
00000c90  67 65 25 3d b9 0d 04 10  36 20 20 20 20 20 20 20  |ge%=....6       |
00000ca0  20 20 e7 20 53 6d 6f 6e  25 3d a3 20 80 20 4d 6f  |  . Smon%=. . Mo|
00000cb0  70 65 6e 25 3d b9 20 8c  20 71 25 21 30 3d 6d 6f  |pen%=. . q%!0=mo|
00000cc0  6e 57 25 3a f2 5f 63 6c  6f 73 65 0d 04 1a 2a 20  |nW%:._close...* |
00000cd0  20 20 20 20 20 20 20 20  e7 20 53 6d 6f 6e 25 3d  |        . Smon%=|
00000ce0  b9 20 80 20 4d 6f 70 65  6e 25 3d a3 20 8c 20 f2  |. . Mopen%=. . .|
00000cf0  5f 4f 70 65 6e 0d 04 24  0e 20 c9 20 33 3a 20 f2  |_Open..$. . 3: .|
00000d00  64 69 65 0d 04 2e 05 20  0d 04 38 05 cb 0d 04 42  |die.... ..8....B|
00000d10  05 e1 0d 04 4c 0d dd 20  f2 5f 63 6c 6f 73 65 0d  |....L.. ._close.|
00000d20  04 56 37 e7 20 71 25 21  30 3d 63 6f 6e 57 25 20  |.V7. q%!0=conW% |
00000d30  8c 20 c8 99 22 57 69 6d  70 5f 47 65 74 57 69 6e  |. .."Wimp_GetWin|
00000d40  64 6f 77 49 6e 66 6f 22  2c 2c 57 6e 25 3a 77 6f  |dowInfo",,Wn%:wo|
00000d50  70 65 6e 25 3d a3 0d 04  60 38 e7 20 71 25 21 30  |pen%=...`8. q%!0|
00000d60  3d 6d 6f 6e 57 25 20 8c  20 c8 99 22 57 69 6d 70  |=monW% . .."Wimp|
00000d70  5f 47 65 74 57 69 6e 64  6f 77 49 6e 66 6f 22 2c  |_GetWindowInfo",|
00000d80  2c 57 6e 4d 25 3a 4d 6f  70 65 6e 25 3d a3 0d 04  |,WnM%:Mopen%=...|
00000d90  6a 20 e7 20 71 25 21 30  3d 77 61 72 6e 69 6e 67  |j . q%!0=warning|
00000da0  57 25 20 8c 20 77 61 72  6e 4f 6e 25 3d a3 0d 04  |W% . warnOn%=...|
00000db0  74 1d c8 99 20 22 57 69  6d 70 5f 43 6c 6f 73 65  |t... "Wimp_Close|
00000dc0  57 69 6e 64 6f 77 22 2c  2c 71 25 0d 04 7e 05 e1  |Window",,q%..~..|
00000dd0  0d 04 88 04 0d 04 92 14  dd 20 f2 5f 64 6f 5f 63  |......... ._do_c|
00000de0  6c 69 63 6b 28 71 25 29  0d 04 9c 0c 69 25 3d 71  |lick(q%)....i%=q|
00000df0  25 21 31 36 0d 04 a6 0e  c8 8e 20 71 25 21 31 32  |%!16...... q%!12|
00000e00  20 ca 0d 04 b0 28 c9 20  77 61 72 6e 69 6e 67 57  | ....(. warningW|
00000e10  25 3a 20 71 25 21 30 3d  77 61 72 6e 69 6e 67 57  |%: q%!0=warningW|
00000e20  25 20 3a f2 5f 63 6c 6f  73 65 0d 04 ba 28 c9 20  |% :._close...(. |
00000e30  2d 32 3a 20 f4 20 4c 6f  6f 6b 20 66 69 72 73 74  |-2: . Look first|
00000e40  20 61 74 20 49 63 6f 6e  20 42 61 72 20 43 6c 69  | at Icon Bar Cli|
00000e50  63 6b 0d 04 c4 1e 20 20  20 20 20 20 20 20 e7 20  |ck....        . |
00000e60  71 25 21 31 36 3d 73 6d  70 69 63 6f 6e 25 20 8c  |q%!16=smpicon% .|
00000e70  0d 04 ce 49 20 20 20 20  20 20 20 20 e7 20 71 25  |...I        . q%|
00000e80  21 38 3d 32 20 8c 20 c8  99 22 57 69 6d 70 5f 43  |!8=2 . .."Wimp_C|
00000e90  72 65 61 74 65 4d 65 6e  75 22 2c 2c 6d 65 6e 75  |reateMenu",,menu|
00000ea0  25 2c 71 25 21 30 2d 37  34 2c 33 31 30 3a 49 63  |%,q%!0-74,310:Ic|
00000eb0  6f 6e 4d 65 6e 75 25 3d  b9 0d 04 d8 1d 20 20 20  |onMenu%=.....   |
00000ec0  20 20 20 20 20 e7 20 71  25 21 38 3d 34 20 8c 20  |     . q%!8=4 . |
00000ed0  f2 5f 4f 70 65 6e 0d 04  e2 0d 20 20 20 20 20 20  |._Open....      |
00000ee0  20 20 cd 0d 04 ec 1f c9  20 6d 6f 6e 57 25 3a 20  |  ...... monW%: |
00000ef0  e7 20 71 25 21 38 3d 34  20 8c 20 f2 5f 43 6c 69  |. q%!8=4 . ._Cli|
00000f00  63 6b 0d 04 f6 0c c9 20  63 6f 6e 57 25 3a 0d 05  |ck..... conW%:..|
00000f10  00 1e 20 20 20 20 20 e7  20 71 25 21 38 3d 34 20  |..     . q%!8=4 |
00000f20  8c 20 f2 5f 4d 6f 6e 43  6c 69 63 6b 0d 05 0a 47  |. ._MonClick...G|
00000f30  20 20 20 20 20 e7 20 71  25 21 38 3d 32 20 8c 20  |     . q%!8=2 . |
00000f40  c8 99 22 57 69 6d 70 5f  43 72 65 61 74 65 4d 65  |.."Wimp_CreateMe|
00000f50  6e 75 22 2c 2c 6d 65 6e  75 25 2c 71 25 21 30 2d  |nu",,menu%,q%!0-|
00000f60  39 36 2c 71 25 21 34 3a  49 63 6f 6e 4d 65 6e 75  |96,q%!4:IconMenu|
00000f70  25 3d a3 0d 05 14 09 20  20 20 20 20 0d 05 1e 30  |%=.....     ...0|
00000f80  c9 20 73 61 76 65 57 25  3a 20 44 72 61 67 4f 6e  |. saveW%: DragOn|
00000f90  25 3d b9 3a 20 53 61 76  65 50 72 6f 67 25 3d b9  |%=.: SaveProg%=.|
00000fa0  20 20 3a 20 f2 5f 44 6f  53 61 76 65 0d 05 28 2f  |  : ._DoSave..(/|
00000fb0  c9 20 73 61 76 65 44 25  3a 20 44 72 61 67 4f 6e  |. saveD%: DragOn|
00000fc0  25 3d b9 3a 20 53 61 76  65 50 72 6f 67 25 3d a3  |%=.: SaveProg%=.|
00000fd0  20 3a 20 f2 5f 44 6f 53  61 76 65 0d 05 32 11 20  | : ._DoSave..2. |
00000fe0  20 20 20 20 20 20 20 20  20 20 20 20 0d 05 3c 05  |            ..<.|
00000ff0  cb 0d 05 46 05 e1 0d 05  50 04 0d 05 5a 0d dd 20  |...F....P...Z.. |
00001000  f2 5f 43 6c 69 63 6b 0d  05 64 0e ea 20 41 25 2c  |._Click..d.. A%,|
00001010  43 25 2c 42 25 0d 05 6e  16 20 e7 20 69 25 3c 32  |C%,B%..n. . i%<2|
00001020  33 20 80 20 69 25 3e 2d  31 20 8c 0d 05 78 0c 20  |3 . i%>-1 ...x. |
00001030  41 25 3d 69 25 2d 39 0d  05 82 0a 20 43 25 3d 26  |A%=i%-9.... C%=&|
00001040  42 0d 05 8c 1a 20 e7 20  69 25 3c 38 20 8c 20 43  |B.... . i%<8 . C|
00001050  25 3d 26 38 31 3a 41 25  3d 69 25 0d 05 96 1e 20  |%=&81:A%=i%.... |
00001060  e7 20 69 25 3e 31 37 20  8c 20 43 25 3d 26 38 38  |. i%>17 . C%=&88|
00001070  3a 41 25 3d 69 25 2d 31  38 0d 05 a0 0c 20 42 25  |:A%=i%-18.... B%|
00001080  3d 32 5e 41 25 0d 05 aa  1b 20 52 65 67 25 28 43  |=2^A%.... Reg%(C|
00001090  25 29 3d 52 65 67 25 28  43 25 29 20 82 20 42 25  |%)=Reg%(C%) . B%|
000010a0  0d 05 b4 49 20 e7 20 28  52 65 67 25 28 43 25 29  |...I . (Reg%(C%)|
000010b0  20 80 20 42 25 29 3d 30  20 8c 20 24 53 50 6f 69  | . B%)=0 . $SPoi|
000010c0  6e 74 4d 25 28 69 25 29  3d 22 65 6d 7a 65 72 6f  |ntM%(i%)="emzero|
000010d0  22 20 8b 20 24 53 50 6f  69 6e 74 4d 25 28 69 25  |" . $SPointM%(i%|
000010e0  29 3d 22 65 6d 6f 6e 65  22 0d 05 be 45 20 c8 99  |)="emone"...E ..|
000010f0  22 57 69 6d 70 5f 46 6f  72 63 65 52 65 64 72 61  |"Wimp_ForceRedra|
00001100  77 22 2c 6d 6f 6e 57 25  2c 49 58 4d 25 28 69 25  |w",monW%,IXM%(i%|
00001110  29 2c 49 59 4d 25 28 69  25 29 2c 49 58 31 4d 25  |),IYM%(i%),IX1M%|
00001120  28 69 25 29 2c 49 59 31  4d 25 28 69 25 29 0d 05  |(i%),IY1M%(i%)..|
00001130  c8 05 cd 0d 05 d2 05 e1  0d 05 dc 04 0d 05 e6 0c  |................|
00001140  dd 20 f2 75 70 52 61 64  0d 05 f0 3c c8 99 22 57  |. .upRad...<.."W|
00001150  69 6d 70 5f 46 6f 72 63  65 52 65 64 72 61 77 22  |imp_ForceRedraw"|
00001160  2c 63 6f 6e 57 25 2c 49  58 25 28 36 29 2c 49 59  |,conW%,IX%(6),IY|
00001170  25 28 36 29 2c 49 58 31  25 28 36 29 2c 49 59 31  |%(6),IX1%(6),IY1|
00001180  25 28 36 29 0d 05 fa 3c  c8 99 22 57 69 6d 70 5f  |%(6)...<.."Wimp_|
00001190  46 6f 72 63 65 52 65 64  72 61 77 22 2c 63 6f 6e  |ForceRedraw",con|
000011a0  57 25 2c 49 58 25 28 37  29 2c 49 59 25 28 37 29  |W%,IX%(7),IY%(7)|
000011b0  2c 49 58 31 25 28 37 29  2c 49 59 31 25 28 37 29  |,IX1%(7),IY1%(7)|
000011c0  0d 06 04 40 c8 99 22 57  69 6d 70 5f 46 6f 72 63  |...@.."Wimp_Forc|
000011d0  65 52 65 64 72 61 77 22  2c 63 6f 6e 57 25 2c 49  |eRedraw",conW%,I|
000011e0  58 25 28 34 34 29 2c 49  59 25 28 34 34 29 2c 49  |X%(44),IY%(44),I|
000011f0  58 31 25 28 34 34 29 2c  49 59 31 25 28 34 34 29  |X1%(44),IY1%(44)|
00001200  0d 06 0e 05 e1 0d 06 18  04 0d 06 22 10 dd 20 f2  |...........".. .|
00001210  5f 4d 6f 6e 43 6c 69 63  6b 0d 06 2c 0e ea 20 41  |_MonClick..,.. A|
00001220  25 2c 43 25 2c 42 25 0d  06 36 26 f4 20 44 6f 20  |%,C%,B%..6&. Do |
00001230  74 68 65 20 61 63 74 69  6f 6e 20 66 6f 72 20 61  |the action for a|
00001240  20 77 69 6e 64 6f 77 20  63 6c 69 63 6b 0d 06 40  | window click..@|
00001250  0b c8 8e 20 69 25 20 ca  0d 06 4a 07 20 20 20 0d  |... i% ...J.   .|
00001260  06 54 22 20 20 20 c9 20  35 3a 20 57 61 74 63 68  |.T"   . 5: Watch|
00001270  64 6f 67 25 3d ac 28 57  61 74 63 68 64 6f 67 25  |dog%=.(Watchdog%|
00001280  29 0d 06 5e 43 20 20 20  20 20 20 20 20 20 20 20  |)..^C           |
00001290  e7 20 57 61 74 63 68 64  6f 67 25 3d b9 20 8c 20  |. Watchdog%=. . |
000012a0  24 53 50 6f 69 6e 74 25  28 35 29 3d 22 79 65 73  |$SPoint%(5)="yes|
000012b0  22 20 8b 20 24 53 50 6f  69 6e 74 25 28 35 29 3d  |" . $SPoint%(5)=|
000012c0  22 6e 6f 22 0d 06 68 47  20 20 20 20 20 20 20 20  |"no"..hG        |
000012d0  20 20 20 c8 99 22 57 69  6d 70 5f 46 6f 72 63 65  |   .."Wimp_Force|
000012e0  52 65 64 72 61 77 22 2c  63 6f 6e 57 25 2c 49 58  |Redraw",conW%,IX|
000012f0  25 28 35 29 2c 49 59 25  28 35 29 2c 49 58 31 25  |%(5),IY%(5),IX1%|
00001300  28 35 29 2c 49 59 31 25  28 35 29 0d 06 72 0f 20  |(5),IY1%(5)..r. |
00001310  20 20 20 20 20 20 20 20  20 20 0d 06 7c 0b 20 20  |          ..|.  |
00001320  20 c9 20 36 3a 0d 06 86  2a 20 20 20 20 20 20 20  | . 6:...*       |
00001330  20 20 20 20 e7 20 53 74  65 70 25 3d a3 20 8c 20  |    . Step%=. . |
00001340  53 74 65 70 25 3d b9 3a  53 6b 69 70 25 3d a3 0d  |Step%=.:Skip%=..|
00001350  06 90 5d 20 20 20 20 20  20 20 20 20 20 20 e7 20  |..]           . |
00001360  53 74 65 70 25 20 8c 20  24 53 50 6f 69 6e 74 25  |Step% . $SPoint%|
00001370  28 36 29 3d 22 72 61 64  69 6f 6f 6e 22 3a 24 53  |(6)="radioon":$S|
00001380  50 6f 69 6e 74 25 28 37  29 3d 22 72 61 64 69 6f  |Point%(7)="radio|
00001390  6f 66 66 22 3a 24 53 50  6f 69 6e 74 25 28 34 34  |off":$SPoint%(44|
000013a0  29 3d 22 72 61 64 69 6f  6f 66 66 22 0d 06 9a 15  |)="radiooff"....|
000013b0  20 20 20 20 20 20 20 20  20 20 20 f2 75 70 52 61  |           .upRa|
000013c0  64 0d 06 a4 0f 20 20 20  20 20 20 20 20 20 20 20  |d....           |
000013d0  0d 06 ae 0b 20 20 20 c9  20 37 3a 0d 06 b8 34 20  |....   . 7:...4 |
000013e0  20 20 20 20 20 20 20 20  20 20 e7 20 53 74 65 70  |          . Step|
000013f0  25 3d b9 20 84 20 53 6b  69 70 25 3d b9 20 8c 20  |%=. . Skip%=. . |
00001400  53 74 65 70 25 3d a3 3a  53 6b 69 70 25 3d a3 0d  |Step%=.:Skip%=..|
00001410  06 c2 5f 20 20 20 20 20  20 20 20 20 20 20 e7 20  |.._           . |
00001420  53 74 65 70 25 3d a3 20  8c 20 24 53 50 6f 69 6e  |Step%=. . $SPoin|
00001430  74 25 28 37 29 3d 22 72  61 64 69 6f 6f 6e 22 3a  |t%(7)="radioon":|
00001440  24 53 50 6f 69 6e 74 25  28 36 29 3d 22 72 61 64  |$SPoint%(6)="rad|
00001450  69 6f 6f 66 66 22 3a 24  53 50 6f 69 6e 74 25 28  |iooff":$SPoint%(|
00001460  34 34 29 3d 22 72 61 64  69 6f 6f 66 66 22 0d 06  |44)="radiooff"..|
00001470  cc 15 20 20 20 20 20 20  20 20 20 20 20 f2 75 70  |..           .up|
00001480  52 61 64 0d 06 d6 0f 20  20 20 20 20 20 20 20 20  |Rad....         |
00001490  20 20 0d 06 e0 28 20 20  20 c9 20 34 34 3a 20 e7  |  ...(   . 44: .|
000014a0  20 53 6b 69 70 25 3d a3  20 8c 20 53 6b 69 70 25  | Skip%=. . Skip%|
000014b0  3d b9 3a 53 74 65 70 25  3d b9 0d 06 ea 5e 20 20  |=.:Step%=....^  |
000014c0  20 20 20 20 20 20 20 20  20 20 e7 20 53 6b 69 70  |          . Skip|
000014d0  25 20 8c 20 24 53 50 6f  69 6e 74 25 28 34 34 29  |% . $SPoint%(44)|
000014e0  3d 22 72 61 64 69 6f 6f  6e 22 3a 24 53 50 6f 69  |="radioon":$SPoi|
000014f0  6e 74 25 28 36 29 3d 22  72 61 64 69 6f 6f 66 66  |nt%(6)="radiooff|
00001500  22 3a 24 53 50 6f 69 6e  74 25 28 37 29 3d 22 72  |":$SPoint%(7)="r|
00001510  61 64 69 6f 6f 66 66 22  0d 06 f4 16 20 20 20 20  |adiooff"....    |
00001520  20 20 20 20 20 20 20 20  f2 75 70 52 61 64 0d 06  |        .upRad..|
00001530  fe 10 20 20 20 20 20 20  20 20 20 20 20 20 0d 07  |..            ..|
00001540  08 21 20 20 20 c9 20 38  3a 20 24 53 50 6f 69 6e  |.!   . 8: $SPoin|
00001550  74 25 28 38 29 3d 22 72  61 64 69 6f 6f 6e 22 0d  |t%(8)="radioon".|
00001560  07 12 1a 20 20 20 20 20  20 20 20 20 20 20 52 65  |...           Re|
00001570  73 65 74 69 6e 67 25 3d  b9 0d 07 1c 47 20 20 20  |seting%=....G   |
00001580  20 20 20 20 20 20 20 20  c8 99 22 57 69 6d 70 5f  |        .."Wimp_|
00001590  46 6f 72 63 65 52 65 64  72 61 77 22 2c 63 6f 6e  |ForceRedraw",con|
000015a0  57 25 2c 49 58 25 28 38  29 2c 49 59 25 28 38 29  |W%,IX%(8),IY%(8)|
000015b0  2c 49 58 31 25 28 38 29  2c 49 59 31 25 28 38 29  |,IX1%(8),IY1%(8)|
000015c0  0d 07 26 04 0d 07 30 21  20 20 20 c9 20 31 30 3a  |..&...0!   . 10:|
000015d0  20 52 75 6e 6e 69 6e 67  25 3d ac 28 52 75 6e 6e  | Running%=.(Runn|
000015e0  69 6e 67 25 29 0d 07 3a  43 20 20 20 20 20 20 20  |ing%)..:C       |
000015f0  20 20 20 20 e7 20 52 75  6e 6e 69 6e 67 25 20 8c  |    . Running% .|
00001600  20 24 53 50 6f 69 6e 74  25 28 31 30 29 3d 22 53  | $SPoint%(10)="S|
00001610  74 6f 70 22 20 8b 20 24  53 50 6f 69 6e 74 25 28  |top" . $SPoint%(|
00001620  31 30 29 3d 22 47 6f 22  0d 07 44 4b 20 20 20 20  |10)="Go"..DK    |
00001630  20 20 20 20 20 20 20 c8  99 22 57 69 6d 70 5f 46  |       .."Wimp_F|
00001640  6f 72 63 65 52 65 64 72  61 77 22 2c 63 6f 6e 57  |orceRedraw",conW|
00001650  25 2c 49 58 25 28 31 30  29 2c 49 59 25 28 31 30  |%,IX%(10),IY%(10|
00001660  29 2c 49 58 31 25 28 31  30 29 2c 49 59 31 25 28  |),IX1%(10),IY1%(|
00001670  31 30 29 0d 07 4e 0f 20  20 20 20 20 20 20 20 20  |10)..N.         |
00001680  20 20 0d 07 58 06 20 cb  0d 07 62 05 20 0d 07 6c  |  ..X. ...b. ..l|
00001690  16 20 e7 20 69 25 3e 32  33 20 80 20 69 25 3c 33  |. . i%>23 . i%<3|
000016a0  32 20 8c 0d 07 76 0d 20  41 25 3d 69 25 2d 32 34  |2 ...v. A%=i%-24|
000016b0  0d 07 80 0c 20 42 25 3d  32 5e 41 25 0d 07 8a 19  |.... B%=2^A%....|
000016c0  20 52 65 67 25 28 33 29  3d 52 65 67 25 28 33 29  | Reg%(3)=Reg%(3)|
000016d0  20 82 20 42 25 0d 07 94  46 20 e7 20 28 52 65 67  | . B%...F . (Reg|
000016e0  25 28 33 29 20 80 20 42  25 29 3d 30 20 8c 20 24  |%(3) . B%)=0 . $|
000016f0  53 50 6f 69 6e 74 25 28  69 25 29 3d 22 65 6d 7a  |SPoint%(i%)="emz|
00001700  65 72 6f 22 20 8b 20 24  53 50 6f 69 6e 74 25 28  |ero" . $SPoint%(|
00001710  69 25 29 3d 22 65 6d 6f  6e 65 22 0d 07 9e 41 20  |i%)="emone"...A |
00001720  c8 99 22 57 69 6d 70 5f  46 6f 72 63 65 52 65 64  |.."Wimp_ForceRed|
00001730  72 61 77 22 2c 63 6f 6e  57 25 2c 49 58 25 28 69  |raw",conW%,IX%(i|
00001740  25 29 2c 49 59 25 28 69  25 29 2c 49 58 31 25 28  |%),IY%(i%),IX1%(|
00001750  69 25 29 2c 49 59 31 25  28 69 25 29 0d 07 a8 06  |i%),IY1%(i%)....|
00001760  20 cd 0d 07 b2 05 20 0d  07 bc 16 20 e7 20 69 25  | ..... .... . i%|
00001770  3e 31 30 20 80 20 69 25  3c 31 39 20 8c 0d 07 c6  |>10 . i%<19 ....|
00001780  0d 20 41 25 3d 69 25 2d  31 31 0d 07 d0 0c 20 42  |. A%=i%-11.... B|
00001790  25 3d 32 5e 41 25 0d 07  da 19 20 52 65 67 25 28  |%=2^A%.... Reg%(|
000017a0  36 29 3d 52 65 67 25 28  36 29 20 82 20 42 25 0d  |6)=Reg%(6) . B%.|
000017b0  07 e4 1c 20 e7 20 28 52  65 67 25 28 26 38 36 29  |... . (Reg%(&86)|
000017c0  20 80 20 42 25 29 3c 3e  30 20 8c 0d 07 ee 48 20  | . B%)<>0 ....H |
000017d0  e7 20 28 52 65 67 25 28  36 29 20 80 20 42 25 29  |. (Reg%(6) . B%)|
000017e0  3d 30 20 8c 20 24 53 50  6f 69 6e 74 25 28 69 25  |=0 . $SPoint%(i%|
000017f0  29 3d 22 65 6d 73 77 6f  66 66 22 20 8b 20 24 53  |)="emswoff" . $S|
00001800  50 6f 69 6e 74 25 28 69  25 29 3d 22 65 6d 73 77  |Point%(i%)="emsw|
00001810  6f 6e 22 0d 07 f8 06 20  cc 0d 08 02 4a 20 e7 20  |on".... ....J . |
00001820  28 52 65 67 25 28 36 29  20 80 20 42 25 29 3d 30  |(Reg%(6) . B%)=0|
00001830  20 8c 20 24 53 50 6f 69  6e 74 25 28 69 25 29 3d  | . $SPoint%(i%)=|
00001840  22 65 6d 6c 65 64 6f 66  66 22 20 8b 20 24 53 50  |"emledoff" . $SP|
00001850  6f 69 6e 74 25 28 69 25  29 3d 22 65 6d 6c 65 64  |oint%(i%)="emled|
00001860  6f 6e 22 0d 08 0c 05 20  0d 08 16 06 20 cd 0d 08  |on".... .... ...|
00001870  20 41 20 c8 99 22 57 69  6d 70 5f 46 6f 72 63 65  | A .."Wimp_Force|
00001880  52 65 64 72 61 77 22 2c  63 6f 6e 57 25 2c 49 58  |Redraw",conW%,IX|
00001890  25 28 69 25 29 2c 49 59  25 28 69 25 29 2c 49 58  |%(i%),IY%(i%),IX|
000018a0  31 25 28 69 25 29 2c 49  59 31 25 28 69 25 29 0d  |1%(i%),IY1%(i%).|
000018b0  08 2a 06 20 cd 0d 08 34  05 20 0d 08 3e 16 20 e7  |.*. ...4. ..>. .|
000018c0  20 69 25 3e 31 38 20 80  20 69 25 3c 32 34 20 8c  | i%>18 . i%<24 .|
000018d0  0d 08 48 0d 20 41 25 3d  69 25 2d 31 39 0d 08 52  |..H. A%=i%-19..R|
000018e0  0c 20 42 25 3d 32 5e 41  25 0d 08 5c 19 20 52 65  |. B%=2^A%..\. Re|
000018f0  67 25 28 35 29 3d 52 65  67 25 28 35 29 20 82 20  |g%(5)=Reg%(5) . |
00001900  42 25 0d 08 66 1c 20 e7  20 28 52 65 67 25 28 26  |B%..f. . (Reg%(&|
00001910  38 35 29 20 80 20 42 25  29 3c 3e 30 20 8c 0d 08  |85) . B%)<>0 ...|
00001920  70 48 20 e7 20 28 52 65  67 25 28 35 29 20 80 20  |pH . (Reg%(5) . |
00001930  42 25 29 3d 30 20 8c 20  24 53 50 6f 69 6e 74 25  |B%)=0 . $SPoint%|
00001940  28 69 25 29 3d 22 65 6d  73 77 6f 66 66 22 20 8b  |(i%)="emswoff" .|
00001950  20 24 53 50 6f 69 6e 74  25 28 69 25 29 3d 22 65  | $SPoint%(i%)="e|
00001960  6d 73 77 6f 6e 22 0d 08  7a 06 20 cc 0d 08 84 4a  |mswon"..z. ....J|
00001970  20 e7 20 28 52 65 67 25  28 35 29 20 80 20 42 25  | . (Reg%(5) . B%|
00001980  29 3d 30 20 8c 20 24 53  50 6f 69 6e 74 25 28 69  |)=0 . $SPoint%(i|
00001990  25 29 3d 22 65 6d 6c 65  64 6f 66 66 22 20 8b 20  |%)="emledoff" . |
000019a0  24 53 50 6f 69 6e 74 25  28 69 25 29 3d 22 65 6d  |$SPoint%(i%)="em|
000019b0  6c 65 64 6f 6e 22 0d 08  8e 06 20 cd 0d 08 98 41  |ledon".... ....A|
000019c0  20 c8 99 22 57 69 6d 70  5f 46 6f 72 63 65 52 65  | .."Wimp_ForceRe|
000019d0  64 72 61 77 22 2c 63 6f  6e 57 25 2c 49 58 25 28  |draw",conW%,IX%(|
000019e0  69 25 29 2c 49 59 25 28  69 25 29 2c 49 58 31 25  |i%),IY%(i%),IX1%|
000019f0  28 69 25 29 2c 49 59 31  25 28 69 25 29 0d 08 a2  |(i%),IY1%(i%)...|
00001a00  06 20 cd 0d 08 ac 05 20  0d 08 b6 05 e1 0d 08 c0  |. ..... ........|
00001a10  04 0d 08 ca 0c dd 20 f2  5f 4f 70 65 6e 0d 08 d4  |...... ._Open...|
00001a20  2e c8 99 22 4f 53 5f 52  65 61 64 4d 6f 64 65 56  |..."OS_ReadModeV|
00001a30  61 72 69 61 62 6c 65 22  2c 2d 31 2c 33 20 b8 20  |ariable",-1,3 . |
00001a40  2c 2c 4e 63 6f 6c 6f 75  72 73 25 0d 08 de 19 f4  |,,Ncolours%.....|
00001a50  20 4f 50 45 4e 20 55 50  20 57 49 4e 44 4f 57 20  | OPEN UP WINDOW |
00001a60  48 45 52 45 0d 08 e8 0d  e7 20 53 6d 6f 6e 25 20  |HERE..... Smon% |
00001a70  8c 0d 08 f2 0e e7 20 4d  6f 70 65 6e 25 20 8c 0d  |...... Mopen% ..|
00001a80  08 fc 0e 71 25 21 30 3d  6d 6f 6e 57 25 0d 09 06  |...q%!0=monW%...|
00001a90  1f c8 99 22 57 69 6d 70  5f 47 65 74 57 69 6e 64  |..."Wimp_GetWind|
00001aa0  6f 77 53 74 61 74 65 22  2c 2c 71 25 0d 09 10 36  |owState",,q%...6|
00001ab0  20 20 e7 20 71 25 21 32  38 3c 3e 2d 31 20 8c 20  |  . q%!28<>-1 . |
00001ac0  71 25 21 32 38 3d 2d 31  3a 20 c8 99 20 22 57 69  |q%!28=-1: .. "Wi|
00001ad0  6d 70 5f 4f 70 65 6e 57  69 6e 64 6f 77 22 2c 2c  |mp_OpenWindow",,|
00001ae0  71 25 0d 09 1a 05 cc 0d  09 24 1e c8 99 20 22 57  |q%.......$... "W|
00001af0  69 6d 70 5f 4f 70 65 6e  57 69 6e 64 6f 77 22 2c  |imp_OpenWindow",|
00001b00  2c 57 6e 4d 25 0d 09 2e  0c 4d 6f 70 65 6e 25 3d  |,WnM%....Mopen%=|
00001b10  b9 0d 09 38 05 cd 0d 09  42 05 cd 0d 09 4c 04 0d  |...8....B....L..|
00001b20  09 56 0e e7 20 53 63 6f  6e 74 25 20 8c 0d 09 60  |.V.. Scont% ...`|
00001b30  0e e7 20 77 6f 70 65 6e  25 20 8c 0d 09 6a 0e 71  |.. wopen% ...j.q|
00001b40  25 21 30 3d 63 6f 6e 57  25 0d 09 74 1f c8 99 22  |%!0=conW%..t..."|
00001b50  57 69 6d 70 5f 47 65 74  57 69 6e 64 6f 77 53 74  |Wimp_GetWindowSt|
00001b60  61 74 65 22 2c 2c 71 25  0d 09 7e 36 20 20 e7 20  |ate",,q%..~6  . |
00001b70  71 25 21 32 38 3c 3e 2d  31 20 8c 20 71 25 21 32  |q%!28<>-1 . q%!2|
00001b80  38 3d 2d 31 3a 20 c8 99  20 22 57 69 6d 70 5f 4f  |8=-1: .. "Wimp_O|
00001b90  70 65 6e 57 69 6e 64 6f  77 22 2c 2c 71 25 0d 09  |penWindow",,q%..|
00001ba0  88 05 cc 0d 09 92 1d c8  99 20 22 57 69 6d 70 5f  |......... "Wimp_|
00001bb0  4f 70 65 6e 57 69 6e 64  6f 77 22 2c 2c 57 6e 25  |OpenWindow",,Wn%|
00001bc0  0d 09 9c 0c 77 6f 70 65  6e 25 3d b9 0d 09 a6 05  |....wopen%=.....|
00001bd0  cd 0d 09 b0 05 cd 0d 09  ba 04 0d 09 c4 05 e1 0d  |................|
00001be0  09 ce 04 0d 09 d8 0f dd  f2 73 65 74 75 70 6d 65  |.........setupme|
00001bf0  6e 75 0d 09 e2 08 ea 20  6d 25 0d 09 ec 04 0d 09  |nu..... m%......|
00001c00  f6 15 24 6d 65 6e 75 25  3d 22 53 69 6d 75 6c 61  |..$menu%="Simula|
00001c10  74 65 22 0d 0a 00 0e 6d  65 6e 75 25 3f 31 32 3d  |te"....menu%?12=|
00001c20  37 0d 0a 0a 0e 6d 65 6e  75 25 3f 31 33 3d 32 0d  |7....menu%?13=2.|
00001c30  0a 14 0e 6d 65 6e 75 25  3f 31 34 3d 37 0d 0a 1e  |...menu%?14=7...|
00001c40  0e 6d 65 6e 75 25 3f 31  35 3d 30 0d 0a 28 10 6d  |.menu%?15=0..(.m|
00001c50  65 6e 75 25 21 31 36 3d  31 32 38 0d 0a 32 0f 6d  |enu%!16=128..2.m|
00001c60  65 6e 75 25 21 32 30 3d  34 30 0d 0a 3c 0e 6d 65  |enu%!20=40..<.me|
00001c70  6e 75 25 21 32 34 3d 30  0d 0a 46 0f 6d 25 3d 6d  |nu%!24=0..F.m%=m|
00001c80  65 6e 75 25 2b 32 38 0d  0a 50 0a 6d 25 21 30 3d  |enu%+28..P.m%!0=|
00001c90  32 0d 0a 5a 0e 6d 25 21  34 3d 69 6e 66 6f 25 0d  |2..Z.m%!4=info%.|
00001ca0  0a 64 18 6d 25 21 38 3d  28 37 3c 3c 32 34 29 84  |.d.m%!8=(7<<24).|
00001cb0  20 25 31 30 30 30 31 0d  0a 6e 13 24 28 6d 25 2b  | %10001..n.$(m%+|
00001cc0  31 32 29 3d 22 49 6e 66  6f 22 0d 0a 78 04 0d 0a  |12)="Info"..x...|
00001cd0  82 0a 6d 25 2b 3d 32 34  0d 0a 8c 0a 6d 25 21 30  |..m%+=24....m%!0|
00001ce0  3d 31 0d 0a 96 0a 6d 25  21 34 3d 30 0d 0a a0 18  |=1....m%!4=0....|
00001cf0  6d 25 21 38 3d 28 37 3c  3c 32 34 29 84 20 25 31  |m%!8=(7<<24). %1|
00001d00  30 30 30 31 0d 0a aa 16  24 28 6d 25 2b 31 32 29  |0001....$(m%+12)|
00001d10  3d 22 43 6f 6e 74 72 6f  6c 22 0d 0a b4 04 0d 0a  |="Control"......|
00001d20  be 0a 6d 25 2b 3d 32 34  0d 0a c8 0a 6d 25 21 30  |..m%+=24....m%!0|
00001d30  3d 32 0d 0a d2 0a 6d 25  21 34 3d 30 0d 0a dc 18  |=2....m%!4=0....|
00001d40  6d 25 21 38 3d 28 37 3c  3c 32 34 29 84 20 25 31  |m%!8=(7<<24). %1|
00001d50  30 30 30 31 0d 0a e6 16  24 28 6d 25 2b 31 32 29  |0001....$(m%+12)|
00001d60  3d 22 4d 6f 6e 69 74 6f  72 22 0d 0a f0 04 0d 0a  |="Monitor"......|
00001d70  fa 0a 6d 25 2b 3d 32 34  0d 0b 04 0c 6d 25 21 30  |..m%+=24....m%!0|
00001d80  3d 26 38 30 0d 0b 0e 0a  6d 25 21 34 3d 30 0d 0b  |=&80....m%!4=0..|
00001d90  18 18 6d 25 21 38 3d 28  37 3c 3c 32 34 29 84 20  |..m%!8=(7<<24). |
00001da0  25 31 30 30 30 31 0d 0b  22 13 24 28 6d 25 2b 31  |%10001..".$(m%+1|
00001db0  32 29 3d 22 51 75 69 74  22 0d 0b 2c 04 0d 0b 36  |2)="Quit"..,...6|
00001dc0  05 e1 0d 0b 40 04 0d 0b  4a 12 dd 20 f2 72 65 63  |....@...J.. .rec|
00001dd0  65 69 76 65 28 71 25 29  0d 0b 54 08 ea 20 41 25  |eive(q%)..T.. A%|
00001de0  0d 0b 5e 0c 41 25 3d 71  25 21 31 36 0d 0b 68 0b  |..^.A%=q%!16..h.|
00001df0  c8 8e 20 41 25 20 ca 0d  0b 72 0c c9 20 30 3a f2  |.. A% ...r.. 0:.|
00001e00  64 69 65 0d 0b 7c 04 0d  0b 86 17 c9 20 33 3a 6e  |die..|...... 3:n|
00001e10  24 3d a4 73 67 65 74 28  71 25 2b 34 34 29 0d 0b  |$=.sget(q%+44)..|
00001e20  90 27 20 20 20 20 20 20  20 73 65 6e 64 74 68 25  |.'       sendth%|
00001e30  3d 71 25 21 34 3a 69 63  6f 6e 74 79 70 65 25 3d  |=q%!4:icontype%=|
00001e40  71 25 21 34 30 0d 0b 9a  16 20 20 20 20 20 20 20  |q%!40....       |
00001e50  6d 79 72 65 66 25 3d 71  25 21 38 0d 0b a4 4b 20  |myref%=q%!8...K |
00001e60  20 20 20 20 20 20 e7 20  69 63 6f 6e 74 79 70 65  |      . icontype|
00001e70  25 3d 26 38 34 20 80 20  28 20 28 71 25 21 32 30  |%=&84 . ( (q%!20|
00001e80  3d 2d 32 20 80 20 71 25  21 32 34 3d 73 6d 70 69  |=-2 . q%!24=smpi|
00001e90  63 6f 6e 25 29 20 84 20  71 25 21 32 30 3d 63 6f  |con%) . q%!20=co|
00001ea0  6e 57 25 29 20 8c 0d 0b  ae 17 20 20 20 20 20 20  |nW%) .....      |
00001eb0  20 20 f2 5f 46 6e 61 6d  65 28 6e 24 29 0d 0b b8  |  ._Fname(n$)...|
00001ec0  12 20 20 20 20 20 20 20  20 f2 5f 44 61 63 6b 0d  |.        ._Dack.|
00001ed0  0b c2 16 20 20 20 20 20  20 20 20 f2 5f 4c 6f 61  |...        ._Loa|
00001ee0  64 28 6e 24 29 0d 0b cc  1f 20 20 20 20 20 20 20  |d(n$)....       |
00001ef0  20 e7 20 77 6f 70 65 6e  25 3d a3 20 8c 20 f2 5f  | . wopen%=. . ._|
00001f00  4f 70 65 6e 0d 0b d6 0d  20 20 20 20 20 20 20 20  |Open....        |
00001f10  cc 0d 0b e0 43 20 20 20  20 20 20 20 20 e7 20 69  |....C        . i|
00001f20  63 6f 6e 74 79 70 65 25  3c 3e 26 38 34 20 8c 20  |contype%<>&84 . |
00001f30  f2 5f 73 65 74 75 70 57  28 22 4e 65 65 64 20 61  |._setupW("Need a|
00001f40  20 31 36 43 38 34 20 6f  62 6a 65 63 74 20 66 69  | 16C84 object fi|
00001f50  6c 65 22 29 0d 0b ea 0c  20 20 20 20 20 20 20 cd  |le")....       .|
00001f60  0d 0b f4 14 c9 20 26 35  30 32 3a 20 20 20 c8 8e  |..... &502:   ..|
00001f70  20 b9 20 ca 0d 0b fe 6c  20 20 20 20 20 20 20 20  | . ....l        |
00001f80  20 20 20 20 20 c9 20 71  25 21 33 32 3d 2d 32 20  |     . q%!32=-2 |
00001f90  80 20 71 25 21 33 36 3d  73 6d 70 69 63 6f 6e 25  |. q%!36=smpicon%|
00001fa0  3a 6d 65 73 24 3d 22 54  68 69 73 20 69 73 20 74  |:mes$="This is t|
00001fb0  68 65 20 50 49 43 20 53  69 6d 75 6c 61 74 6f 72  |he PIC Simulator|
00001fc0  20 69 63 6f 6e 2e 7c 4d  52 75 6e 20 50 49 43 20  | icon.|MRun PIC |
00001fd0  63 68 69 70 20 70 72 6f  67 72 61 6d 6d 65 73 22  |chip programmes"|
00001fe0  0d 0c 08 1a 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
00001ff0  20 7f 3a 6d 65 73 24 3d  22 22 0d 0c 12 12 20 20  | .:mes$=""....  |
00002000  20 20 20 20 20 20 20 20  20 20 20 cb 0d 0c 1c 14  |           .....|
00002010  20 20 20 20 e7 20 6d 65  73 24 3c 3e 22 22 20 8c  |    . mes$<>"" .|
00002020  0d 0c 26 12 20 20 20 20  71 25 21 31 32 3d 71 25  |..&.    q%!12=q%|
00002030  21 38 0d 0c 30 18 20 20  20 20 24 28 71 25 2b 32  |!8..0.    $(q%+2|
00002040  30 29 3d 6d 65 73 24 2b  bd 30 0d 0c 3a 1e 20 20  |0)=mes$+.0..:.  |
00002050  20 20 71 25 21 30 3d 28  32 30 2b a9 6d 65 73 24  |  q%!0=(20+.mes$|
00002060  2b 34 29 80 20 ac 20 33  0d 0c 44 12 20 20 20 20  |+4). . 3..D.    |
00002070  71 25 21 31 36 3d 26 35  30 33 0d 0c 4e 28 20 20  |q%!16=&503..N(  |
00002080  20 20 c8 99 20 22 57 69  6d 70 5f 53 65 6e 64 4d  |  .. "Wimp_SendM|
00002090  65 73 73 61 67 65 22 2c  31 38 2c 71 25 2c 71 25  |essage",18,q%,q%|
000020a0  21 34 0d 0c 58 05 cb 0d  0c 62 05 e1 0d 0c 6c 04  |!4..X....b....l.|
000020b0  0d 0c 76 0c dd 20 f2 5f  44 61 63 6b 0d 0c 80 10  |..v.. ._Dack....|
000020c0  73 65 6e 64 74 68 25 3d  71 25 21 34 0d 0c 8a 0f  |sendth%=q%!4....|
000020d0  6d 79 72 65 66 25 3d 71  25 21 38 0d 0c 94 22 c8  |myref%=q%!8...".|
000020e0  99 20 22 57 69 6d 70 5f  47 65 74 50 6f 69 6e 74  |. "Wimp_GetPoint|
000020f0  65 72 49 6e 66 6f 22 2c  2c 71 25 2b 38 0d 0c 9e  |erInfo",,q%+8...|
00002100  0e 71 25 21 32 38 3d 71  25 21 38 0d 0c a8 0f 71  |.q%!28=q%!8....q|
00002110  25 21 33 32 3d 71 25 21  31 32 0d 0c b2 18 71 25  |%!32=q%!12....q%|
00002120  21 30 3d 28 34 34 2b a9  6e 24 2b 34 29 80 20 ac  |!0=(44+.n$+4). .|
00002130  20 33 0d 0c bc 10 71 25  21 31 32 3d 6d 79 72 65  | 3....q%!12=myre|
00002140  66 25 0d 0c c6 0b 71 25  21 31 36 3d 34 0d 0c d0  |f%....q%!16=4...|
00002150  0c 71 25 21 33 36 3d 2d  31 0d 0c da 0e 71 25 21  |.q%!36=-1....q%!|
00002160  34 30 3d 26 46 46 39 0d  0c e4 12 24 28 71 25 2b  |40=&FF9....$(q%+|
00002170  34 34 29 3d 6e 24 2b bd  30 0d 0c ee 27 c8 99 20  |44)=n$+.0...'.. |
00002180  22 57 69 6d 70 5f 53 65  6e 64 4d 65 73 73 61 67  |"Wimp_SendMessag|
00002190  65 22 2c 31 37 2c 71 25  2c 73 65 6e 64 74 68 25  |e",17,q%,sendth%|
000021a0  0d 0c f8 05 cd 0d 0d 02  05 e1 0d 0d 0c 04 0d 0d  |................|
000021b0  16 0e dd a4 73 67 65 74  28 78 25 29 0d 0d 20 08  |....sget(x%).. .|
000021c0  ea 20 78 24 0d 0d 2a 21  c8 95 20 3f 78 25 3e 26  |. x$..*!.. ?x%>&|
000021d0  31 46 20 78 24 2b 3d bd  28 3f 78 25 29 3a 78 25  |1F x$+=.(?x%):x%|
000021e0  2b 3d 31 3a ce 0d 0d 34  07 3d 78 24 0d 0d 3e 04  |+=1:...4.=x$..>.|
000021f0  0d 0d 48 0a dd a4 69 63  6f 6e 0d 0d 52 0b 71 25  |..H...icon..R.q%|
00002200  21 30 3d 2d 31 0d 0d 5c  0a 71 25 21 34 3d 30 0d  |!0=-1..\.q%!4=0.|
00002210  0d 66 1b 71 25 21 38 3d  31 30 20 3a 20 f4 20 59  |.f.q%!8=10 : . Y|
00002220  20 44 49 52 45 43 54 49  4f 4e 0d 0d 70 1c 71 25  | DIRECTION..p.q%|
00002230  21 31 32 3d 37 30 20 3a  20 f4 20 58 20 44 49 52  |!12=70 : . X DIR|
00002240  45 43 54 49 4f 4e 0d 0d  7a 0c 71 25 21 31 36 3d  |ECTION..z.q%!16=|
00002250  39 36 0d 0d 84 0f 71 25  21 32 30 3d 26 32 30 30  |96....q%!20=&200|
00002260  32 0d 0d 8e 15 24 28 71  25 2b 32 34 29 3d 22 21  |2....$(q%+24)="!|
00002270  73 69 6d 38 34 22 0d 0d  98 24 c8 99 20 22 57 69  |sim84"...$.. "Wi|
00002280  6d 70 5f 43 72 65 61 74  65 49 63 6f 6e 22 2c 2c  |mp_CreateIcon",,|
00002290  71 25 20 b8 20 69 63 6f  6e 25 0d 0d a2 0a 3d 69  |q% . icon%....=i|
000022a0  63 6f 6e 25 0d 0d ac 04  0d 0d b6 2e dd 20 f2 64  |con%......... .d|
000022b0  72 61 67 69 63 6f 6e 28  6d 6f 75 73 65 78 25 2c  |ragicon(mousex%,|
000022c0  6d 6f 75 73 65 79 25 2c  68 61 6e 64 6c 65 25 2c  |mousey%,handle%,|
000022d0  69 63 6f 6e 25 29 0d 0d  c0 21 ea 20 62 78 25 2c  |icon%)...!. bx%,|
000022e0  62 79 25 2c 69 78 30 25  2c 69 79 30 25 2c 69 78  |by%,ix0%,iy0%,ix|
000022f0  31 25 2c 69 79 31 25 0d  0d ca 12 f2 67 65 74 77  |1%,iy1%.....getw|
00002300  28 68 61 6e 64 6c 65 25  29 0d 0d d4 18 f2 67 65  |(handle%).....ge|
00002310  74 69 28 68 61 6e 64 6c  65 25 2c 69 63 6f 6e 25  |ti(handle%,icon%|
00002320  29 0d 0d de 16 21 71 25  3d 68 61 6e 64 6c 65 25  |)....!q%=handle%|
00002330  3a 71 25 21 34 3d 35 0d  0d e8 3e 71 25 21 38 3d  |:q%!4=5...>q%!8=|
00002340  62 78 25 2b 69 78 30 25  3a 71 25 21 31 32 3d 62  |bx%+ix0%:q%!12=b|
00002350  79 25 2b 69 79 30 25 3a  71 25 21 31 36 3d 62 78  |y%+iy0%:q%!16=bx|
00002360  25 2b 69 78 31 25 3a 71  25 21 32 30 3d 62 79 25  |%+ix1%:q%!20=by%|
00002370  2b 69 79 31 25 0d 0d f2  2a 71 25 21 32 34 3d 71  |+iy1%...*q%!24=q|
00002380  25 21 38 2d 6d 6f 75 73  65 78 25 3a 71 25 21 32  |%!8-mousex%:q%!2|
00002390  38 3d 71 25 21 31 32 2d  6d 6f 75 73 65 79 25 0d  |8=q%!12-mousey%.|
000023a0  0d fc 19 c8 99 20 22 57  69 6d 70 5f 44 72 61 67  |..... "Wimp_Drag|
000023b0  42 6f 78 22 2c 2c 71 25  0d 0e 06 0c 53 46 4c 41  |Box",,q%....SFLA|
000023c0  47 25 3d b9 0d 0e 10 05  e1 0d 0e 1a 04 0d 0e 24  |G%=............$|
000023d0  0f dd 20 f2 69 6e 66 6f  28 70 25 29 0d 0e 2e 0d  |.. .info(p%)....|
000023e0  ea 20 78 30 25 2c 79 30  25 0d 0e 38 27 78 30 25  |. x0%,y0%..8'x0%|
000023f0  3d 21 70 25 3a 79 30 25  3d 70 25 21 34 3a 78 31  |=!p%:y0%=p%!4:x1|
00002400  25 3d 70 25 21 38 3a 79  31 25 3d 70 25 21 31 32  |%=p%!8:y1%=p%!12|
00002410  0d 0e 42 35 73 63 78 25  3d 70 25 21 31 36 3a 73  |..B5scx%=p%!16:s|
00002420  63 79 25 3d 70 25 21 32  30 3a 62 68 61 6e 64 6c  |cy%=p%!20:bhandl|
00002430  65 25 3d 70 25 21 32 34  3a 66 6c 61 67 73 25 3d  |e%=p%!24:flags%=|
00002440  70 25 21 32 38 0d 0e 4c  1d 62 78 25 3d 78 30 25  |p%!28..L.bx%=x0%|
00002450  2d 73 63 78 25 3a 62 79  25 3d 79 31 25 2d 73 63  |-scx%:by%=y1%-sc|
00002460  79 25 0d 0e 56 05 e1 0d  0e 60 04 0d 0e 6a 14 dd  |y%..V....`...j..|
00002470  20 f2 67 65 74 77 28 68  61 6e 64 6c 65 25 29 0d  | .getw(handle%).|
00002480  0e 74 38 21 71 25 3d 68  61 6e 64 6c 65 25 3a c8  |.t8!q%=handle%:.|
00002490  99 20 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |. "Wimp_GetWindo|
000024a0  77 53 74 61 74 65 22 2c  2c 71 25 3a f2 69 6e 66  |wState",,q%:.inf|
000024b0  6f 28 71 25 2b 34 29 0d  0e 7e 05 e1 0d 0e 88 12  |o(q%+4)..~......|
000024c0  dd 20 f2 67 65 74 69 28  68 25 2c 69 25 29 0d 0e  |. .geti(h%,i%)..|
000024d0  92 2d 21 71 25 3d 68 25  3a 71 25 21 34 3d 69 25  |.-!q%=h%:q%!4=i%|
000024e0  3a c8 99 20 22 57 69 6d  70 5f 47 65 74 49 63 6f  |:.. "Wimp_GetIco|
000024f0  6e 53 74 61 74 65 22 2c  2c 71 25 0d 0e 9c 2e 69  |nState",,q%....i|
00002500  78 30 25 3d 71 25 21 38  3a 69 79 30 25 3d 71 25  |x0%=q%!8:iy0%=q%|
00002510  21 31 32 3a 69 78 31 25  3d 71 25 21 31 36 3a 69  |!12:ix1%=q%!16:i|
00002520  79 31 25 3d 71 25 21 32  30 0d 0e a6 1e 69 66 6c  |y1%=q%!20....ifl|
00002530  61 67 73 25 3d 71 25 21  32 34 3a 69 64 61 74 61  |ags%=q%!24:idata|
00002540  25 3d 71 25 2b 32 38 0d  0e b0 05 e1 0d 0e ba 04  |%=q%+28.........|
00002550  0d 0e c4 0d dd a4 68 70  67 28 6e 25 29 0d 0e ce  |......hpg(n%)...|
00002560  14 ea 20 41 24 2c 42 25  2c 56 25 2c 57 25 2c 54  |.. A$,B%,V%,W%,T|
00002570  25 0d 0e d8 19 41 24 3d  a4 73 67 65 74 28 53 50  |%....A$=.sget(SP|
00002580  6f 69 6e 74 25 28 6e 25  29 29 0d 0e e2 19 e7 20  |oint%(n%))..... |
00002590  97 28 41 24 29 3d 26 32  30 20 8c 20 41 24 3d c2  |.(A$)=&20 . A$=.|
000025a0  41 24 29 0d 0e ec 1a e7  20 c2 41 24 2c 31 29 3d  |A$)..... .A$,1)=|
000025b0  22 20 22 20 8c 20 41 24  3d c0 41 24 29 0d 0e f6  |" " . A$=.A$)...|
000025c0  0d 56 25 3d 30 3a 57 25  3d 31 0d 0f 00 17 e3 20  |.V%=0:W%=1..... |
000025d0  42 25 3d a9 28 41 24 29  20 b8 20 31 20 88 20 2d  |B%=.(A$) . 1 . -|
000025e0  31 0d 0f 0a 13 54 25 3d  97 28 c1 41 24 2c 42 25  |1....T%=.(.A$,B%|
000025f0  2c 31 29 29 0d 0f 14 29  e7 20 54 25 3e 26 33 39  |,1))...). T%>&39|
00002600  20 8c 20 54 25 3d 28 54  25 2d 26 34 30 29 2b 39  | . T%=(T%-&40)+9|
00002610  20 8b 20 54 25 3d 54 25  20 80 20 26 46 0d 0f 1e  | . T%=T% . &F...|
00002620  0f 56 25 3d 56 25 2b 54  25 2a 57 25 0d 0f 28 0c  |.V%=V%+T%*W%..(.|
00002630  57 25 3d 57 25 3c 3c 34  0d 0f 32 05 ed 0d 0f 3c  |W%=W%<<4..2....<|
00002640  07 3d 56 25 0d 0f 46 04  0d 0f 50 0e dd a4 68 70  |.=V%..F...P...hp|
00002650  67 4d 28 6e 25 29 0d 0f  5a 14 ea 20 41 24 2c 42  |gM(n%)..Z.. A$,B|
00002660  25 2c 56 25 2c 57 25 2c  54 25 0d 0f 64 1a 41 24  |%,V%,W%,T%..d.A$|
00002670  3d a4 73 67 65 74 28 53  50 6f 69 6e 74 4d 25 28  |=.sget(SPointM%(|
00002680  6e 25 29 29 0d 0f 6e 19  e7 20 97 28 41 24 29 3d  |n%))..n.. .(A$)=|
00002690  26 32 30 20 8c 20 41 24  3d c2 41 24 29 0d 0f 78  |&20 . A$=.A$)..x|
000026a0  1a e7 20 c2 41 24 2c 31  29 3d 22 20 22 20 8c 20  |.. .A$,1)=" " . |
000026b0  41 24 3d c0 41 24 29 0d  0f 82 0d 56 25 3d 30 3a  |A$=.A$)....V%=0:|
000026c0  57 25 3d 31 0d 0f 8c 17  e3 20 42 25 3d a9 28 41  |W%=1..... B%=.(A|
000026d0  24 29 20 b8 20 31 20 88  20 2d 31 0d 0f 96 13 54  |$) . 1 . -1....T|
000026e0  25 3d 97 28 c1 41 24 2c  42 25 2c 31 29 29 0d 0f  |%=.(.A$,B%,1))..|
000026f0  a0 29 e7 20 54 25 3e 26  33 39 20 8c 20 54 25 3d  |.). T%>&39 . T%=|
00002700  28 54 25 2d 26 34 30 29  2b 39 20 8b 20 54 25 3d  |(T%-&40)+9 . T%=|
00002710  54 25 20 80 20 26 46 0d  0f aa 0f 56 25 3d 56 25  |T% . &F....V%=V%|
00002720  2b 54 25 2a 57 25 0d 0f  b4 0c 57 25 3d 57 25 3c  |+T%*W%....W%=W%<|
00002730  3c 34 0d 0f be 05 ed 0d  0f c8 07 3d 56 25 0d 0f  |<4.........=V%..|
00002740  d2 04 0d 0f dc 12 dd 20  f2 5f 73 65 74 75 70 57  |....... ._setupW|
00002750  28 74 24 29 0d 0f e6 58  21 71 25 3d 77 61 72 6e  |(t$)...X!q%=warn|
00002760  69 6e 67 57 25 3a 71 25  21 34 3d 32 30 30 3a 71  |ingW%:q%!4=200:q|
00002770  25 21 38 3d 32 30 30 3a  71 25 21 31 32 3d 32 30  |%!8=200:q%!12=20|
00002780  30 2b 58 51 25 3a 71 25  21 31 36 3d 32 30 30 2b  |0+XQ%:q%!16=200+|
00002790  59 51 25 3a 71 25 21 32  30 3d 30 3a 71 25 21 32  |YQ%:q%!20=0:q%!2|
000027a0  34 3d 30 3a 71 25 21 32  38 3d 2d 31 0d 0f f0 11  |4=0:q%!28=-1....|
000027b0  24 54 65 78 74 57 61 72  6e 25 3d 74 24 0d 0f fa  |$TextWarn%=t$...|
000027c0  15 54 65 78 74 57 61 72  6e 25 3f a9 28 74 24 29  |.TextWarn%?.(t$)|
000027d0  3d 30 0d 10 04 07 ef 20  37 0d 10 0e 0d 77 61 72  |=0..... 7....war|
000027e0  6e 4f 6e 25 3d b9 0d 10  18 1c c8 99 20 22 57 69  |nOn%=....... "Wi|
000027f0  6d 70 5f 4f 70 65 6e 57  69 6e 64 6f 77 22 2c 2c  |mp_OpenWindow",,|
00002800  71 25 0d 10 22 05 e1 0d  10 2c 04 0d 10 36 0f dd  |q%.."....,...6..|
00002810  20 f2 65 72 72 6f 72 62  6f 78 0d 10 40 1c f4 20  | .errorbox..@.. |
00002820  53 59 53 20 22 57 69 6d  70 5f 44 72 61 67 42 6f  |SYS "Wimp_DragBo|
00002830  78 22 2c 2c 2d 31 0d 10  4a 32 21 62 75 66 66 65  |x",,-1..J2!buffe|
00002840  72 73 25 3d 9f 3a 24 28  62 75 66 66 65 72 73 25  |rs%=.:$(buffers%|
00002850  2b 34 29 3d f6 24 2b 22  20 61 74 20 6c 69 6e 65  |+4)=.$+" at line|
00002860  20 22 2b c3 9e 2b bd 30  0d 10 54 2a c8 99 20 22  | "+..+.0..T*.. "|
00002870  57 69 6d 70 5f 52 65 70  6f 72 74 45 72 72 6f 72  |Wimp_ReportError|
00002880  22 2c 62 75 66 66 65 72  73 25 2c 31 2c 22 50 49  |",buffers%,1,"PI|
00002890  43 22 0d 10 5e 08 f2 64  69 65 0d 10 68 05 e1 0d  |C"..^..die..h...|
000028a0  10 72 04 0d 10 7c 09 dd  f2 64 69 65 0d 10 86 2a  |.r...|...die...*|
000028b0  c8 99 20 22 57 69 6d 70  5f 43 6c 6f 73 65 44 6f  |.. "Wimp_CloseDo|
000028c0  77 6e 22 2c 74 61 73 6b  68 61 6e 64 25 2c 21 74  |wn",taskhand%,!t|
000028d0  61 73 6b 69 64 25 0d 10  90 05 e0 0d 10 9a 05 e1  |askid%..........|
000028e0  0d 10 a4 04 0d 10 ae 10  dd 20 f2 5f 4b 65 79 50  |......... ._KeyP|
000028f0  72 65 73 73 0d 10 b8 0e  ea 20 41 25 2c 4b 25 2c  |ress..... A%,K%,|
00002900  69 25 0d 10 c2 0b 69 25  3d 71 25 21 34 0d 10 cc  |i%....i%=q%!4...|
00002910  0c 4b 25 3d 71 25 21 32  34 0d 10 d6 0d e7 20 4b  |.K%=q%!24..... K|
00002920  25 3d 31 33 20 8c 0d 10  e0 0d c8 8e 20 71 25 21  |%=13 ....... q%!|
00002930  30 20 ca 0d 10 ea 36 c9  20 20 63 6f 6e 57 25 3a  |0 ....6.  conW%:|
00002940  20 e7 20 69 25 3e 33 31  20 80 20 69 25 3c 34 30  | . i%>31 . i%<40|
00002950  20 8c 20 53 74 61 63 6b  25 28 69 25 2d 33 32 29  | . Stack%(i%-32)|
00002960  3d a4 68 70 67 28 69 25  29 0d 10 f4 27 20 20 20  |=.hpg(i%)...'   |
00002970  20 20 20 20 20 20 20 20  20 20 e7 20 69 25 3d 34  |          . i%=4|
00002980  20 8c 20 57 72 65 67 25  3d a4 68 70 67 28 34 29  | . Wreg%=.hpg(4)|
00002990  0d 10 fe 22 20 20 20 20  20 20 20 20 20 20 20 20  |..."            |
000029a0  20 e7 20 69 25 3e 33 39  20 80 20 69 25 3c 34 34  | . i%>39 . i%<44|
000029b0  20 8c 0d 11 08 27 20 20  20 20 20 20 20 20 20 20  | ....'          |
000029c0  20 20 20 42 72 65 61 6b  25 28 69 25 2d 34 30 29  |   Break%(i%-40)|
000029d0  3d a4 68 70 67 28 69 25  29 0d 11 12 3b 20 20 20  |=.hpg(i%)...;   |
000029e0  20 20 20 20 20 20 20 20  20 20 e7 20 42 72 65 61  |          . Brea|
000029f0  6b 25 28 69 25 2d 34 30  29 3e 26 33 46 46 20 8c  |k%(i%-40)>&3FF .|
00002a00  20 f2 5f 50 75 74 50 72  61 6d 73 53 28 69 25 2c  | ._PutPramsS(i%,|
00002a10  22 20 22 29 0d 11 1c 12  20 20 20 20 20 20 20 20  |" ")....        |
00002a20  20 20 20 20 20 cd 0d 11  26 11 20 20 20 20 20 20  |     ...&.      |
00002a30  20 20 20 20 20 20 20 0d  11 30 4e 20 20 20 20 20  |       ..0N     |
00002a40  20 20 20 20 20 20 20 20  e7 20 69 25 3d 31 20 8c  |        . i%=1 .|
00002a50  20 41 25 3d a4 68 70 67  28 31 29 3a 52 65 67 25  | A%=.hpg(1):Reg%|
00002a60  28 32 29 3d 41 25 20 80  20 26 46 46 3a 48 69 50  |(2)=A% . &FF:HiP|
00002a70  43 25 3d 41 25 20 80 20  26 46 46 30 30 3a f2 66  |C%=A% . &FF00:.f|
00002a80  65 74 63 68 4e 0d 11 3a  32 20 20 20 20 20 20 20  |etchN..:2       |
00002a90  20 20 20 20 20 20 e7 20  69 25 3d 30 20 8c 20 f2  |      . i%=0 . .|
00002aa0  5f 47 65 74 69 6e 4e 61  6d 65 3a 20 f2 5f 4c 6f  |_GetinName: ._Lo|
00002ab0  61 64 28 66 6e 24 29 0d  11 44 1a c9 20 6d 6f 6e  |ad(fn$)..D.. mon|
00002ac0  57 25 3a 20 20 41 25 3d  a4 68 70 67 4d 28 69 25  |W%:  A%=.hpgM(i%|
00002ad0  29 0d 11 4e 23 20 20 20  20 20 20 20 20 20 20 20  |)..N#           |
00002ae0  20 20 e7 20 69 25 3e 32  35 20 80 20 69 25 3c 3e  |  . i%>25 . i%<>|
00002af0  32 37 20 8c 0d 11 58 35  20 20 20 20 20 20 20 20  |27 ...X5        |
00002b00  20 20 20 20 20 e7 20 41  25 3e 32 35 35 20 8c 20  |     . A%>255 . |
00002b10  41 25 3d 41 25 20 80 20  26 46 46 3a f2 5f 50 50  |A%=A% . &FF:._PP|
00002b20  48 6d 28 69 25 2c 41 25  29 0d 11 62 22 20 20 20  |Hm(i%,A%)..b"   |
00002b30  20 20 20 20 20 20 20 20  20 20 e7 20 69 25 3d 33  |          . i%=3|
00002b40  30 20 84 20 69 25 3d 33  31 20 8c 0d 11 6c 38 20  |0 . i%=31 ...l8 |
00002b50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 e7 20  |              . |
00002b60  69 25 3d 33 30 20 8c 20  f2 5f 75 70 49 4f 28 52  |i%=30 . ._upIO(R|
00002b70  65 67 25 28 26 38 35 29  2c 41 25 2c 31 39 2c 35  |eg%(&85),A%,19,5|
00002b80  2c 35 29 0d 11 76 38 20  20 20 20 20 20 20 20 20  |,5)..v8         |
00002b90  20 20 20 20 20 20 e7 20  69 25 3d 33 31 20 8c 20  |      . i%=31 . |
00002ba0  f2 5f 75 70 49 4f 28 52  65 67 25 28 26 38 36 29  |._upIO(Reg%(&86)|
00002bb0  2c 41 25 2c 31 31 2c 38  2c 36 29 0d 11 80 22 20  |,A%,11,8,6)..." |
00002bc0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 52 65  |              Re|
00002bd0  67 25 28 69 25 2b 31 30  33 29 3d 41 25 0d 11 8a  |g%(i%+103)=A%...|
00002be0  14 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00002bf0  cc 0d 11 94 21 20 20 20  20 20 20 20 20 20 20 20  |....!           |
00002c00  20 20 20 20 52 65 67 25  28 69 25 2d 32 35 29 3d  |    Reg%(i%-25)=|
00002c10  41 25 0d 11 9e 14 20 20  20 20 20 20 20 20 20 20  |A%....          |
00002c20  20 20 20 20 20 cd 0d 11  a8 12 20 20 20 20 20 20  |     .....      |
00002c30  20 20 20 20 20 20 20 cd  0d 11 b2 27 20 20 20 20  |       ....'    |
00002c40  20 20 20 20 20 20 20 20  20 e7 20 69 25 3d 32 33  |         . i%=23|
00002c50  20 8c 20 50 72 65 73 63  61 6c 65 25 3d 41 25 0d  | . Prescale%=A%.|
00002c60  11 bc 29 20 20 20 20 20  20 20 20 20 20 20 20 20  |..)             |
00002c70  e7 20 69 25 3d 32 34 20  8c 20 57 61 74 63 68 4c  |. i%=24 . WatchL|
00002c80  69 6d 69 74 25 3d 41 25  0d 11 c6 2b 20 20 20 20  |imit%=A%...+    |
00002c90  20 20 20 20 20 20 20 20  20 e7 20 69 25 3d 32 35  |         . i%=25|
00002ca0  20 8c 20 57 61 74 63 68  64 6f 67 54 69 6d 65 25  | . WatchdogTime%|
00002cb0  3d 41 25 0d 11 d0 31 20  20 20 20 20 20 20 20 20  |=A%...1         |
00002cc0  20 20 20 20 e7 20 69 25  3d 32 37 20 8c 20 45 74  |    . i%=27 . Et|
00002cd0  69 6d 65 4f 75 74 25 3d  41 25 3a 45 74 69 6d 65  |imeOut%=A%:Etime|
00002ce0  25 3d 41 25 0d 11 da 58  20 20 20 20 20 20 20 20  |%=A%...X        |
00002cf0  20 20 20 20 20 e7 20 69  25 3d 33 34 20 8c 20 52  |     . i%=34 . R|
00002d00  65 67 25 28 38 29 3d 44  61 74 61 4d 65 6d 53 25  |eg%(8)=DataMemS%|
00002d10  3f 28 28 28 52 65 67 25  28 39 29 20 80 20 26 33  |?(((Reg%(9) . &3|
00002d20  46 29 3c 3c 31 29 2b 31  29 3a f2 5f 50 50 48 6d  |F)<<1)+1):._PPHm|
00002d30  28 33 33 2c 52 65 67 25  28 38 29 29 0d 11 e4 05  |(33,Reg%(8))....|
00002d40  cb 0d 11 ee 05 cc 0d 11  f8 1a c8 99 22 57 69 6d  |............"Wim|
00002d50  70 5f 50 72 6f 63 65 73  73 4b 65 79 22 2c 4b 25  |p_ProcessKey",K%|
00002d60  0d 12 02 05 cd 0d 12 0c  05 e1 0d 12 16 04 0d 12  |................|
00002d70  20 11 dd 20 a4 5f 73 70  61 74 68 28 6e 24 29 0d  | .. ._spath(n$).|
00002d80  12 2a 0f c8 95 20 a7 6e  24 2c 22 2e 22 29 0d 12  |.*... .n$,".")..|
00002d90  34 13 6e 24 3d c2 6e 24  2c a9 28 6e 24 29 2d 31  |4.n$=.n$,.(n$)-1|
00002da0  29 0d 12 3e 05 ce 0d 12  48 1b e7 20 a9 28 6e 24  |)..>....H.. .(n$|
00002db0  29 3e 31 30 20 8c 20 6e  24 3d c2 6e 24 2c 31 30  |)>10 . n$=.n$,10|
00002dc0  29 0d 12 52 07 3d 6e 24  0d 12 5c 04 0d 12 66 0f  |)..R.=n$..\...f.|
00002dd0  dd 20 f2 5f 47 65 74 4e  61 6d 65 0d 12 70 0e ea  |. ._GetName..p..|
00002de0  20 54 25 2c 41 25 2c 46  24 0d 12 7a 10 46 24 3d  | T%,A%,F$..z.F$=|
00002df0  22 22 3a 66 6e 24 3d 22  22 0d 12 84 16 71 25 21  |"":fn$=""....q%!|
00002e00  30 3d 73 61 76 65 57 25  3a 71 25 21 34 3d 31 0d  |0=saveW%:q%!4=1.|
00002e10  12 8e 1e c8 99 20 22 57  69 6d 70 5f 47 65 74 49  |..... "Wimp_GetI|
00002e20  63 6f 6e 53 74 61 74 65  22 2c 2c 71 25 0d 12 98  |conState",,q%...|
00002e30  0c 54 25 3d 71 25 21 32  38 0d 12 a2 09 54 25 2d  |.T%=q%!28....T%-|
00002e40  3d 31 0d 12 ac 05 f5 0d  12 b6 09 54 25 2b 3d 31  |=1.........T%+=1|
00002e50  0d 12 c0 10 46 24 3d 46  24 2b bd 28 3f 54 25 29  |....F$=F$+.(?T%)|
00002e60  0d 12 ca 0b fd 20 3f 54  25 3d 30 0d 12 d4 16 66  |..... ?T%=0....f|
00002e70  6e 24 3d c1 46 24 2c 31  2c a9 28 46 24 29 2d 31  |n$=.F$,1,.(F$)-1|
00002e80  29 0d 12 de 05 e1 0d 12  e8 04 0d 12 f2 11 dd 20  |).............. |
00002e90  f2 5f 47 65 74 69 6e 4e  61 6d 65 0d 12 fc 0e ea  |._GetinName.....|
00002ea0  20 54 25 2c 41 25 2c 46  24 0d 13 06 10 46 24 3d  | T%,A%,F$....F$=|
00002eb0  22 22 3a 66 6e 24 3d 22  22 0d 13 10 15 71 25 21  |"":fn$=""....q%!|
00002ec0  30 3d 63 6f 6e 57 25 3a  71 25 21 34 3d 30 0d 13  |0=conW%:q%!4=0..|
00002ed0  1a 1e c8 99 20 22 57 69  6d 70 5f 47 65 74 49 63  |.... "Wimp_GetIc|
00002ee0  6f 6e 53 74 61 74 65 22  2c 2c 71 25 0d 13 24 0c  |onState",,q%..$.|
00002ef0  54 25 3d 71 25 21 32 38  0d 13 2e 09 54 25 2d 3d  |T%=q%!28....T%-=|
00002f00  31 0d 13 38 05 f5 0d 13  42 09 54 25 2b 3d 31 0d  |1..8....B.T%+=1.|
00002f10  13 4c 10 46 24 3d 46 24  2b bd 28 3f 54 25 29 0d  |.L.F$=F$+.(?T%).|
00002f20  13 56 0b fd 20 3f 54 25  3d 30 0d 13 60 16 66 6e  |.V.. ?T%=0..`.fn|
00002f30  24 3d c1 46 24 2c 31 2c  a9 28 46 24 29 2d 31 29  |$=.F$,1,.(F$)-1)|
00002f40  0d 13 6a 05 e1 0d 13 74  04 0d 13 7e 10 dd 20 f2  |..j....t...~.. .|
00002f50  5f 47 65 74 50 72 61 6d  73 0d 13 88 08 ea 20 41  |_GetPrams..... A|
00002f60  24 0d 13 92 0e 71 25 21  30 3d 57 6e 25 21 30 0d  |$....q%!0=Wn%!0.|
00002f70  13 9c 1d 49 6e 46 69 6c  65 24 3d a4 73 67 65 74  |...InFile$=.sget|
00002f80  28 53 50 6f 69 6e 74 25  28 30 29 29 0d 13 a6 05  |(SPoint%(0))....|
00002f90  e1 0d 13 b0 04 0d 13 ba  17 f4 20 56 65 72 69 66  |.......... Verif|
00002fa0  79 20 66 69 6c 65 20 6e  61 6d 65 73 0d 13 c4 0a  |y file names....|
00002fb0  dd 20 a4 76 66 6e 0d 13  ce 08 ea 20 56 25 0d 13  |. .vfn..... V%..|
00002fc0  d8 08 56 25 3d 31 0d 13  e2 1c e7 20 a7 49 6e 46  |..V%=1..... .InF|
00002fd0  69 6c 65 24 2c 22 24 22  29 3d 30 20 8c 20 56 25  |ile$,"$")=0 . V%|
00002fe0  3d 30 0d 13 ec 07 3d 56  25 0d 13 f6 04 0d 14 00  |=0....=V%.......|
00002ff0  0a dd 20 a4 6f 70 66 0d  14 0a 08 ea 20 56 25 0d  |.. .opf..... V%.|
00003000  14 14 08 56 25 3d 31 0d  14 1e 11 46 25 3d 8e 28  |...V%=1....F%=.(|
00003010  49 6e 46 69 6c 65 24 29  0d 14 28 0c e7 20 46 25  |InFile$)..(.. F%|
00003020  3d 30 20 8c 0d 14 32 08  56 25 3d 30 0d 14 3c 05  |=0 ...2.V%=0..<.|
00003030  cc 0d 14 46 1d f4 20 4c  6f 61 64 20 69 6e 20 74  |...F.. Load in t|
00003040  68 65 20 6f 62 6a 65 63  74 20 66 69 6c 65 0d 14  |he object file..|
00003050  50 08 d9 23 46 25 0d 14  5a 05 cd 0d 14 64 07 3d  |P..#F%..Z....d.=|
00003060  56 25 0d 14 6e 04 0d 14  78 17 dd 20 f2 5f 50 75  |V%..n...x.. ._Pu|
00003070  74 50 72 61 6d 73 28 6e  25 2c 56 25 29 0d 14 82  |tPrams(n%,V%)...|
00003080  1d f2 5f 73 70 75 74 28  53 50 6f 69 6e 74 25 28  |.._sput(SPoint%(|
00003090  6e 25 29 2c c3 28 56 25  29 29 0d 14 8c 40 c8 99  |n%),.(V%))...@..|
000030a0  22 57 69 6d 70 5f 46 6f  72 63 65 52 65 64 72 61  |"Wimp_ForceRedra|
000030b0  77 22 2c 63 6f 6e 57 25  2c 49 58 25 28 6e 25 29  |w",conW%,IX%(n%)|
000030c0  2c 49 59 25 28 6e 25 29  2c 49 58 31 25 28 6e 25  |,IY%(n%),IX1%(n%|
000030d0  29 2c 49 59 31 25 28 6e  25 29 0d 14 96 05 e1 0d  |),IY1%(n%)......|
000030e0  14 a0 04 0d 14 aa 19 dd  20 f2 5f 50 75 74 50 72  |........ ._PutPr|
000030f0  61 6d 48 65 78 28 6e 25  2c 56 25 29 0d 14 b4 08  |amHex(n%,V%)....|
00003100  ea 20 48 24 0d 14 be 0d  48 24 3d c3 7e 28 56 25  |. H$....H$=.~(V%|
00003110  29 0d 14 c8 0e c8 95 20  a9 28 48 24 29 3c 34 0d  |)...... .(H$)<4.|
00003120  14 d2 0d 48 24 3d 22 30  22 2b 48 24 0d 14 dc 05  |...H$="0"+H$....|
00003130  ce 0d 14 e6 1a f2 5f 73  70 75 74 28 53 50 6f 69  |......_sput(SPoi|
00003140  6e 74 25 28 6e 25 29 2c  48 24 29 0d 14 f0 40 c8  |nt%(n%),H$)...@.|
00003150  99 22 57 69 6d 70 5f 46  6f 72 63 65 52 65 64 72  |."Wimp_ForceRedr|
00003160  61 77 22 2c 63 6f 6e 57  25 2c 49 58 25 28 6e 25  |aw",conW%,IX%(n%|
00003170  29 2c 49 59 25 28 6e 25  29 2c 49 58 31 25 28 6e  |),IY%(n%),IX1%(n|
00003180  25 29 2c 49 59 31 25 28  6e 25 29 0d 14 fa 05 e1  |%),IY1%(n%).....|
00003190  0d 15 04 04 0d 15 0e 13  dd 20 f2 5f 50 50 48 6d  |......... ._PPHm|
000031a0  28 6e 25 2c 56 25 29 0d  15 18 08 ea 20 48 24 0d  |(n%,V%)..... H$.|
000031b0  15 22 0d 48 24 3d c3 7e  28 56 25 29 0d 15 2c 0e  |.".H$=.~(V%)..,.|
000031c0  c8 95 20 a9 28 48 24 29  3c 32 0d 15 36 0d 48 24  |.. .(H$)<2..6.H$|
000031d0  3d 22 30 22 2b 48 24 0d  15 40 05 ce 0d 15 4a 1b  |="0"+H$..@....J.|
000031e0  f2 5f 73 70 75 74 28 53  50 6f 69 6e 74 4d 25 28  |._sput(SPointM%(|
000031f0  6e 25 29 2c 48 24 29 0d  15 54 44 c8 99 22 57 69  |n%),H$)..TD.."Wi|
00003200  6d 70 5f 46 6f 72 63 65  52 65 64 72 61 77 22 2c  |mp_ForceRedraw",|
00003210  6d 6f 6e 57 25 2c 49 58  4d 25 28 6e 25 29 2c 49  |monW%,IXM%(n%),I|
00003220  59 4d 25 28 6e 25 29 2c  49 58 31 4d 25 28 6e 25  |YM%(n%),IX1M%(n%|
00003230  29 2c 49 59 31 4d 25 28  6e 25 29 0d 15 5e 05 e1  |),IY1M%(n%)..^..|
00003240  0d 15 68 04 0d 15 72 1a  dd 20 f2 5f 50 75 74 50  |..h...r.. ._PutP|
00003250  72 61 6d 48 65 78 32 28  6e 25 2c 56 25 29 0d 15  |ramHex2(n%,V%)..|
00003260  7c 08 ea 20 48 24 0d 15  86 0d 48 24 3d c3 7e 28  ||.. H$....H$=.~(|
00003270  56 25 29 0d 15 90 0e c8  95 20 a9 28 48 24 29 3c  |V%)...... .(H$)<|
00003280  32 0d 15 9a 0d 48 24 3d  22 30 22 2b 48 24 0d 15  |2....H$="0"+H$..|
00003290  a4 05 ce 0d 15 ae 1a f2  5f 73 70 75 74 28 53 50  |........_sput(SP|
000032a0  6f 69 6e 74 25 28 6e 25  29 2c 48 24 29 0d 15 b8  |oint%(n%),H$)...|
000032b0  40 c8 99 22 57 69 6d 70  5f 46 6f 72 63 65 52 65  |@.."Wimp_ForceRe|
000032c0  64 72 61 77 22 2c 63 6f  6e 57 25 2c 49 58 25 28  |draw",conW%,IX%(|
000032d0  6e 25 29 2c 49 59 25 28  6e 25 29 2c 49 58 31 25  |n%),IY%(n%),IX1%|
000032e0  28 6e 25 29 2c 49 59 31  25 28 6e 25 29 0d 15 c2  |(n%),IY1%(n%)...|
000032f0  05 e1 0d 15 cc 04 0d 15  d6 18 dd 20 f2 5f 50 75  |........... ._Pu|
00003300  74 50 72 61 6d 73 53 28  6e 25 2c 56 24 29 0d 15  |tPramsS(n%,V$)..|
00003310  e0 1a f2 5f 73 70 75 74  28 53 50 6f 69 6e 74 25  |..._sput(SPoint%|
00003320  28 6e 25 29 2c 56 24 29  0d 15 ea 40 c8 99 22 57  |(n%),V$)...@.."W|
00003330  69 6d 70 5f 46 6f 72 63  65 52 65 64 72 61 77 22  |imp_ForceRedraw"|
00003340  2c 63 6f 6e 57 25 2c 49  58 25 28 6e 25 29 2c 49  |,conW%,IX%(n%),I|
00003350  59 25 28 6e 25 29 2c 49  58 31 25 28 6e 25 29 2c  |Y%(n%),IX1%(n%),|
00003360  49 59 31 25 28 6e 25 29  0d 15 f4 05 e1 0d 15 fe  |IY1%(n%)........|
00003370  04 0d 16 08 13 dd 20 f2  5f 73 70 75 74 28 78 25  |...... ._sput(x%|
00003380  2c 58 24 29 0d 16 12 08  ea 20 41 25 0d 16 1c 12  |,X$)..... A%....|
00003390  e3 20 41 25 3d 31 20 b8  20 a9 28 58 24 29 0d 16  |. A%=1 . .(X$)..|
000033a0  26 14 3f 78 25 3d 97 28  c1 58 24 2c 41 25 2c 31  |&.?x%=.(.X$,A%,1|
000033b0  29 29 0d 16 30 09 78 25  2b 3d 31 0d 16 3a 05 ed  |))..0.x%+=1..:..|
000033c0  0d 16 44 09 3f 78 25 3d  30 0d 16 4e 05 e1 0d 16  |..D.?x%=0..N....|
000033d0  58 04 0d 16 62 11 dd 20  f2 5f 46 6e 61 6d 65 28  |X...b.. ._Fname(|
000033e0  6e 24 29 0d 16 6c 0e 49  6e 46 69 6c 65 24 3d 6e  |n$)..l.InFile$=n|
000033f0  24 0d 16 76 15 f2 5f 50  75 74 50 72 61 6d 73 53  |$..v.._PutPramsS|
00003400  28 30 2c 6e 24 29 0d 16  80 05 e1 0d 16 8a 04 0d  |(0,n$)..........|
00003410  16 94 0f dd 20 f2 77 69  70 65 50 72 6f 67 0d 16  |.... .wipeProg..|
00003420  9e 08 ea 20 41 25 0d 16  a8 15 e3 20 41 25 3d 30  |... A%..... A%=0|
00003430  20 b8 20 26 38 30 30 20  88 20 34 0d 16 b2 1a 50  | . &800 . 4....P|
00003440  72 6f 67 4d 65 6d 53 25  21 41 25 3d 26 46 46 33  |rogMemS%!A%=&FF3|
00003450  46 46 46 33 46 0d 16 bc  05 ed 0d 16 c6 05 e1 0d  |FFF3F...........|
00003460  16 d0 04 0d 16 da 0f dd  20 f2 77 69 70 65 44 61  |........ .wipeDa|
00003470  74 61 0d 16 e4 08 ea 20  41 25 0d 16 ee 14 e3 20  |ta..... A%..... |
00003480  41 25 3d 30 20 b8 20 31  32 38 20 88 20 34 0d 16  |A%=0 . 128 . 4..|
00003490  f8 1a 44 61 74 61 4d 65  6d 53 25 21 41 25 3d 26  |..DataMemS%!A%=&|
000034a0  46 46 30 30 46 46 30 30  0d 17 02 05 ed 0d 17 0c  |FF00FF00........|
000034b0  0f e3 20 41 25 3d 30 20  b8 20 31 35 0d 17 16 13  |.. A%=0 . 15....|
000034c0  43 6f 6e 66 69 67 4d 65  6d 25 3f 41 25 3d 30 0d  |ConfigMem%?A%=0.|
000034d0  17 20 05 ed 0d 17 2a 05  e1 0d 17 34 04 0d 17 3e  |. ....*....4...>|
000034e0  10 dd 20 f2 5f 4c 6f 61  64 28 46 24 29 0d 17 48  |.. ._Load(F$)..H|
000034f0  11 ea 20 41 25 2c 42 25  2c 43 25 2c 46 25 0d 17  |.. A%,B%,C%,F%..|
00003500  52 0c 46 25 3d 8e 28 46  24 29 0d 17 5c 0d e7 20  |R.F%=.(F$)..\.. |
00003510  46 25 3c 3e 30 20 8c 0d  17 66 25 e7 20 ac 28 4d  |F%<>0 ...f%. .(M|
00003520  65 72 67 65 25 29 20 8c  20 f2 77 69 70 65 44 61  |erge%) . .wipeDa|
00003530  74 61 3a f2 77 69 70 65  50 72 6f 67 0d 17 70 0b  |ta:.wipeProg..p.|
00003540  f2 72 65 61 64 48 46 0d  17 7a 08 d9 23 46 25 0d  |.readHF..z..#F%.|
00003550  17 84 0d f2 50 55 50 72  65 73 65 74 0d 17 8e 0e  |....PUPreset....|
00003560  f2 73 65 74 43 6f 6e 66  69 67 0d 17 98 0e 53 74  |.setConfig....St|
00003570  61 63 6b 25 28 29 3d 30  0d 17 a2 0c f2 75 64 53  |ack%()=0.....udS|
00003580  74 61 63 6b 0d 17 ac 0c  53 6c 65 65 70 25 3d a3  |tack....Sleep%=.|
00003590  0d 17 b6 05 cc 0d 17 c0  24 f2 5f 73 65 74 75 70  |........$._setup|
000035a0  57 28 22 43 61 6e 27 74  20 6f 70 65 6e 20 74 68  |W("Can't open th|
000035b0  69 73 20 66 69 6c 65 22  29 0d 17 ca 05 cd 0d 17  |is file").......|
000035c0  d4 05 e1 0d 17 de 04 0d  17 e8 0d dd 20 f2 72 65  |............ .re|
000035d0  61 64 48 46 0d 17 f2 25  ea 20 50 25 2c 42 61 73  |adHF...%. P%,Bas|
000035e0  65 25 2c 42 25 2c 43 25  2c 43 42 25 2c 4c 69 6d  |e%,B%,C%,CB%,Lim|
000035f0  69 74 25 2c 4c 69 6e 65  25 0d 17 fc 0b 4c 69 6e  |it%,Line%....Lin|
00003600  65 25 3d 30 0d 18 06 05  f5 0d 18 10 05 f5 0d 18  |e%=0............|
00003610  1a 3e e7 20 ac 28 c5 23  46 25 29 20 8c 20 42 25  |.>. .(.#F%) . B%|
00003620  3d 9a 23 46 25 20 8b 20  f2 5f 73 65 74 75 70 57  |=.#F% . ._setupW|
00003630  28 22 55 6e 65 78 70 65  63 74 65 64 20 65 6e 64  |("Unexpected end|
00003640  20 6f 66 20 66 69 6c 65  22 29 3a e1 0d 18 24 0f  | of file"):...$.|
00003650  fd 20 bd 28 42 25 29 3d  22 3a 22 0d 18 2e 15 43  |. .(B%)=":"....C|
00003660  68 65 63 6b 25 3d 30 3a  4c 69 6e 65 25 2b 3d 31  |heck%=0:Line%+=1|
00003670  0d 18 38 0d 4c 25 3d a4  72 62 3e 3e 31 0d 18 42  |..8.L%=.rb>>1..B|
00003680  18 50 25 3d 28 a4 72 62  3c 3c 38 20 84 20 a4 72  |.P%=(.rb<<8 . .r|
00003690  62 29 3e 3e 31 0d 18 4c  13 42 61 73 65 25 3d 50  |b)>>1..L.Base%=P|
000036a0  72 6f 67 4d 65 6d 53 25  0d 18 56 27 e7 20 50 25  |rogMemS%..V'. P%|
000036b0  3e 26 33 46 46 20 80 20  50 25 3c 26 32 30 30 30  |>&3FF . P%<&2000|
000036c0  20 8c 20 50 25 3d 50 25  20 80 20 26 33 46 46 0d  | . P%=P% . &3FF.|
000036d0  18 60 37 e7 20 50 25 3e  26 31 46 46 46 20 80 20  |.`7. P%>&1FFF . |
000036e0  50 25 3c 26 32 30 31 30  20 8c 20 42 61 73 65 25  |P%<&2010 . Base%|
000036f0  3d 43 6f 6e 66 69 67 4d  65 6d 25 3a 50 25 3d 50  |=ConfigMem%:P%=P|
00003700  25 20 80 20 26 46 0d 18  6a 2c e7 20 50 25 3e 26  |% . &F..j,. P%>&|
00003710  32 30 46 46 20 8c 20 42  61 73 65 25 3d 44 61 74  |20FF . Base%=Dat|
00003720  61 4d 65 6d 53 25 3a 50  25 3d 50 25 20 80 20 26  |aMemS%:P%=P% . &|
00003730  33 46 0d 18 74 0a 42 25  3d a4 72 62 0d 18 7e 0e  |3F..t.B%=.rb..~.|
00003740  e7 20 42 25 3d 31 20 8c  20 e1 0d 18 88 08 41 25  |. B%=1 . .....A%|
00003750  3d 30 0d 18 92 0f e3 20  42 25 3d 31 20 b8 20 4c  |=0..... B%=1 . L|
00003760  25 0d 18 9c 1c 42 61 73  65 25 3f 28 41 25 2b 31  |%....Base%?(A%+1|
00003770  2b 28 50 25 3c 3c 31 29  29 3d a4 72 62 0d 18 a6  |+(P%<<1))=.rb...|
00003780  1a 42 61 73 65 25 3f 28  41 25 2b 28 50 25 3c 3c  |.Base%?(A%+(P%<<|
00003790  31 29 29 3d a4 72 62 0d  18 b0 09 41 25 2b 3d 32  |1))=.rb....A%+=2|
000037a0  0d 18 ba 05 ed 0d 18 c4  1a 43 25 3d 28 ac 28 43  |.........C%=(.(C|
000037b0  68 65 63 6b 25 29 2b 31  29 20 80 20 26 46 46 0d  |heck%)+1) . &FF.|
000037c0  18 ce 0b 43 42 25 3d a4  72 62 0d 18 d8 3c e7 20  |...CB%=.rb...<. |
000037d0  43 42 25 3c 3e 43 25 20  8c 20 f2 5f 73 65 74 75  |CB%<>C% . ._setu|
000037e0  70 57 28 22 43 68 65 63  6b 20 73 75 6d 20 65 72  |pW("Check sum er|
000037f0  72 6f 72 20 6c 69 6e 65  20 22 2b c3 28 4c 69 6e  |ror line "+.(Lin|
00003800  65 25 29 29 3a e1 0d 18  e2 07 fd 20 a3 0d 18 ec  |e%)):...... ....|
00003810  05 e1 0d 18 f6 04 0d 19  00 09 dd 20 a4 72 62 0d  |........... .rb.|
00003820  19 0a 0e ea 20 42 25 2c  43 25 2c 44 25 0d 19 14  |.... B%,C%,D%...|
00003830  23 e7 20 ac 28 c5 23 46  25 29 20 8c 20 42 25 3d  |#. .(.#F%) . B%=|
00003840  9a 23 46 25 20 8b 20 42  25 3d 97 28 22 46 22 29  |.#F% . B%=.("F")|
00003850  0d 19 1e 23 e7 20 ac 28  c5 23 46 25 29 20 8c 20  |...#. .(.#F%) . |
00003860  43 25 3d 9a 23 46 25 20  8b 20 43 25 3d 97 28 22  |C%=.#F% . C%=.("|
00003870  46 22 29 0d 19 28 11 44  25 3d a4 74 68 28 42 25  |F")..(.D%=.th(B%|
00003880  2c 43 25 29 0d 19 32 0e  43 68 65 63 6b 25 2b 3d  |,C%)..2.Check%+=|
00003890  44 25 0d 19 3c 07 3d 44  25 0d 19 46 04 0d 19 50  |D%..<.=D%..F...P|
000038a0  2e f4 20 43 6f 6e 76 65  72 74 20 74 77 6f 20 64  |.. Convert two d|
000038b0  69 67 69 74 20 68 65 78  20 74 65 78 74 20 69 6e  |igit hex text in|
000038c0  74 6f 20 61 20 6e 75 6d  62 65 72 0d 19 5a 10 dd  |to a number..Z..|
000038d0  20 a4 74 68 28 4d 25 2c  4b 25 29 0d 19 64 17 3d  | .th(M%,K%)..d.=|
000038e0  a4 68 28 4d 25 29 3c 3c  34 20 84 20 a4 68 28 4b  |.h(M%)<<4 . .h(K|
000038f0  25 29 0d 19 6e 04 0d 19  78 0c dd 20 a4 68 28 6e  |%)..n...x.. .h(n|
00003900  25 29 0d 19 82 2c e7 20  6e 25 3e 26 33 39 20 8c  |%)...,. n%>&39 .|
00003910  20 6e 25 3d 39 20 2b 20  28 6e 25 20 80 20 26 46  | n%=9 + (n% . &F|
00003920  29 20 8b 20 6e 25 3d 6e  25 20 80 20 26 46 0d 19  |) . n%=n% . &F..|
00003930  8c 07 3d 6e 25 0d 19 96  04 0d 19 a0 0f dd 20 a4  |..=n%......... .|
00003940  69 6e 63 52 28 6e 25 29  0d 19 aa 0f 52 65 67 25  |incR(n%)....Reg%|
00003950  28 6e 25 29 2b 3d 31 0d  19 b4 2a e7 20 52 65 67  |(n%)+=1...*. Reg|
00003960  25 28 6e 25 29 3e 32 35  35 20 8c 20 52 65 67 25  |%(n%)>255 . Reg%|
00003970  28 6e 25 29 3d 52 65 67  25 28 6e 25 29 2d 32 35  |(n%)=Reg%(n%)-25|
00003980  36 0d 19 be 0d 3d 52 65  67 25 28 6e 25 29 0d 19  |6....=Reg%(n%)..|
00003990  c8 04 0d 19 d2 0e dd 20  f2 75 64 53 74 61 63 6b  |....... .udStack|
000039a0  0d 19 dc 08 ea 20 41 25  0d 19 e6 10 e3 20 41 25  |..... A%..... A%|
000039b0  3d 33 32 20 b8 20 33 39  0d 19 f0 22 f2 5f 50 75  |=32 . 39..."._Pu|
000039c0  74 50 72 61 6d 48 65 78  28 41 25 2c 53 74 61 63  |tPramHex(A%,Stac|
000039d0  6b 25 28 41 25 2d 33 32  29 29 0d 19 fa 05 ed 0d  |k%(A%-32))......|
000039e0  1a 04 05 e1 0d 1a 0e 04  0d 1a 18 41 f4 20 2d 2d  |...........A. --|
000039f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00003a20  2d 2d 2d 2d 2d 2d 2d 2d  2d 0d 1a 22 0c dd 20 f2  |---------..".. .|
00003a30  5f 49 4e 49 54 0d 1a 2c  0f e3 20 41 25 3d 31 20  |_INIT..,.. A%=1 |
00003a40  b8 20 33 37 0d 1a 36 20  20 20 f3 20 4d 6e 65 24  |. 37..6   . Mne$|
00003a50  28 41 25 29 2c 4f 70 25  28 41 25 29 2c 49 74 25  |(A%),Op%(A%),It%|
00003a60  28 41 25 29 0d 1a 40 05  ed 0d 1a 4a 37 52 65 67  |(A%)..@....J7Reg|
00003a70  25 28 35 29 3d 26 31 46  3a 52 65 67 25 28 36 29  |%(5)=&1F:Reg%(6)|
00003a80  3d 26 46 46 3a 52 65 67  25 28 26 38 35 29 3d 26  |=&FF:Reg%(&85)=&|
00003a90  31 46 3a 52 65 67 25 28  26 38 36 29 3d 26 46 46  |1F:Reg%(&86)=&FF|
00003aa0  0d 1a 54 3f 42 72 65 61  6b 25 28 30 29 3d 26 34  |..T?Break%(0)=&4|
00003ab0  30 30 3a 42 72 65 61 6b  25 28 31 29 3d 26 34 30  |00:Break%(1)=&40|
00003ac0  30 3a 42 72 65 61 6b 25  28 32 29 3d 26 34 30 30  |0:Break%(2)=&400|
00003ad0  3a 42 72 65 61 6b 25 28  33 29 3d 26 34 30 30 0d  |:Break%(3)=&400.|
00003ae0  1a 5e 05 e1 0d 1a 68 04  0d 1a 72 1c f4 20 4d 6e  |.^....h...r.. Mn|
00003af0  65 6d 6f 6e 69 63 2c 20  6f 70 63 6f 64 65 2c 20  |emonic, opcode, |
00003b00  74 79 70 65 0d 1a 7c 3c  dc 20 61 64 64 77 66 2c  |type..|<. addwf,|
00003b10  26 37 30 30 2c 31 2c 20  61 6e 64 77 66 2c 20 26  |&700,1, andwf, &|
00003b20  35 30 30 2c 31 2c 20 20  63 6c 72 66 2c 26 31 38  |500,1,  clrf,&18|
00003b30  30 2c 34 2c 20 63 6c 72  77 2c 26 31 30 30 2c 30  |0,4, clrw,&100,0|
00003b40  0d 1a 86 3a dc 20 63 6f  6d 66 2c 26 39 30 30 2c  |...:. comf,&900,|
00003b50  31 2c 20 64 65 63 66 2c  26 33 30 30 2c 31 2c 20  |1, decf,&300,1, |
00003b60  64 65 63 66 73 7a 2c 26  42 30 30 2c 31 2c 20 69  |decfsz,&B00,1, i|
00003b70  6e 63 66 2c 26 41 30 30  2c 31 0d 1a 90 3c dc 20  |ncf,&A00,1...<. |
00003b80  69 6e 63 66 73 7a 2c 26  46 30 30 2c 31 2c 20 69  |incfsz,&F00,1, i|
00003b90  6f 72 77 66 2c 26 34 30  30 2c 31 2c 20 6d 6f 76  |orwf,&400,1, mov|
00003ba0  66 2c 26 38 30 30 2c 31  2c 20 6d 6f 76 77 66 2c  |f,&800,1, movwf,|
00003bb0  26 30 38 30 2c 34 0d 1a  9a 33 dc 20 6e 6f 70 2c  |&080,4...3. nop,|
00003bc0  30 2c 30 2c 20 72 6c 66  2c 26 44 30 30 2c 31 2c  |0,0, rlf,&D00,1,|
00003bd0  20 72 72 66 2c 26 43 30  30 2c 31 2c 20 73 75 62  | rrf,&C00,1, sub|
00003be0  77 66 2c 26 32 30 30 2c  31 0d 1a a4 3a dc 20 73  |wf,&200,1...:. s|
00003bf0  77 61 70 66 2c 26 45 30  30 2c 31 2c 20 78 6f 72  |wapf,&E00,1, xor|
00003c00  77 66 2c 26 36 30 30 2c  31 2c 20 62 63 66 2c 26  |wf,&600,1, bcf,&|
00003c10  31 30 30 30 2c 32 2c 20  62 73 66 2c 26 31 34 30  |1000,2, bsf,&140|
00003c20  30 2c 32 0d 1a ae 4e dc  20 62 74 66 73 63 2c 26  |0,2...N. btfsc,&|
00003c30  31 38 30 30 2c 32 2c 20  62 74 66 73 73 2c 26 31  |1800,2, btfss,&1|
00003c40  43 30 30 2c 32 2c 20 61  64 64 6c 77 2c 26 33 45  |C00,2, addlw,&3E|
00003c50  30 30 2c 33 2c 20 61 6e  64 6c 77 2c 26 33 39 30  |00,3, andlw,&390|
00003c60  30 2c 33 2c 20 63 61 6c  6c 2c 26 32 30 30 30 2c  |0,3, call,&2000,|
00003c70  33 0d 1a b8 3e dc 20 63  6c 72 77 64 74 2c 26 36  |3...>. clrwdt,&6|
00003c80  34 2c 30 2c 20 67 6f 74  6f 2c 26 32 38 30 30 2c  |4,0, goto,&2800,|
00003c90  35 2c 20 69 6f 72 6c 77  2c 26 33 38 30 30 2c 33  |5, iorlw,&3800,3|
00003ca0  2c 20 6d 6f 76 6c 77 2c  26 33 30 30 30 2c 33 0d  |, movlw,&3000,3.|
00003cb0  1a c2 3c dc 20 72 65 74  66 69 65 2c 20 26 39 2c  |..<. retfie, &9,|
00003cc0  30 2c 20 72 65 74 6c 77  2c 26 33 34 30 30 2c 33  |0, retlw,&3400,3|
00003cd0  2c 20 72 65 74 75 72 6e  2c 26 38 2c 30 2c 20 73  |, return,&8,0, s|
00003ce0  6c 65 65 70 2c 26 30 36  33 2c 30 0d 1a cc 22 dc  |leep,&063,0...".|
00003cf0  20 73 75 62 6c 77 2c 26  33 43 30 30 2c 33 2c 20  | sublw,&3C00,3, |
00003d00  78 6f 72 6c 77 2c 26 33  41 30 30 2c 33 0d 1a d6  |xorlw,&3A00,3...|
00003d10  1f f4 20 49 6e 73 74 72  75 63 74 69 6f 6e 73 20  |.. Instructions |
00003d20  74 6f 20 70 68 61 73 65  20 6f 75 74 0d 1a e0 20  |to phase out... |
00003d30  dc 20 74 72 69 73 2c 26  36 30 2c 34 2c 20 20 6f  |. tris,&60,4,  o|
00003d40  70 74 69 6f 6e 2c 26 30  36 32 2c 30 0d 1a ea 04  |ption,&062,0....|
00003d50  0d 1a f4 04 0d 1a fe 41  f4 20 2d 2d 2d 2d 2d 2d  |.......A. ------|
00003d60  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00003d90  2d 2d 2d 2d 2d 0d 1b 08  0f dd 20 f2 50 55 50 72  |-----..... .PUPr|
00003da0  65 73 65 74 0d 1b 12 08  ea 20 41 25 0d 1b 1c 45  |eset..... A%...E|
00003db0  f4 20 50 52 4f 43 5f 75  70 49 4f 28 52 65 67 25  |. PROC_upIO(Reg%|
00003dc0  28 26 38 35 29 2c 26 31  46 2c 31 39 2c 35 2c 35  |(&85),&1F,19,5,5|
00003dd0  29 3a 50 52 4f 43 5f 75  70 49 4f 28 52 65 67 25  |):PROC_upIO(Reg%|
00003de0  28 26 38 36 29 2c 26 46  46 2c 31 31 2c 38 2c 36  |(&86),&FF,11,8,6|
00003df0  29 0d 1b 26 04 0d 1b 30  3b 52 65 67 25 28 26 38  |)..&...0;Reg%(&8|
00003e00  35 29 3d 26 31 46 3a 52  65 67 25 28 26 38 36 29  |5)=&1F:Reg%(&86)|
00003e10  3d 26 46 46 3a 52 65 67  25 28 33 29 3d 28 52 65  |=&FF:Reg%(3)=(Re|
00003e20  67 25 28 33 29 20 80 20  37 29 20 84 20 26 31 38  |g%(3) . 7) . &18|
00003e30  0d 1b 3a 3e 52 65 67 25  28 26 38 31 29 3d 26 46  |..:>Reg%(&81)=&F|
00003e40  46 3a 52 65 67 25 28 26  38 38 29 3d 30 3a 52 65  |F:Reg%(&88)=0:Re|
00003e50  67 25 28 26 41 29 3d 30  3a 52 65 67 25 28 26 42  |g%(&A)=0:Reg%(&B|
00003e60  29 3d 52 65 67 25 28 26  42 29 20 80 20 31 0d 1b  |)=Reg%(&B) . 1..|
00003e70  44 2d f2 5f 75 70 49 4f  28 30 2c 26 31 46 2c 31  |D-._upIO(0,&1F,1|
00003e80  39 2c 35 2c 35 29 3a f2  5f 75 70 49 4f 28 30 2c  |9,5,5):._upIO(0,|
00003e90  26 46 46 2c 31 31 2c 38  2c 36 29 0d 1b 4e 04 0d  |&FF,11,8,6)..N..|
00003ea0  1b 58 22 f2 75 70 53 74  61 74 28 52 65 67 25 28  |.X".upStat(Reg%(|
00003eb0  33 29 20 82 20 26 46 46  2c 52 65 67 25 28 33 29  |3) . &FF,Reg%(3)|
00003ec0  29 0d 1b 62 27 f2 75 70  42 28 52 65 67 25 28 26  |)..b'.upB(Reg%(&|
00003ed0  38 31 29 20 82 20 26 46  46 2c 52 65 67 25 28 26  |81) . &FF,Reg%(&|
00003ee0  38 31 29 2c 30 2c 38 29  0d 1b 6c 25 f2 75 70 42  |81),0,8)..l%.upB|
00003ef0  28 52 65 67 25 28 26 42  29 20 82 20 26 46 46 2c  |(Reg%(&B) . &FF,|
00003f00  52 65 67 25 28 26 42 29  2c 39 2c 38 29 0d 1b 76  |Reg%(&B),9,8)..v|
00003f10  28 f2 75 70 42 28 52 65  67 25 28 26 38 38 29 20  |(.upB(Reg%(&88) |
00003f20  82 20 26 46 46 2c 52 65  67 25 28 26 38 38 29 2c  |. &FF,Reg%(&88),|
00003f30  31 38 2c 35 29 0d 1b 80  13 57 61 74 63 68 64 6f  |18,5)....Watchdo|
00003f40  67 54 69 6d 65 25 3d 30  0d 1b 8a 33 f2 5f 50 50  |gTime%=0...3._PP|
00003f50  48 6d 28 32 35 2c 57 61  74 63 68 64 6f 67 54 69  |Hm(25,WatchdogTi|
00003f60  6d 65 25 29 3a f2 5f 50  50 48 6d 28 32 34 2c 57  |me%):._PPHm(24,W|
00003f70  61 74 63 68 4c 69 6d 69  74 25 29 0d 1b 94 10 e3  |atchLimit%).....|
00003f80  20 41 25 3d 32 36 20 b8  20 37 32 0d 1b 9e 41 e7  | A%=26 . 72...A.|
00003f90  20 ac 28 41 25 3d 32 38  20 84 20 41 25 3d 33 32  | .(A%=28 . A%=32|
00003fa0  20 84 20 41 25 3d 33 35  20 84 20 41 25 3d 33 36  | . A%=35 . A%=36|
00003fb0  29 20 8c 20 f2 5f 73 70  75 74 28 53 50 6f 69 6e  |) . ._sput(SPoin|
00003fc0  74 4d 25 28 41 25 29 2c  22 20 22 29 0d 1b a8 44  |tM%(A%)," ")...D|
00003fd0  c8 99 22 57 69 6d 70 5f  46 6f 72 63 65 52 65 64  |.."Wimp_ForceRed|
00003fe0  72 61 77 22 2c 6d 6f 6e  57 25 2c 49 58 4d 25 28  |raw",monW%,IXM%(|
00003ff0  41 25 29 2c 49 59 4d 25  28 41 25 29 2c 49 58 31  |A%),IYM%(A%),IX1|
00004000  4d 25 28 41 25 29 2c 49  59 31 4d 25 28 41 25 29  |M%(A%),IY1M%(A%)|
00004010  0d 1b b2 05 ed 0d 1b bc  0e e3 20 41 25 3d 30 20  |.......... A%=0 |
00004020  b8 20 33 0d 1b c6 13 42  72 65 61 6b 25 28 41 25  |. 3....Break%(A%|
00004030  29 3d 26 34 30 30 0d 1b  d0 1a f2 5f 50 75 74 50  |)=&400....._PutP|
00004040  72 61 6d 73 53 28 41 25  2b 34 30 2c 22 20 22 29  |ramsS(A%+40," ")|
00004050  0d 1b da 05 ed 0d 1b e4  0f f4 20 50 52 4f 43 72  |.......... PROCr|
00004060  65 73 65 74 0d 1b ee 3b  52 65 67 25 28 32 29 3d  |eset...;Reg%(2)=|
00004070  30 3a 48 69 50 43 25 3d  30 3a f2 5f 50 75 74 50  |0:HiPC%=0:._PutP|
00004080  72 61 6d 48 65 78 28 31  2c 52 65 67 25 28 32 29  |ramHex(1,Reg%(2)|
00004090  2b 48 69 50 43 25 29 3a  f2 66 65 74 63 68 4e 0d  |+HiPC%):.fetchN.|
000040a0  1b f8 3a 74 25 3d 28 52  65 67 25 28 33 29 20 80  |..:t%=(Reg%(3) .|
000040b0  20 26 37 29 20 84 20 26  31 38 3a f2 75 70 53 74  | &7) . &18:.upSt|
000040c0  61 74 28 52 65 67 25 28  33 29 2c 74 25 29 3a 52  |at(Reg%(3),t%):R|
000040d0  65 67 25 28 33 29 3d 74  25 0d 1c 02 23 53 6c 65  |eg%(3)=t%...#Sle|
000040e0  65 70 25 3d a3 3a 24 53  50 6f 69 6e 74 25 28 39  |ep%=.:$SPoint%(9|
000040f0  29 3d 22 65 6d 6c 65 64  6f 66 66 22 0d 1c 0c 3c  |)="emledoff"...<|
00004100  c8 99 22 57 69 6d 70 5f  46 6f 72 63 65 52 65 64  |.."Wimp_ForceRed|
00004110  72 61 77 22 2c 63 6f 6e  57 25 2c 49 58 25 28 39  |raw",conW%,IX%(9|
00004120  29 2c 49 59 25 28 39 29  2c 49 58 31 25 28 39 29  |),IY%(9),IX1%(9)|
00004130  2c 49 59 31 25 28 39 29  0d 1c 16 05 e1 0d 1c 20  |,IY1%(9)....... |
00004140  04 0d 1c 2a 0c dd 20 f2  72 65 73 65 74 0d 1c 34  |...*.. .reset..4|
00004150  08 ea 20 74 25 0d 1c 3e  3b 52 65 67 25 28 32 29  |.. t%..>;Reg%(2)|
00004160  3d 30 3a 48 69 50 43 25  3d 30 3a f2 5f 50 75 74  |=0:HiPC%=0:._Put|
00004170  50 72 61 6d 48 65 78 28  31 2c 52 65 67 25 28 32  |PramHex(1,Reg%(2|
00004180  29 2b 48 69 50 43 25 29  3a f2 66 65 74 63 68 4e  |)+HiPC%):.fetchN|
00004190  0d 1c 48 33 74 25 3d 52  65 67 25 28 33 29 3a 52  |..H3t%=Reg%(3):R|
000041a0  65 67 25 28 33 29 3d 74  25 20 80 20 26 31 46 3a  |eg%(3)=t% . &1F:|
000041b0  f2 75 70 53 74 61 74 28  74 25 2c 52 65 67 25 28  |.upStat(t%,Reg%(|
000041c0  33 29 29 0d 1c 52 3a 74  25 3d 52 65 67 25 28 26  |3))..R:t%=Reg%(&|
000041d0  38 35 29 3a 52 65 67 25  28 26 38 35 29 3d 26 31  |85):Reg%(&85)=&1|
000041e0  46 3a f2 5f 75 70 49 4f  28 74 25 2c 52 65 67 25  |F:._upIO(t%,Reg%|
000041f0  28 26 38 35 29 2c 31 39  2c 35 2c 35 29 0d 1c 5c  |(&85),19,5,5)..\|
00004200  3a 74 25 3d 52 65 67 25  28 26 38 36 29 3a 52 65  |:t%=Reg%(&86):Re|
00004210  67 25 28 26 38 36 29 3d  26 46 46 3a f2 5f 75 70  |g%(&86)=&FF:._up|
00004220  49 4f 28 74 25 2c 52 65  67 25 28 26 38 36 29 2c  |IO(t%,Reg%(&86),|
00004230  31 31 2c 38 2c 36 29 0d  1c 66 35 74 25 3d 52 65  |11,8,6)..f5t%=Re|
00004240  67 25 28 26 38 31 29 3a  52 65 67 25 28 26 38 31  |g%(&81):Reg%(&81|
00004250  29 3d 26 46 46 3a f2 75  70 42 28 74 25 2c 52 65  |)=&FF:.upB(t%,Re|
00004260  67 25 28 26 38 31 29 2c  30 2c 38 29 0d 1c 70 04  |g%(&81),0,8)..p.|
00004270  0d 1c 7a 0e e7 20 53 6c  65 65 70 25 20 8c 0d 1c  |..z.. Sleep% ...|
00004280  84 3a 74 25 3d 28 52 65  67 25 28 33 29 20 80 20  |.:t%=(Reg%(3) . |
00004290  26 37 29 20 84 20 26 31  30 3a f2 75 70 53 74 61  |&7) . &10:.upSta|
000042a0  74 28 52 65 67 25 28 33  29 2c 74 25 29 3a 52 65  |t(Reg%(3),t%):Re|
000042b0  67 25 28 33 29 3d 74 25  0d 1c 8e 23 53 6c 65 65  |g%(3)=t%...#Slee|
000042c0  70 25 3d a3 3a 24 53 50  6f 69 6e 74 25 28 39 29  |p%=.:$SPoint%(9)|
000042d0  3d 22 65 6d 6c 65 64 6f  66 66 22 0d 1c 98 3c c8  |="emledoff"...<.|
000042e0  99 22 57 69 6d 70 5f 46  6f 72 63 65 52 65 64 72  |."Wimp_ForceRedr|
000042f0  61 77 22 2c 63 6f 6e 57  25 2c 49 58 25 28 39 29  |aw",conW%,IX%(9)|
00004300  2c 49 59 25 28 39 29 2c  49 58 31 25 28 39 29 2c  |,IY%(9),IX1%(9),|
00004310  49 59 31 25 28 39 29 0d  1c a2 05 cd 0d 1c ac 05  |IY1%(9).........|
00004320  e1 0d 1c b6 04 0d 1c c0  1a f4 20 53 65 74 20 74  |.......... Set t|
00004330  68 65 20 77 61 74 63 68  64 6f 67 20 62 69 74 0d  |he watchdog bit.|
00004340  1c ca 10 dd 20 f2 73 65  74 43 6f 6e 66 69 67 0d  |.... .setConfig.|
00004350  1c d4 0b ea 20 41 25 2c  42 25 0d 1c de 1b 41 25  |.... A%,B%....A%|
00004360  3d 28 43 6f 6e 66 69 67  4d 65 6d 25 3f 31 35 29  |=(ConfigMem%?15)|
00004370  20 80 20 26 34 0d 1c e8  18 e7 20 41 25 3d 30 20  | . &4..... A%=0 |
00004380  8c 20 42 25 3d a3 20 8b  20 42 25 3d b9 0d 1c f2  |. B%=. . B%=....|
00004390  15 e7 20 42 25 3c 3e 57  61 74 63 68 64 6f 67 25  |.. B%<>Watchdog%|
000043a0  20 8c 0d 1c fc 10 57 61  74 63 68 64 6f 67 25 3d  | .....Watchdog%=|
000043b0  42 25 0d 1d 06 2f e7 20  42 25 20 8c 20 24 53 50  |B%.../. B% . $SP|
000043c0  6f 69 6e 74 25 28 35 29  3d 22 79 65 73 22 20 8b  |oint%(5)="yes" .|
000043d0  20 24 53 50 6f 69 6e 74  25 28 35 29 3d 22 6e 6f  | $SPoint%(5)="no|
000043e0  22 0d 1d 10 3c c8 99 22  57 69 6d 70 5f 46 6f 72  |"...<.."Wimp_For|
000043f0  63 65 52 65 64 72 61 77  22 2c 63 6f 6e 57 25 2c  |ceRedraw",conW%,|
00004400  49 58 25 28 35 29 2c 49  59 25 28 35 29 2c 49 58  |IX%(5),IY%(5),IX|
00004410  31 25 28 35 29 2c 49 59  31 25 28 35 29 0d 1d 1a  |1%(5),IY1%(5)...|
00004420  05 cd 0d 1d 24 05 e1 0d  1d 2e 04 0d 1d 38 0c dd  |....$........8..|
00004430  20 f2 63 79 63 6c 65 0d  1d 42 08 ea 20 50 25 0d  | .cycle..B.. P%.|
00004440  1d 4c 21 e7 20 ac 28 53  6c 65 65 70 25 29 20 80  |.L!. .(Sleep%) .|
00004450  20 ac 28 53 6b 69 70 25  29 20 8c 20 f2 65 78 65  | .(Skip%) . .exe|
00004460  0d 1d 56 0a f2 69 6e 63  50 43 0d 1d 60 0b f2 63  |..V..incPC..`..c|
00004470  68 6b 49 6e 74 0d 1d 6a  19 e7 20 ac 28 53 6c 65  |hkInt..j.. .(Sle|
00004480  65 70 25 29 20 8c 20 f2  66 65 74 63 68 4e 0d 1d  |ep%) . .fetchN..|
00004490  74 1c e7 20 ac 28 53 74  65 70 25 29 20 80 20 ac  |t.. .(Step%) . .|
000044a0  28 53 6c 65 65 70 25 29  20 8c 0d 1d 7e 0e 50 25  |(Sleep%) ...~.P%|
000044b0  3d a4 68 70 67 28 31 29  0d 1d 88 0e e3 20 41 25  |=.hpg(1)..... A%|
000044c0  3d 30 20 b8 20 33 0d 1d  92 15 e7 20 42 72 65 61  |=0 . 3..... Brea|
000044d0  6b 25 28 41 25 29 3d 50  25 20 8c 0d 1d 9c 5a 53  |k%(A%)=P% ....ZS|
000044e0  74 65 70 25 3d b9 3a 24  53 50 6f 69 6e 74 25 28  |tep%=.:$SPoint%(|
000044f0  31 30 29 3d 22 47 6f 22  3a c8 99 22 57 69 6d 70  |10)="Go":.."Wimp|
00004500  5f 46 6f 72 63 65 52 65  64 72 61 77 22 2c 63 6f  |_ForceRedraw",co|
00004510  6e 57 25 2c 49 58 25 28  31 30 29 2c 49 59 25 28  |nW%,IX%(10),IY%(|
00004520  31 30 29 2c 49 58 31 25  28 31 30 29 2c 49 59 31  |10),IX1%(10),IY1|
00004530  25 28 31 30 29 0d 1d a6  30 24 53 50 6f 69 6e 74  |%(10)...0$SPoint|
00004540  25 28 36 29 3d 22 72 61  64 69 6f 6f 6e 22 3a 24  |%(6)="radioon":$|
00004550  53 50 6f 69 6e 74 25 28  37 29 3d 22 72 61 64 69  |SPoint%(7)="radi|
00004560  6f 6f 66 66 22 0d 1d b0  3c c8 99 22 57 69 6d 70  |ooff"...<.."Wimp|
00004570  5f 46 6f 72 63 65 52 65  64 72 61 77 22 2c 63 6f  |_ForceRedraw",co|
00004580  6e 57 25 2c 49 58 25 28  36 29 2c 49 59 25 28 36  |nW%,IX%(6),IY%(6|
00004590  29 2c 49 58 31 25 28 36  29 2c 49 59 31 25 28 36  |),IX1%(6),IY1%(6|
000045a0  29 0d 1d ba 3c c8 99 22  57 69 6d 70 5f 46 6f 72  |)...<.."Wimp_For|
000045b0  63 65 52 65 64 72 61 77  22 2c 63 6f 6e 57 25 2c  |ceRedraw",conW%,|
000045c0  49 58 25 28 37 29 2c 49  59 25 28 37 29 2c 49 58  |IX%(7),IY%(7),IX|
000045d0  31 25 28 37 29 2c 49 59  31 25 28 37 29 0d 1d c4  |1%(7),IY1%(7)...|
000045e0  05 cd 0d 1d ce 05 ed 0d  1d d8 05 cd 0d 1d e2 05  |................|
000045f0  e1 0d 1d ec 04 0d 1d f6  0d dd 20 f2 66 65 74 63  |.......... .fetc|
00004600  68 4e 0d 1e 00 08 ea 20  41 25 0d 1e 0a 1d 41 25  |hN..... A%....A%|
00004610  3d 28 52 65 67 25 28 32  29 2b 48 69 50 43 25 29  |=(Reg%(2)+HiPC%)|
00004620  20 80 20 26 33 46 46 0d  1e 14 3e 4f 50 63 6f 64  | . &3FF...>OPcod|
00004630  65 25 3d 28 28 50 72 6f  67 4d 65 6d 53 25 3f 28  |e%=((ProgMemS%?(|
00004640  41 25 3c 3c 31 29 29 3c  3c 38 29 20 2b 20 28 50  |A%<<1))<<8) + (P|
00004650  72 6f 67 4d 65 6d 53 25  3f 28 31 2b 28 41 25 3c  |rogMemS%?(1+(A%<|
00004660  3c 31 29 29 29 0d 1e 1e  1b f2 5f 50 75 74 50 72  |<1)))....._PutPr|
00004670  61 6d 48 65 78 28 32 2c  4f 50 63 6f 64 65 25 29  |amHex(2,OPcode%)|
00004680  0d 1e 28 09 f2 64 69 73  73 0d 1e 32 05 e1 0d 1e  |..(..diss..2....|
00004690  3c 04 0d 1e 46 0d dd 20  f2 63 68 6b 49 6e 74 0d  |<...F.. .chkInt.|
000046a0  1e 50 0e ea 20 46 25 2c  74 25 2c 45 25 0d 1e 5a  |.P.. F%,t%,E%..Z|
000046b0  04 0d 1e 64 0f 46 25 3d  52 65 67 25 28 26 42 29  |...d.F%=Reg%(&B)|
000046c0  0d 1e 6e 04 0d 1e 78 0f  f4 20 43 68 65 63 6b 20  |..n...x.. Check |
000046d0  49 4e 54 0d 1e 82 2c e7  20 28 46 25 20 80 20 26  |INT...,. (F% . &|
000046e0  31 30 29 3c 3e 30 20 80  20 28 28 52 65 67 25 28  |10)<>0 . ((Reg%(|
000046f0  26 38 36 29 20 80 20 31  29 3c 3e 30 29 20 8c 0d  |&86) . 1)<>0) ..|
00004700  1e 8c 1f 20 20 20 e7 20  52 42 30 25 20 3c 3e 28  |...   . RB0% <>(|
00004710  52 65 67 25 28 36 29 20  80 20 31 29 20 8c 0d 1e  |Reg%(6) . 1) ...|
00004720  96 1b 20 20 20 20 20 74  25 3d 52 65 67 25 28 26  |..     t%=Reg%(&|
00004730  38 31 29 20 80 20 26 34  30 0d 1e a0 62 20 20 20  |81) . &40...b   |
00004740  20 20 e7 20 28 74 25 3d  30 20 80 20 52 42 30 25  |  . (t%=0 . RB0%|
00004750  3d 31 29 20 84 20 28 74  25 3c 3e 30 20 80 20 52  |=1) . (t%<>0 . R|
00004760  42 30 25 3d 30 29 20 8c  20 74 25 3d 52 65 67 25  |B0%=0) . t%=Reg%|
00004770  28 26 42 29 20 84 20 26  32 3a f2 75 70 42 28 52  |(&B) . &2:.upB(R|
00004780  65 67 25 28 26 42 29 2c  74 25 2c 39 2c 38 29 3a  |eg%(&B),t%,9,8):|
00004790  52 65 67 25 28 26 42 29  3d 74 25 0d 1e aa 08 20  |Reg%(&B)=t%.... |
000047a0  20 20 cd 0d 1e b4 05 cd  0d 1e be 05 20 0d 1e c8  |  .......... ...|
000047b0  15 20 f4 20 43 68 65 63  6b 20 50 72 6f 72 74 20  |. . Check Prort |
000047c0  52 42 0d 1e d2 22 74 25  3d 28 52 65 67 25 28 36  |RB..."t%=(Reg%(6|
000047d0  29 20 80 20 26 46 30 29  20 80 20 52 65 67 25 28  |) . &F0) . Reg%(|
000047e0  26 38 36 29 0d 1e dc 25  20 e7 20 74 25 3c 3e 50  |&86)...% . t%<>P|
000047f0  42 63 68 61 6e 67 65 25  20 80 20 28 46 25 20 80  |Bchange% . (F% .|
00004800  20 26 38 29 3c 3e 30 20  8c 0d 1e e6 37 20 74 25  | &8)<>0 ....7 t%|
00004810  3d 52 65 67 25 28 26 42  29 20 84 20 26 31 3a f2  |=Reg%(&B) . &1:.|
00004820  75 70 42 28 52 65 67 25  28 26 42 29 2c 74 25 2c  |upB(Reg%(&B),t%,|
00004830  39 2c 38 29 3a 52 65 67  25 28 26 42 29 3d 74 25  |9,8):Reg%(&B)=t%|
00004840  0d 1e f0 06 20 cd 0d 1e  fa 05 20 0d 1f 04 1c 20  |.... ..... .... |
00004850  f4 20 45 70 72 6f 6d 20  77 72 69 74 65 20 69 6e  |. Eprom write in|
00004860  74 65 72 72 75 70 74 0d  1f 0e 15 20 e7 20 45 74  |terrupt.... . Et|
00004870  69 6d 65 4f 75 74 25 3c  3e 30 20 8c 0d 1f 18 11  |imeOut%<>0 .....|
00004880  20 45 74 69 6d 65 4f 75  74 25 2d 3d 31 0d 1f 22  | EtimeOut%-=1.."|
00004890  19 20 f2 5f 50 50 48 6d  28 32 37 2c 45 74 69 6d  |. ._PPHm(27,Etim|
000048a0  65 4f 75 74 25 29 0d 1f  2c 14 20 e7 20 45 74 69  |eOut%)..,. . Eti|
000048b0  6d 65 4f 75 74 25 3d 30  20 8c 0d 1f 36 38 20 20  |meOut%=0 ...68  |
000048c0  74 25 3d 52 65 67 25 28  26 42 29 20 84 20 26 38  |t%=Reg%(&B) . &8|
000048d0  3a f2 75 70 42 28 52 65  67 25 28 26 42 29 2c 74  |:.upB(Reg%(&B),t|
000048e0  25 2c 39 2c 38 29 3a 52  65 67 25 28 26 42 29 3d  |%,9,8):Reg%(&B)=|
000048f0  74 25 0d 1f 40 3d 20 20  74 25 3d 52 65 67 25 28  |t%..@=  t%=Reg%(|
00004900  26 38 38 29 20 80 20 26  31 44 3a f2 75 70 42 28  |&88) . &1D:.upB(|
00004910  52 65 67 25 28 26 38 38  29 2c 74 25 2c 31 38 2c  |Reg%(&88),t%,18,|
00004920  35 29 3a 52 65 67 25 28  26 38 38 29 3d 74 25 0d  |5):Reg%(&88)=t%.|
00004930  1f 4a 07 20 20 cd 0d 1f  54 06 20 cd 0d 1f 5e 05  |.J.  ...T. ...^.|
00004940  20 0d 1f 68 28 f4 20 6e  6f 77 20 72 65 73 70 6f  | ..h(. now respo|
00004950  6e 64 20 74 6f 20 61 6e  79 20 69 6e 74 65 72 72  |nd to any interr|
00004960  75 70 74 20 66 6c 61 67  73 0d 1f 72 18 45 25 3d  |upt flags..r.E%=|
00004970  28 52 65 67 25 28 26 42  29 3e 3e 33 29 20 80 20  |(Reg%(&B)>>3) . |
00004980  37 0d 1f 7c 4a 20 e7 20  28 28 52 65 67 25 28 26  |7..|J . ((Reg%(&|
00004990  42 29 20 80 20 45 25 29  3c 3e 30 20 84 20 28 52  |B) . E%)<>0 . (R|
000049a0  65 67 25 28 26 38 38 29  20 80 20 26 31 30 29 3c  |eg%(&88) . &10)<|
000049b0  3e 30 29 20 80 20 28 52  65 67 25 28 26 42 29 20  |>0) . (Reg%(&B) |
000049c0  80 20 26 38 30 29 3c 3e  30 20 8c 0d 1f 86 27 20  |. &80)<>0 ....' |
000049d0  20 20 e7 20 53 6c 65 65  70 25 20 80 20 28 28 52  |  . Sleep% . ((R|
000049e0  65 67 25 28 26 42 29 20  80 20 32 29 3c 3e 30 29  |eg%(&B) . 2)<>0)|
000049f0  20 8c 0d 1f 90 1c 20 20  20 20 f4 20 57 61 6b 65  | .....    . Wake|
00004a00  20 75 70 20 66 72 6f 6d  20 73 6c 65 65 70 0d 1f  | up from sleep..|
00004a10  9a 10 20 20 20 20 53 6c  65 65 70 25 3d a3 0d 1f  |..    Sleep%=...|
00004a20  a4 20 20 20 20 20 74 25  3d 28 52 65 67 25 28 33  |.     t%=(Reg%(3|
00004a30  29 20 80 20 26 46 37 29  20 84 20 26 31 30 0d 1f  |) . &F7) . &10..|
00004a40  ae 1b 20 20 20 20 f2 75  70 53 74 61 74 28 52 65  |..    .upStat(Re|
00004a50  67 25 28 33 29 2c 74 25  29 0d 1f b8 12 20 20 20  |g%(3),t%)....   |
00004a60  20 52 65 67 25 28 33 29  3d 74 25 0d 1f c2 1e 20  | Reg%(3)=t%.... |
00004a70  20 20 20 24 53 50 6f 69  6e 74 25 28 39 29 3d 22  |   $SPoint%(9)="|
00004a80  65 6d 6c 65 64 6f 66 66  22 0d 1f cc 40 20 20 20  |emledoff"...@   |
00004a90  20 c8 99 22 57 69 6d 70  5f 46 6f 72 63 65 52 65  | .."Wimp_ForceRe|
00004aa0  64 72 61 77 22 2c 63 6f  6e 57 25 2c 49 58 25 28  |draw",conW%,IX%(|
00004ab0  39 29 2c 49 59 25 28 39  29 2c 49 58 31 25 28 39  |9),IY%(9),IX1%(9|
00004ac0  29 2c 49 59 31 25 28 39  29 0d 1f d6 08 20 20 20  |),IY1%(9)....   |
00004ad0  cc 0d 1f e0 2d 20 20 20  f2 70 75 73 68 3a 53 74  |....-   .push:St|
00004ae0  61 63 6b 25 28 30 29 3d  52 65 67 25 28 32 29 2b  |ack%(0)=Reg%(2)+|
00004af0  48 69 50 43 25 3a f2 75  64 53 74 61 63 6b 0d 1f  |HiPC%:.udStack..|
00004b00  ea 18 20 20 20 52 65 67  25 28 32 29 3d 34 3a 48  |..   Reg%(2)=4:H|
00004b10  69 50 43 25 3d 30 0d 1f  f4 18 20 20 20 f2 5f 50  |iPC%=0....   ._P|
00004b20  75 74 50 72 61 6d 48 65  78 28 31 2c 34 29 0d 1f  |utPramHex(1,4)..|
00004b30  fe 06 20 cd 0d 20 08 17  20 20 74 25 3d 52 65 67  |.. .. ..  t%=Reg|
00004b40  25 28 26 42 29 20 80 20  26 37 46 0d 20 12 1b 20  |%(&B) . &7F. .. |
00004b50  20 f2 75 70 42 28 52 65  67 25 28 26 42 29 2c 74  | .upB(Reg%(&B),t|
00004b60  25 2c 39 2c 38 29 0d 20  1c 11 20 20 52 65 67 25  |%,9,8). ..  Reg%|
00004b70  28 26 42 29 3d 74 25 0d  20 26 06 20 cd 0d 20 30  |(&B)=t%. &. .. 0|
00004b80  14 52 42 30 25 3d 52 65  67 25 28 36 29 20 80 20  |.RB0%=Reg%(6) . |
00004b90  31 0d 20 3a 29 50 42 63  68 61 6e 67 65 25 3d 28  |1. :)PBchange%=(|
00004ba0  52 65 67 25 28 36 29 20  80 20 26 46 30 29 20 80  |Reg%(6) . &F0) .|
00004bb0  20 52 65 67 25 28 26 38  36 29 0d 20 44 05 e1 0d  | Reg%(&86). D...|
00004bc0  20 4e 04 0d 20 58 0f dd  20 f2 69 6e 63 54 69 6d  | N.. X.. .incTim|
00004bd0  65 72 0d 20 62 0f ea 20  70 73 74 25 2c 70 73 69  |er. b.. pst%,psi|
00004be0  25 0d 20 6c 10 e7 20 53  6c 65 65 70 25 20 8c 20  |%. l.. Sleep% . |
00004bf0  e1 0d 20 76 0a 70 73 74  25 3d a3 0d 20 80 19 e7  |.. v.pst%=.. ...|
00004c00  20 28 52 65 67 25 28 26  38 31 29 20 80 20 38 29  | (Reg%(&81) . 8)|
00004c10  3d 30 20 8c 0d 20 8a 16  70 73 69 25 3d 52 65 67  |=0 .. ..psi%=Reg|
00004c20  25 28 26 38 31 29 20 80  20 37 0d 20 94 15 70 73  |%(&81) . 7. ..ps|
00004c30  69 25 3d 32 5e 28 70 73  69 25 20 82 20 37 29 0d  |i%=2^(psi% . 7).|
00004c40  20 9e 13 50 72 65 73 63  61 6c 65 25 2b 3d 70 73  | ..Prescale%+=ps|
00004c50  69 25 0d 20 a8 28 e7 20  50 72 65 73 63 61 6c 65  |i%. .(. Prescale|
00004c60  25 3e 26 46 46 20 8c 20  50 72 65 73 63 61 6c 65  |%>&FF . Prescale|
00004c70  25 3d 30 3a 70 73 74 25  3d b9 0d 20 b2 18 f2 5f  |%=0:pst%=.. ..._|
00004c80  50 50 48 6d 28 32 33 2c  50 72 65 73 63 61 6c 65  |PPHm(23,Prescale|
00004c90  25 29 0d 20 bc 05 cc 0d  20 c6 0a 70 73 74 25 3d  |%). .... ..pst%=|
00004ca0  b9 0d 20 d0 05 cd 0d 20  da 04 0d 20 e4 0c e7 20  |.. .... ... ... |
00004cb0  70 73 74 25 20 8c 0d 20  ee 0e 52 65 67 25 28 31  |pst% .. ..Reg%(1|
00004cc0  29 2b 3d 31 0d 20 f8 13  e7 20 52 65 67 25 28 31  |)+=1. ... Reg%(1|
00004cd0  29 3e 26 46 46 20 8c 0d  21 02 0d 52 65 67 25 28  |)>&FF ..!..Reg%(|
00004ce0  31 29 3d 30 0d 21 0c 36  74 25 3d 52 65 67 25 28  |1)=0.!.6t%=Reg%(|
00004cf0  26 42 29 20 84 20 26 34  3a f2 75 70 42 28 52 65  |&B) . &4:.upB(Re|
00004d00  67 25 28 26 42 29 2c 74  25 2c 39 2c 38 29 3a 52  |g%(&B),t%,9,8):R|
00004d10  65 67 25 28 26 42 29 3d  74 25 0d 21 16 05 cd 0d  |eg%(&B)=t%.!....|
00004d20  21 20 16 f2 5f 50 50 48  6d 28 32 36 2c 52 65 67  |! .._PPHm(26,Reg|
00004d30  25 28 31 29 29 0d 21 2a  05 cd 0d 21 34 05 e1 0d  |%(1)).!*...!4...|
00004d40  21 3e 04 0d 21 48 0c dd  20 f2 69 6e 63 50 43 0d  |!>..!H.. .incPC.|
00004d50  21 52 0b ea 20 41 25 2c  74 25 0d 21 5c 1b e7 20  |!R.. A%,t%.!\.. |
00004d60  28 52 65 67 25 28 26 38  31 29 20 80 20 26 32 30  |(Reg%(&81) . &20|
00004d70  29 3d 30 20 8c 0d 21 66  0d f2 69 6e 63 54 69 6d  |)=0 ..!f..incTim|
00004d80  65 72 0d 21 70 05 cc 0d  21 7a 1d 20 e7 20 28 52  |er.!p...!z. . (R|
00004d90  65 67 25 28 26 42 29 20  80 20 26 41 30 29 3d 26  |eg%(&B) . &A0)=&|
00004da0  41 30 20 8c 0d 21 84 1f  20 20 e7 20 28 52 65 67  |A0 ..!..  . (Reg|
00004db0  25 28 35 29 20 80 20 26  31 30 29 3c 3e 52 41 34  |%(5) . &10)<>RA4|
00004dc0  25 20 8c 0d 21 8e 31 20  20 20 e7 20 52 41 34 25  |% ..!.1   . RA4%|
00004dd0  3d 30 20 80 20 28 52 65  67 25 28 26 38 31 29 20  |=0 . (Reg%(&81) |
00004de0  80 20 26 31 30 29 3d 30  20 8c 20 f2 69 6e 63 54  |. &10)=0 . .incT|
00004df0  69 6d 65 72 0d 21 98 33  20 20 20 e7 20 52 41 34  |imer.!.3   . RA4|
00004e00  25 3c 3e 30 20 80 20 28  52 65 67 25 28 26 38 31  |%<>0 . (Reg%(&81|
00004e10  29 20 80 20 26 31 30 29  3c 3e 30 20 8c 20 f2 69  |) . &10)<>0 . .i|
00004e20  6e 63 54 69 6d 65 72 0d  21 a2 07 20 20 cd 0d 21  |ncTimer.!..  ..!|
00004e30  ac 06 20 cd 0d 21 b6 05  cd 0d 21 c0 04 0d 21 ca  |.. ..!....!...!.|
00004e40  16 52 41 34 25 3d 52 65  67 25 28 35 29 20 80 20  |.RA4%=Reg%(5) . |
00004e50  26 31 30 0d 21 d4 04 0d  21 de 1a e7 20 67 6f 74  |&10.!...!... got|
00004e60  6f 25 3d a3 20 80 20 53  6c 65 65 70 25 3d a3 20  |o%=. . Sleep%=. |
00004e70  8c 0d 21 e8 0f 41 25 3d  a4 69 6e 63 52 28 32 29  |..!..A%=.incR(2)|
00004e80  0d 21 f2 26 e7 20 41 25  3d 30 20 8c 20 48 69 50  |.!.&. A%=0 . HiP|
00004e90  43 25 3d 28 48 69 50 43  25 2b 32 35 36 29 20 80  |C%=(HiPC%+256) .|
00004ea0  20 26 31 46 30 30 0d 21  fc 1c f2 5f 50 75 74 50  | &1F00.!..._PutP|
00004eb0  72 61 6d 48 65 78 28 31  2c 41 25 2b 48 69 50 43  |ramHex(1,A%+HiPC|
00004ec0  25 29 0d 22 06 05 cc 0d  22 10 0b 67 6f 74 6f 25  |%)."...."..goto%|
00004ed0  3d a3 0d 22 1a 21 f2 5f  50 75 74 50 72 61 6d 48  |=..".!._PutPramH|
00004ee0  65 78 28 31 2c 52 65 67  25 28 32 29 2b 48 69 50  |ex(1,Reg%(2)+HiP|
00004ef0  43 25 29 0d 22 24 05 cd  0d 22 2e 04 0d 22 38 11  |C%)."$..."..."8.|
00004f00  e7 20 57 61 74 63 68 64  6f 67 25 20 8c 0d 22 42  |. Watchdog% .."B|
00004f10  14 57 61 74 63 68 64 6f  67 54 69 6d 65 25 2b 3d  |.WatchdogTime%+=|
00004f20  31 0d 22 4c 1c f2 5f 50  50 48 6d 28 32 35 2c 57  |1."L.._PPHm(25,W|
00004f30  61 74 63 68 64 6f 67 54  69 6d 65 25 29 0d 22 56  |atchdogTime%)."V|
00004f40  04 0d 22 60 21 e7 20 57  61 74 63 68 64 6f 67 54  |.."`!. WatchdogT|
00004f50  69 6d 65 25 3e 57 61 74  63 68 4c 69 6d 69 74 25  |ime%>WatchLimit%|
00004f60  20 8c 0d 22 6a 2d 20 57  61 74 63 68 64 6f 67 54  | .."j- WatchdogT|
00004f70  69 6d 65 25 3d 30 3a f2  5f 50 50 48 6d 28 32 35  |ime%=0:._PPHm(25|
00004f80  2c 57 61 74 63 68 64 6f  67 54 69 6d 65 25 29 0d  |,WatchdogTime%).|
00004f90  22 74 1b 20 e7 20 28 52  65 67 25 28 26 38 31 29  |"t. . (Reg%(&81)|
00004fa0  20 80 20 38 29 3c 3e 30  20 8c 0d 22 7e 0a 20 20  | . 8)<>0 .."~.  |
00004fb0  41 25 3d a3 0d 22 88 1c  20 20 74 25 3d 28 52 65  |A%=.."..  t%=(Re|
00004fc0  67 25 28 26 38 31 29 20  80 20 37 29 20 82 20 37  |g%(&81) . 7) . 7|
00004fd0  0d 22 92 12 20 20 74 25  3d 28 32 5e 74 25 29 3c  |."..  t%=(2^t%)<|
00004fe0  3c 31 0d 22 9c 13 20 20  50 72 65 73 63 61 6c 65  |<1."..  Prescale|
00004ff0  25 2b 3d 74 25 0d 22 a6  28 20 20 e7 20 50 72 65  |%+=t%.".(  . Pre|
00005000  73 63 61 6c 65 25 3e 26  46 46 20 8c 20 41 25 3d  |scale%>&FF . A%=|
00005010  b9 3a 50 72 65 73 63 61  6c 65 25 3d 30 0d 22 b0  |.:Prescale%=0.".|
00005020  1a 20 20 f2 5f 50 50 48  6d 28 32 33 2c 50 72 65  |.  ._PPHm(23,Pre|
00005030  73 63 61 6c 65 25 29 0d  22 ba 07 20 20 cc 0d 22  |scale%)."..  .."|
00005040  c4 0a 20 20 41 25 3d b9  0d 22 ce 06 20 cd 0d 22  |..  A%=..".. .."|
00005050  d8 05 20 0d 22 e2 17 20  e7 20 41 25 20 80 20 ac  |.. .".. . A% . .|
00005060  28 53 6c 65 65 70 25 29  20 8c 0d 22 ec 3b 20 20  |(Sleep%) ..".;  |
00005070  74 25 3d 28 52 65 67 25  28 33 29 20 80 20 26 37  |t%=(Reg%(3) . &7|
00005080  29 20 84 20 26 38 3a f2  75 70 53 74 61 74 28 52  |) . &8:.upStat(R|
00005090  65 67 25 28 33 29 2c 74  25 29 3a 52 65 67 25 28  |eg%(3),t%):Reg%(|
000050a0  33 29 3d 74 25 0d 22 f6  17 20 20 48 69 50 43 25  |3)=t%."..  HiPC%|
000050b0  3d 30 3a 52 65 67 25 28  32 29 3d 30 0d 23 00 23  |=0:Reg%(2)=0.#.#|
000050c0  20 20 f2 5f 50 75 74 50  72 61 6d 48 65 78 28 31  |  ._PutPramHex(1|
000050d0  2c 52 65 67 25 28 32 29  2b 48 69 50 43 25 29 0d  |,Reg%(2)+HiPC%).|
000050e0  23 0a 06 20 cd 0d 23 14  05 20 0d 23 1e 14 20 e7  |#.. ..#.. .#.. .|
000050f0  20 53 6c 65 65 70 25 20  80 20 41 25 20 8c 0d 23  | Sleep% . A% ..#|
00005100  28 35 20 20 74 25 3d 52  65 67 25 28 33 29 20 80  |(5  t%=Reg%(3) .|
00005110  20 26 45 46 3a f2 75 70  53 74 61 74 28 52 65 67  | &EF:.upStat(Reg|
00005120  25 28 33 29 2c 74 25 29  3a 52 65 67 25 28 33 29  |%(3),t%):Reg%(3)|
00005130  3d 74 25 0d 23 32 25 20  20 53 6c 65 65 70 25 3d  |=t%.#2%  Sleep%=|
00005140  a3 3a 24 53 50 6f 69 6e  74 25 28 39 29 3d 22 65  |.:$SPoint%(9)="e|
00005150  6d 6c 65 64 6f 66 66 22  0d 23 3c 3e 20 20 c8 99  |mledoff".#<>  ..|
00005160  22 57 69 6d 70 5f 46 6f  72 63 65 52 65 64 72 61  |"Wimp_ForceRedra|
00005170  77 22 2c 63 6f 6e 57 25  2c 49 58 25 28 39 29 2c  |w",conW%,IX%(9),|
00005180  49 59 25 28 39 29 2c 49  58 31 25 28 39 29 2c 49  |IY%(9),IX1%(9),I|
00005190  59 31 25 28 39 29 0d 23  46 06 20 cd 0d 23 50 05  |Y1%(9).#F. ..#P.|
000051a0  cd 0d 23 5a 05 cd 0d 23  64 04 0d 23 6e 05 e1 0d  |..#Z...#d..#n...|
000051b0  23 78 04 0d 23 82 0b dd  20 f2 64 69 73 73 0d 23  |#x..#... .diss.#|
000051c0  8c 09 ea 20 6f 70 24 0d  23 96 0c 46 6f 75 6e 64  |... op$.#..Found|
000051d0  25 3d a3 0d 23 a0 24 e7  20 28 4f 50 63 6f 64 65  |%=..#.$. (OPcode|
000051e0  25 20 80 20 26 33 30 30  30 29 20 3d 20 30 20 8c  |% . &3000) = 0 .|
000051f0  20 f2 66 62 79 74 65 0d  23 aa 32 e7 20 ac 28 46  | .fbyte.#.2. .(F|
00005200  6f 75 6e 64 25 29 20 80  20 28 4f 50 63 6f 64 65  |ound%) . (OPcode|
00005210  25 20 80 20 26 33 30 30  30 29 20 3d 26 31 30 30  |% . &3000) =&100|
00005220  30 20 8c 20 f2 66 62 69  74 0d 23 b4 18 e7 20 ac  |0 . .fbit.#... .|
00005230  28 46 6f 75 6e 64 25 29  20 8c 20 f2 66 63 6f 6e  |(Found%) . .fcon|
00005240  74 0d 23 be 68 e7 20 ac  28 46 6f 75 6e 64 25 29  |t.#.h. .(Found%)|
00005250  20 8c 20 f2 5f 73 65 74  75 70 57 28 22 55 6e 69  | . ._setupW("Uni|
00005260  6d 70 6c 65 6d 65 6e 74  65 64 20 4f 70 2d 63 6f  |mplemented Op-co|
00005270  64 65 20 61 74 20 22 2b  c3 7e 28 52 65 67 25 28  |de at "+.~(Reg%(|
00005280  32 29 2b 48 69 50 43 25  29 29 3a f2 5f 50 75 74  |2)+HiPC%)):._Put|
00005290  50 72 61 6d 73 53 28 33  2c 22 55 6e 69 6d 70 6c  |PramsS(3,"Unimpl|
000052a0  65 6d 65 6e 74 65 64 22  29 0d 23 c8 05 e1 0d 23  |emented").#....#|
000052b0  d2 04 0d 23 dc 0c dd 20  f2 66 63 6f 6e 74 0d 23  |...#... .fcont.#|
000052c0  e6 08 ea 20 54 25 0d 23  f0 10 c8 8e 20 4f 50 63  |... T%.#.... OPc|
000052d0  6f 64 65 25 20 ca 0d 23  fa 1c c9 20 26 36 34 3a  |ode% ..#... &64:|
000052e0  20 f2 73 6d 61 6b 65 28  32 36 2c 26 46 30 30 2c  | .smake(26,&F00,|
000052f0  a3 29 0d 24 04 1c c9 20  26 36 33 3a 20 f2 73 6d  |.).$... &63: .sm|
00005300  61 6b 65 28 33 33 2c 26  46 30 30 2c a3 29 0d 24  |ake(33,&F00,.).$|
00005310  0e 1c c9 20 20 26 39 3a  20 f2 73 6d 61 6b 65 28  |...  &9: .smake(|
00005320  33 30 2c 26 46 30 30 2c  a3 29 0d 24 18 1c c9 20  |30,&F00,.).$... |
00005330  20 26 38 3a 20 f2 73 6d  61 6b 65 28 33 32 2c 26  | &8: .smake(32,&|
00005340  46 30 30 2c a3 29 0d 24  22 05 7f 0d 24 2c 43 e7  |F00,.).$"...$,C.|
00005350  20 28 4f 50 63 6f 64 65  25 20 80 20 26 33 38 30  | (OPcode% . &380|
00005360  30 29 3d 26 32 30 30 30  20 8c 20 f2 67 6d 61 6b  |0)=&2000 . .gmak|
00005370  65 28 32 35 2c 4f 50 63  6f 64 65 25 20 80 20 26  |e(25,OPcode% . &|
00005380  33 46 46 2c 22 61 64 64  72 65 73 73 22 29 0d 24  |3FF,"address").$|
00005390  36 43 e7 20 28 4f 50 63  6f 64 65 25 20 80 20 26  |6C. (OPcode% . &|
000053a0  33 38 30 30 29 3d 26 32  38 30 30 20 8c 20 f2 67  |3800)=&2800 . .g|
000053b0  6d 61 6b 65 28 32 37 2c  4f 50 63 6f 64 65 25 20  |make(27,OPcode% |
000053c0  80 20 26 33 46 46 2c 22  61 64 64 72 65 73 73 22  |. &3FF,"address"|
000053d0  29 0d 24 40 13 20 20 e7  20 ac 28 46 6f 75 6e 64  |).$@.  . .(Found|
000053e0  25 29 20 8c 0d 24 4a 1d  20 20 54 25 3d 28 4f 50  |%) ..$J.  T%=(OP|
000053f0  63 6f 64 65 25 20 80 20  26 33 46 30 30 29 3e 3e  |code% . &3F00)>>|
00005400  38 0d 24 54 0d 20 20 c8  8e 20 54 25 20 ca 0d 24  |8.$T.  .. T% ..$|
00005410  5e 2c 20 20 c9 20 26 33  39 3a f2 67 6d 61 6b 65  |^,  . &39:.gmake|
00005420  28 32 34 2c 4f 50 63 6f  64 65 25 20 80 20 26 46  |(24,OPcode% . &F|
00005430  46 2c 22 76 61 6c 75 65  22 29 0d 24 68 2c 20 20  |F,"value").$h,  |
00005440  c9 20 26 33 38 3a f2 67  6d 61 6b 65 28 32 38 2c  |. &38:.gmake(28,|
00005450  4f 50 63 6f 64 65 25 20  80 20 26 46 46 2c 22 76  |OPcode% . &FF,"v|
00005460  61 6c 75 65 22 29 0d 24  72 2c 20 20 c9 20 26 33  |alue").$r,  . &3|
00005470  41 3a f2 67 6d 61 6b 65  28 33 35 2c 4f 50 63 6f  |A:.gmake(35,OPco|
00005480  64 65 25 20 80 20 26 46  46 2c 22 76 61 6c 75 65  |de% . &FF,"value|
00005490  22 29 0d 24 7c 07 20 20  cb 0d 24 86 14 20 20 20  |").$|.  ..$..   |
000054a0  e7 20 ac 28 46 6f 75 6e  64 25 29 20 8c 0d 24 90  |. .(Found%) ..$.|
000054b0  45 20 20 20 20 20 e7 20  28 4f 50 63 6f 64 65 25  |E     . (OPcode%|
000054c0  20 80 20 26 33 45 30 30  29 3d 26 33 45 30 30 20  | . &3E00)=&3E00 |
000054d0  8c 20 f2 67 6d 61 6b 65  28 32 33 2c 4f 50 63 6f  |. .gmake(23,OPco|
000054e0  64 65 25 20 80 20 26 46  46 2c 22 76 61 6c 75 65  |de% . &FF,"value|
000054f0  22 29 0d 24 9a 45 20 20  20 20 20 e7 20 28 4f 50  |").$.E     . (OP|
00005500  63 6f 64 65 25 20 80 20  26 33 43 30 30 29 3d 26  |code% . &3C00)=&|
00005510  33 30 30 30 20 8c 20 f2  67 6d 61 6b 65 28 32 39  |3000 . .gmake(29|
00005520  2c 4f 50 63 6f 64 65 25  20 80 20 26 46 46 2c 22  |,OPcode% . &FF,"|
00005530  76 61 6c 75 65 22 29 0d  24 a4 45 20 20 20 20 20  |value").$.E     |
00005540  e7 20 28 4f 50 63 6f 64  65 25 20 80 20 26 33 43  |. (OPcode% . &3C|
00005550  30 30 29 3d 26 33 34 30  30 20 8c 20 f2 67 6d 61  |00)=&3400 . .gma|
00005560  6b 65 28 33 31 2c 4f 50  63 6f 64 65 25 20 80 20  |ke(31,OPcode% . |
00005570  26 46 46 2c 22 76 61 6c  75 65 22 29 0d 24 ae 45  |&FF,"value").$.E|
00005580  20 20 20 20 20 e7 20 28  4f 50 63 6f 64 65 25 20  |     . (OPcode% |
00005590  80 20 26 33 45 30 30 29  3d 26 33 43 30 30 20 8c  |. &3E00)=&3C00 .|
000055a0  20 f2 67 6d 61 6b 65 28  33 34 2c 4f 50 63 6f 64  | .gmake(34,OPcod|
000055b0  65 25 20 80 20 26 46 46  2c 22 76 61 6c 75 65 22  |e% . &FF,"value"|
000055c0  29 0d 24 b8 08 20 20 20  cd 0d 24 c2 07 20 20 cd  |).$..   ..$..  .|
000055d0  0d 24 cc 05 cb 0d 24 d6  05 e1 0d 24 e0 04 0d 24  |.$....$....$...$|
000055e0  ea 0b dd 20 f2 66 62 69  74 0d 24 f4 0b ea 20 41  |... .fbit.$... A|
000055f0  25 2c 70 24 0d 24 fe 20  41 25 3d 28 28 4f 50 63  |%,p$.$. A%=((OPc|
00005600  6f 64 65 25 20 80 20 26  43 30 30 29 3e 3e 31 30  |ode% . &C00)>>10|
00005610  29 2b 31 39 0d 25 08 4b  70 24 3d 4d 6e 65 24 28  |)+19.%.Kp$=Mne$(|
00005620  41 25 29 2b 22 20 66 69  6c 65 20 22 2b c3 7e 28  |A%)+" file "+.~(|
00005630  4f 50 63 6f 64 65 25 20  80 20 26 37 46 29 2b 22  |OPcode% . &7F)+"|
00005640  68 2c 20 62 69 74 20 22  2b c3 28 28 4f 50 63 6f  |h, bit "+.((OPco|
00005650  64 65 25 20 80 20 26 33  38 30 29 3e 3e 37 29 0d  |de% . &380)>>7).|
00005660  25 12 15 f2 5f 50 75 74  50 72 61 6d 73 53 28 33  |%..._PutPramsS(3|
00005670  2c 70 24 29 0d 25 1c 19  46 6f 75 6e 64 25 3d b9  |,p$).%..Found%=.|
00005680  3a 4f 50 6e 75 6d 62 65  72 25 3d 41 25 0d 25 26  |:OPnumber%=A%.%&|
00005690  05 e1 0d 25 30 04 0d 25  3a 0c dd 20 f2 66 62 79  |...%0..%:.. .fby|
000056a0  74 65 0d 25 44 0f ea 20  54 72 69 61 6c 25 2c 41  |te.%D.. Trial%,A|
000056b0  25 0d 25 4e 1a 54 72 69  61 6c 25 3d 4f 50 63 6f  |%.%N.Trial%=OPco|
000056c0  64 65 25 20 80 20 26 33  46 38 30 0d 25 58 2f e7  |de% . &3F80.%X/.|
000056d0  20 54 72 69 61 6c 25 3d  26 31 38 30 20 8c 20 f2  | Trial%=&180 . .|
000056e0  73 6d 61 6b 65 28 33 2c  4f 50 63 6f 64 65 25 20  |smake(3,OPcode% |
000056f0  80 20 26 37 46 2c a3 29  3a e1 0d 25 62 26 e7 20  |. &7F,.):..%b&. |
00005700  54 72 69 61 6c 25 3d 26  31 30 30 20 8c 20 f2 73  |Trial%=&100 . .s|
00005710  6d 61 6b 65 28 34 2c 26  46 30 30 2c a3 29 3a e1  |make(4,&F00,.):.|
00005720  0d 25 6c 38 e7 20 54 72  69 61 6c 25 3d 30 20 80  |.%l8. Trial%=0 .|
00005730  20 28 4f 50 63 6f 64 65  25 20 80 20 26 39 46 29  | (OPcode% . &9F)|
00005740  3d 30 20 8c 20 f2 73 6d  61 6b 65 28 31 33 2c 26  |=0 . .smake(13,&|
00005750  46 30 30 2c a3 29 3a e1  0d 25 76 2f e7 20 54 72  |F00,.):..%v/. Tr|
00005760  69 61 6c 25 3d 26 38 30  20 8c 20 f2 73 6d 61 6b  |ial%=&80 . .smak|
00005770  65 28 31 32 2c 4f 50 63  6f 64 65 25 20 80 20 26  |e(12,OPcode% . &|
00005780  37 46 2c a3 29 3a e1 0d  25 80 1a 54 72 69 61 6c  |7F,.):..%..Trial|
00005790  25 3d 4f 50 63 6f 64 65  25 20 80 20 26 33 46 30  |%=OPcode% . &3F0|
000057a0  30 0d 25 8a 08 41 25 3d  30 0d 25 94 05 f5 0d 25  |0.%..A%=0.%....%|
000057b0  9e 09 41 25 2b 3d 31 0d  25 a8 13 e7 20 41 25 3d  |..A%+=1.%... A%=|
000057c0  31 33 20 8c 20 41 25 2b  3d 31 0d 25 b2 1c fd 20  |13 . A%+=1.%... |
000057d0  4f 70 25 28 41 25 29 3d  54 72 69 61 6c 25 20 84  |Op%(A%)=Trial% .|
000057e0  20 41 25 3d 32 33 0d 25  bc 29 e7 20 41 25 3c 3e  | A%=23.%.). A%<>|
000057f0  32 33 20 8c 20 f2 73 6d  61 6b 65 28 41 25 2c 4f  |23 . .smake(A%,O|
00005800  50 63 6f 64 65 25 20 80  20 26 37 46 2c b9 29 0d  |Pcode% . &7F,.).|
00005810  25 c6 24 e7 20 4f 50 63  6f 64 65 25 3d 26 36 36  |%.$. OPcode%=&66|
00005820  20 8c 20 f2 73 6d 61 6b  65 28 33 36 2c 26 38 36  | . .smake(36,&86|
00005830  2c a3 29 0d 25 d0 24 e7  20 4f 50 63 6f 64 65 25  |,.).%.$. OPcode%|
00005840  3d 26 36 35 20 8c 20 f2  73 6d 61 6b 65 28 33 36  |=&65 . .smake(36|
00005850  2c 26 38 35 2c a3 29 0d  25 da 25 e7 20 4f 50 63  |,&85,.).%.%. OPc|
00005860  6f 64 65 25 3d 26 36 32  20 8c 20 f2 73 6d 61 6b  |ode%=&62 . .smak|
00005870  65 28 33 37 2c 26 46 30  30 2c a3 29 0d 25 e4 05  |e(37,&F00,.).%..|
00005880  e1 0d 25 ee 04 0d 25 f8  16 dd 20 f2 73 6d 61 6b  |..%...%... .smak|
00005890  65 28 6f 25 2c 76 25 2c  64 25 29 0d 26 02 08 ea  |e(o%,v%,d%).&...|
000058a0  20 70 24 0d 26 0c 2d e7  20 76 25 3e 26 38 30 30  | p$.&.-. v%>&800|
000058b0  20 8c 20 70 24 3d 22 22  20 8b 20 70 24 3d 22 66  | . p$="" . p$="f|
000058c0  69 6c 65 20 22 2b c3 7e  28 76 25 29 2b 22 68 22  |ile "+.~(v%)+"h"|
000058d0  0d 26 16 0a e7 20 64 25  20 8c 0d 26 20 33 e7 20  |.&... d% ..& 3. |
000058e0  28 4f 50 63 6f 64 65 25  20 80 20 26 38 30 29 3d  |(OPcode% . &80)=|
000058f0  30 20 8c 20 70 24 3d 70  24 2b 22 2c 20 77 22 20  |0 . p$=p$+", w" |
00005900  8b 20 70 24 3d 70 24 2b  22 2c 20 66 22 0d 26 2a  |. p$=p$+", f".&*|
00005910  05 cd 0d 26 34 22 f2 5f  50 75 74 50 72 61 6d 73  |...&4"._PutPrams|
00005920  53 28 33 2c 4d 6e 65 24  28 6f 25 29 2b 22 20 22  |S(3,Mne$(o%)+" "|
00005930  2b 70 24 29 0d 26 3e 0c  46 6f 75 6e 64 25 3d b9  |+p$).&>.Found%=.|
00005940  0d 26 48 10 4f 50 6e 75  6d 62 65 72 25 3d 6f 25  |.&H.OPnumber%=o%|
00005950  0d 26 52 05 e1 0d 26 5c  04 0d 26 66 16 dd 20 f2  |.&R...&\..&f.. .|
00005960  67 6d 61 6b 65 28 6f 25  2c 76 25 2c 61 24 29 0d  |gmake(o%,v%,a$).|
00005970  26 70 08 ea 20 70 24 0d  26 7a 2c e7 20 76 25 3e  |&p.. p$.&z,. v%>|
00005980  26 38 30 30 20 8c 20 70  24 3d 22 22 20 8b 20 70  |&800 . p$="" . p|
00005990  24 3d 61 24 2b 22 20 22  2b c3 7e 28 76 25 29 2b  |$=a$+" "+.~(v%)+|
000059a0  22 68 22 0d 26 84 22 f2  5f 50 75 74 50 72 61 6d  |"h".&."._PutPram|
000059b0  73 53 28 33 2c 4d 6e 65  24 28 6f 25 29 2b 22 20  |sS(3,Mne$(o%)+" |
000059c0  22 2b 70 24 29 0d 26 8e  0c 46 6f 75 6e 64 25 3d  |"+p$).&..Found%=|
000059d0  b9 0d 26 98 10 4f 50 6e  75 6d 62 65 72 25 3d 6f  |..&..OPnumber%=o|
000059e0  25 0d 26 a2 05 e1 0d 26  ac 04 0d 26 b6 1e dd 20  |%.&....&...&... |
000059f0  f2 5f 75 70 49 4f 28 6f  25 2c 6e 65 77 25 2c 73  |._upIO(o%,new%,s|
00005a00  25 2c 6e 25 2c 72 25 29  0d 26 c0 0b ea 20 42 25  |%,n%,r%).&... B%|
00005a10  2c 41 25 0d 26 ca 15 e3  20 41 25 3d 73 25 20 b8  |,A%.&... A%=s% .|
00005a20  20 73 25 2b 6e 25 2d 31  0d 26 d4 10 42 25 3d 32  | s%+n%-1.&..B%=2|
00005a30  5e 28 41 25 2d 73 25 29  0d 26 de 20 e7 20 28 6f  |^(A%-s%).&. . (o|
00005a40  25 20 80 20 42 25 29 20  3c 3e 20 28 6e 65 77 25  |% . B%) <> (new%|
00005a50  20 80 20 42 25 29 20 8c  0d 26 e8 16 20 e7 20 28  | . B%) ..&.. . (|
00005a60  6e 65 77 25 20 80 20 42  25 29 3d 30 20 8c 0d 26  |new% . B%)=0 ..&|
00005a70  f2 4b 20 e7 20 28 52 65  67 25 28 72 25 29 20 80  |.K . (Reg%(r%) .|
00005a80  20 42 25 29 3d 30 20 8c  20 24 53 50 6f 69 6e 74  | B%)=0 . $SPoint|
00005a90  25 28 41 25 29 3d 22 65  6d 6c 65 64 6f 66 66 22  |%(A%)="emledoff"|
00005aa0  20 8b 20 24 53 50 6f 69  6e 74 25 28 41 25 29 3d  | . $SPoint%(A%)=|
00005ab0  22 65 6d 6c 65 64 6f 6e  22 0d 26 fc 06 20 cc 0d  |"emledon".&.. ..|
00005ac0  27 06 49 20 e7 20 28 52  65 67 25 28 72 25 29 20  |'.I . (Reg%(r%) |
00005ad0  80 20 42 25 29 3d 30 20  8c 20 24 53 50 6f 69 6e  |. B%)=0 . $SPoin|
00005ae0  74 25 28 41 25 29 3d 22  65 6d 73 77 6f 66 66 22  |t%(A%)="emswoff"|
00005af0  20 8b 20 24 53 50 6f 69  6e 74 25 28 41 25 29 3d  | . $SPoint%(A%)=|
00005b00  22 65 6d 73 77 6f 6e 22  0d 27 10 06 20 cd 0d 27  |"emswon".'.. ..'|
00005b10  1a 41 20 c8 99 22 57 69  6d 70 5f 46 6f 72 63 65  |.A .."Wimp_Force|
00005b20  52 65 64 72 61 77 22 2c  63 6f 6e 57 25 2c 49 58  |Redraw",conW%,IX|
00005b30  25 28 41 25 29 2c 49 59  25 28 41 25 29 2c 49 58  |%(A%),IY%(A%),IX|
00005b40  31 25 28 41 25 29 2c 49  59 31 25 28 41 25 29 0d  |1%(A%),IY1%(A%).|
00005b50  27 24 05 cd 0d 27 2e 04  0d 27 38 05 ed 0d 27 42  |'$...'...'8...'B|
00005b60  05 e1 0d 27 4c 04 0d 27  56 16 dd 20 f2 75 70 50  |...'L..'V.. .upP|
00005b70  62 28 6f 6c 64 25 2c 6e  65 77 25 29 0d 27 60 0b  |b(old%,new%).'`.|
00005b80  ea 20 41 25 2c 42 25 0d  27 6a 0e e3 20 41 25 3d  |. A%,B%.'j.. A%=|
00005b90  30 20 b8 20 37 0d 27 74  0b 42 25 3d 32 5e 41 25  |0 . 7.'t.B%=2^A%|
00005ba0  0d 27 7e 3b e7 20 28 28  6f 6c 64 25 20 80 20 42  |.'~;. ((old% . B|
00005bb0  25 29 20 3c 3e 20 28 6e  65 77 25 20 80 20 42 25  |%) <> (new% . B%|
00005bc0  29 29 20 80 20 28 28 52  65 67 25 28 26 38 36 29  |)) . ((Reg%(&86)|
00005bd0  20 80 20 42 25 29 3d 30  29 20 8c 0d 27 88 4c e7  | . B%)=0) ..'.L.|
00005be0  20 28 6e 65 77 25 20 80  20 42 25 29 3d 30 20 8c  | (new% . B%)=0 .|
00005bf0  20 24 53 50 6f 69 6e 74  25 28 41 25 2b 31 31 29  | $SPoint%(A%+11)|
00005c00  3d 22 65 6d 6c 65 64 6f  66 66 22 20 8b 20 24 53  |="emledoff" . $S|
00005c10  50 6f 69 6e 74 25 28 41  25 2b 31 31 29 3d 22 65  |Point%(A%+11)="e|
00005c20  6d 6c 65 64 6f 6e 22 0d  27 92 4c c8 99 22 57 69  |mledon".'.L.."Wi|
00005c30  6d 70 5f 46 6f 72 63 65  52 65 64 72 61 77 22 2c  |mp_ForceRedraw",|
00005c40  63 6f 6e 57 25 2c 49 58  25 28 41 25 2b 31 31 29  |conW%,IX%(A%+11)|
00005c50  2c 49 59 25 28 41 25 2b  31 31 29 2c 49 58 31 25  |,IY%(A%+11),IX1%|
00005c60  28 41 25 2b 31 31 29 2c  49 59 31 25 28 41 25 2b  |(A%+11),IY1%(A%+|
00005c70  31 31 29 0d 27 9c 05 cd  0d 27 a6 05 ed 0d 27 b0  |11).'....'....'.|
00005c80  05 e1 0d 27 ba 04 0d 27  c4 18 dd 20 f2 75 70 53  |...'...'... .upS|
00005c90  74 61 74 28 6f 6c 64 25  2c 6e 65 77 25 29 0d 27  |tat(old%,new%).'|
00005ca0  ce 0b ea 20 41 25 2c 42  25 0d 27 d8 0e e3 20 41  |... A%,B%.'... A|
00005cb0  25 3d 30 20 b8 20 37 0d  27 e2 0b 42 25 3d 32 5e  |%=0 . 7.'..B%=2^|
00005cc0  41 25 0d 27 ec 22 e7 20  28 6f 6c 64 25 20 80 20  |A%.'.". (old% . |
00005cd0  42 25 29 20 3c 3e 20 28  6e 65 77 25 20 80 20 42  |B%) <> (new% . B|
00005ce0  25 29 20 8c 0d 27 f6 48  e7 20 28 6e 65 77 25 20  |%) ..'.H. (new% |
00005cf0  80 20 42 25 29 3d 30 20  8c 20 24 53 50 6f 69 6e  |. B%)=0 . $SPoin|
00005d00  74 25 28 41 25 2b 32 34  29 3d 22 65 6d 7a 65 72  |t%(A%+24)="emzer|
00005d10  6f 22 20 8b 20 24 53 50  6f 69 6e 74 25 28 41 25  |o" . $SPoint%(A%|
00005d20  2b 32 34 29 3d 22 65 6d  6f 6e 65 22 0d 28 00 4c  |+24)="emone".(.L|
00005d30  c8 99 22 57 69 6d 70 5f  46 6f 72 63 65 52 65 64  |.."Wimp_ForceRed|
00005d40  72 61 77 22 2c 63 6f 6e  57 25 2c 49 58 25 28 41  |raw",conW%,IX%(A|
00005d50  25 2b 32 34 29 2c 49 59  25 28 41 25 2b 32 34 29  |%+24),IY%(A%+24)|
00005d60  2c 49 58 31 25 28 41 25  2b 32 34 29 2c 49 59 31  |,IX1%(A%+24),IY1|
00005d70  25 28 41 25 2b 32 34 29  0d 28 0a 05 cd 0d 28 14  |%(A%+24).(....(.|
00005d80  05 ed 0d 28 1e 05 e1 0d  28 28 04 0d 28 32 16 dd  |...(....((..(2..|
00005d90  20 f2 75 70 50 61 28 6f  6c 64 25 2c 6e 65 77 25  | .upPa(old%,new%|
00005da0  29 0d 28 3c 0b ea 20 41  25 2c 42 25 0d 28 46 0e  |).(<.. A%,B%.(F.|
00005db0  e3 20 41 25 3d 30 20 b8  20 34 0d 28 50 0b 42 25  |. A%=0 . 4.(P.B%|
00005dc0  3d 32 5e 41 25 0d 28 5a  3b e7 20 28 28 6f 6c 64  |=2^A%.(Z;. ((old|
00005dd0  25 20 80 20 42 25 29 20  3c 3e 20 28 6e 65 77 25  |% . B%) <> (new%|
00005de0  20 80 20 42 25 29 29 20  80 20 28 28 52 65 67 25  | . B%)) . ((Reg%|
00005df0  28 26 38 35 29 20 80 20  42 25 29 3d 30 29 20 8c  |(&85) . B%)=0) .|
00005e00  0d 28 64 4c e7 20 28 6e  65 77 25 20 80 20 42 25  |.(dL. (new% . B%|
00005e10  29 3d 30 20 8c 20 24 53  50 6f 69 6e 74 25 28 41  |)=0 . $SPoint%(A|
00005e20  25 2b 31 39 29 3d 22 65  6d 6c 65 64 6f 66 66 22  |%+19)="emledoff"|
00005e30  20 8b 20 24 53 50 6f 69  6e 74 25 28 41 25 2b 31  | . $SPoint%(A%+1|
00005e40  39 29 3d 22 65 6d 6c 65  64 6f 6e 22 0d 28 6e 4c  |9)="emledon".(nL|
00005e50  c8 99 22 57 69 6d 70 5f  46 6f 72 63 65 52 65 64  |.."Wimp_ForceRed|
00005e60  72 61 77 22 2c 63 6f 6e  57 25 2c 49 58 25 28 41  |raw",conW%,IX%(A|
00005e70  25 2b 31 39 29 2c 49 59  25 28 41 25 2b 31 39 29  |%+19),IY%(A%+19)|
00005e80  2c 49 58 31 25 28 41 25  2b 31 39 29 2c 49 59 31  |,IX1%(A%+19),IY1|
00005e90  25 28 41 25 2b 31 39 29  0d 28 6f 05 cd 0d 28 82  |%(A%+19).(o...(.|
00005ea0  05 ed 0d 28 8c 05 e1 0d  28 96 04 0d 28 a0 1b dd  |...(....(...(...|
00005eb0  20 f2 75 70 42 28 6f 6c  64 25 2c 6e 65 77 25 2c  | .upB(old%,new%,|
00005ec0  69 25 2c 6e 25 29 0d 28  aa 0b ea 20 41 25 2c 42  |i%,n%).(... A%,B|
00005ed0  25 0d 28 b4 11 e3 20 41  25 3d 30 20 b8 20 6e 25  |%.(... A%=0 . n%|
00005ee0  2d 31 0d 28 be 0b 42 25  3d 32 5e 41 25 0d 28 c8  |-1.(..B%=2^A%.(.|
00005ef0  22 e7 20 28 6f 6c 64 25  20 80 20 42 25 29 20 3c  |". (old% . B%) <|
00005f00  3e 20 28 6e 65 77 25 20  80 20 42 25 29 20 8c 0d  |> (new% . B%) ..|
00005f10  28 d2 4a e7 20 28 6e 65  77 25 20 80 20 42 25 29  |(.J. (new% . B%)|
00005f20  3d 30 20 8c 20 24 53 50  6f 69 6e 74 4d 25 28 41  |=0 . $SPointM%(A|
00005f30  25 2b 69 25 29 3d 22 65  6d 7a 65 72 6f 22 20 8b  |%+i%)="emzero" .|
00005f40  20 24 53 50 6f 69 6e 74  4d 25 28 41 25 2b 69 25  | $SPointM%(A%+i%|
00005f50  29 3d 22 65 6d 6f 6e 65  22 0d 28 dc 50 c8 99 22  |)="emone".(.P.."|
00005f60  57 69 6d 70 5f 46 6f 72  63 65 52 65 64 72 61 77  |Wimp_ForceRedraw|
00005f70  22 2c 6d 6f 6e 57 25 2c  49 58 4d 25 28 41 25 2b  |",monW%,IXM%(A%+|
00005f80  69 25 29 2c 49 59 4d 25  28 41 25 2b 69 25 29 2c  |i%),IYM%(A%+i%),|
00005f90  49 58 31 4d 25 28 41 25  2b 69 25 29 2c 49 59 31  |IX1M%(A%+i%),IY1|
00005fa0  4d 25 28 41 25 2b 69 25  29 0d 28 e6 05 cd 0d 28  |M%(A%+i%).(....(|
00005fb0  f0 05 ed 0d 28 fa 05 e1  0d 29 04 04 0d 29 0e 41  |....(....)...).A|
00005fc0  f4 20 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |. --------------|
00005fd0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00005ff0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 29 18  |-------------.).|
00006000  0b dd 20 a4 66 69 6c 65  0d 29 22 0b ea 20 66 25  |.. .file.)".. f%|
00006010  2c 73 25 0d 29 2c 14 66  25 3d 4f 50 63 6f 64 65  |,s%.),.f%=OPcode|
00006020  25 20 80 20 26 37 46 0d  29 36 19 73 25 3d 28 52  |% . &7F.)6.s%=(R|
00006030  65 67 25 28 33 29 20 80  20 26 32 30 29 3c 3c 32  |eg%(3) . &20)<<2|
00006040  0d 29 40 0e 66 25 3d 66  25 20 84 20 73 25 0d 29  |.)@.f%=f% . s%.)|
00006050  4a 20 e7 20 66 25 3d 30  20 84 20 66 25 3d 26 38  |J . f%=0 . f%=&8|
00006060  30 20 8c 20 66 25 3d 52  65 67 25 28 34 29 0d 29  |0 . f%=Reg%(4).)|
00006070  54 1a e7 20 66 25 3e 26  38 39 20 8c 20 66 25 3d  |T.. f%>&89 . f%=|
00006080  66 25 20 80 20 26 37 46  0d 29 5e 23 e7 20 66 25  |f% . &7F.)^#. f%|
00006090  3e 26 38 31 20 80 20 66  25 3c 26 38 35 20 8c 20  |>&81 . f%<&85 . |
000060a0  66 25 3d 66 25 20 80 20  26 37 46 0d 29 68 07 3d  |f%=f% . &7F.)h.=|
000060b0  66 25 0d 29 72 04 0d 29  7c 09 dd 20 a4 62 6e 0d  |f%.)r..)|.. .bn.|
000060c0  29 86 1c 3d 32 5e 28 28  4f 50 63 6f 64 65 25 20  |)..=2^((OPcode% |
000060d0  80 20 26 33 38 30 29 3e  3e 37 29 0d 29 90 04 0d  |. &380)>>7).)...|
000060e0  29 9a 0a dd 20 f2 70 75  74 0d 29 a4 0e ea 20 6f  |)... .put.)... o|
000060f0  25 2c 64 25 2c 73 25 0d  29 ae 19 e7 20 28 4f 50  |%,d%,s%.)... (OP|
00006100  63 6f 64 65 25 20 80 20  26 38 30 29 3d 30 20 8c  |code% . &80)=0 .|
00006110  0d 29 b8 20 57 72 65 67  25 3d 74 25 3a f2 5f 50  |.). Wreg%=t%:._P|
00006120  75 74 50 72 61 6d 48 65  78 32 28 34 2c 74 25 29  |utPramHex2(4,t%)|
00006130  0d 29 c2 2c 73 25 3d 52  65 67 25 28 33 29 3a 52  |.).,s%=Reg%(3):R|
00006140  65 67 25 28 33 29 3d 28  73 25 20 80 20 26 46 38  |eg%(3)=(s% . &F8|
00006150  29 20 84 20 4e 65 77 53  74 61 74 25 0d 29 cc 27  |) . NewStat%.).'|
00006160  e7 20 73 25 3c 3e 52 65  67 25 28 33 29 20 8c 20  |. s%<>Reg%(3) . |
00006170  f2 75 70 53 74 61 74 28  73 25 2c 52 65 67 25 28  |.upStat(s%,Reg%(|
00006180  33 29 29 0d 29 d6 05 cc  0d 29 e0 0f 6f 25 3d 52  |3)).)....)..o%=R|
00006190  65 67 25 28 72 25 29 0d  29 ea 0f 52 65 67 25 28  |eg%(r%).)..Reg%(|
000061a0  72 25 29 3d 74 25 0d 29  f4 0b c8 8e 20 72 25 20  |r%)=t%.).... r% |
000061b0  ca 0d 29 fe 3e c9 20 20  20 33 3a 20 52 65 67 25  |..).>.   3: Reg%|
000061c0  28 33 29 3d 28 74 25 20  80 20 26 45 37 29 20 84  |(3)=(t% . &E7) .|
000061d0  20 28 6f 25 20 80 20 26  31 38 29 3a f2 75 70 53  | (o% . &18):.upS|
000061e0  74 61 74 28 6f 25 2c 52  65 67 25 28 33 29 29 0d  |tat(o%,Reg%(3)).|
000061f0  2a 08 41 c9 20 20 20 31  3a 20 e7 20 28 52 65 67  |*.A.   1: . (Reg|
00006200  25 28 26 38 31 29 20 80  20 38 29 3d 30 20 8c 20  |%(&81) . 8)=0 . |
00006210  50 72 65 73 63 61 6c 65  25 3d 30 3a f2 5f 50 50  |Prescale%=0:._PP|
00006220  48 6d 28 32 33 2c 50 72  65 73 63 61 6c 65 25 29  |Hm(23,Prescale%)|
00006230  0d 2a 12 4c c9 20 20 20  35 3a 20 52 65 67 25 28  |.*.L.   5: Reg%(|
00006240  35 29 3d 28 52 65 67 25  28 26 38 35 29 20 80 20  |5)=(Reg%(&85) . |
00006250  6f 25 29 20 84 20 28 28  52 65 67 25 28 26 38 35  |o%) . ((Reg%(&85|
00006260  29 20 82 20 26 31 46 29  20 80 20 74 25 29 20 3a  |) . &1F) . t%) :|
00006270  f2 75 70 50 61 28 6f 25  2c 74 25 29 0d 2a 1c 4d  |.upPa(o%,t%).*.M|
00006280  c9 20 20 20 36 3a 20 20  52 65 67 25 28 36 29 3d  |.   6:  Reg%(6)=|
00006290  28 52 65 67 25 28 26 38  36 29 20 80 20 6f 25 29  |(Reg%(&86) . o%)|
000062a0  20 84 20 28 28 52 65 67  25 28 26 38 36 29 20 82  | . ((Reg%(&86) .|
000062b0  20 26 46 46 29 20 80 20  74 25 29 20 3a f2 75 70  | &FF) . t%) :.up|
000062c0  50 62 28 6f 25 2c 74 25  29 0d 2a 26 30 c9 20 20  |Pb(o%,t%).*&0.  |
000062d0  20 37 3a 20 f2 5f 73 65  74 75 70 57 28 22 43 61  | 7: ._setupW("Ca|
000062e0  6e 27 74 20 77 72 69 74  65 20 74 6f 20 72 65 67  |n't write to reg|
000062f0  69 73 74 65 72 20 37 22  29 0d 2a 30 43 c9 20 20  |ister 7").*0C.  |
00006300  20 39 3a 20 52 65 67 25  28 38 29 3d 44 61 74 61  | 9: Reg%(8)=Data|
00006310  4d 65 6d 53 25 3f 28 28  28 74 25 20 80 20 26 33  |MemS%?(((t% . &3|
00006320  46 29 3c 3c 31 29 2b 31  29 3a f2 5f 50 50 48 6d  |F)<<1)+1):._PPHm|
00006330  28 33 33 2c 52 65 67 25  28 38 29 29 0d 2a 3a 31  |(33,Reg%(8)).*:1|
00006340  c9 20 26 38 37 3a 20 f2  5f 73 65 74 75 70 57 28  |. &87: ._setupW(|
00006350  22 43 61 6e 27 74 20 77  72 69 74 65 20 74 6f 20  |"Can't write to |
00006360  72 65 67 69 73 74 65 72  20 38 37 22 29 0d 2a 44  |register 87").*D|
00006370  31 c9 20 20 31 30 3a 20  f2 5f 73 65 74 75 70 57  |1.  10: ._setupW|
00006380  28 22 43 61 6e 27 74 20  77 72 69 74 65 20 74 6f  |("Can't write to|
00006390  20 72 65 67 69 73 74 65  72 20 30 41 22 29 0d 2a  | register 0A").*|
000063a0  4e 1f c9 20 26 38 35 3a  20 f2 5f 75 70 49 4f 28  |N.. &85: ._upIO(|
000063b0  6f 25 2c 74 25 2c 31 39  2c 35 2c 35 29 0d 2a 58  |o%,t%,19,5,5).*X|
000063c0  1f c9 20 26 38 36 3a 20  f2 5f 75 70 49 4f 28 6f  |.. &86: ._upIO(o|
000063d0  25 2c 74 25 2c 31 31 2c  38 2c 36 29 0d 2a 62 26  |%,t%,11,8,6).*b&|
000063e0  c9 20 26 38 38 3a 20 e7  20 28 74 25 20 80 20 36  |. &88: . (t% . 6|
000063f0  29 3d 36 20 80 20 28 6f  25 20 80 20 32 29 3d 30  |)=6 . (o% . 2)=0|
00006400  20 8c 0d 2a 6c 1e 20 20  20 20 20 20 20 20 20 20  | ..*l.          |
00006410  45 74 69 6d 65 4f 75 74  25 3d 45 74 69 6d 65 25  |EtimeOut%=Etime%|
00006420  0d 2a 76 38 20 20 20 20  20 20 20 20 20 20 44 61  |.*v8          Da|
00006430  74 61 4d 65 6d 53 25 3f  28 28 28 52 65 67 25 28  |taMemS%?(((Reg%(|
00006440  39 29 20 80 20 26 33 46  29 3c 3c 31 29 2b 31 29  |9) . &3F)<<1)+1)|
00006450  3d 52 65 67 25 28 38 29  0d 2a 80 0f 20 20 20 20  |=Reg%(8).*..    |
00006460  20 20 20 20 20 20 cd 0d  2a 8a 05 cb 0d 2a 94 2c  |      ..*....*.,|
00006470  73 25 3d 52 65 67 25 28  33 29 3a 52 65 67 25 28  |s%=Reg%(3):Reg%(|
00006480  33 29 3d 28 73 25 20 80  20 26 46 38 29 20 84 20  |3)=(s% . &F8) . |
00006490  4e 65 77 53 74 61 74 25  0d 2a 9e 27 e7 20 73 25  |NewStat%.*.'. s%|
000064a0  3c 3e 52 65 67 25 28 33  29 20 8c 20 f2 75 70 53  |<>Reg%(3) . .upS|
000064b0  74 61 74 28 73 25 2c 52  65 67 25 28 33 29 29 0d  |tat(s%,Reg%(3)).|
000064c0  2a a8 04 0d 2a b2 0f 20  e7 20 4d 6f 70 65 6e 25  |*...*.. . Mopen%|
000064d0  20 8c 0d 2a bc 0c 20 c8  8e 20 72 25 20 ca 0d 2a  | ..*.. .. r% ..*|
000064e0  c6 1b 20 c9 20 26 38 31  3a 20 f2 75 70 42 28 6f  |.. . &81: .upB(o|
000064f0  25 2c 74 25 2c 30 2c 38  29 0d 2a d0 1b 20 c9 20  |%,t%,0,8).*.. . |
00006500  26 30 42 3a 20 f2 75 70  42 28 6f 25 2c 74 25 2c  |&0B: .upB(o%,t%,|
00006510  39 2c 38 29 0d 2a da 1c  20 c9 20 26 38 38 3a 20  |9,8).*.. . &88: |
00006520  f2 75 70 42 28 6f 25 2c  74 25 2c 31 38 2c 35 29  |.upB(o%,t%,18,5)|
00006530  0d 2a e4 19 20 c9 20 26  38 35 3a 20 f2 5f 50 50  |.*.. . &85: ._PP|
00006540  48 6d 28 33 30 2c 74 25  29 0d 2a ee 19 20 c9 20  |Hm(30,t%).*.. . |
00006550  26 38 36 3a 20 f2 5f 50  50 48 6d 28 33 31 2c 74  |&86: ._PPHm(31,t|
00006560  25 29 0d 2a f8 06 20 7f  0d 2b 02 40 20 20 20 e7  |%).*.. ..+.@   .|
00006570  20 ac 28 72 25 3d 33 20  84 20 72 25 3d 35 20 84  | .(r%=3 . r%=5 .|
00006580  20 72 25 3d 36 20 84 20  72 25 3d 37 20 84 20 72  | r%=6 . r%=7 . r|
00006590  25 3d 31 30 20 84 20 72  25 3d 32 29 20 80 20 72  |%=10 . r%=2) . r|
000065a0  25 20 3c 26 33 30 20 8c  0d 2b 0c 17 20 20 20 f2  |% <&30 ..+..   .|
000065b0  5f 50 50 48 6d 28 72 25  2b 32 35 2c 74 25 29 0d  |_PPHm(r%+25,t%).|
000065c0  2b 16 08 20 20 20 cd 0d  2b 20 07 20 20 cb 0d 2b  |+..   ..+ .  ..+|
000065d0  2a 06 20 cd 0d 2b 34 05  cd 0d 2b 3e 05 e1 0d 2b  |*. ..+4...+>...+|
000065e0  48 04 0d 2b 52 04 0d 2b  5c 0b dd 20 f2 62 70 75  |H..+R..+\.. .bpu|
000065f0  74 0d 2b 66 19 4f 50 63  6f 64 65 25 3d 4f 50 63  |t.+f.OPcode%=OPc|
00006600  6f 64 65 25 20 84 20 26  38 30 0d 2b 70 08 f2 70  |ode% . &80.+p..p|
00006610  75 74 0d 2b 7a 05 e1 0d  2b 84 04 0d 2b 8e 0b dd  |ut.+z...+...+...|
00006620  20 f2 77 70 75 74 0d 2b  98 1c 4f 50 63 6f 64 65  | .wput.+..OPcode|
00006630  25 3d 4f 50 63 6f 64 65  25 20 80 20 ac 28 26 38  |%=OPcode% . .(&8|
00006640  30 29 0d 2b a2 08 f2 70  75 74 0d 2b ac 05 e1 0d  |0).+...put.+....|
00006650  2b b6 04 0d 2b c0 0c dd  20 f2 63 61 72 72 79 0d  |+...+... .carry.|
00006660  2b ca 08 ea 20 73 25 0d  2b d4 08 73 25 3d 30 0d  |+... s%.+..s%=0.|
00006670  2b de 1f e7 20 74 25 3e  26 46 46 20 8c 20 73 25  |+... t%>&FF . s%|
00006680  3d 31 3a 74 25 3d 74 25  20 80 20 26 46 46 0d 2b  |=1:t%=t% . &FF.+|
00006690  e8 22 4e 65 77 53 74 61  74 25 3d 28 4e 65 77 53  |."NewStat%=(NewS|
000066a0  74 61 74 25 20 80 20 26  46 45 29 20 84 20 73 25  |tat% . &FE) . s%|
000066b0  0d 2b f2 05 e1 0d 2b fc  04 0d 2c 06 0b dd 20 f2  |.+....+...,... .|
000066c0  7a 65 72 6f 0d 2c 10 08  ea 20 73 25 0d 2c 1a 08  |zero.,... s%.,..|
000066d0  73 25 3d 30 0d 2c 24 11  e7 20 74 25 3d 30 20 8c  |s%=0.,$.. t%=0 .|
000066e0  20 73 25 3d 34 0d 2c 2e  22 4e 65 77 53 74 61 74  | s%=4.,."NewStat|
000066f0  25 3d 28 4e 65 77 53 74  61 74 25 20 80 20 26 46  |%=(NewStat% . &F|
00006700  42 29 20 84 20 73 25 0d  2c 38 05 e1 0d 2c 42 04  |B) . s%.,8...,B.|
00006710  0d 2c 4c 09 dd 20 f2 64  63 0d 2c 56 08 ea 20 73  |.,L.. .dc.,V.. s|
00006720  25 0d 2c 60 08 73 25 3d  30 0d 2c 6a 12 e7 20 74  |%.,`.s%=0.,j.. t|
00006730  25 3e 26 46 20 8c 20 73  25 3d 32 0d 2c 74 22 4e  |%>&F . s%=2.,t"N|
00006740  65 77 53 74 61 74 25 3d  28 4e 65 77 53 74 61 74  |ewStat%=(NewStat|
00006750  25 20 80 20 26 46 44 29  20 84 20 73 25 0d 2c 7e  |% . &FD) . s%.,~|
00006760  05 e1 0d 2c 88 04 0d 2c  92 0a dd 20 f2 70 6f 70  |...,...,... .pop|
00006770  0d 2c 9c 08 ea 20 41 25  0d 2c a6 0e e3 20 41 25  |.,... A%.,... A%|
00006780  3d 31 20 b8 20 37 0d 2c  b0 1b 53 74 61 63 6b 25  |=1 . 7.,..Stack%|
00006790  28 41 25 2d 31 29 3d 53  74 61 63 6b 25 28 41 25  |(A%-1)=Stack%(A%|
000067a0  29 0d 2c ba 05 ed 0d 2c  c4 0f 53 74 61 63 6b 25  |).,....,..Stack%|
000067b0  28 37 29 3d 30 0d 2c ce  0c f2 75 64 53 74 61 63  |(7)=0.,...udStac|
000067c0  6b 0d 2c d8 05 e1 0d 2c  e2 04 0d 2c ec 0b dd 20  |k.,....,...,... |
000067d0  f2 70 75 73 68 0d 2c f6  08 ea 20 41 25 0d 2d 00  |.push.,... A%.-.|
000067e0  13 e3 20 41 25 3d 36 20  b8 20 30 20 88 20 2d 31  |.. A%=6 . 0 . -1|
000067f0  0d 2d 0a 1b 53 74 61 63  6b 25 28 41 25 2b 31 29  |.-..Stack%(A%+1)|
00006800  3d 53 74 61 63 6b 25 28  41 25 29 0d 2d 14 05 ed  |=Stack%(A%).-...|
00006810  0d 2d 1e 05 e1 0d 2d 28  04 0d 2d 32 18 f4 20 45  |.-....-(..-2.. E|
00006820  78 65 63 75 69 74 65 20  61 20 63 6f 6d 6d 61 6e  |xecuite a comman|
00006830  64 0d 2d 3c 0a dd 20 f2  65 78 65 0d 2d 46 0e ea  |d.-<.. .exe.-F..|
00006840  20 72 25 2c 74 25 2c 62  25 0d 2d 50 18 4e 65 77  | r%,t%,b%.-P.New|
00006850  53 74 61 74 25 3d 52 65  67 25 28 33 29 20 80 20  |Stat%=Reg%(3) . |
00006860  37 0d 2d 5a 0c 72 25 3d  a4 66 69 6c 65 0d 2d 64  |7.-Z.r%=.file.-d|
00006870  12 c8 8e 20 4f 50 6e 75  6d 62 65 72 25 20 ca 0d  |... OPnumber% ..|
00006880  2d 6e 30 c9 20 20 31 3a  20 74 25 3d 28 57 72 65  |-n0.  1: t%=(Wre|
00006890  67 25 20 80 20 26 46 29  20 2b 20 28 52 65 67 25  |g% . &F) + (Reg%|
000068a0  28 72 25 29 20 80 20 26  46 29 20 3a f2 64 63 0d  |(r%) . &F) :.dc.|
000068b0  2d 78 32 20 20 20 20 20  20 20 20 20 74 25 3d 57  |-x2         t%=W|
000068c0  72 65 67 25 20 2b 20 52  65 67 25 28 72 25 29 3a  |reg% + Reg%(r%):|
000068d0  f2 63 61 72 72 79 3a f2  7a 65 72 6f 3a f2 70 75  |.carry:.zero:.pu|
000068e0  74 0d 2d 82 28 c9 20 20  32 3a 20 74 25 3d 57 72  |t.-.(.  2: t%=Wr|
000068f0  65 67 25 20 80 20 52 65  67 25 28 72 25 29 3a f2  |eg% . Reg%(r%):.|
00006900  7a 65 72 6f 3a f2 70 75  74 0d 2d 8c 22 c9 20 20  |zero:.put.-.".  |
00006910  33 3a 20 74 25 3d 30 3a  e7 20 72 25 3d 33 20 8c  |3: t%=0:. r%=3 .|
00006920  20 4e 65 77 53 74 61 74  25 3d 30 0d 2d 96 17 20  | NewStat%=0.-.. |
00006930  20 20 20 20 20 20 20 20  f2 7a 65 72 6f 3a f2 70  |        .zero:.p|
00006940  75 74 0d 2d a0 31 c9 20  20 34 3a 20 74 25 3d 30  |ut.-.1.  4: t%=0|
00006950  3a 4f 50 63 6f 64 65 25  3d 4f 50 63 6f 64 65 25  |:OPcode%=OPcode%|
00006960  20 80 20 26 33 46 37 46  3a f2 7a 65 72 6f 3a f2  | . &3F7F:.zero:.|
00006970  70 75 74 0d 2d aa 26 c9  20 20 35 3a 20 74 25 3d  |put.-.&.  5: t%=|
00006980  52 65 67 25 28 72 25 29  20 82 20 26 46 46 3a f2  |Reg%(r%) . &FF:.|
00006990  7a 65 72 6f 3a f2 70 75  74 0d 2d b4 2a c9 20 20  |zero:.put.-.*.  |
000069a0  36 3a 20 74 25 3d 28 52  65 67 25 28 72 25 29 2d  |6: t%=(Reg%(r%)-|
000069b0  31 29 20 80 20 26 46 46  3a f2 7a 65 72 6f 3a f2  |1) . &FF:.zero:.|
000069c0  70 75 74 0d 2d be 2a c9  20 20 37 3a 20 74 25 3d  |put.-.*.  7: t%=|
000069d0  28 52 65 67 25 28 72 25  29 2d 31 29 20 80 20 26  |(Reg%(r%)-1) . &|
000069e0  46 46 3a f2 7a 65 72 6f  3a f2 70 75 74 0d 2d c8  |FF:.zero:.put.-.|
000069f0  1c 20 20 20 20 20 20 20  20 20 e7 20 74 25 3d 30  |.         . t%=0|
00006a00  20 8c 20 f2 69 6e 63 50  43 0d 2d d2 2a c9 20 20  | . .incPC.-.*.  |
00006a10  38 3a 20 74 25 3d 28 52  65 67 25 28 72 25 29 2b  |8: t%=(Reg%(r%)+|
00006a20  31 29 20 80 20 26 46 46  3a f2 7a 65 72 6f 3a f2  |1) . &FF:.zero:.|
00006a30  70 75 74 0d 2d dc 2a c9  20 20 39 3a 20 74 25 3d  |put.-.*.  9: t%=|
00006a40  28 52 65 67 25 28 72 25  29 2b 31 29 20 80 20 26  |(Reg%(r%)+1) . &|
00006a50  46 46 3a f2 7a 65 72 6f  3a f2 70 75 74 0d 2d e6  |FF:.zero:.put.-.|
00006a60  1c 20 20 20 20 20 20 20  20 20 e7 20 74 25 3d 30  |.         . t%=0|
00006a70  20 8c 20 f2 69 6e 63 50  43 0d 2d f0 28 c9 20 31  | . .incPC.-.(. 1|
00006a80  30 3a 20 74 25 3d 57 72  65 67 25 20 82 20 52 65  |0: t%=Wreg% . Re|
00006a90  67 25 28 72 25 29 3a f2  7a 65 72 6f 3a f2 70 75  |g%(r%):.zero:.pu|
00006aa0  74 0d 2d fa 20 c9 20 31  31 3a 20 74 25 3d 52 65  |t.-. . 11: t%=Re|
00006ab0  67 25 28 72 25 29 3a f2  7a 65 72 6f 3a f2 70 75  |g%(r%):.zero:.pu|
00006ac0  74 0d 2e 04 24 c9 20 31  32 3a 20 74 25 3d 57 72  |t...$. 12: t%=Wr|
00006ad0  65 67 25 3a 20 e7 20 72  25 3d 32 20 8c 20 67 6f  |eg%: . r%=2 . go|
00006ae0  74 6f 25 3d b9 0d 2e 0e  25 20 20 20 20 20 20 20  |to%=....%       |
00006af0  20 20 e7 20 72 25 3d 33  20 8c 20 4e 65 77 53 74  |  . r%=3 . NewSt|
00006b00  61 74 25 3d 74 25 20 80  20 37 0d 2e 18 11 20 20  |at%=t% . 7....  |
00006b10  20 20 20 20 20 20 20 f2  70 75 74 0d 2e 22 36 c9  |       .put.."6.|
00006b20  20 31 34 3a 20 74 25 3d  28 52 65 67 25 28 72 25  | 14: t%=(Reg%(r%|
00006b30  29 3c 3c 31 29 20 84 20  28 52 65 67 25 28 33 29  |)<<1) . (Reg%(3)|
00006b40  20 80 20 31 29 3a f2 63  61 72 72 79 3a f2 70 75  | . 1):.carry:.pu|
00006b50  74 0d 2e 2c 45 c9 20 31  35 3a 20 74 25 3d 28 52  |t..,E. 15: t%=(R|
00006b60  65 67 25 28 72 25 29 3e  3e 31 29 20 84 20 28 28  |eg%(r%)>>1) . ((|
00006b70  52 65 67 25 28 33 29 20  80 20 31 29 3c 3c 37 29  |Reg%(3) . 1)<<7)|
00006b80  20 84 20 28 28 52 65 67  25 28 72 25 29 20 80 20  | . ((Reg%(r%) . |
00006b90  31 29 3c 3c 38 29 0d 2e  36 18 20 20 20 20 20 20  |1)<<8)..6.      |
00006ba0  20 20 20 f2 63 61 72 72  79 3a f2 70 75 74 0d 2e  |   .carry:.put..|
00006bb0  40 36 c9 20 31 36 3a 20  74 25 3d 28 28 52 65 67  |@6. 16: t%=((Reg|
00006bc0  25 28 72 25 29 20 80 20  26 46 29 2d 28 57 72 65  |%(r%) . &F)-(Wre|
00006bd0  67 25 20 80 20 26 46 29  29 20 80 20 26 46 46 20  |g% . &F)) . &FF |
00006be0  3a f2 64 63 0d 2e 4a 36  20 20 20 20 20 20 20 20  |:.dc..J6        |
00006bf0  20 74 25 3d 28 28 52 65  67 25 28 72 25 29 2d 57  | t%=((Reg%(r%)-W|
00006c00  72 65 67 25 29 20 80 20  26 31 46 46 29 3a f2 63  |reg%) . &1FF):.c|
00006c10  61 72 72 79 3a f2 7a 65  72 6f 0d 2e 54 27 20 20  |arry:.zero..T'  |
00006c20  20 20 20 20 20 20 20 4e  65 77 53 74 61 74 25 3d  |       NewStat%=|
00006c30  4e 65 77 53 74 61 74 25  20 82 20 31 3a f2 70 75  |NewStat% . 1:.pu|
00006c40  74 0d 2e 5e 39 c9 20 31  37 3a 20 74 25 3d 28 28  |t..^9. 17: t%=((|
00006c50  52 65 67 25 28 72 25 29  20 80 20 26 46 29 3c 3c  |Reg%(r%) . &F)<<|
00006c60  34 29 20 84 20 28 28 52  65 67 25 28 72 25 29 20  |4) . ((Reg%(r%) |
00006c70  80 20 26 46 30 29 3e 3e  34 29 0d 2e 68 3c 20 20  |. &F0)>>4)..h<  |
00006c80  20 20 20 20 20 20 20 e7  20 28 28 4f 50 63 6f 64  |       . ((OPcod|
00006c90  65 25 20 80 20 26 38 30  29 3c 3e 30 29 20 80 20  |e% . &80)<>0) . |
00006ca0  72 25 3d 33 20 8c 20 4e  65 77 53 74 61 74 25 3d  |r%=3 . NewStat%=|
00006cb0  74 25 20 80 20 37 0d 2e  72 11 20 20 20 20 20 20  |t% . 7..r.      |
00006cc0  20 20 20 f2 70 75 74 0d  2e 7c 28 c9 20 31 38 3a  |   .put..|(. 18:|
00006cd0  20 74 25 3d 52 65 67 25  28 72 25 29 20 82 20 57  | t%=Reg%(r%) . W|
00006ce0  72 65 67 25 3a f2 7a 65  72 6f 3a f2 70 75 74 0d  |reg%:.zero:.put.|
00006cf0  2e 86 2c c9 20 31 39 3a  20 62 25 3d 28 ac 28 a4  |..,. 19: b%=(.(.|
00006d00  62 6e 29 29 20 80 20 26  46 46 3a 74 25 3d 52 65  |bn)) . &FF:t%=Re|
00006d10  67 25 28 72 25 29 20 80  20 62 25 0d 2e 90 3e 20  |g%(r%) . b%...> |
00006d20  20 20 20 20 20 20 20 20  e7 20 72 25 3d 33 20 8c  |        . r%=3 .|
00006d30  20 4e 65 77 53 74 61 74  25 3d 4e 65 77 53 74 61  | NewStat%=NewSta|
00006d40  74 25 20 80 20 62 25 20  84 20 28 52 65 67 25 28  |t% . b% . (Reg%(|
00006d50  33 29 20 80 20 26 31 38  29 0d 2e 9a 12 20 20 20  |3) . &18)....   |
00006d60  20 20 20 20 20 20 f2 62  70 75 74 0d 2e a4 21 c9  |      .bput...!.|
00006d70  20 32 30 3a 20 62 25 3d  a4 62 6e 3a 74 25 3d 52  | 20: b%=.bn:t%=R|
00006d80  65 67 25 28 72 25 29 20  84 20 62 25 0d 2e ae 3e  |eg%(r%) . b%...>|
00006d90  20 20 20 20 20 20 20 20  20 e7 20 72 25 3d 33 20  |         . r%=3 |
00006da0  8c 20 4e 65 77 53 74 61  74 25 3d 4e 65 77 53 74  |. NewStat%=NewSt|
00006db0  61 74 25 20 80 20 62 25  20 84 20 28 52 65 67 25  |at% . b% . (Reg%|
00006dc0  28 33 29 20 80 20 26 31  38 29 0d 2e b8 12 20 20  |(3) . &18)....  |
00006dd0  20 20 20 20 20 20 20 f2  62 70 75 74 0d 2e c2 2d  |       .bput...-|
00006de0  c9 20 32 31 3a 20 62 25  3d a4 62 6e 3a e7 20 28  |. 21: b%=.bn:. (|
00006df0  62 25 20 80 20 52 65 67  25 28 72 25 29 29 3d 30  |b% . Reg%(r%))=0|
00006e00  20 8c 20 f2 69 6e 63 50  43 0d 2e cc 2e c9 20 32  | . .incPC..... 2|
00006e10  32 3a 20 62 25 3d a4 62  6e 3a e7 20 28 62 25 20  |2: b%=.bn:. (b% |
00006e20  80 20 52 65 67 25 28 72  25 29 29 3c 3e 30 20 8c  |. Reg%(r%))<>0 .|
00006e30  20 f2 69 6e 63 50 43 0d  2e d6 3b c9 20 32 33 3a  | .incPC...;. 23:|
00006e40  20 62 25 3d 4f 50 63 6f  64 65 25 20 80 20 26 46  | b%=OPcode% . &F|
00006e50  46 3a 74 25 3d 28 57 72  65 67 25 20 80 20 26 46  |F:t%=(Wreg% . &F|
00006e60  29 20 2b 20 28 62 25 20  80 20 26 46 29 20 3a f2  |) + (b% . &F) :.|
00006e70  64 63 0d 2e e0 2b 20 20  20 20 20 20 20 20 20 74  |dc...+         t|
00006e80  25 3d 57 72 65 67 25 2b  62 25 3a f2 63 61 72 72  |%=Wreg%+b%:.carr|
00006e90  79 3a f2 7a 65 72 6f 3a  f2 77 70 75 74 0d 2e ea  |y:.zero:.wput...|
00006ea0  35 c9 20 32 34 3a 20 62  25 3d 4f 50 63 6f 64 65  |5. 24: b%=OPcode|
00006eb0  25 20 80 20 26 46 46 20  3a 74 25 3d 57 72 65 67  |% . &FF :t%=Wreg|
00006ec0  25 20 80 20 62 25 3a f2  7a 65 72 6f 3a f2 77 70  |% . b%:.zero:.wp|
00006ed0  75 74 0d 2e f4 37 c9 20  32 35 3a 20 f2 70 75 73  |ut...7. 25: .pus|
00006ee0  68 3a f2 69 6e 63 50 43  3a 53 74 61 63 6b 25 28  |h:.incPC:Stack%(|
00006ef0  30 29 3d 52 65 67 25 28  32 29 2b 48 69 50 43 25  |0)=Reg%(2)+HiPC%|
00006f00  3a f2 75 64 53 74 61 63  6b 0d 2e fe 53 20 20 20  |:.udStack...S   |
00006f10  20 20 20 20 20 20 67 6f  74 6f 25 3d b9 3a 52 65  |      goto%=.:Re|
00006f20  67 25 28 32 29 3d 4f 50  63 6f 64 65 25 20 80 20  |g%(2)=OPcode% . |
00006f30  26 46 46 3a 48 69 50 43  25 3d 28 4f 50 63 6f 64  |&FF:HiPC%=(OPcod|
00006f40  65 25 20 80 20 26 37 30  30 29 20 84 20 28 48 69  |e% . &700) . (Hi|
00006f50  50 43 25 20 80 20 26 31  38 30 30 29 0d 2f 08 49  |PC% . &1800)./.I|
00006f60  c9 20 32 36 3a 20 57 61  74 63 68 64 6f 67 54 69  |. 26: WatchdogTi|
00006f70  6d 65 25 3d 30 3a 74 25  3d 52 65 67 25 28 33 29  |me%=0:t%=Reg%(3)|
00006f80  20 84 20 26 31 38 3a f2  75 70 53 74 61 74 28 52  | . &18:.upStat(R|
00006f90  65 67 25 28 33 29 2c 74  25 29 3a 52 65 67 25 28  |eg%(3),t%):Reg%(|
00006fa0  33 29 3d 74 25 0d 2f 12  50 c9 20 32 37 3a 20 67  |3)=t%./.P. 27: g|
00006fb0  6f 74 6f 25 3d b9 3a 52  65 67 25 28 32 29 3d 4f  |oto%=.:Reg%(2)=O|
00006fc0  50 63 6f 64 65 25 20 80  20 26 46 46 3a 48 69 50  |Pcode% . &FF:HiP|
00006fd0  43 25 3d 28 4f 50 63 6f  64 65 25 20 80 20 26 37  |C%=(OPcode% . &7|
00006fe0  30 30 29 20 84 20 28 48  69 50 43 25 20 80 20 26  |00) . (HiPC% . &|
00006ff0  31 38 30 30 29 0d 2f 1c  35 c9 20 32 38 3a 20 62  |1800)./.5. 28: b|
00007000  25 3d 4f 50 63 6f 64 65  25 20 80 20 26 46 46 20  |%=OPcode% . &FF |
00007010  3a 74 25 3d 57 72 65 67  25 20 84 20 62 25 3a f2  |:t%=Wreg% . b%:.|
00007020  7a 65 72 6f 3a f2 77 70  75 74 0d 2f 26 34 c9 20  |zero:.wput./&4. |
00007030  32 39 3a 20 57 72 65 67  25 3d 4f 50 63 6f 64 65  |29: Wreg%=OPcode|
00007040  25 20 80 20 26 46 46 3a  f2 5f 50 75 74 50 72 61  |% . &FF:._PutPra|
00007050  6d 48 65 78 32 28 34 2c  57 72 65 67 25 29 0d 2f  |mHex2(4,Wreg%)./|
00007060  30 45 c9 20 33 30 3a 20  52 65 67 25 28 32 29 3d  |0E. 30: Reg%(2)=|
00007070  53 74 61 63 6b 25 28 30  29 20 80 20 26 46 46 3a  |Stack%(0) . &FF:|
00007080  48 69 50 43 25 3d 53 74  61 63 6b 25 28 30 29 20  |HiPC%=Stack%(0) |
00007090  80 20 26 37 30 30 3a 67  6f 74 6f 25 3d b9 3a f2  |. &700:goto%=.:.|
000070a0  70 6f 70 0d 2f 3a 40 20  20 20 20 20 20 20 20 20  |pop./:@         |
000070b0  74 25 3d 52 65 67 25 28  26 42 29 20 84 20 26 38  |t%=Reg%(&B) . &8|
000070c0  30 3a f2 75 70 42 28 52  65 67 25 28 26 42 29 2c  |0:.upB(Reg%(&B),|
000070d0  74 25 2c 39 2c 38 29 3a  52 65 67 25 28 26 42 29  |t%,9,8):Reg%(&B)|
000070e0  3d 74 25 0d 2f 44 45 c9  20 33 31 3a 20 52 65 67  |=t%./DE. 31: Reg|
000070f0  25 28 32 29 3d 53 74 61  63 6b 25 28 30 29 20 80  |%(2)=Stack%(0) .|
00007100  20 26 46 46 3a 48 69 50  43 25 3d 53 74 61 63 6b  | &FF:HiPC%=Stack|
00007110  25 28 30 29 20 80 20 26  37 30 30 3a 67 6f 74 6f  |%(0) . &700:goto|
00007120  25 3d b9 3a f2 70 6f 70  0d 2f 4e 3a 20 20 20 20  |%=.:.pop./N:    |
00007130  20 20 20 20 20 74 25 3d  4f 50 63 6f 64 65 25 20  |     t%=OPcode% |
00007140  80 20 26 46 46 3a 4f 50  63 6f 64 65 25 3d 4f 50  |. &FF:OPcode%=OP|
00007150  63 6f 64 65 25 20 80 20  26 33 46 37 46 3a f2 70  |code% . &3F7F:.p|
00007160  75 74 0d 2f 58 45 c9 20  33 32 3a 20 52 65 67 25  |ut./XE. 32: Reg%|
00007170  28 32 29 3d 53 74 61 63  6b 25 28 30 29 20 80 20  |(2)=Stack%(0) . |
00007180  26 46 46 3a 48 69 50 43  25 3d 53 74 61 63 6b 25  |&FF:HiPC%=Stack%|
00007190  28 30 29 20 80 20 26 37  30 30 3a 67 6f 74 6f 25  |(0) . &700:goto%|
000071a0  3d b9 3a f2 70 6f 70 0d  2f 62 37 c9 20 33 33 3a  |=.:.pop./b7. 33:|
000071b0  20 f2 69 6e 63 50 43 3a  f2 66 65 74 63 68 4e 3a  | .incPC:.fetchN:|
000071c0  53 6c 65 65 70 25 3d b9  3a 24 53 50 6f 69 6e 74  |Sleep%=.:$SPoint|
000071d0  25 28 39 29 3d 22 65 6d  6c 65 64 6f 6e 22 0d 2f  |%(9)="emledon"./|
000071e0  6c 45 20 20 20 20 20 20  20 20 20 c8 99 22 57 69  |lE         .."Wi|
000071f0  6d 70 5f 46 6f 72 63 65  52 65 64 72 61 77 22 2c  |mp_ForceRedraw",|
00007200  63 6f 6e 57 25 2c 49 58  25 28 39 29 2c 49 59 25  |conW%,IX%(9),IY%|
00007210  28 39 29 2c 49 58 31 25  28 39 29 2c 49 59 31 25  |(9),IX1%(9),IY1%|
00007220  28 39 29 0d 2f 76 49 20  20 20 20 20 20 20 20 20  |(9)./vI         |
00007230  74 25 3d 28 52 65 67 25  28 33 29 20 84 20 26 31  |t%=(Reg%(3) . &1|
00007240  30 29 20 80 20 26 46 37  3a 72 25 3d 33 3a f2 75  |0) . &F7:r%=3:.u|
00007250  70 53 74 61 74 28 52 65  67 25 28 33 29 2c 74 25  |pStat(Reg%(3),t%|
00007260  29 3a 52 65 67 25 28 33  29 3d 74 25 0d 2f 80 38  |):Reg%(3)=t%./.8|
00007270  c9 20 33 34 3a 20 62 25  3d 4f 50 63 6f 64 65 25  |. 34: b%=OPcode%|
00007280  20 80 20 26 46 46 3a 74  25 3d 28 62 25 20 80 20  | . &FF:t%=(b% . |
00007290  26 46 29 2d 28 57 72 65  67 25 20 80 20 26 46 29  |&F)-(Wreg% . &F)|
000072a0  3a f2 64 63 0d 2f 8a 30  20 20 20 20 20 20 20 20  |:.dc./.0        |
000072b0  20 74 25 3d 28 28 62 25  2d 57 72 65 67 25 29 20  | t%=((b%-Wreg%) |
000072c0  80 20 26 31 46 46 29 3a  f2 63 61 72 72 79 3a f2  |. &1FF):.carry:.|
000072d0  7a 65 72 6f 0d 2f 94 28  20 20 20 20 20 20 20 20  |zero./.(        |
000072e0  20 4e 65 77 53 74 61 74  25 3d 4e 65 77 53 74 61  | NewStat%=NewSta|
000072f0  74 25 20 82 20 31 3a f2  77 70 75 74 0d 2f 9e 35  |t% . 1:.wput./.5|
00007300  c9 20 33 35 3a 20 62 25  3d 4f 50 63 6f 64 65 25  |. 35: b%=OPcode%|
00007310  20 80 20 26 46 46 20 3a  74 25 3d 57 72 65 67 25  | . &FF :t%=Wreg%|
00007320  20 82 20 62 25 3a f2 7a  65 72 6f 3a f2 77 70 75  | . b%:.zero:.wpu|
00007330  74 0d 2f a8 1f c9 20 33  37 3a 20 72 25 3d 26 38  |t./... 37: r%=&8|
00007340  31 3a 74 25 3d 57 72 65  67 25 3a f2 62 70 75 74  |1:t%=Wreg%:.bput|
00007350  0d 2f b2 26 c9 20 33 36  3a 20 72 25 3d 28 4f 50  |./.&. 36: r%=(OP|
00007360  63 6f 64 65 25 20 80 20  37 29 20 84 20 26 38 30  |code% . 7) . &80|
00007370  3a f2 62 70 75 74 0d 2f  bc 05 cb 0d 2f c6 05 e1  |:.bput./..../...|
00007380  0d ff                                             |..|
00007382