Home » Archimedes archive » Archimedes World » AW-1994-06-Disc2.adf » Disk2Jun94 » !AWJune94/Goodies/Zap/!Zap/Docs/E-Template
!AWJune94/Goodies/Zap/!Zap/Docs/E-Template
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Archimedes World » AW-1994-06-Disc2.adf » Disk2Jun94 |
Filename: | !AWJune94/Goodies/Zap/!Zap/Docs/E-Template |
Read OK: | ✔ |
File size: | 34F0 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM E-Template 20REM 30REM Template program for creating Zap modes. 40REM The module will be saved to work_directory$ 50REM You should run Zap first to ensure Zap$Dir and ZapWork$Dir 60REM are set up. 70 80REM directory to save module 90work_directory$="<ZapWork$Dir>" 100 110REM name of mode 120mode_name$="Test" 130 140REM authors name 150mode_author$="Joe Bloggs" 160 170REM version number of module 180ver$="0.01" 190 200REM mode number you want to be 210REM you MUST not hard wire this in as I may have allocated it 220REM to someone else! 230mode_number=15 240 250REM mode to base this mode on (text) 260mode_basemode=0 270 280REM define a proc error to print line number even if running 290REM under wimp. 300ON ERROR PROCerror 310 320REM reserve space for code / workspace 330REM default of 64k 340code_size%=&10000 350DIM code% code_size% 360L%=code%+code_size% 370 380REM load the library defineing zap's variables 390LIBRARY "<ZapWork$Dir>.Docs.E-Library" 400 410REM define zaps constants (call E-Library) 420PROCdefine_zap_variables 430 440REM define any variables in our workspace 450PROCset_up_variables 460 470REM assemble the code 480PROCassemble_code 490 500REM save the module 510SYS "OS_File",&0A,work_directory$+".Zap"+mode_name$,&FFA,0,code%,code%+length% 520PRINT "Zap";mode_name$+" module created and saved" 530 540END 550 560REM define any variables we want to store in the module workspace 570 580DEF PROCset_up_variables 590FOR pass=%1100 TO %1110 STEP 2:P%=0:O%=code%:[OPTpass 600 610.test_0 EQUD 0 620.test_1 EQUD 0 630.test_2 EQUD 0 640.test_3 EQUD 0 650 660]:NEXT 670variable_size%=P% 680ENDPROC 690 700REM assemble the main code 710 720DEF PROCassemble_code 730 740REM define flags 750 760Iflag%=1<<27 770Vflag%=1<<28 780Cflag%=1<<29 790 800REM define register numbers (for macros) 810 820R0=0:R1=1:R2=2:R3=3:R4=4:R5=5:R6=6:R7=7:R8=8:R9=9:R10=10 830R11=11:R12=12:R13=13:R14=14:R15=15:PC=15 840 850FOR pass=%1100 TO %1110 STEP 2:P%=0:O%=code% 860[OPTpass 870 880.Module_header 890.Start_code EQUD 0 900.Initialisation_code EQUD initialise_code 910.Finalisation_code EQUD finalise_code 920.Service_call_handler EQUD 0 930.Title_string EQUD title_string 940.Help_string EQUD help_string 950.Command_keyword_tab EQUD 0 960.SWI_chunk_number EQUD 0 970.SWI_handler_code EQUD 0 980.SWI_decoding_table EQUD 0 990.SWI_decoding_code EQUD 0 1000 1010\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 1020\ TITLES AND COMMAND TABLES \ 1030\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 1040 1050.help_string 1060FNS("Zap"+mode_name$+CHR$9+ver$+" ("+FNdate+") � "+mode_author$) 1070 1080.title_string 1090FNS("Zap"+mode_name$) 1100 1110\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 1120\ INITIALISE AND FINALISE \ 1130\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 1140 1150.initialise_code 1160FNJSR 1170MOV R0,#6 1180MOV R3,#variable_size% 1190SWI "XOS_Module" \ claim varable workspace 1200FNRTSVS 1210MOV R11,R2 \ claimed block (R11 from now on) 1220STR R11,[R12] \ save as my workspace pointer 1230STR R11,workspace_address \ save it in the module for 1240MOV R0,#18 \ accessing commands. 1250ADR R1,zap_title 1260SWI "XOS_Module" \ find zap 1270FNRTSVS \ not found 1280MOV R12,R4 \ zap workspace 1290FNADR(R0,mode_table) 1300FNcall(Zap_AddMode) \ add this mode to zap 1310FNRTSVS 1320FNADR(R0,key_command_table) \ add table of commands 1330FNcall(Zap_AddCommands) \ remove this if you're not 1350FNRTSVS \ using commands 1360MOV R1,#0 1370MOV R2,R11 1380MOV R3,#variable_size% 1390FNcall(Zap_FillWords) \ clear workspace to zeros 1400FNRTS 1410 1420.zap_title 1430FNS("Zap") 1440 1450.workspace_address 1460EQUD 0 1470 1480\X R11=module workspace | 1490 1500.get_workspace 1510LDR R11,workspace_address 1520MOV PC,R14 1530 1540.finalise_code 1550FNJSR 1560MOV R0,#7 1570LDR R2,[R12] 1580SWI "XOS_Module" \ free workspace 1590FNRTSVS 1600MOV R0,#0 1610STR R0,[R12] \ null private word 1620FNRTS 1630 1640\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 1650\ Mode Table \ 1660\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 1670 1680.mode_table 1690EQUD mode_table \ offset of mode table 1700EQUD mode_title \ mode title string 1710EQUD mode_author \ author string 1720EQUD mode_basemode \ base mode number 1730EQUD mode_number \ mode you want to be 1740EQUD mode_init \ offset of initialisation code 1750EQUD 0 \ offset of your menu 1760EQUD mode_table_end-mode_table \ length of table 1770 1780EQUD 0 \ mode_postload 1790EQUD 0 \ mode_presave 1800EQUD 0 \ mode_loading 1810EQUD mode_start 1820EQUD mode_end 1830EQUD 0 \ mode_width 1840EQUD 0 \ mode_linecol 1850EQUD 0 \ mode_lineoff 1860EQUD 0 \ mode_clnlog 1870EQUD 0 \ mode_clnphy 1880EQUD 0 \ mode_clnoff 1890EQUD 0 \ mode_nextline 1900EQUD 0 \ mode_minus 1910EQUD 0 \ mode_plus 1920EQUD 0 \ mode_sminus 1930EQUD 0 \ mode_splus 1940EQUD 0 \ mode_cminus 1950EQUD 0 \ mode_cplus 1960EQUD 0 \ mode_redrawline 1970EQUD 0 \ mode_redrawlnum 1980EQUD 0 \ mode_char 1990EQUD 0 \ mode_delete 2000EQUD 0 \ mode_tab 2010EQUD 0 \ mode_return 2020EQUD 0 \ mode_renumber 2030EQUD 0 \ mode_saveandrun 2040EQUD 0 \ mode_linestart 2050EQUD 0 \ mode_lineend 2060EQUD 0 \ mode_linenext 2070EQUD 0 \ mode_lineprev 2080EQUD 0 \ mode_copy 2090EQUD 0 \ mode_joinline 2100EQUD 0 \ mode_splitline 2110EQUD 0 \ mode_aligncaret 2120EQUD 0 \ mode_command 2130EQUD 0 \ mode_compile 2140EQUD 0 \ mode_formattext 2150EQUD 0 \ mode_run 2160EQUD 0 \ mode_runandquit 2170EQUD 0 \ mode_basic 2180EQUD 0 \ mode_search 2190EQUD 0 \ mode_replace 2200EQUD 0 \ mode_selection 2210EQUD 0 \ mode_click 2220EQUD 0 \ mode_message 2230EQUD 0 \ mode_setwidth 2240.mode_table_end 2250 2260.mode_title \ mode title 2270FNS(mode_name$) 2280 2290.mode_author \ mode author 2300FNS(mode_author$) 2310 2320.Null \ offset to send entry points you 2330MOV PC,R14 \ don't want to do anything 2340 2350.mode_start 2360FNJSR 2370BL get_mode_number 2380FNcall(Zap_RestoreModeWord) 2390FNRTS 2400 2410.mode_end 2420FNJSR 2430BL get_mode_number 2440FNcall(Zap_SaveModeWord) 2450FNRTS 2460 3550\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 3560\ Initialise buffers \ 3570\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 3580 3590.mode_init \ initialise entry point 3600TEQ R1,#1 3610BEQ store_mode_number 3620TEQ R1,#2 3630BEQ zap_starting 3640MOV PC,R14 3650 3660.zap_starting \ initialise the mode word if 0 3670STMFD R13!,{R1,R8,R14} 3680MOV R8,#0 \ options word 3690BL get_mode_number 3700MOV R1,R0 3710FNcall(Zap_GetModeWord) 3720LDMVSFD R13!,{R1,R8,PC} 3730TEQ R0,#0 \ have any options been set for 3740LDMNEFD R13!,{R1,R8,PC} \ this mode - return if so 3750LDR R0,default_mode_word 3760FNcall(Zap_PutModeWord) 3770LDMFD R13!,{R1,R8,PC} 3780 3790.default_mode_word 3800EQUD &10010050 \ auto indent+tabs+80 cols 3810 3820\E R0=mode number 3830\X - 3840 3850.store_mode_number 3860STR R0,actual_mode_number 3870MOV PC,R14 3880 3890\E - 3900\X R0=mode number 3910 3920.get_mode_number 3930LDR R0,actual_mode_number 3940MOV PC,R14 3950 3960.actual_mode_number 3970EQUD 0 3980 3990\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 4000\ Command table \ 4010\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 4020 4030.key_command_table 4040EQUD key_command_table 4050EQUD 0 \ flags 4060FNcom("BEEPBEEP",beepbeep) 4070EQUD 0 \ end 4080 4090EQUD 7 4100.beepbeep 4110FNJSR 4120SWI &107 4130SWI &107 4140FNRTS 4150 4160\\\\\\\\\\ End Of Assembly \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 4170 4180] 4190 4200NEXT pass 4210length%=P% 4220ENDPROC 4230 4240DEF FNS(A$) :[OPTpass:EQUS A$+CHR$0:ALIGN:]:="" 4250DEF FNSS(A$) :[OPTpass:SWI "XOS_WriteS":EQUS A$+CHR$0:ALIGN:]:="" 4260DEF FNJSR :[OPTpass:STMFD R13!,{R14}:]:="" 4270DEF FNRTV :[OPTpass:LDMFD R13!,{R14}:ORRS PC,R14,#Vflag%:]:="" 4280DEF FNRTC :[OPTpass:LDMFD R13!,{R14}:BICS PC,R14,#Vflag%:]:="" 4290DEF FNRTS :[OPTpass:LDMFD R13!,{PC} :]:="" 4300DEF FNRTSNE :[OPTpass:LDMNEFD R13!,{PC}:]:="" 4310DEF FNRTSEQ :[OPTpass:LDMEQFD R13!,{PC}:]:="" 4320DEF FNRTSCS :[OPTpass:LDMCSFD R13!,{PC}:]:="" 4330DEF FNRTSCC :[OPTpass:LDMCCFD R13!,{PC}:]:="" 4340DEF FNRTSVS :[OPTpass:LDMVSFD R13!,{PC}:]:="" 4350DEF FNRTSVC :[OPTpass:LDMVCFD R13!,{PC}:]:="" 4360DEF FNRTSLS :[OPTpass:LDMLSFD R13!,{PC}:]:="" 4370DEF FNRTSHI :[OPTpass:LDMHIFD R13!,{PC}:]:="" 4380DEF FNRTSMI :[OPTpass:LDMMIFD R13!,{PC}:]:="" 4390DEF FNRTSLE :[OPTpass:LDMLEFD R13!,{PC}:]:="" 4400DEF FNRTSGE :[OPTpass:LDMGEFD R13!,{PC}:]:="" 4410DEF FNRTSLT :[OPTpass:LDMLTFD R13!,{PC}:]:="" 4420DEF FNRTSS :[OPTpass:LDMFD R13!,{PC}^:]:="" 4430DEF FNRTSSNE :[OPTpass:LDMNEFD R13!,{PC}^:]:="" 4440DEF FNRTSSEQ :[OPTpass:LDMEQFD R13!,{PC}^:]:="" 4450DEF FNRTSSCC :[OPTpass:LDMCCFD R13!,{PC}^:]:="" 4460DEF FNRTSSCS :[OPTpass:LDMCSFD R13!,{PC}^:]:="" 4470DEF FNmem(x%) :w%=O%-code%:P%=P%+x%:O%=O%+x%:[OPTpass:ALIGN:]:=w% 4480DEF FNnewl :[OPTpass:SWI "XOS_NewLine":]:="" 4490 4500DEF FNdate DIM date% 64:?date%=3:SYS "OS_Word",&0E,date% 4510SYS "OS_ConvertDateAndTime",date%,date%+16,32,"%DY %M3 19%YR" TO A%,B% 4520?B%=13:=$A% 4530 4540REM This modules workspace is at R11!! 4550 4560DEF FNLDR(s%,x%) :[OPTpass:LDR s%,[R11,#x%]:]:="" 4570DEF FNLDREQ(s%,x%):[OPTpass:LDREQ s%,[R11,#x%]:]:="" 4580DEF FNLDRNE(s%,x%):[OPTpass:LDRNE s%,[R11,#x%]:]:="" 4590DEF FNLDRCS(s%,x%):[OPTpass:LDRCS s%,[R11,#x%]:]:="" 4600DEF FNLDRCC(s%,x%):[OPTpass:LDRCC s%,[R11,#x%]:]:="" 4610DEF FNSTR(s%,x%) :[OPTpass:STR s%,[R11,#x%]:]:="" 4620DEF FNSTREQ(s%,x%):[OPTpass:STREQ s%,[R11,#x%]:]:="" 4630DEF FNSTRNE(s%,x%):[OPTpass:STRNE s%,[R11,#x%]:]:="" 4640DEF FNSTRVS(s%,x%):[OPTpass:STRVS s%,[R11,#x%]:]:="" 4650 4660REM Menu creation functions 4670 4680DEF FNnew_menu(T$,w%,c%) 4690a%=P% 4700menu_num%=0 4710[OPTpass 4720EQUS T$+STRING$(12-LENT$,CHR$0) \ title 4730EQUD w%<<4 \ width in os 4740EQUD c% \ offset of sub to create this 4750] 4760=a% 4770 4780DEF FNnme(T$,f%,s%,k%,i%) 4790IF s%=-1 AND pass=14 THEN f%=(f% OR 8):s%=mw_window 4800IF i%=1 AND pass=14 THEN i%=sub_kcommand 4810IF i%=2 AND pass=14 THEN i%=sub_call 4820[OPTpass 4830EQUD f% \ flags 4840EQUD s% \ submenu pointer 4850EQUD k% \ key 4860EQUD i% \ interprate 4870FNS(T$) \ menu text 4880] 4890menu_num%+=1 4900=menu_num%-1 4910 4920DEF FNend_menu 4930IF menu_num%=0 THEN PRINT"Menu NULL!":END 4940[OPTpass 4950EQUD -1 \ terminator 4960] 4970=menu_num% 4980 4990DEF FNw_leaf(T$,w%,c%,i%) 5000b%=FNnew_menu(T$,10,c%) 5010a%=FNnme("",4+(w%<<8),0,0,i%) 5020a%=FNend_menu 5030=b% 5040 5050DEF FNADR(s%,x%) 5060REM The instruction sequence must be of FIXED length 5070a%=x%-P%-8 5080IF a%>=0 THEN 5090 [OPTpass:ADD s%,PC,#(a% AND &000003FF):ADD s%,s%,#(a% AND &FFFFFC00):] 5100ELSE 5110 a%=-a% 5120 [OPTpass:SUB s%,PC,#(a% AND &000003FF):SUB s%,s%,#(a% AND &FFFFFC00):] 5130ENDIF 5140="" 5150 5160DEF FNMOV(s%,x%) 5170REM perform MOV s%,#x% on second pass only (variable may not exist) 5180IF (pass AND 2)<>0 THEN 5190 [OPTpass:MOV s%,#x%:] 5200ELSE 5210 [OPTpass:MOV s%,#0:] 5220ENDIF 5230="" 5240 5250DEF FNTEQ(s%,x%) 5260REM perform TEQ s%,#x% on second pass only (variable may not exist) 5270IF (pass AND 2)<>0 THEN 5280 [OPTpass:TEQ s%,#x%:] 5290ELSE 5300 [OPTpass:TEQ s%,#0:] 5310ENDIF 5320="" 5330 5340DEF FNtickeq(s%,x%) 5350[OPTpass 5360LDR R0,[s%,#(28+24*x%)] 5370ORREQ R0,R0,#1 5380BICNE R0,R0,#1 5390STR R0,[s%,#(28+24*x%)] 5400]:="" 5410 5420DEF FNtickne(s%,x%) 5430[OPTpass 5440LDR R0,[s%,#(28+24*x%)] 5450ORRNE R0,R0,#1 5460BICEQ R0,R0,#1 5470STR R0,[s%,#(28+24*x%)] 5480]:="" 5490 5500DEF PROCerror 5510REPORT:PRINT" at line ";ERL 5520END 5530 5540DEF FNerr(a%,T$) 5550[OPTpass:ADD R0,PC,#0:ORRS PC,R14,#Vflag%:EQUD a%:FNS(T$):]:="" 5560 5570DEF FNcom(T$,a%) 5580[OPTpass:EQUS T$:EQUB 0:] 5590!O%=0 :REM zero next four bytes 5600[OPTpass:ALIGN:EQUD a%:]:="" 5610 5620REM Call zap at entry offset a% Entry R0-R11=args R12=zap workspace 5630DEF FNcall(a%) 5640[OPTpass 5650LDR R14,[R12] \ get start of zap table 5660ADD R14,R14,#a% \ get address of sub 5670STMFD R13!,{R14} \ save address on stack 5680MOV R14,PC \ return address (with flags) 5690LDMFD R13!,{PC} \ call the sub 5700]:="" 5710
� E-Template � .� Template program for creating Zap modes. (1� The module will be saved to work_directory$ 2@� You should run Zap first to ensure Zap$Dir and ZapWork$Dir <� are set up. F P� directory to save module Z#work_directory$="<ZapWork$Dir>" d n� name of mode xmode_name$="Test" � �� authors name �mode_author$="Joe Bloggs" � �� version number of module �ver$="0.01" � � � mode number you want to be �?� you MUST not hard wire this in as I may have allocated it �� to someone else! �mode_number=15 � �&� mode to base this mode on (text) mode_basemode=0 >� define a proc error to print line number even if running "� under wimp. ,� � �error 6 @(� reserve space for code / workspace J� default of 64k Tcode_size%=&10000 ^� code% code_size% hL%=code%+code_size% r |0� load the library defineing zap's variables �%ț "<ZapWork$Dir>.Docs.E-Library" � �,� define zaps constants (call E-Library) ��define_zap_variables � �+� define any variables in our workspace ��set_up_variables � �� assemble the code ��assemble_code � �� save the module �Qș "OS_File",&0A,work_directory$+".Zap"+mode_name$,&FFA,0,code%,code%+length% 2� "Zap";mode_name$+" module created and saved" � & 0C� define any variables we want to store in the module workspace : D� �set_up_variables N3� pass=%1100 � %1110 � 2:P%=0:O%=code%:[OPTpass X b.test_0 EQUD 0 l.test_1 EQUD 0 v.test_2 EQUD 0 �.test_3 EQUD 0 � �]:� �variable_size%=P% �� � �� assemble the main code � �� �assemble_code � �� define flags � �Iflag%=1<<27 Vflag%=1<<28 Cflag%=1<<29 *� define register numbers (for macros) * 4<R0=0:R1=1:R2=2:R3=3:R4=4:R5=5:R6=6:R7=7:R8=8:R9=9:R10=10 >,R11=11:R12=12:R13=13:R14=14:R15=15:PC=15 H R*� pass=%1100 � %1110 � 2:P%=0:O%=code% \[OPTpass f p.Module_header z .Start_code EQUD 0 �..Initialisation_code EQUD initialise_code �,.Finalisation_code EQUD finalise_code � .Service_call_handler EQUD 0 �+.Title_string EQUD title_string �*.Help_string EQUD help_string � .Command_keyword_tab EQUD 0 � .SWI_chunk_number EQUD 0 � .SWI_handler_code EQUD 0 � .SWI_decoding_table EQUD 0 � .SWI_decoding_code EQUD 0 � �D\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ �B\ TITLES � COMMAND TABLES \ D\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ .help_string $?�S("Zap"+mode_name$+�9+ver$+" ("+�date+") � "+mode_author$) . 8.title_string B�S("Zap"+mode_name$) L VD\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ `B\ INITIALISE � FINALISE \ jD\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ t ~.initialise_code ��JSR � MOV R0,#6 �MOV R3,#variable_size% �;SWI "XOS_Module" \ claim varable workspace � �RTSVS �CMOV R11,R2 \ claimed block (R11 from now on) �@STR R11,[R12] \ save as my workspace pointer �=STR R11,workspace_address \ save it in the module for �7MOV R0,#18 \ accessing commands. �ADR R1,zap_title �,SWI "XOS_Module" \ find zap �,�RTSVS \ not found 1MOV R12,R4 \ zap workspace �ADR(R0,mode_table) 7�call(Zap_AddMode) \ add this mode to zap �RTSVS (8�ADR(R0,key_command_table) \ add table of commands 2<�call(Zap_AddCommands) \ remove this if you're not F1�RTSVS \ using commands P MOV R1,#0 ZMOV R2,R11 dMOV R3,#variable_size% n;�call(Zap_FillWords) \ clear workspace to zeros x�RTS � �.zap_title � �S("Zap") � �.workspace_address � EQUD 0 � �\X R11=module workspace | � �.get_workspace �LDR R11,workspace_address �MOV PC,R14 � .finalise_code �JSR MOV R0,#7 "LDR R2,[R12] ,2SWI "XOS_Module" \ free workspace 6 �RTSVS @ MOV R0,#0 J5STR R0,[R12] \ null private word T�RTS ^ hD\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ rD\ Mode Table \ |D\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ � �.mode_table �8EQUD mode_table \ offset of mode table �5EQUD mode_title \ mode title string �1EQUD mode_author \ author string �4EQUD mode_basemode \ base mode number �7EQUD mode_number \ mode you want to be �AEQUD mode_init \ offset of initialisation code �7EQUD 0 \ offset of your menu �4EQUD mode_table_end-mode_table \ length of table � �1EQUD 0 \ mode_postload �0EQUD 0 \ mode_presave 0EQUD 0 \ mode_loading EQUD mode_start EQUD mode_end &.EQUD 0 \ mode_width 00EQUD 0 \ mode_linecol :0EQUD 0 \ mode_lineoff D/EQUD 0 \ mode_clnlog N/EQUD 0 \ mode_clnphy X/EQUD 0 \ mode_clnoff b1EQUD 0 \ mode_nextline l.EQUD 0 \ mode_minus v-EQUD 0 \ mode_plus �/EQUD 0 \ mode_sminus �.EQUD 0 \ mode_splus �/EQUD 0 \ mode_cminus �.EQUD 0 \ mode_cplus �3EQUD 0 \ mode_redrawline �3EQUD 0 \ mode_redrawlnum �-EQUD 0 \ mode_char �/EQUD 0 \ mode_delete �,EQUD 0 \ mode_tab �/EQUD 0 \ mode_return �1EQUD 0 \ mode_renumber �3EQUD 0 \ mode_saveandrun �2EQUD 0 \ mode_linestart 0EQUD 0 \ mode_lineend 1EQUD 0 \ mode_linenext 1EQUD 0 \ mode_lineprev -EQUD 0 \ mode_copy *1EQUD 0 \ mode_joinline 42EQUD 0 \ mode_splitline >3EQUD 0 \ mode_aligncaret H0EQUD 0 \ mode_command R0EQUD 0 \ mode_compile \3EQUD 0 \ mode_formattext f,EQUD 0 \ mode_run p3EQUD 0 \ mode_runandquit z.EQUD 0 \ mode_basic �/EQUD 0 \ mode_search �0EQUD 0 \ mode_replace �2EQUD 0 \ mode_selection �.EQUD 0 \ mode_click �0EQUD 0 \ mode_message �1EQUD 0 \ mode_setwidth �.mode_table_end � �..mode_title \ mode title ��S(mode_name$) � �/.mode_author \ mode author ��S(mode_author$) C.Null \ offset to send entry points you =MOV PC,R14 \ don't want to do anything $ ..mode_start 8�JSR BBL get_mode_number L�call(Zap_RestoreModeWord) V�RTS ` j .mode_end t�JSR ~BL get_mode_number ��call(Zap_SaveModeWord) ��RTS � �D\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ �D\ Initialise buffers \ �D\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ � :.mode_init \ initialise entry point TEQ R1,#1 BEQ store_mode_number $ TEQ R1,#2 .BEQ zap_starting 8MOV PC,R14 B LA.zap_starting \ initialise the mode word if 0 VSTMFD R13!,{R1,R8,R14} `0MOV R8,#0 \ options word jBL get_mode_number t MOV R1,R0 ~�call(Zap_GetModeWord) �LDMVSFD R13!,{R1,R8,PC} �ATEQ R0,#0 \ have any options been set for �<LDMNEFD R13!,{R1,R8,PC} \ this mode - return if so �LDR R0,default_mode_word ��call(Zap_PutModeWord) �LDMFD R13!,{R1,R8,PC} � �.default_mode_word �<EQUD &10010050 \ auto indent+tabs+80 cols � �\E R0=mode number �\X - .store_mode_number STR R0,actual_mode_number MOV PC,R14 ( 2\E - <\X R0=mode number F P.get_mode_number ZLDR R0,actual_mode_number dMOV PC,R14 n x.actual_mode_number � EQUD 0 � �A\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ �A\ Command table \ �A\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ � �.key_command_table �EQUD key_command_table �)EQUD 0 \ flags ��com("BEEPBEEP",beepbeep) �'EQUD 0 \ end � � EQUD 7 .beepbeep �JSR SWI &107 "SWI &107 ,�RTS 6 @@\\\\\\\\\\ End Of Assembly \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ J T] ^ h � pass rlength%=P% |� � �0� �S(A$) :[OPTpass:EQUS A$+�0:ALIGN:]:="" �A� �SS(A$) :[OPTpass:SWI "XOS_WriteS":EQUS A$+�0:ALIGN:]:="" �2� �JSR :[OPTpass:STMFD R13!,{R14}:]:="" �E� �RTV :[OPTpass:LDMFD R13!,{R14}:�RS PC,R14,#Vflag%:]:="" �F� �RTC :[OPTpass:LDMFD R13!,{R14}:BICS PC,R14,#Vflag%:]:="" �2� �RTS :[OPTpass:LDMFD R13!,{PC} :]:="" �1� �RTSNE :[OPTpass:LDMNEFD R13!,{PC}:]:="" �1� �RTSEQ :[OPTpass:LDMEQFD R13!,{PC}:]:="" �1� �RTSCS :[OPTpass:LDMCSFD R13!,{PC}:]:="" �1� �RTSCC :[OPTpass:LDMCCFD R13!,{PC}:]:="" �1� �RTSVS :[OPTpass:LDMVSFD R13!,{PC}:]:="" �1� �RTSVC :[OPTpass:LDMVCFD R13!,{PC}:]:="" 1� �RTSLS :[OPTpass:LDMLSFD R13!,{PC}:]:="" 1� �RTSHI :[OPTpass:LDMHIFD R13!,{PC}:]:="" 1� �RTSMI :[OPTpass:LDMMIFD R13!,{PC}:]:="" &1� �RTSLE :[OPTpass:LDMLEFD R13!,{PC}:]:="" 01� �RTSGE :[OPTpass:LDMGEFD R13!,{PC}:]:="" :1� �RTSLT :[OPTpass:LDMLTFD R13!,{PC}:]:="" D2� �RTSS :[OPTpass:LDMFD R13!,{PC}^:]:="" N2� �RTSSNE :[OPTpass:LDMNEFD R13!,{PC}^:]:="" X2� �RTSSEQ :[OPTpass:LDMEQFD R13!,{PC}^:]:="" b2� �RTSSCC :[OPTpass:LDMCCFD R13!,{PC}^:]:="" l2� �RTSSCS :[OPTpass:LDMCSFD R13!,{PC}^:]:="" vC� �mem(x%) :w%=O%-code%:P%=P%+x%:O%=O%+x%:[OPTpass:ALIGN:]:=w% �1� �newl :[OPTpass:SWI "XOS_NewLine":]:="" � �;� �date � date% 64:?date%=3:ș "OS_Word",&0E,date% �Hș "OS_ConvertDateAndTime",date%,date%+16,32,"%DY %M3 19%YR" � A%,B% �?B%=13:=$A% � �(� This modules workspace is at R11!! � �5� �LDR(s%,x%) :[OPTpass:LDR s%,[R11,#x%]:]:="" �5� �LDREQ(s%,x%):[OPTpass:LDREQ s%,[R11,#x%]:]:="" �5� �LDRNE(s%,x%):[OPTpass:LDRNE s%,[R11,#x%]:]:="" �5� �LDRCS(s%,x%):[OPTpass:LDRCS s%,[R11,#x%]:]:="" �5� �LDRCC(s%,x%):[OPTpass:LDRCC s%,[R11,#x%]:]:="" 5� �STR(s%,x%) :[OPTpass:STR s%,[R11,#x%]:]:="" 5� �STREQ(s%,x%):[OPTpass:STREQ s%,[R11,#x%]:]:="" 5� �STRNE(s%,x%):[OPTpass:STRNE s%,[R11,#x%]:]:="" 5� �STRVS(s%,x%):[OPTpass:STRVS s%,[R11,#x%]:]:="" * 4� Menu creation functions > H� �new_menu(T$,w%,c%) R a%=P% \menu_num%=0 f[OPTpass p'EQUS T$+�12-�T$,�0) \ title z9EQUD w%<<4 \ width in os �JEQUD c% \ offset of sub to create this �] �=a% � �� �nme(T$,f%,s%,k%,i%) �0� s%=-1 � pass=14 � f%=(f% � 8):s%=mw_window �&� i%=1 � pass=14 � i%=sub_kcommand �"� i%=2 � pass=14 � i%=sub_call �[OPTpass �)EQUD f% \ flags �3EQUD s% \ submenu pointer �'EQUD k% \ key �.EQUD i% \ interprate ,�S(T$) \ menu text ] menu_num%+=1 $=menu_num%-1 . 8� �end_menu B#� menu_num%=0 � �"Menu NULL!":� L[OPTpass V.EQUD -1 \ terminator `] j=menu_num% t ~� �w_leaf(T$,w%,c%,i%) �b%=�new_menu(T$,10,c%) � a%=�nme("",4+(w%<<8),0,0,i%) �a%=�end_menu �=b% � �� �ADR(s%,x%) �6� The instruction sequence must be of FIXED length �a%=x%-P%-8 � � a%>=0 � �G [OPTpass:ADD s%,PC,#(a% � &000003FF):ADD s%,s%,#(a% � &FFFFFC00):] �� � a%=-a% G [OPTpass:SUB s%,PC,#(a% � &000003FF):SUB s%,s%,#(a% � &FFFFFC00):] � ="" (� �MOV(s%,x%) 2E� perform MOV s%,#x% on second pass only (variable may not exist) <� (pass � 2)<>0 � F [OPTpass:MOV s%,#x%:] P� Z [OPTpass:MOV s%,#0:] d� n="" x �� �TEQ(s%,x%) �E� perform TEQ s%,#x% on second pass only (variable may not exist) �� (pass � 2)<>0 � � [OPTpass:TEQ s%,#x%:] �� � [OPTpass:TEQ s%,#0:] �� �="" � �� �tickeq(s%,x%) �[OPTpass �LDR R0,[s%,#(28+24*x%)] ��REQ R0,R0,#1 BICNE R0,R0,#1 STR R0,[s%,#(28+24*x%)] ]:="" " ,� �tickne(s%,x%) 6[OPTpass @LDR R0,[s%,#(28+24*x%)] J�RNE R0,R0,#1 TBICEQ R0,R0,#1 ^STR R0,[s%,#(28+24*x%)] h ]:="" r |� �error ��:�" at line ";� �� � �� �err(a%,T$) �A[OPTpass:ADD R0,PC,#0:�RS PC,R14,#Vflag%:EQUD a%:�S(T$):]:="" � �� �com(T$,a%) �[OPTpass:EQUS T$:EQUB 0:] �%!O%=0 :� zero next four bytes � [OPTpass:ALIGN:EQUD a%:]:="" � �E� Call zap at entry offset a% Entry R0-R11=args R12=zap workspace �� �call(a%) [OPTpass :LDR R14,[R12] \ get start of zap table 6ADD R14,R14,#a% \ get address of sub &9STMFD R13!,{R14} \ save address on stack 0?MOV R14,PC \ return address (with flags) :0LDMFD R13!,{PC} \ call the sub D ]:="" N �
00000000 0d 00 0a 10 f4 20 45 2d 54 65 6d 70 6c 61 74 65 |..... E-Template| 00000010 0d 00 14 05 f4 0d 00 1e 2e f4 20 54 65 6d 70 6c |.......... Templ| 00000020 61 74 65 20 70 72 6f 67 72 61 6d 20 66 6f 72 20 |ate program for | 00000030 63 72 65 61 74 69 6e 67 20 5a 61 70 20 6d 6f 64 |creating Zap mod| 00000040 65 73 2e 0d 00 28 31 f4 20 54 68 65 20 6d 6f 64 |es...(1. The mod| 00000050 75 6c 65 20 77 69 6c 6c 20 62 65 20 73 61 76 65 |ule will be save| 00000060 64 20 74 6f 20 77 6f 72 6b 5f 64 69 72 65 63 74 |d to work_direct| 00000070 6f 72 79 24 0d 00 32 40 f4 20 59 6f 75 20 73 68 |ory$..2@. You sh| 00000080 6f 75 6c 64 20 72 75 6e 20 5a 61 70 20 66 69 72 |ould run Zap fir| 00000090 73 74 20 74 6f 20 65 6e 73 75 72 65 20 5a 61 70 |st to ensure Zap| 000000a0 24 44 69 72 20 61 6e 64 20 5a 61 70 57 6f 72 6b |$Dir and ZapWork| 000000b0 24 44 69 72 0d 00 3c 11 f4 20 61 72 65 20 73 65 |$Dir..<.. are se| 000000c0 74 20 75 70 2e 0d 00 46 04 0d 00 50 1e f4 20 64 |t up...F...P.. d| 000000d0 69 72 65 63 74 6f 72 79 20 74 6f 20 73 61 76 65 |irectory to save| 000000e0 20 6d 6f 64 75 6c 65 0d 00 5a 23 77 6f 72 6b 5f | module..Z#work_| 000000f0 64 69 72 65 63 74 6f 72 79 24 3d 22 3c 5a 61 70 |directory$="<Zap| 00000100 57 6f 72 6b 24 44 69 72 3e 22 0d 00 64 04 0d 00 |Work$Dir>"..d...| 00000110 6e 12 f4 20 6e 61 6d 65 20 6f 66 20 6d 6f 64 65 |n.. name of mode| 00000120 0d 00 78 15 6d 6f 64 65 5f 6e 61 6d 65 24 3d 22 |..x.mode_name$="| 00000130 54 65 73 74 22 0d 00 82 04 0d 00 8c 12 f4 20 61 |Test"......... a| 00000140 75 74 68 6f 72 73 20 6e 61 6d 65 0d 00 96 1d 6d |uthors name....m| 00000150 6f 64 65 5f 61 75 74 68 6f 72 24 3d 22 4a 6f 65 |ode_author$="Joe| 00000160 20 42 6c 6f 67 67 73 22 0d 00 a0 04 0d 00 aa 1e | Bloggs"........| 00000170 f4 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 |. version number| 00000180 20 6f 66 20 6d 6f 64 75 6c 65 0d 00 b4 0f 76 65 | of module....ve| 00000190 72 24 3d 22 30 2e 30 31 22 0d 00 be 04 0d 00 c8 |r$="0.01".......| 000001a0 20 f4 20 6d 6f 64 65 20 6e 75 6d 62 65 72 20 79 | . mode number y| 000001b0 6f 75 20 77 61 6e 74 20 74 6f 20 62 65 0d 00 d2 |ou want to be...| 000001c0 3f f4 20 79 6f 75 20 4d 55 53 54 20 6e 6f 74 20 |?. you MUST not | 000001d0 68 61 72 64 20 77 69 72 65 20 74 68 69 73 20 69 |hard wire this i| 000001e0 6e 20 61 73 20 49 20 6d 61 79 20 68 61 76 65 20 |n as I may have | 000001f0 61 6c 6c 6f 63 61 74 65 64 20 69 74 0d 00 dc 16 |allocated it....| 00000200 f4 20 74 6f 20 73 6f 6d 65 6f 6e 65 20 65 6c 73 |. to someone els| 00000210 65 21 0d 00 e6 12 6d 6f 64 65 5f 6e 75 6d 62 65 |e!....mode_numbe| 00000220 72 3d 31 35 0d 00 f0 04 0d 00 fa 26 f4 20 6d 6f |r=15.......&. mo| 00000230 64 65 20 74 6f 20 62 61 73 65 20 74 68 69 73 20 |de to base this | 00000240 6d 6f 64 65 20 6f 6e 20 28 74 65 78 74 29 0d 01 |mode on (text)..| 00000250 04 13 6d 6f 64 65 5f 62 61 73 65 6d 6f 64 65 3d |..mode_basemode=| 00000260 30 0d 01 0e 04 0d 01 18 3e f4 20 64 65 66 69 6e |0.......>. defin| 00000270 65 20 61 20 70 72 6f 63 20 65 72 72 6f 72 20 74 |e a proc error t| 00000280 6f 20 70 72 69 6e 74 20 6c 69 6e 65 20 6e 75 6d |o print line num| 00000290 62 65 72 20 65 76 65 6e 20 69 66 20 72 75 6e 6e |ber even if runn| 000002a0 69 6e 67 0d 01 22 11 f4 20 75 6e 64 65 72 20 77 |ing..".. under w| 000002b0 69 6d 70 2e 0d 01 2c 0e ee 20 85 20 f2 65 72 72 |imp...,.. . .err| 000002c0 6f 72 0d 01 36 04 0d 01 40 28 f4 20 72 65 73 65 |or..6...@(. rese| 000002d0 72 76 65 20 73 70 61 63 65 20 66 6f 72 20 63 6f |rve space for co| 000002e0 64 65 20 2f 20 77 6f 72 6b 73 70 61 63 65 0d 01 |de / workspace..| 000002f0 4a 14 f4 20 64 65 66 61 75 6c 74 20 6f 66 20 36 |J.. default of 6| 00000300 34 6b 0d 01 54 16 63 6f 64 65 5f 73 69 7a 65 25 |4k..T.code_size%| 00000310 3d 26 31 30 30 30 30 20 0d 01 5e 16 de 20 63 6f |=&10000 ..^.. co| 00000320 64 65 25 20 63 6f 64 65 5f 73 69 7a 65 25 0d 01 |de% code_size%..| 00000330 68 17 4c 25 3d 63 6f 64 65 25 2b 63 6f 64 65 5f |h.L%=code%+code_| 00000340 73 69 7a 65 25 0d 01 72 04 0d 01 7c 30 f4 20 6c |size%..r...|0. l| 00000350 6f 61 64 20 74 68 65 20 6c 69 62 72 61 72 79 20 |oad the library | 00000360 64 65 66 69 6e 65 69 6e 67 20 7a 61 70 27 73 20 |defineing zap's | 00000370 76 61 72 69 61 62 6c 65 73 0d 01 86 25 c8 9b 20 |variables...%.. | 00000380 22 3c 5a 61 70 57 6f 72 6b 24 44 69 72 3e 2e 44 |"<ZapWork$Dir>.D| 00000390 6f 63 73 2e 45 2d 4c 69 62 72 61 72 79 22 0d 01 |ocs.E-Library"..| 000003a0 90 04 0d 01 9a 2c f4 20 64 65 66 69 6e 65 20 7a |.....,. define z| 000003b0 61 70 73 20 63 6f 6e 73 74 61 6e 74 73 20 28 63 |aps constants (c| 000003c0 61 6c 6c 20 45 2d 4c 69 62 72 61 72 79 29 0d 01 |all E-Library)..| 000003d0 a4 19 f2 64 65 66 69 6e 65 5f 7a 61 70 5f 76 61 |...define_zap_va| 000003e0 72 69 61 62 6c 65 73 0d 01 ae 04 0d 01 b8 2b f4 |riables.......+.| 000003f0 20 64 65 66 69 6e 65 20 61 6e 79 20 76 61 72 69 | define any vari| 00000400 61 62 6c 65 73 20 69 6e 20 6f 75 72 20 77 6f 72 |ables in our wor| 00000410 6b 73 70 61 63 65 0d 01 c2 15 f2 73 65 74 5f 75 |kspace.....set_u| 00000420 70 5f 76 61 72 69 61 62 6c 65 73 0d 01 cc 04 0d |p_variables.....| 00000430 01 d6 17 f4 20 61 73 73 65 6d 62 6c 65 20 74 68 |.... assemble th| 00000440 65 20 63 6f 64 65 0d 01 e0 12 f2 61 73 73 65 6d |e code.....assem| 00000450 62 6c 65 5f 63 6f 64 65 0d 01 ea 04 0d 01 f4 15 |ble_code........| 00000460 f4 20 73 61 76 65 20 74 68 65 20 6d 6f 64 75 6c |. save the modul| 00000470 65 0d 01 fe 51 c8 99 20 22 4f 53 5f 46 69 6c 65 |e...Q.. "OS_File| 00000480 22 2c 26 30 41 2c 77 6f 72 6b 5f 64 69 72 65 63 |",&0A,work_direc| 00000490 74 6f 72 79 24 2b 22 2e 5a 61 70 22 2b 6d 6f 64 |tory$+".Zap"+mod| 000004a0 65 5f 6e 61 6d 65 24 2c 26 46 46 41 2c 30 2c 63 |e_name$,&FFA,0,c| 000004b0 6f 64 65 25 2c 63 6f 64 65 25 2b 6c 65 6e 67 74 |ode%,code%+lengt| 000004c0 68 25 0d 02 08 32 f1 20 22 5a 61 70 22 3b 6d 6f |h%...2. "Zap";mo| 000004d0 64 65 5f 6e 61 6d 65 24 2b 22 20 6d 6f 64 75 6c |de_name$+" modul| 000004e0 65 20 63 72 65 61 74 65 64 20 61 6e 64 20 73 61 |e created and sa| 000004f0 76 65 64 22 0d 02 12 04 0d 02 1c 05 e0 0d 02 26 |ved"...........&| 00000500 04 0d 02 30 43 f4 20 64 65 66 69 6e 65 20 61 6e |...0C. define an| 00000510 79 20 76 61 72 69 61 62 6c 65 73 20 77 65 20 77 |y variables we w| 00000520 61 6e 74 20 74 6f 20 73 74 6f 72 65 20 69 6e 20 |ant to store in | 00000530 74 68 65 20 6d 6f 64 75 6c 65 20 77 6f 72 6b 73 |the module works| 00000540 70 61 63 65 0d 02 3a 04 0d 02 44 17 dd 20 f2 73 |pace..:...D.. .s| 00000550 65 74 5f 75 70 5f 76 61 72 69 61 62 6c 65 73 0d |et_up_variables.| 00000560 02 4e 33 e3 20 70 61 73 73 3d 25 31 31 30 30 20 |.N3. pass=%1100 | 00000570 b8 20 25 31 31 31 30 20 88 20 32 3a 50 25 3d 30 |. %1110 . 2:P%=0| 00000580 3a 4f 25 3d 63 6f 64 65 25 3a 5b 4f 50 54 70 61 |:O%=code%:[OPTpa| 00000590 73 73 0d 02 58 04 0d 02 62 1e 2e 74 65 73 74 5f |ss..X...b..test_| 000005a0 30 20 20 20 20 20 20 20 20 20 20 20 20 20 45 51 |0 EQ| 000005b0 55 44 20 30 0d 02 6c 1e 2e 74 65 73 74 5f 31 20 |UD 0..l..test_1 | 000005c0 20 20 20 20 20 20 20 20 20 20 20 20 45 51 55 44 | EQUD| 000005d0 20 30 0d 02 76 1e 2e 74 65 73 74 5f 32 20 20 20 | 0..v..test_2 | 000005e0 20 20 20 20 20 20 20 20 20 20 45 51 55 44 20 30 | EQUD 0| 000005f0 0d 02 80 1e 2e 74 65 73 74 5f 33 20 20 20 20 20 |.....test_3 | 00000600 20 20 20 20 20 20 20 20 45 51 55 44 20 30 0d 02 | EQUD 0..| 00000610 8a 04 0d 02 94 07 5d 3a ed 0d 02 9e 15 76 61 72 |......]:.....var| 00000620 69 61 62 6c 65 5f 73 69 7a 65 25 3d 50 25 0d 02 |iable_size%=P%..| 00000630 a8 05 e1 0d 02 b2 04 0d 02 bc 1c f4 20 61 73 73 |............ ass| 00000640 65 6d 62 6c 65 20 74 68 65 20 6d 61 69 6e 20 63 |emble the main c| 00000650 6f 64 65 0d 02 c6 04 0d 02 d0 14 dd 20 f2 61 73 |ode......... .as| 00000660 73 65 6d 62 6c 65 5f 63 6f 64 65 0d 02 da 04 0d |semble_code.....| 00000670 02 e4 12 f4 20 64 65 66 69 6e 65 20 66 6c 61 67 |.... define flag| 00000680 73 0d 02 ee 04 0d 02 f8 10 49 66 6c 61 67 25 3d |s........Iflag%=| 00000690 31 3c 3c 32 37 0d 03 02 10 56 66 6c 61 67 25 3d |1<<27....Vflag%=| 000006a0 31 3c 3c 32 38 0d 03 0c 10 43 66 6c 61 67 25 3d |1<<28....Cflag%=| 000006b0 31 3c 3c 32 39 0d 03 16 04 0d 03 20 2a f4 20 64 |1<<29...... *. d| 000006c0 65 66 69 6e 65 20 72 65 67 69 73 74 65 72 20 6e |efine register n| 000006d0 75 6d 62 65 72 73 20 28 66 6f 72 20 6d 61 63 72 |umbers (for macr| 000006e0 6f 73 29 0d 03 2a 04 0d 03 34 3c 52 30 3d 30 3a |os)..*...4<R0=0:| 000006f0 52 31 3d 31 3a 52 32 3d 32 3a 52 33 3d 33 3a 52 |R1=1:R2=2:R3=3:R| 00000700 34 3d 34 3a 52 35 3d 35 3a 52 36 3d 36 3a 52 37 |4=4:R5=5:R6=6:R7| 00000710 3d 37 3a 52 38 3d 38 3a 52 39 3d 39 3a 52 31 30 |=7:R8=8:R9=9:R10| 00000720 3d 31 30 0d 03 3e 2c 52 31 31 3d 31 31 3a 52 31 |=10..>,R11=11:R1| 00000730 32 3d 31 32 3a 52 31 33 3d 31 33 3a 52 31 34 3d |2=12:R13=13:R14=| 00000740 31 34 3a 52 31 35 3d 31 35 3a 50 43 3d 31 35 0d |14:R15=15:PC=15.| 00000750 03 48 04 0d 03 52 2a e3 20 70 61 73 73 3d 25 31 |.H...R*. pass=%1| 00000760 31 30 30 20 b8 20 25 31 31 31 30 20 88 20 32 3a |100 . %1110 . 2:| 00000770 50 25 3d 30 3a 4f 25 3d 63 6f 64 65 25 0d 03 5c |P%=0:O%=code%..\| 00000780 0c 5b 4f 50 54 70 61 73 73 0d 03 66 04 0d 03 70 |.[OPTpass..f...p| 00000790 12 2e 4d 6f 64 75 6c 65 5f 68 65 61 64 65 72 0d |..Module_header.| 000007a0 03 7a 20 2e 53 74 61 72 74 5f 63 6f 64 65 20 20 |.z .Start_code | 000007b0 20 20 20 20 20 20 20 20 20 45 51 55 44 20 30 0d | EQUD 0.| 000007c0 03 84 2e 2e 49 6e 69 74 69 61 6c 69 73 61 74 69 |....Initialisati| 000007d0 6f 6e 5f 63 6f 64 65 20 20 45 51 55 44 20 69 6e |on_code EQUD in| 000007e0 69 74 69 61 6c 69 73 65 5f 63 6f 64 65 0d 03 8e |itialise_code...| 000007f0 2c 2e 46 69 6e 61 6c 69 73 61 74 69 6f 6e 5f 63 |,.Finalisation_c| 00000800 6f 64 65 20 20 20 20 45 51 55 44 20 66 69 6e 61 |ode EQUD fina| 00000810 6c 69 73 65 5f 63 6f 64 65 0d 03 98 20 2e 53 65 |lise_code... .Se| 00000820 72 76 69 63 65 5f 63 61 6c 6c 5f 68 61 6e 64 6c |rvice_call_handl| 00000830 65 72 20 45 51 55 44 20 30 0d 03 a2 2b 2e 54 69 |er EQUD 0...+.Ti| 00000840 74 6c 65 5f 73 74 72 69 6e 67 20 20 20 20 20 20 |tle_string | 00000850 20 20 20 45 51 55 44 20 74 69 74 6c 65 5f 73 74 | EQUD title_st| 00000860 72 69 6e 67 0d 03 ac 2a 2e 48 65 6c 70 5f 73 74 |ring...*.Help_st| 00000870 72 69 6e 67 20 20 20 20 20 20 20 20 20 20 45 51 |ring EQ| 00000880 55 44 20 68 65 6c 70 5f 73 74 72 69 6e 67 0d 03 |UD help_string..| 00000890 b6 20 2e 43 6f 6d 6d 61 6e 64 5f 6b 65 79 77 6f |. .Command_keywo| 000008a0 72 64 5f 74 61 62 20 20 45 51 55 44 20 30 0d 03 |rd_tab EQUD 0..| 000008b0 c0 20 2e 53 57 49 5f 63 68 75 6e 6b 5f 6e 75 6d |. .SWI_chunk_num| 000008c0 62 65 72 20 20 20 20 20 45 51 55 44 20 30 0d 03 |ber EQUD 0..| 000008d0 ca 20 2e 53 57 49 5f 68 61 6e 64 6c 65 72 5f 63 |. .SWI_handler_c| 000008e0 6f 64 65 20 20 20 20 20 45 51 55 44 20 30 0d 03 |ode EQUD 0..| 000008f0 d4 20 2e 53 57 49 5f 64 65 63 6f 64 69 6e 67 5f |. .SWI_decoding_| 00000900 74 61 62 6c 65 20 20 20 45 51 55 44 20 30 0d 03 |table EQUD 0..| 00000910 de 20 2e 53 57 49 5f 64 65 63 6f 64 69 6e 67 5f |. .SWI_decoding_| 00000920 63 6f 64 65 20 20 20 20 45 51 55 44 20 30 0d 03 |code EQUD 0..| 00000930 e8 04 0d 03 f2 44 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c |.....D\\\\\\\\\\| 00000940 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c |\\\\\\\\\\\\\\\\| * 00000970 5c 5c 5c 5c 5c 5c 0d 03 fc 42 5c 20 54 49 54 4c |\\\\\\...B\ TITL| 00000980 45 53 20 80 20 43 4f 4d 4d 41 4e 44 20 54 41 42 |ES . COMMAND TAB| 00000990 4c 45 53 20 20 20 20 20 20 20 20 20 20 20 20 20 |LES | 000009a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000009b0 20 20 20 20 20 20 20 5c 0d 04 06 44 5c 5c 5c 5c | \...D\\\\| 000009c0 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c |\\\\\\\\\\\\\\\\| * 000009f0 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 0d 04 10 04 |\\\\\\\\\\\\....| 00000a00 0d 04 1a 10 2e 68 65 6c 70 5f 73 74 72 69 6e 67 |.....help_string| 00000a10 0d 04 24 3f a4 53 28 22 5a 61 70 22 2b 6d 6f 64 |..$?.S("Zap"+mod| 00000a20 65 5f 6e 61 6d 65 24 2b bd 39 2b 76 65 72 24 2b |e_name$+.9+ver$+| 00000a30 22 20 28 22 2b a4 64 61 74 65 2b 22 29 20 a9 20 |" ("+.date+") . | 00000a40 22 2b 6d 6f 64 65 5f 61 75 74 68 6f 72 24 29 0d |"+mode_author$).| 00000a50 04 2e 04 0d 04 38 11 2e 74 69 74 6c 65 5f 73 74 |.....8..title_st| 00000a60 72 69 6e 67 0d 04 42 18 a4 53 28 22 5a 61 70 22 |ring..B..S("Zap"| 00000a70 2b 6d 6f 64 65 5f 6e 61 6d 65 24 29 0d 04 4c 04 |+mode_name$)..L.| 00000a80 0d 04 56 44 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c |..VD\\\\\\\\\\\\| 00000a90 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c |\\\\\\\\\\\\\\\\| * 00000ac0 5c 5c 5c 5c 0d 04 60 42 5c 20 49 4e 49 54 49 41 |\\\\..`B\ INITIA| 00000ad0 4c 49 53 45 20 80 20 46 49 4e 41 4c 49 53 45 20 |LISE . FINALISE | 00000ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | * 00000b00 20 20 20 20 20 5c 0d 04 6a 44 5c 5c 5c 5c 5c 5c | \..jD\\\\\\| 00000b10 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c |\\\\\\\\\\\\\\\\| * 00000b40 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 0d 04 74 04 0d 04 |\\\\\\\\\\..t...| 00000b50 7e 14 2e 69 6e 69 74 69 61 6c 69 73 65 5f 63 6f |~..initialise_co| 00000b60 64 65 0d 04 88 08 a4 4a 53 52 0d 04 92 0d 4d 4f |de.....JSR....MO| 00000b70 56 20 52 30 2c 23 36 0d 04 9c 1a 4d 4f 56 20 52 |V R0,#6....MOV R| 00000b80 33 2c 23 76 61 72 69 61 62 6c 65 5f 73 69 7a 65 |3,#variable_size| 00000b90 25 0d 04 a6 3b 53 57 49 20 22 58 4f 53 5f 4d 6f |%...;SWI "XOS_Mo| 00000ba0 64 75 6c 65 22 20 20 20 20 20 20 20 20 20 20 20 |dule" | 00000bb0 20 20 20 5c 20 63 6c 61 69 6d 20 76 61 72 61 62 | \ claim varab| 00000bc0 6c 65 20 77 6f 72 6b 73 70 61 63 65 0d 04 b0 0a |le workspace....| 00000bd0 a4 52 54 53 56 53 0d 04 ba 43 4d 4f 56 20 52 31 |.RTSVS...CMOV R1| 00000be0 31 2c 52 32 20 20 20 20 20 20 20 20 20 20 20 20 |1,R2 | 00000bf0 20 20 20 20 20 20 20 20 5c 20 63 6c 61 69 6d 65 | \ claime| 00000c00 64 20 62 6c 6f 63 6b 20 28 52 31 31 20 66 72 6f |d block (R11 fro| 00000c10 6d 20 6e 6f 77 20 6f 6e 29 0d 04 c4 40 53 54 52 |m now on)...@STR| 00000c20 20 52 31 31 2c 5b 52 31 32 5d 20 20 20 20 20 20 | R11,[R12] | 00000c30 20 20 20 20 20 20 20 20 20 20 20 5c 20 73 61 76 | \ sav| 00000c40 65 20 61 73 20 6d 79 20 77 6f 72 6b 73 70 61 63 |e as my workspac| 00000c50 65 20 70 6f 69 6e 74 65 72 0d 04 ce 3d 53 54 52 |e pointer...=STR| 00000c60 20 52 31 31 2c 77 6f 72 6b 73 70 61 63 65 5f 61 | R11,workspace_a| 00000c70 64 64 72 65 73 73 20 20 20 20 20 5c 20 73 61 76 |ddress \ sav| 00000c80 65 20 69 74 20 69 6e 20 74 68 65 20 6d 6f 64 75 |e it in the modu| 00000c90 6c 65 20 66 6f 72 0d 04 d8 37 4d 4f 56 20 52 30 |le for...7MOV R0| 00000ca0 2c 23 31 38 20 20 20 20 20 20 20 20 20 20 20 20 |,#18 | 00000cb0 20 20 20 20 20 20 20 20 5c 20 61 63 63 65 73 73 | \ access| 00000cc0 69 6e 67 20 63 6f 6d 6d 61 6e 64 73 2e 0d 04 e2 |ing commands....| 00000cd0 14 41 44 52 20 52 31 2c 7a 61 70 5f 74 69 74 6c |.ADR R1,zap_titl| 00000ce0 65 0d 04 ec 2c 53 57 49 20 22 58 4f 53 5f 4d 6f |e...,SWI "XOS_Mo| 00000cf0 64 75 6c 65 22 20 20 20 20 20 20 20 20 20 20 20 |dule" | 00000d00 20 20 20 5c 20 66 69 6e 64 20 7a 61 70 0d 04 f6 | \ find zap...| 00000d10 2c a4 52 54 53 56 53 20 20 20 20 20 20 20 20 20 |,.RTSVS | 00000d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 | \ | 00000d30 6e 6f 74 20 66 6f 75 6e 64 0d 05 00 31 4d 4f 56 |not found...1MOV| 00000d40 20 52 31 32 2c 52 34 20 20 20 20 20 20 20 20 20 | R12,R4 | 00000d50 20 20 20 20 20 20 20 20 20 20 20 5c 20 7a 61 70 | \ zap| 00000d60 20 77 6f 72 6b 73 70 61 63 65 0d 05 0a 17 a4 41 | workspace.....A| 00000d70 44 52 28 52 30 2c 6d 6f 64 65 5f 74 61 62 6c 65 |DR(R0,mode_table| 00000d80 29 0d 05 14 37 a4 63 61 6c 6c 28 5a 61 70 5f 41 |)...7.call(Zap_A| 00000d90 64 64 4d 6f 64 65 29 20 20 20 20 20 20 20 20 20 |ddMode) | 00000da0 20 20 5c 20 61 64 64 20 74 68 69 73 20 6d 6f 64 | \ add this mod| 00000db0 65 20 74 6f 20 7a 61 70 0d 05 1e 0a a4 52 54 53 |e to zap.....RTS| 00000dc0 56 53 0d 05 28 38 a4 41 44 52 28 52 30 2c 6b 65 |VS..(8.ADR(R0,ke| 00000dd0 79 5f 63 6f 6d 6d 61 6e 64 5f 74 61 62 6c 65 29 |y_command_table)| 00000de0 20 20 20 5c 20 61 64 64 20 74 61 62 6c 65 20 6f | \ add table o| 00000df0 66 20 63 6f 6d 6d 61 6e 64 73 0d 05 32 3c a4 63 |f commands..2<.c| 00000e00 61 6c 6c 28 5a 61 70 5f 41 64 64 43 6f 6d 6d 61 |all(Zap_AddComma| 00000e10 6e 64 73 29 20 20 20 20 20 20 20 5c 20 72 65 6d |nds) \ rem| 00000e20 6f 76 65 20 74 68 69 73 20 69 66 20 79 6f 75 27 |ove this if you'| 00000e30 72 65 20 6e 6f 74 0d 05 46 31 a4 52 54 53 56 53 |re not..F1.RTSVS| 00000e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000e50 20 20 20 20 20 20 20 5c 20 75 73 69 6e 67 20 63 | \ using c| 00000e60 6f 6d 6d 61 6e 64 73 0d 05 50 0d 4d 4f 56 20 52 |ommands..P.MOV R| 00000e70 31 2c 23 30 0d 05 5a 0e 4d 4f 56 20 52 32 2c 52 |1,#0..Z.MOV R2,R| 00000e80 31 31 0d 05 64 1a 4d 4f 56 20 52 33 2c 23 76 61 |11..d.MOV R3,#va| 00000e90 72 69 61 62 6c 65 5f 73 69 7a 65 25 0d 05 6e 3b |riable_size%..n;| 00000ea0 a4 63 61 6c 6c 28 5a 61 70 5f 46 69 6c 6c 57 6f |.call(Zap_FillWo| 00000eb0 72 64 73 29 20 20 20 20 20 20 20 20 20 5c 20 63 |rds) \ c| 00000ec0 6c 65 61 72 20 77 6f 72 6b 73 70 61 63 65 20 74 |lear workspace t| 00000ed0 6f 20 7a 65 72 6f 73 0d 05 78 08 a4 52 54 53 0d |o zeros..x..RTS.| 00000ee0 05 82 04 0d 05 8c 0e 2e 7a 61 70 5f 74 69 74 6c |........zap_titl| 00000ef0 65 0d 05 96 0d a4 53 28 22 5a 61 70 22 29 0d 05 |e.....S("Zap")..| 00000f00 a0 04 0d 05 aa 16 2e 77 6f 72 6b 73 70 61 63 65 |.......workspace| 00000f10 5f 61 64 64 72 65 73 73 0d 05 b4 0a 45 51 55 44 |_address....EQUD| 00000f20 20 30 0d 05 be 04 0d 05 c8 1d 5c 58 20 52 31 31 | 0........\X R11| 00000f30 3d 6d 6f 64 75 6c 65 20 77 6f 72 6b 73 70 61 63 |=module workspac| 00000f40 65 20 7c 0d 05 d2 04 0d 05 dc 12 2e 67 65 74 5f |e |.........get_| 00000f50 77 6f 72 6b 73 70 61 63 65 0d 05 e6 1d 4c 44 52 |workspace....LDR| 00000f60 20 52 31 31 2c 77 6f 72 6b 73 70 61 63 65 5f 61 | R11,workspace_a| 00000f70 64 64 72 65 73 73 0d 05 f0 0e 4d 4f 56 20 50 43 |ddress....MOV PC| 00000f80 2c 52 31 34 0d 05 fa 04 0d 06 04 12 2e 66 69 6e |,R14.........fin| 00000f90 61 6c 69 73 65 5f 63 6f 64 65 0d 06 0e 08 a4 4a |alise_code.....J| 00000fa0 53 52 0d 06 18 0d 4d 4f 56 20 52 30 2c 23 37 0d |SR....MOV R0,#7.| 00000fb0 06 22 10 4c 44 52 20 52 32 2c 5b 52 31 32 5d 0d |.".LDR R2,[R12].| 00000fc0 06 2c 32 53 57 49 20 22 58 4f 53 5f 4d 6f 64 75 |.,2SWI "XOS_Modu| 00000fd0 6c 65 22 20 20 20 20 20 20 20 20 20 20 20 20 20 |le" | 00000fe0 20 5c 20 66 72 65 65 20 77 6f 72 6b 73 70 61 63 | \ free workspac| 00000ff0 65 0d 06 36 0a a4 52 54 53 56 53 0d 06 40 0d 4d |e..6..RTSVS..@.M| 00001000 4f 56 20 52 30 2c 23 30 0d 06 4a 35 53 54 52 20 |OV R0,#0..J5STR | 00001010 52 30 2c 5b 52 31 32 5d 20 20 20 20 20 20 20 20 |R0,[R12] | 00001020 20 20 20 20 20 20 20 20 20 20 5c 20 6e 75 6c 6c | \ null| 00001030 20 70 72 69 76 61 74 65 20 77 6f 72 64 0d 06 54 | private word..T| 00001040 08 a4 52 54 53 0d 06 5e 04 0d 06 68 44 5c 5c 5c |..RTS..^...hD\\\| 00001050 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c |\\\\\\\\\\\\\\\\| * 00001080 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 0d 06 72 |\\\\\\\\\\\\\..r| 00001090 44 5c 20 4d 6f 64 65 20 54 61 62 6c 65 20 20 20 |D\ Mode Table | 000010a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | * 000010d0 5c 0d 06 7c 44 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c |\..|D\\\\\\\\\\\| 000010e0 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c |\\\\\\\\\\\\\\\\| * 00001110 5c 5c 5c 5c 5c 0d 06 86 04 0d 06 90 0f 2e 6d 6f |\\\\\.........mo| 00001120 64 65 5f 74 61 62 6c 65 0d 06 9a 38 45 51 55 44 |de_table...8EQUD| 00001130 20 6d 6f 64 65 5f 74 61 62 6c 65 20 20 20 20 20 | mode_table | 00001140 20 20 20 20 20 20 20 20 20 20 5c 20 6f 66 66 73 | \ offs| 00001150 65 74 20 6f 66 20 6d 6f 64 65 20 74 61 62 6c 65 |et of mode table| 00001160 0d 06 a4 35 45 51 55 44 20 6d 6f 64 65 5f 74 69 |...5EQUD mode_ti| 00001170 74 6c 65 20 20 20 20 20 20 20 20 20 20 20 20 20 |tle | 00001180 20 20 5c 20 6d 6f 64 65 20 74 69 74 6c 65 20 73 | \ mode title s| 00001190 74 72 69 6e 67 0d 06 ae 31 45 51 55 44 20 6d 6f |tring...1EQUD mo| 000011a0 64 65 5f 61 75 74 68 6f 72 20 20 20 20 20 20 20 |de_author | 000011b0 20 20 20 20 20 20 20 5c 20 61 75 74 68 6f 72 20 | \ author | 000011c0 73 74 72 69 6e 67 0d 06 b8 34 45 51 55 44 20 6d |string...4EQUD m| 000011d0 6f 64 65 5f 62 61 73 65 6d 6f 64 65 20 20 20 20 |ode_basemode | 000011e0 20 20 20 20 20 20 20 20 5c 20 62 61 73 65 20 6d | \ base m| 000011f0 6f 64 65 20 6e 75 6d 62 65 72 0d 06 c2 37 45 51 |ode number...7EQ| 00001200 55 44 20 6d 6f 64 65 5f 6e 75 6d 62 65 72 20 20 |UD mode_number | 00001210 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 6d 6f | \ mo| 00001220 64 65 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 62 |de you want to b| 00001230 65 0d 06 cc 41 45 51 55 44 20 6d 6f 64 65 5f 69 |e...AEQUD mode_i| 00001240 6e 69 74 20 20 20 20 20 20 20 20 20 20 20 20 20 |nit | 00001250 20 20 20 5c 20 6f 66 66 73 65 74 20 6f 66 20 69 | \ offset of i| 00001260 6e 69 74 69 61 6c 69 73 61 74 69 6f 6e 20 63 6f |nitialisation co| 00001270 64 65 0d 06 d6 37 45 51 55 44 20 30 20 20 20 20 |de...7EQUD 0 | 00001280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001290 20 20 20 20 5c 20 6f 66 66 73 65 74 20 6f 66 20 | \ offset of | 000012a0 79 6f 75 72 20 6d 65 6e 75 0d 06 e0 34 45 51 55 |your menu...4EQU| 000012b0 44 20 6d 6f 64 65 5f 74 61 62 6c 65 5f 65 6e 64 |D mode_table_end| 000012c0 2d 6d 6f 64 65 5f 74 61 62 6c 65 20 5c 20 6c 65 |-mode_table \ le| 000012d0 6e 67 74 68 20 6f 66 20 74 61 62 6c 65 0d 06 ea |ngth of table...| 000012e0 04 0d 06 f4 31 45 51 55 44 20 30 20 20 20 20 20 |....1EQUD 0 | 000012f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001300 20 20 20 5c 20 6d 6f 64 65 5f 70 6f 73 74 6c 6f | \ mode_postlo| 00001310 61 64 0d 06 fe 30 45 51 55 44 20 30 20 20 20 20 |ad...0EQUD 0 | 00001320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001330 20 20 20 20 5c 20 6d 6f 64 65 5f 70 72 65 73 61 | \ mode_presa| 00001340 76 65 0d 07 08 30 45 51 55 44 20 30 20 20 20 20 |ve...0EQUD 0 | 00001350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001360 20 20 20 20 5c 20 6d 6f 64 65 5f 6c 6f 61 64 69 | \ mode_loadi| 00001370 6e 67 0d 07 12 13 45 51 55 44 20 6d 6f 64 65 5f |ng....EQUD mode_| 00001380 73 74 61 72 74 0d 07 1c 11 45 51 55 44 20 6d 6f |start....EQUD mo| 00001390 64 65 5f 65 6e 64 0d 07 26 2e 45 51 55 44 20 30 |de_end..&.EQUD 0| 000013a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000013b0 20 20 20 20 20 20 20 20 5c 20 6d 6f 64 65 5f 77 | \ mode_w| 000013c0 69 64 74 68 0d 07 30 30 45 51 55 44 20 30 20 20 |idth..00EQUD 0 | 000013d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000013e0 20 20 20 20 20 20 5c 20 6d 6f 64 65 5f 6c 69 6e | \ mode_lin| 000013f0 65 63 6f 6c 0d 07 3a 30 45 51 55 44 20 30 20 20 |ecol..:0EQUD 0 | 00001400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001410 20 20 20 20 20 20 5c 20 6d 6f 64 65 5f 6c 69 6e | \ mode_lin| 00001420 65 6f 66 66 0d 07 44 2f 45 51 55 44 20 30 20 20 |eoff..D/EQUD 0 | 00001430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001440 20 20 20 20 20 20 5c 20 6d 6f 64 65 5f 63 6c 6e | \ mode_cln| 00001450 6c 6f 67 0d 07 4e 2f 45 51 55 44 20 30 20 20 20 |log..N/EQUD 0 | 00001460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001470 20 20 20 20 20 5c 20 6d 6f 64 65 5f 63 6c 6e 70 | \ mode_clnp| 00001480 68 79 0d 07 58 2f 45 51 55 44 20 30 20 20 20 20 |hy..X/EQUD 0 | 00001490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000014a0 20 20 20 20 5c 20 6d 6f 64 65 5f 63 6c 6e 6f 66 | \ mode_clnof| 000014b0 66 0d 07 62 31 45 51 55 44 20 30 20 20 20 20 20 |f..b1EQUD 0 | 000014c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000014d0 20 20 20 5c 20 6d 6f 64 65 5f 6e 65 78 74 6c 69 | \ mode_nextli| 000014e0 6e 65 0d 07 6c 2e 45 51 55 44 20 30 20 20 20 20 |ne..l.EQUD 0 | 000014f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001500 20 20 20 20 5c 20 6d 6f 64 65 5f 6d 69 6e 75 73 | \ mode_minus| 00001510 0d 07 76 2d 45 51 55 44 20 30 20 20 20 20 20 20 |..v-EQUD 0 | 00001520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001530 20 20 5c 20 6d 6f 64 65 5f 70 6c 75 73 0d 07 80 | \ mode_plus...| 00001540 2f 45 51 55 44 20 30 20 20 20 20 20 20 20 20 20 |/EQUD 0 | 00001550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c | \| 00001560 20 6d 6f 64 65 5f 73 6d 69 6e 75 73 0d 07 8a 2e | mode_sminus....| 00001570 45 51 55 44 20 30 20 20 20 20 20 20 20 20 20 20 |EQUD 0 | 00001580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 | \ | 00001590 6d 6f 64 65 5f 73 70 6c 75 73 0d 07 94 2f 45 51 |mode_splus.../EQ| 000015a0 55 44 20 30 20 20 20 20 20 20 20 20 20 20 20 20 |UD 0 | 000015b0 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 6d 6f | \ mo| 000015c0 64 65 5f 63 6d 69 6e 75 73 0d 07 9e 2e 45 51 55 |de_cminus....EQU| 000015d0 44 20 30 20 20 20 20 20 20 20 20 20 20 20 20 20 |D 0 | 000015e0 20 20 20 20 20 20 20 20 20 20 20 5c 20 6d 6f 64 | \ mod| 000015f0 65 5f 63 70 6c 75 73 0d 07 a8 33 45 51 55 44 20 |e_cplus...3EQUD | 00001600 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |0 | 00001610 20 20 20 20 20 20 20 20 20 5c 20 6d 6f 64 65 5f | \ mode_| 00001620 72 65 64 72 61 77 6c 69 6e 65 0d 07 b2 33 45 51 |redrawline...3EQ| 00001630 55 44 20 30 20 20 20 20 20 20 20 20 20 20 20 20 |UD 0 | 00001640 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 6d 6f | \ mo| 00001650 64 65 5f 72 65 64 72 61 77 6c 6e 75 6d 0d 07 bc |de_redrawlnum...| 00001660 2d 45 51 55 44 20 30 20 20 20 20 20 20 20 20 20 |-EQUD 0 | 00001670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c | \| 00001680 20 6d 6f 64 65 5f 63 68 61 72 0d 07 c6 2f 45 51 | mode_char.../EQ| 00001690 55 44 20 30 20 20 20 20 20 20 20 20 20 20 20 20 |UD 0 | 000016a0 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 6d 6f | \ mo| 000016b0 64 65 5f 64 65 6c 65 74 65 0d 07 d0 2c 45 51 55 |de_delete...,EQU| 000016c0 44 20 30 20 20 20 20 20 20 20 20 20 20 20 20 20 |D 0 | 000016d0 20 20 20 20 20 20 20 20 20 20 20 5c 20 6d 6f 64 | \ mod| 000016e0 65 5f 74 61 62 0d 07 da 2f 45 51 55 44 20 30 20 |e_tab.../EQUD 0 | 000016f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001700 20 20 20 20 20 20 20 5c 20 6d 6f 64 65 5f 72 65 | \ mode_re| 00001710 74 75 72 6e 0d 07 e4 31 45 51 55 44 20 30 20 20 |turn...1EQUD 0 | 00001720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001730 20 20 20 20 20 20 5c 20 6d 6f 64 65 5f 72 65 6e | \ mode_ren| 00001740 75 6d 62 65 72 0d 07 ee 33 45 51 55 44 20 30 20 |umber...3EQUD 0 | 00001750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001760 20 20 20 20 20 20 20 5c 20 6d 6f 64 65 5f 73 61 | \ mode_sa| 00001770 76 65 61 6e 64 72 75 6e 0d 07 f8 32 45 51 55 44 |veandrun...2EQUD| 00001780 20 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | 0 | 00001790 20 20 20 20 20 20 20 20 20 20 5c 20 6d 6f 64 65 | \ mode| 000017a0 5f 6c 69 6e 65 73 74 61 72 74 0d 08 02 30 45 51 |_linestart...0EQ| 000017b0 55 44 20 30 20 20 20 20 20 20 20 20 20 20 20 20 |UD 0 | 000017c0 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 6d 6f | \ mo| 000017d0 64 65 5f 6c 69 6e 65 65 6e 64 0d 08 0c 31 45 51 |de_lineend...1EQ| 000017e0 55 44 20 30 20 20 20 20 20 20 20 20 20 20 20 20 |UD 0 | 000017f0 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 6d 6f | \ mo| 00001800 64 65 5f 6c 69 6e 65 6e 65 78 74 0d 08 16 31 45 |de_linenext...1E| 00001810 51 55 44 20 30 20 20 20 20 20 20 20 20 20 20 20 |QUD 0 | 00001820 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 6d | \ m| 00001830 6f 64 65 5f 6c 69 6e 65 70 72 65 76 0d 08 20 2d |ode_lineprev.. -| 00001840 45 51 55 44 20 30 20 20 20 20 20 20 20 20 20 20 |EQUD 0 | 00001850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 | \ | 00001860 6d 6f 64 65 5f 63 6f 70 79 0d 08 2a 31 45 51 55 |mode_copy..*1EQU| 00001870 44 20 30 20 20 20 20 20 20 20 20 20 20 20 20 20 |D 0 | 00001880 20 20 20 20 20 20 20 20 20 20 20 5c 20 6d 6f 64 | \ mod| 00001890 65 5f 6a 6f 69 6e 6c 69 6e 65 0d 08 34 32 45 51 |e_joinline..42EQ| 000018a0 55 44 20 30 20 20 20 20 20 20 20 20 20 20 20 20 |UD 0 | 000018b0 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 6d 6f | \ mo| 000018c0 64 65 5f 73 70 6c 69 74 6c 69 6e 65 0d 08 3e 33 |de_splitline..>3| 000018d0 45 51 55 44 20 30 20 20 20 20 20 20 20 20 20 20 |EQUD 0 | 000018e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 | \ | 000018f0 6d 6f 64 65 5f 61 6c 69 67 6e 63 61 72 65 74 0d |mode_aligncaret.| 00001900 08 48 30 45 51 55 44 20 30 20 20 20 20 20 20 20 |.H0EQUD 0 | 00001910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001920 20 5c 20 6d 6f 64 65 5f 63 6f 6d 6d 61 6e 64 0d | \ mode_command.| 00001930 08 52 30 45 51 55 44 20 30 20 20 20 20 20 20 20 |.R0EQUD 0 | 00001940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001950 20 5c 20 6d 6f 64 65 5f 63 6f 6d 70 69 6c 65 0d | \ mode_compile.| 00001960 08 5c 33 45 51 55 44 20 30 20 20 20 20 20 20 20 |.\3EQUD 0 | 00001970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001980 20 5c 20 6d 6f 64 65 5f 66 6f 72 6d 61 74 74 65 | \ mode_formatte| 00001990 78 74 0d 08 66 2c 45 51 55 44 20 30 20 20 20 20 |xt..f,EQUD 0 | 000019a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000019b0 20 20 20 20 5c 20 6d 6f 64 65 5f 72 75 6e 0d 08 | \ mode_run..| 000019c0 70 33 45 51 55 44 20 30 20 20 20 20 20 20 20 20 |p3EQUD 0 | 000019d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000019e0 5c 20 6d 6f 64 65 5f 72 75 6e 61 6e 64 71 75 69 |\ mode_runandqui| 000019f0 74 0d 08 7a 2e 45 51 55 44 20 30 20 20 20 20 20 |t..z.EQUD 0 | 00001a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001a10 20 20 20 5c 20 6d 6f 64 65 5f 62 61 73 69 63 0d | \ mode_basic.| 00001a20 08 84 2f 45 51 55 44 20 30 20 20 20 20 20 20 20 |../EQUD 0 | 00001a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001a40 20 5c 20 6d 6f 64 65 5f 73 65 61 72 63 68 0d 08 | \ mode_search..| 00001a50 8e 30 45 51 55 44 20 30 20 20 20 20 20 20 20 20 |.0EQUD 0 | 00001a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001a70 5c 20 6d 6f 64 65 5f 72 65 70 6c 61 63 65 0d 08 |\ mode_replace..| 00001a80 98 32 45 51 55 44 20 30 20 20 20 20 20 20 20 20 |.2EQUD 0 | 00001a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001aa0 5c 20 6d 6f 64 65 5f 73 65 6c 65 63 74 69 6f 6e |\ mode_selection| 00001ab0 0d 08 a2 2e 45 51 55 44 20 30 20 20 20 20 20 20 |....EQUD 0 | 00001ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001ad0 20 20 5c 20 6d 6f 64 65 5f 63 6c 69 63 6b 0d 08 | \ mode_click..| 00001ae0 ac 30 45 51 55 44 20 30 20 20 20 20 20 20 20 20 |.0EQUD 0 | 00001af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001b00 5c 20 6d 6f 64 65 5f 6d 65 73 73 61 67 65 0d 08 |\ mode_message..| 00001b10 b6 31 45 51 55 44 20 30 20 20 20 20 20 20 20 20 |.1EQUD 0 | 00001b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001b30 5c 20 6d 6f 64 65 5f 73 65 74 77 69 64 74 68 0d |\ mode_setwidth.| 00001b40 08 c0 13 2e 6d 6f 64 65 5f 74 61 62 6c 65 5f 65 |....mode_table_e| 00001b50 6e 64 0d 08 ca 04 0d 08 d4 2e 2e 6d 6f 64 65 5f |nd.........mode_| 00001b60 74 69 74 6c 65 20 20 20 20 20 20 20 20 20 20 20 |title | 00001b70 20 20 20 20 20 20 20 20 5c 20 6d 6f 64 65 20 74 | \ mode t| 00001b80 69 74 6c 65 0d 08 de 12 a4 53 28 6d 6f 64 65 5f |itle.....S(mode_| 00001b90 6e 61 6d 65 24 29 0d 08 e8 04 0d 08 f2 2f 2e 6d |name$)......./.m| 00001ba0 6f 64 65 5f 61 75 74 68 6f 72 20 20 20 20 20 20 |ode_author | 00001bb0 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 6d 6f | \ mo| 00001bc0 64 65 20 61 75 74 68 6f 72 0d 08 fc 14 a4 53 28 |de author.....S(| 00001bd0 6d 6f 64 65 5f 61 75 74 68 6f 72 24 29 0d 09 06 |mode_author$)...| 00001be0 04 0d 09 10 43 2e 4e 75 6c 6c 20 20 20 20 20 20 |....C.Null | 00001bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001c00 20 20 20 5c 20 6f 66 66 73 65 74 20 74 6f 20 73 | \ offset to s| 00001c10 65 6e 64 20 65 6e 74 72 79 20 70 6f 69 6e 74 73 |end entry points| 00001c20 20 79 6f 75 0d 09 1a 3d 4d 4f 56 20 50 43 2c 52 | you...=MOV PC,R| 00001c30 31 34 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |14 | 00001c40 20 20 20 20 20 20 5c 20 64 6f 6e 27 74 20 77 61 | \ don't wa| 00001c50 6e 74 20 74 6f 20 64 6f 20 61 6e 79 74 68 69 6e |nt to do anythin| 00001c60 67 0d 09 24 04 0d 09 2e 0f 2e 6d 6f 64 65 5f 73 |g..$......mode_s| 00001c70 74 61 72 74 0d 09 38 08 a4 4a 53 52 0d 09 42 16 |tart..8..JSR..B.| 00001c80 42 4c 20 67 65 74 5f 6d 6f 64 65 5f 6e 75 6d 62 |BL get_mode_numb| 00001c90 65 72 0d 09 4c 1e a4 63 61 6c 6c 28 5a 61 70 5f |er..L..call(Zap_| 00001ca0 52 65 73 74 6f 72 65 4d 6f 64 65 57 6f 72 64 29 |RestoreModeWord)| 00001cb0 0d 09 56 08 a4 52 54 53 0d 09 60 04 0d 09 6a 0d |..V..RTS..`...j.| 00001cc0 2e 6d 6f 64 65 5f 65 6e 64 0d 09 74 08 a4 4a 53 |.mode_end..t..JS| 00001cd0 52 0d 09 7e 16 42 4c 20 67 65 74 5f 6d 6f 64 65 |R..~.BL get_mode| 00001ce0 5f 6e 75 6d 62 65 72 0d 09 88 1b a4 63 61 6c 6c |_number.....call| 00001cf0 28 5a 61 70 5f 53 61 76 65 4d 6f 64 65 57 6f 72 |(Zap_SaveModeWor| 00001d00 64 29 0d 09 92 08 a4 52 54 53 0d 09 9c 04 0d 0d |d).....RTS......| 00001d10 de 44 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c |.D\\\\\\\\\\\\\\| 00001d20 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c |\\\\\\\\\\\\\\\\| * 00001d50 5c 5c 0d 0d e8 44 5c 20 49 6e 69 74 69 61 6c 69 |\\...D\ Initiali| 00001d60 73 65 20 62 75 66 66 65 72 73 20 20 20 20 20 20 |se buffers | 00001d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | * 00001d90 20 20 20 20 20 5c 0d 0d f2 44 5c 5c 5c 5c 5c 5c | \...D\\\\\\| 00001da0 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c |\\\\\\\\\\\\\\\\| * 00001dd0 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 0d 0d fc 04 0d 0e |\\\\\\\\\\......| 00001de0 06 3a 2e 6d 6f 64 65 5f 69 6e 69 74 20 20 20 20 |.:.mode_init | 00001df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001e00 5c 20 69 6e 69 74 69 61 6c 69 73 65 20 65 6e 74 |\ initialise ent| 00001e10 72 79 20 70 6f 69 6e 74 0d 0e 10 0d 54 45 51 20 |ry point....TEQ | 00001e20 52 31 2c 23 31 0d 0e 1a 19 42 45 51 20 73 74 6f |R1,#1....BEQ sto| 00001e30 72 65 5f 6d 6f 64 65 5f 6e 75 6d 62 65 72 0d 0e |re_mode_number..| 00001e40 24 0d 54 45 51 20 52 31 2c 23 32 0d 0e 2e 14 42 |$.TEQ R1,#2....B| 00001e50 45 51 20 7a 61 70 5f 73 74 61 72 74 69 6e 67 0d |EQ zap_starting.| 00001e60 0e 38 0e 4d 4f 56 20 50 43 2c 52 31 34 0d 0e 42 |.8.MOV PC,R14..B| 00001e70 04 0d 0e 4c 41 2e 7a 61 70 5f 73 74 61 72 74 69 |...LA.zap_starti| 00001e80 6e 67 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |ng | 00001e90 20 20 20 5c 20 69 6e 69 74 69 61 6c 69 73 65 20 | \ initialise | 00001ea0 74 68 65 20 6d 6f 64 65 20 77 6f 72 64 20 69 66 |the mode word if| 00001eb0 20 30 0d 0e 56 1a 53 54 4d 46 44 20 52 31 33 21 | 0..V.STMFD R13!| 00001ec0 2c 7b 52 31 2c 52 38 2c 52 31 34 7d 0d 0e 60 30 |,{R1,R8,R14}..`0| 00001ed0 4d 4f 56 20 52 38 2c 23 30 20 20 20 20 20 20 20 |MOV R8,#0 | 00001ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 | \ | 00001ef0 6f 70 74 69 6f 6e 73 20 77 6f 72 64 0d 0e 6a 16 |options word..j.| 00001f00 42 4c 20 67 65 74 5f 6d 6f 64 65 5f 6e 75 6d 62 |BL get_mode_numb| 00001f10 65 72 0d 0e 74 0d 4d 4f 56 20 52 31 2c 52 30 0d |er..t.MOV R1,R0.| 00001f20 0e 7e 1a a4 63 61 6c 6c 28 5a 61 70 5f 47 65 74 |.~..call(Zap_Get| 00001f30 4d 6f 64 65 57 6f 72 64 29 0d 0e 88 1b 4c 44 4d |ModeWord)....LDM| 00001f40 56 53 46 44 20 52 31 33 21 2c 7b 52 31 2c 52 38 |VSFD R13!,{R1,R8| 00001f50 2c 50 43 7d 0d 0e 92 41 54 45 51 20 52 30 2c 23 |,PC}...ATEQ R0,#| 00001f60 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |0 | 00001f70 20 20 20 20 20 20 5c 20 68 61 76 65 20 61 6e 79 | \ have any| 00001f80 20 6f 70 74 69 6f 6e 73 20 62 65 65 6e 20 73 65 | options been se| 00001f90 74 20 66 6f 72 0d 0e 9c 3c 4c 44 4d 4e 45 46 44 |t for...<LDMNEFD| 00001fa0 20 52 31 33 21 2c 7b 52 31 2c 52 38 2c 50 43 7d | R13!,{R1,R8,PC}| 00001fb0 20 20 20 20 20 20 20 5c 20 74 68 69 73 20 6d 6f | \ this mo| 00001fc0 64 65 20 2d 20 72 65 74 75 72 6e 20 69 66 20 73 |de - return if s| 00001fd0 6f 0d 0e a6 1c 4c 44 52 20 52 30 2c 64 65 66 61 |o....LDR R0,defa| 00001fe0 75 6c 74 5f 6d 6f 64 65 5f 77 6f 72 64 0d 0e b0 |ult_mode_word...| 00001ff0 1a a4 63 61 6c 6c 28 5a 61 70 5f 50 75 74 4d 6f |..call(Zap_PutMo| 00002000 64 65 57 6f 72 64 29 0d 0e ba 19 4c 44 4d 46 44 |deWord)....LDMFD| 00002010 20 52 31 33 21 2c 7b 52 31 2c 52 38 2c 50 43 7d | R13!,{R1,R8,PC}| 00002020 0d 0e c4 04 0d 0e ce 16 2e 64 65 66 61 75 6c 74 |.........default| 00002030 5f 6d 6f 64 65 5f 77 6f 72 64 0d 0e d8 3c 45 51 |_mode_word...<EQ| 00002040 55 44 20 26 31 30 30 31 30 30 35 30 20 20 20 20 |UD &10010050 | 00002050 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 61 75 | \ au| 00002060 74 6f 20 69 6e 64 65 6e 74 2b 74 61 62 73 2b 38 |to indent+tabs+8| 00002070 30 20 63 6f 6c 73 0d 0e e2 04 0d 0e ec 15 5c 45 |0 cols........\E| 00002080 20 52 30 3d 6d 6f 64 65 20 6e 75 6d 62 65 72 0d | R0=mode number.| 00002090 0e f6 08 5c 58 20 2d 0d 0f 00 04 0d 0f 0a 16 2e |...\X -.........| 000020a0 73 74 6f 72 65 5f 6d 6f 64 65 5f 6e 75 6d 62 65 |store_mode_numbe| 000020b0 72 0d 0f 14 1d 53 54 52 20 52 30 2c 61 63 74 75 |r....STR R0,actu| 000020c0 61 6c 5f 6d 6f 64 65 5f 6e 75 6d 62 65 72 0d 0f |al_mode_number..| 000020d0 1e 0e 4d 4f 56 20 50 43 2c 52 31 34 0d 0f 28 04 |..MOV PC,R14..(.| 000020e0 0d 0f 32 08 5c 45 20 2d 0d 0f 3c 15 5c 58 20 52 |..2.\E -..<.\X R| 000020f0 30 3d 6d 6f 64 65 20 6e 75 6d 62 65 72 0d 0f 46 |0=mode number..F| 00002100 04 0d 0f 50 14 2e 67 65 74 5f 6d 6f 64 65 5f 6e |...P..get_mode_n| 00002110 75 6d 62 65 72 0d 0f 5a 1d 4c 44 52 20 52 30 2c |umber..Z.LDR R0,| 00002120 61 63 74 75 61 6c 5f 6d 6f 64 65 5f 6e 75 6d 62 |actual_mode_numb| 00002130 65 72 0d 0f 64 0e 4d 4f 56 20 50 43 2c 52 31 34 |er..d.MOV PC,R14| 00002140 0d 0f 6e 04 0d 0f 78 17 2e 61 63 74 75 61 6c 5f |..n...x..actual_| 00002150 6d 6f 64 65 5f 6e 75 6d 62 65 72 0d 0f 82 0a 45 |mode_number....E| 00002160 51 55 44 20 30 0d 0f 8c 04 0d 0f 96 41 5c 5c 5c |QUD 0.......A\\\| 00002170 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c |\\\\\\\\\\\\\\\\| * 000021a0 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 0d 0f a0 41 5c 20 |\\\\\\\\\\...A\ | 000021b0 43 6f 6d 6d 61 6e 64 20 74 61 62 6c 65 20 20 20 |Command table | 000021c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | * 000021e0 20 20 20 20 20 20 20 20 20 20 5c 0d 0f aa 41 5c | \...A\| 000021f0 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c |\\\\\\\\\\\\\\\\| * 00002220 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 0d 0f b4 04 |\\\\\\\\\\\\....| 00002230 0d 0f be 16 2e 6b 65 79 5f 63 6f 6d 6d 61 6e 64 |.....key_command| 00002240 5f 74 61 62 6c 65 0d 0f c8 1a 45 51 55 44 20 6b |_table....EQUD k| 00002250 65 79 5f 63 6f 6d 6d 61 6e 64 5f 74 61 62 6c 65 |ey_command_table| 00002260 0d 0f d2 29 45 51 55 44 20 30 20 20 20 20 20 20 |...)EQUD 0 | 00002270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002280 20 20 5c 20 66 6c 61 67 73 0d 0f dc 1d a4 63 6f | \ flags.....co| 00002290 6d 28 22 42 45 45 50 42 45 45 50 22 2c 62 65 65 |m("BEEPBEEP",bee| 000022a0 70 62 65 65 70 29 0d 0f e6 27 45 51 55 44 20 30 |pbeep)...'EQUD 0| 000022b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000022c0 20 20 20 20 20 20 20 20 5c 20 65 6e 64 0d 0f f0 | \ end...| 000022d0 04 0d 0f fa 0a 45 51 55 44 20 37 0d 10 04 0d 2e |.....EQUD 7.....| 000022e0 62 65 65 70 62 65 65 70 0d 10 0e 08 a4 4a 53 52 |beepbeep.....JSR| 000022f0 0d 10 18 0c 53 57 49 20 26 31 30 37 0d 10 22 0c |....SWI &107..".| 00002300 53 57 49 20 26 31 30 37 0d 10 2c 08 a4 52 54 53 |SWI &107..,..RTS| 00002310 0d 10 36 04 0d 10 40 40 5c 5c 5c 5c 5c 5c 5c 5c |..6...@@\\\\\\\\| 00002320 5c 5c 20 45 6e 64 20 4f 66 20 41 73 73 65 6d 62 |\\ End Of Assemb| 00002330 6c 79 20 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c |ly \\\\\\\\\\\\\| 00002340 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c 5c |\\\\\\\\\\\\\\\\| 00002350 5c 5c 5c 5c 0d 10 4a 04 0d 10 54 05 5d 0d 10 5e |\\\\..J...T.]..^| 00002360 04 0d 10 68 0a ed 20 70 61 73 73 0d 10 72 0e 6c |...h.. pass..r.l| 00002370 65 6e 67 74 68 25 3d 50 25 0d 10 7c 05 e1 0d 10 |ength%=P%..|....| 00002380 86 04 0d 10 90 30 dd 20 a4 53 28 41 24 29 20 20 |.....0. .S(A$) | 00002390 20 20 3a 5b 4f 50 54 70 61 73 73 3a 45 51 55 53 | :[OPTpass:EQUS| 000023a0 20 41 24 2b bd 30 3a 41 4c 49 47 4e 3a 5d 3a 3d | A$+.0:ALIGN:]:=| 000023b0 22 22 0d 10 9a 41 dd 20 a4 53 53 28 41 24 29 20 |""...A. .SS(A$) | 000023c0 20 20 3a 5b 4f 50 54 70 61 73 73 3a 53 57 49 20 | :[OPTpass:SWI | 000023d0 22 58 4f 53 5f 57 72 69 74 65 53 22 3a 45 51 55 |"XOS_WriteS":EQU| 000023e0 53 20 41 24 2b bd 30 3a 41 4c 49 47 4e 3a 5d 3a |S A$+.0:ALIGN:]:| 000023f0 3d 22 22 0d 10 a4 32 dd 20 a4 4a 53 52 20 20 20 |=""...2. .JSR | 00002400 20 20 20 3a 5b 4f 50 54 70 61 73 73 3a 53 54 4d | :[OPTpass:STM| 00002410 46 44 20 20 20 52 31 33 21 2c 7b 52 31 34 7d 3a |FD R13!,{R14}:| 00002420 5d 3a 3d 22 22 0d 10 ae 45 dd 20 a4 52 54 56 20 |]:=""...E. .RTV | 00002430 20 20 20 20 20 3a 5b 4f 50 54 70 61 73 73 3a 4c | :[OPTpass:L| 00002440 44 4d 46 44 20 20 20 52 31 33 21 2c 7b 52 31 34 |DMFD R13!,{R14| 00002450 7d 3a 84 52 53 20 50 43 2c 52 31 34 2c 23 56 66 |}:.RS PC,R14,#Vf| 00002460 6c 61 67 25 3a 5d 3a 3d 22 22 0d 10 b8 46 dd 20 |lag%:]:=""...F. | 00002470 a4 52 54 43 20 20 20 20 20 20 3a 5b 4f 50 54 70 |.RTC :[OPTp| 00002480 61 73 73 3a 4c 44 4d 46 44 20 20 20 52 31 33 21 |ass:LDMFD R13!| 00002490 2c 7b 52 31 34 7d 3a 42 49 43 53 20 50 43 2c 52 |,{R14}:BICS PC,R| 000024a0 31 34 2c 23 56 66 6c 61 67 25 3a 5d 3a 3d 22 22 |14,#Vflag%:]:=""| 000024b0 0d 10 c2 32 dd 20 a4 52 54 53 20 20 20 20 20 20 |...2. .RTS | 000024c0 3a 5b 4f 50 54 70 61 73 73 3a 4c 44 4d 46 44 20 |:[OPTpass:LDMFD | 000024d0 20 20 52 31 33 21 2c 7b 50 43 7d 20 3a 5d 3a 3d | R13!,{PC} :]:=| 000024e0 22 22 0d 10 cc 31 dd 20 a4 52 54 53 4e 45 20 20 |""...1. .RTSNE | 000024f0 20 20 3a 5b 4f 50 54 70 61 73 73 3a 4c 44 4d 4e | :[OPTpass:LDMN| 00002500 45 46 44 20 52 31 33 21 2c 7b 50 43 7d 3a 5d 3a |EFD R13!,{PC}:]:| 00002510 3d 22 22 0d 10 d6 31 dd 20 a4 52 54 53 45 51 20 |=""...1. .RTSEQ | 00002520 20 20 20 3a 5b 4f 50 54 70 61 73 73 3a 4c 44 4d | :[OPTpass:LDM| 00002530 45 51 46 44 20 52 31 33 21 2c 7b 50 43 7d 3a 5d |EQFD R13!,{PC}:]| 00002540 3a 3d 22 22 0d 10 e0 31 dd 20 a4 52 54 53 43 53 |:=""...1. .RTSCS| 00002550 20 20 20 20 3a 5b 4f 50 54 70 61 73 73 3a 4c 44 | :[OPTpass:LD| 00002560 4d 43 53 46 44 20 52 31 33 21 2c 7b 50 43 7d 3a |MCSFD R13!,{PC}:| 00002570 5d 3a 3d 22 22 0d 10 ea 31 dd 20 a4 52 54 53 43 |]:=""...1. .RTSC| 00002580 43 20 20 20 20 3a 5b 4f 50 54 70 61 73 73 3a 4c |C :[OPTpass:L| 00002590 44 4d 43 43 46 44 20 52 31 33 21 2c 7b 50 43 7d |DMCCFD R13!,{PC}| 000025a0 3a 5d 3a 3d 22 22 0d 10 f4 31 dd 20 a4 52 54 53 |:]:=""...1. .RTS| 000025b0 56 53 20 20 20 20 3a 5b 4f 50 54 70 61 73 73 3a |VS :[OPTpass:| 000025c0 4c 44 4d 56 53 46 44 20 52 31 33 21 2c 7b 50 43 |LDMVSFD R13!,{PC| 000025d0 7d 3a 5d 3a 3d 22 22 0d 10 fe 31 dd 20 a4 52 54 |}:]:=""...1. .RT| 000025e0 53 56 43 20 20 20 20 3a 5b 4f 50 54 70 61 73 73 |SVC :[OPTpass| 000025f0 3a 4c 44 4d 56 43 46 44 20 52 31 33 21 2c 7b 50 |:LDMVCFD R13!,{P| 00002600 43 7d 3a 5d 3a 3d 22 22 0d 11 08 31 dd 20 a4 52 |C}:]:=""...1. .R| 00002610 54 53 4c 53 20 20 20 20 3a 5b 4f 50 54 70 61 73 |TSLS :[OPTpas| 00002620 73 3a 4c 44 4d 4c 53 46 44 20 52 31 33 21 2c 7b |s:LDMLSFD R13!,{| 00002630 50 43 7d 3a 5d 3a 3d 22 22 0d 11 12 31 dd 20 a4 |PC}:]:=""...1. .| 00002640 52 54 53 48 49 20 20 20 20 3a 5b 4f 50 54 70 61 |RTSHI :[OPTpa| 00002650 73 73 3a 4c 44 4d 48 49 46 44 20 52 31 33 21 2c |ss:LDMHIFD R13!,| 00002660 7b 50 43 7d 3a 5d 3a 3d 22 22 0d 11 1c 31 dd 20 |{PC}:]:=""...1. | 00002670 a4 52 54 53 4d 49 20 20 20 20 3a 5b 4f 50 54 70 |.RTSMI :[OPTp| 00002680 61 73 73 3a 4c 44 4d 4d 49 46 44 20 52 31 33 21 |ass:LDMMIFD R13!| 00002690 2c 7b 50 43 7d 3a 5d 3a 3d 22 22 0d 11 26 31 dd |,{PC}:]:=""..&1.| 000026a0 20 a4 52 54 53 4c 45 20 20 20 20 3a 5b 4f 50 54 | .RTSLE :[OPT| 000026b0 70 61 73 73 3a 4c 44 4d 4c 45 46 44 20 52 31 33 |pass:LDMLEFD R13| 000026c0 21 2c 7b 50 43 7d 3a 5d 3a 3d 22 22 0d 11 30 31 |!,{PC}:]:=""..01| 000026d0 dd 20 a4 52 54 53 47 45 20 20 20 20 3a 5b 4f 50 |. .RTSGE :[OP| 000026e0 54 70 61 73 73 3a 4c 44 4d 47 45 46 44 20 52 31 |Tpass:LDMGEFD R1| 000026f0 33 21 2c 7b 50 43 7d 3a 5d 3a 3d 22 22 0d 11 3a |3!,{PC}:]:=""..:| 00002700 31 dd 20 a4 52 54 53 4c 54 20 20 20 20 3a 5b 4f |1. .RTSLT :[O| 00002710 50 54 70 61 73 73 3a 4c 44 4d 4c 54 46 44 20 52 |PTpass:LDMLTFD R| 00002720 31 33 21 2c 7b 50 43 7d 3a 5d 3a 3d 22 22 0d 11 |13!,{PC}:]:=""..| 00002730 44 32 dd 20 a4 52 54 53 53 20 20 20 20 20 3a 5b |D2. .RTSS :[| 00002740 4f 50 54 70 61 73 73 3a 4c 44 4d 46 44 20 20 20 |OPTpass:LDMFD | 00002750 52 31 33 21 2c 7b 50 43 7d 5e 3a 5d 3a 3d 22 22 |R13!,{PC}^:]:=""| 00002760 0d 11 4e 32 dd 20 a4 52 54 53 53 4e 45 20 20 20 |..N2. .RTSSNE | 00002770 3a 5b 4f 50 54 70 61 73 73 3a 4c 44 4d 4e 45 46 |:[OPTpass:LDMNEF| 00002780 44 20 52 31 33 21 2c 7b 50 43 7d 5e 3a 5d 3a 3d |D R13!,{PC}^:]:=| 00002790 22 22 0d 11 58 32 dd 20 a4 52 54 53 53 45 51 20 |""..X2. .RTSSEQ | 000027a0 20 20 3a 5b 4f 50 54 70 61 73 73 3a 4c 44 4d 45 | :[OPTpass:LDME| 000027b0 51 46 44 20 52 31 33 21 2c 7b 50 43 7d 5e 3a 5d |QFD R13!,{PC}^:]| 000027c0 3a 3d 22 22 0d 11 62 32 dd 20 a4 52 54 53 53 43 |:=""..b2. .RTSSC| 000027d0 43 20 20 20 3a 5b 4f 50 54 70 61 73 73 3a 4c 44 |C :[OPTpass:LD| 000027e0 4d 43 43 46 44 20 52 31 33 21 2c 7b 50 43 7d 5e |MCCFD R13!,{PC}^| 000027f0 3a 5d 3a 3d 22 22 0d 11 6c 32 dd 20 a4 52 54 53 |:]:=""..l2. .RTS| 00002800 53 43 53 20 20 20 3a 5b 4f 50 54 70 61 73 73 3a |SCS :[OPTpass:| 00002810 4c 44 4d 43 53 46 44 20 52 31 33 21 2c 7b 50 43 |LDMCSFD R13!,{PC| 00002820 7d 5e 3a 5d 3a 3d 22 22 0d 11 76 43 dd 20 a4 6d |}^:]:=""..vC. .m| 00002830 65 6d 28 78 25 29 20 20 3a 77 25 3d 4f 25 2d 63 |em(x%) :w%=O%-c| 00002840 6f 64 65 25 3a 50 25 3d 50 25 2b 78 25 3a 4f 25 |ode%:P%=P%+x%:O%| 00002850 3d 4f 25 2b 78 25 3a 5b 4f 50 54 70 61 73 73 3a |=O%+x%:[OPTpass:| 00002860 41 4c 49 47 4e 3a 5d 3a 3d 77 25 0d 11 80 31 dd |ALIGN:]:=w%...1.| 00002870 20 a4 6e 65 77 6c 20 20 20 20 20 3a 5b 4f 50 54 | .newl :[OPT| 00002880 70 61 73 73 3a 53 57 49 20 22 58 4f 53 5f 4e 65 |pass:SWI "XOS_Ne| 00002890 77 4c 69 6e 65 22 3a 5d 3a 3d 22 22 0d 11 8a 04 |wLine":]:=""....| 000028a0 0d 11 94 3b dd 20 a4 64 61 74 65 20 20 20 20 20 |...;. .date | 000028b0 20 de 20 64 61 74 65 25 20 36 34 3a 3f 64 61 74 | . date% 64:?dat| 000028c0 65 25 3d 33 3a c8 99 20 22 4f 53 5f 57 6f 72 64 |e%=3:.. "OS_Word| 000028d0 22 2c 26 30 45 2c 64 61 74 65 25 0d 11 9e 48 c8 |",&0E,date%...H.| 000028e0 99 20 22 4f 53 5f 43 6f 6e 76 65 72 74 44 61 74 |. "OS_ConvertDat| 000028f0 65 41 6e 64 54 69 6d 65 22 2c 64 61 74 65 25 2c |eAndTime",date%,| 00002900 64 61 74 65 25 2b 31 36 2c 33 32 2c 22 25 44 59 |date%+16,32,"%DY| 00002910 20 25 4d 33 20 31 39 25 59 52 22 20 b8 20 41 25 | %M3 19%YR" . A%| 00002920 2c 42 25 0d 11 a8 0f 3f 42 25 3d 31 33 3a 3d 24 |,B%....?B%=13:=$| 00002930 41 25 0d 11 b2 04 0d 11 bc 28 f4 20 54 68 69 73 |A%.......(. This| 00002940 20 6d 6f 64 75 6c 65 73 20 77 6f 72 6b 73 70 61 | modules workspa| 00002950 63 65 20 69 73 20 61 74 20 52 31 31 21 21 0d 11 |ce is at R11!!..| 00002960 c6 04 0d 11 d0 35 dd 20 a4 4c 44 52 28 73 25 2c |.....5. .LDR(s%,| 00002970 78 25 29 20 20 3a 5b 4f 50 54 70 61 73 73 3a 4c |x%) :[OPTpass:L| 00002980 44 52 20 20 20 73 25 2c 5b 52 31 31 2c 23 78 25 |DR s%,[R11,#x%| 00002990 5d 3a 5d 3a 3d 22 22 0d 11 da 35 dd 20 a4 4c 44 |]:]:=""...5. .LD| 000029a0 52 45 51 28 73 25 2c 78 25 29 3a 5b 4f 50 54 70 |REQ(s%,x%):[OPTp| 000029b0 61 73 73 3a 4c 44 52 45 51 20 73 25 2c 5b 52 31 |ass:LDREQ s%,[R1| 000029c0 31 2c 23 78 25 5d 3a 5d 3a 3d 22 22 0d 11 e4 35 |1,#x%]:]:=""...5| 000029d0 dd 20 a4 4c 44 52 4e 45 28 73 25 2c 78 25 29 3a |. .LDRNE(s%,x%):| 000029e0 5b 4f 50 54 70 61 73 73 3a 4c 44 52 4e 45 20 73 |[OPTpass:LDRNE s| 000029f0 25 2c 5b 52 31 31 2c 23 78 25 5d 3a 5d 3a 3d 22 |%,[R11,#x%]:]:="| 00002a00 22 0d 11 ee 35 dd 20 a4 4c 44 52 43 53 28 73 25 |"...5. .LDRCS(s%| 00002a10 2c 78 25 29 3a 5b 4f 50 54 70 61 73 73 3a 4c 44 |,x%):[OPTpass:LD| 00002a20 52 43 53 20 73 25 2c 5b 52 31 31 2c 23 78 25 5d |RCS s%,[R11,#x%]| 00002a30 3a 5d 3a 3d 22 22 0d 11 f8 35 dd 20 a4 4c 44 52 |:]:=""...5. .LDR| 00002a40 43 43 28 73 25 2c 78 25 29 3a 5b 4f 50 54 70 61 |CC(s%,x%):[OPTpa| 00002a50 73 73 3a 4c 44 52 43 43 20 73 25 2c 5b 52 31 31 |ss:LDRCC s%,[R11| 00002a60 2c 23 78 25 5d 3a 5d 3a 3d 22 22 0d 12 02 35 dd |,#x%]:]:=""...5.| 00002a70 20 a4 53 54 52 28 73 25 2c 78 25 29 20 20 3a 5b | .STR(s%,x%) :[| 00002a80 4f 50 54 70 61 73 73 3a 53 54 52 20 20 20 73 25 |OPTpass:STR s%| 00002a90 2c 5b 52 31 31 2c 23 78 25 5d 3a 5d 3a 3d 22 22 |,[R11,#x%]:]:=""| 00002aa0 0d 12 0c 35 dd 20 a4 53 54 52 45 51 28 73 25 2c |...5. .STREQ(s%,| 00002ab0 78 25 29 3a 5b 4f 50 54 70 61 73 73 3a 53 54 52 |x%):[OPTpass:STR| 00002ac0 45 51 20 73 25 2c 5b 52 31 31 2c 23 78 25 5d 3a |EQ s%,[R11,#x%]:| 00002ad0 5d 3a 3d 22 22 0d 12 16 35 dd 20 a4 53 54 52 4e |]:=""...5. .STRN| 00002ae0 45 28 73 25 2c 78 25 29 3a 5b 4f 50 54 70 61 73 |E(s%,x%):[OPTpas| 00002af0 73 3a 53 54 52 4e 45 20 73 25 2c 5b 52 31 31 2c |s:STRNE s%,[R11,| 00002b00 23 78 25 5d 3a 5d 3a 3d 22 22 0d 12 20 35 dd 20 |#x%]:]:="".. 5. | 00002b10 a4 53 54 52 56 53 28 73 25 2c 78 25 29 3a 5b 4f |.STRVS(s%,x%):[O| 00002b20 50 54 70 61 73 73 3a 53 54 52 56 53 20 73 25 2c |PTpass:STRVS s%,| 00002b30 5b 52 31 31 2c 23 78 25 5d 3a 5d 3a 3d 22 22 0d |[R11,#x%]:]:="".| 00002b40 12 2a 04 0d 12 34 1d f4 20 4d 65 6e 75 20 63 72 |.*...4.. Menu cr| 00002b50 65 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 |eation functions| 00002b60 0d 12 3e 04 0d 12 48 19 dd 20 a4 6e 65 77 5f 6d |..>...H.. .new_m| 00002b70 65 6e 75 28 54 24 2c 77 25 2c 63 25 29 0d 12 52 |enu(T$,w%,c%)..R| 00002b80 09 61 25 3d 50 25 0d 12 5c 0f 6d 65 6e 75 5f 6e |.a%=P%..\.menu_n| 00002b90 75 6d 25 3d 30 0d 12 66 0c 5b 4f 50 54 70 61 73 |um%=0..f.[OPTpas| 00002ba0 73 0d 12 70 27 45 51 55 53 20 54 24 2b c4 31 32 |s..p'EQUS T$+.12| 00002bb0 2d a9 54 24 2c bd 30 29 20 20 20 20 20 20 20 20 |-.T$,.0) | 00002bc0 20 5c 20 74 69 74 6c 65 0d 12 7a 39 45 51 55 44 | \ title..z9EQUD| 00002bd0 20 77 25 3c 3c 34 20 20 20 20 20 20 20 20 20 20 | w%<<4 | 00002be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002bf0 20 20 20 20 5c 20 77 69 64 74 68 20 69 6e 20 6f | \ width in o| 00002c00 73 0d 12 84 4a 45 51 55 44 20 63 25 20 20 20 20 |s...JEQUD c% | 00002c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002c20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 6f | \ o| 00002c30 66 66 73 65 74 20 6f 66 20 73 75 62 20 74 6f 20 |ffset of sub to | 00002c40 63 72 65 61 74 65 20 74 68 69 73 0d 12 8e 05 5d |create this....]| 00002c50 0d 12 98 07 3d 61 25 0d 12 a2 04 0d 12 ac 1a dd |....=a%.........| 00002c60 20 a4 6e 6d 65 28 54 24 2c 66 25 2c 73 25 2c 6b | .nme(T$,f%,s%,k| 00002c70 25 2c 69 25 29 0d 12 b6 30 e7 20 73 25 3d 2d 31 |%,i%)...0. s%=-1| 00002c80 20 80 20 70 61 73 73 3d 31 34 20 8c 20 66 25 3d | . pass=14 . f%=| 00002c90 28 66 25 20 84 20 38 29 3a 73 25 3d 6d 77 5f 77 |(f% . 8):s%=mw_w| 00002ca0 69 6e 64 6f 77 0d 12 c0 26 e7 20 69 25 3d 31 20 |indow...&. i%=1 | 00002cb0 80 20 70 61 73 73 3d 31 34 20 8c 20 69 25 3d 73 |. pass=14 . i%=s| 00002cc0 75 62 5f 6b 63 6f 6d 6d 61 6e 64 0d 12 ca 22 e7 |ub_kcommand...".| 00002cd0 20 69 25 3d 32 20 80 20 70 61 73 73 3d 31 34 20 | i%=2 . pass=14 | 00002ce0 8c 20 69 25 3d 73 75 62 5f 63 61 6c 6c 0d 12 d4 |. i%=sub_call...| 00002cf0 0c 5b 4f 50 54 70 61 73 73 0d 12 de 29 45 51 55 |.[OPTpass...)EQU| 00002d00 44 20 66 25 20 20 20 20 20 20 20 20 20 20 20 20 |D f% | 00002d10 20 20 20 20 20 20 20 20 20 20 20 5c 20 66 6c 61 | \ fla| 00002d20 67 73 0d 12 e8 33 45 51 55 44 20 73 25 20 20 20 |gs...3EQUD s% | 00002d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002d40 20 20 20 20 5c 20 73 75 62 6d 65 6e 75 20 70 6f | \ submenu po| 00002d50 69 6e 74 65 72 0d 12 f2 27 45 51 55 44 20 6b 25 |inter...'EQUD k%| 00002d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002d70 20 20 20 20 20 20 20 5c 20 6b 65 79 0d 12 fc 2e | \ key....| 00002d80 45 51 55 44 20 69 25 20 20 20 20 20 20 20 20 20 |EQUD i% | 00002d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 | \ | 00002da0 69 6e 74 65 72 70 72 61 74 65 0d 13 06 2c a4 53 |interprate...,.S| 00002db0 28 54 24 29 20 20 20 20 20 20 20 20 20 20 20 20 |(T$) | 00002dc0 20 20 20 20 20 20 20 20 20 20 20 5c 20 6d 65 6e | \ men| 00002dd0 75 20 74 65 78 74 0d 13 10 05 5d 0d 13 1a 10 6d |u text....]....m| 00002de0 65 6e 75 5f 6e 75 6d 25 2b 3d 31 0d 13 24 10 3d |enu_num%+=1..$.=| 00002df0 6d 65 6e 75 5f 6e 75 6d 25 2d 31 0d 13 2e 04 0d |menu_num%-1.....| 00002e00 13 38 0f dd 20 a4 65 6e 64 5f 6d 65 6e 75 0d 13 |.8.. .end_menu..| 00002e10 42 23 e7 20 6d 65 6e 75 5f 6e 75 6d 25 3d 30 20 |B#. menu_num%=0 | 00002e20 8c 20 f1 22 4d 65 6e 75 20 4e 55 4c 4c 21 22 3a |. ."Menu NULL!":| 00002e30 e0 0d 13 4c 0c 5b 4f 50 54 70 61 73 73 0d 13 56 |...L.[OPTpass..V| 00002e40 2e 45 51 55 44 20 2d 31 20 20 20 20 20 20 20 20 |.EQUD -1 | 00002e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c | \| 00002e60 20 74 65 72 6d 69 6e 61 74 6f 72 0d 13 60 05 5d | terminator..`.]| 00002e70 0d 13 6a 0e 3d 6d 65 6e 75 5f 6e 75 6d 25 0d 13 |..j.=menu_num%..| 00002e80 74 04 0d 13 7e 1a dd 20 a4 77 5f 6c 65 61 66 28 |t...~.. .w_leaf(| 00002e90 54 24 2c 77 25 2c 63 25 2c 69 25 29 0d 13 88 1a |T$,w%,c%,i%)....| 00002ea0 62 25 3d a4 6e 65 77 5f 6d 65 6e 75 28 54 24 2c |b%=.new_menu(T$,| 00002eb0 31 30 2c 63 25 29 0d 13 92 20 61 25 3d a4 6e 6d |10,c%)... a%=.nm| 00002ec0 65 28 22 22 2c 34 2b 28 77 25 3c 3c 38 29 2c 30 |e("",4+(w%<<8),0| 00002ed0 2c 30 2c 69 25 29 0d 13 9c 10 61 25 3d a4 65 6e |,0,i%)....a%=.en| 00002ee0 64 5f 6d 65 6e 75 0d 13 a6 07 3d 62 25 0d 13 b0 |d_menu....=b%...| 00002ef0 04 0d 13 ba 11 dd 20 a4 41 44 52 28 73 25 2c 78 |...... .ADR(s%,x| 00002f00 25 29 0d 13 c4 36 f4 20 54 68 65 20 69 6e 73 74 |%)...6. The inst| 00002f10 72 75 63 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 |ruction sequence| 00002f20 20 6d 75 73 74 20 62 65 20 6f 66 20 46 49 58 45 | must be of FIXE| 00002f30 44 20 6c 65 6e 67 74 68 0d 13 ce 0e 61 25 3d 78 |D length....a%=x| 00002f40 25 2d 50 25 2d 38 0d 13 d8 0d e7 20 61 25 3e 3d |%-P%-8..... a%>=| 00002f50 30 20 8c 0d 13 e2 47 20 5b 4f 50 54 70 61 73 73 |0 ....G [OPTpass| 00002f60 3a 41 44 44 20 73 25 2c 50 43 2c 23 28 61 25 20 |:ADD s%,PC,#(a% | 00002f70 80 20 26 30 30 30 30 30 33 46 46 29 3a 41 44 44 |. &000003FF):ADD| 00002f80 20 73 25 2c 73 25 2c 23 28 61 25 20 80 20 26 46 | s%,s%,#(a% . &F| 00002f90 46 46 46 46 43 30 30 29 3a 5d 0d 13 ec 05 cc 0d |FFFFC00):]......| 00002fa0 13 f6 0b 20 61 25 3d 2d 61 25 0d 14 00 47 20 5b |... a%=-a%...G [| 00002fb0 4f 50 54 70 61 73 73 3a 53 55 42 20 73 25 2c 50 |OPTpass:SUB s%,P| 00002fc0 43 2c 23 28 61 25 20 80 20 26 30 30 30 30 30 33 |C,#(a% . &000003| 00002fd0 46 46 29 3a 53 55 42 20 73 25 2c 73 25 2c 23 28 |FF):SUB s%,s%,#(| 00002fe0 61 25 20 80 20 26 46 46 46 46 46 43 30 30 29 3a |a% . &FFFFFC00):| 00002ff0 5d 0d 14 0a 05 cd 0d 14 14 07 3d 22 22 0d 14 1e |].........=""...| 00003000 04 0d 14 28 11 dd 20 a4 4d 4f 56 28 73 25 2c 78 |...(.. .MOV(s%,x| 00003010 25 29 0d 14 32 45 f4 20 70 65 72 66 6f 72 6d 20 |%)..2E. perform | 00003020 4d 4f 56 20 73 25 2c 23 78 25 20 6f 6e 20 73 65 |MOV s%,#x% on se| 00003030 63 6f 6e 64 20 70 61 73 73 20 6f 6e 6c 79 20 28 |cond pass only (| 00003040 76 61 72 69 61 62 6c 65 20 6d 61 79 20 6e 6f 74 |variable may not| 00003050 20 65 78 69 73 74 29 0d 14 3c 15 e7 20 28 70 61 | exist)..<.. (pa| 00003060 73 73 20 80 20 32 29 3c 3e 30 20 8c 0d 14 46 1a |ss . 2)<>0 ...F.| 00003070 20 5b 4f 50 54 70 61 73 73 3a 4d 4f 56 20 73 25 | [OPTpass:MOV s%| 00003080 2c 23 78 25 3a 5d 0d 14 50 05 cc 0d 14 5a 19 20 |,#x%:]..P....Z. | 00003090 5b 4f 50 54 70 61 73 73 3a 4d 4f 56 20 73 25 2c |[OPTpass:MOV s%,| 000030a0 23 30 3a 5d 0d 14 64 05 cd 0d 14 6e 07 3d 22 22 |#0:]..d....n.=""| 000030b0 0d 14 78 04 0d 14 82 11 dd 20 a4 54 45 51 28 73 |..x...... .TEQ(s| 000030c0 25 2c 78 25 29 0d 14 8c 45 f4 20 70 65 72 66 6f |%,x%)...E. perfo| 000030d0 72 6d 20 54 45 51 20 73 25 2c 23 78 25 20 6f 6e |rm TEQ s%,#x% on| 000030e0 20 73 65 63 6f 6e 64 20 70 61 73 73 20 6f 6e 6c | second pass onl| 000030f0 79 20 28 76 61 72 69 61 62 6c 65 20 6d 61 79 20 |y (variable may | 00003100 6e 6f 74 20 65 78 69 73 74 29 0d 14 96 15 e7 20 |not exist)..... | 00003110 28 70 61 73 73 20 80 20 32 29 3c 3e 30 20 8c 0d |(pass . 2)<>0 ..| 00003120 14 a0 1a 20 5b 4f 50 54 70 61 73 73 3a 54 45 51 |... [OPTpass:TEQ| 00003130 20 73 25 2c 23 78 25 3a 5d 0d 14 aa 05 cc 0d 14 | s%,#x%:].......| 00003140 b4 19 20 5b 4f 50 54 70 61 73 73 3a 54 45 51 20 |.. [OPTpass:TEQ | 00003150 73 25 2c 23 30 3a 5d 0d 14 be 05 cd 0d 14 c8 07 |s%,#0:].........| 00003160 3d 22 22 0d 14 d2 04 0d 14 dc 14 dd 20 a4 74 69 |=""......... .ti| 00003170 63 6b 65 71 28 73 25 2c 78 25 29 0d 14 e6 0c 5b |ckeq(s%,x%)....[| 00003180 4f 50 54 70 61 73 73 0d 14 f0 1b 4c 44 52 20 52 |OPTpass....LDR R| 00003190 30 2c 5b 73 25 2c 23 28 32 38 2b 32 34 2a 78 25 |0,[s%,#(28+24*x%| 000031a0 29 5d 0d 14 fa 11 84 52 45 51 20 52 30 2c 52 30 |)].....REQ R0,R0| 000031b0 2c 23 31 0d 15 04 12 42 49 43 4e 45 20 52 30 2c |,#1....BICNE R0,| 000031c0 52 30 2c 23 31 0d 15 0e 1b 53 54 52 20 52 30 2c |R0,#1....STR R0,| 000031d0 5b 73 25 2c 23 28 32 38 2b 32 34 2a 78 25 29 5d |[s%,#(28+24*x%)]| 000031e0 0d 15 18 09 5d 3a 3d 22 22 0d 15 22 04 0d 15 2c |....]:="".."...,| 000031f0 14 dd 20 a4 74 69 63 6b 6e 65 28 73 25 2c 78 25 |.. .tickne(s%,x%| 00003200 29 0d 15 36 0c 5b 4f 50 54 70 61 73 73 0d 15 40 |)..6.[OPTpass..@| 00003210 1b 4c 44 52 20 52 30 2c 5b 73 25 2c 23 28 32 38 |.LDR R0,[s%,#(28| 00003220 2b 32 34 2a 78 25 29 5d 0d 15 4a 11 84 52 4e 45 |+24*x%)]..J..RNE| 00003230 20 52 30 2c 52 30 2c 23 31 0d 15 54 12 42 49 43 | R0,R0,#1..T.BIC| 00003240 45 51 20 52 30 2c 52 30 2c 23 31 0d 15 5e 1b 53 |EQ R0,R0,#1..^.S| 00003250 54 52 20 52 30 2c 5b 73 25 2c 23 28 32 38 2b 32 |TR R0,[s%,#(28+2| 00003260 34 2a 78 25 29 5d 0d 15 68 09 5d 3a 3d 22 22 0d |4*x%)]..h.]:="".| 00003270 15 72 04 0d 15 7c 0c dd 20 f2 65 72 72 6f 72 0d |.r...|.. .error.| 00003280 15 86 14 f6 3a f1 22 20 61 74 20 6c 69 6e 65 20 |....:." at line | 00003290 22 3b 9e 0d 15 90 05 e0 0d 15 9a 04 0d 15 a4 11 |";..............| 000032a0 dd 20 a4 65 72 72 28 61 25 2c 54 24 29 0d 15 ae |. .err(a%,T$)...| 000032b0 41 5b 4f 50 54 70 61 73 73 3a 41 44 44 20 52 30 |A[OPTpass:ADD R0| 000032c0 2c 50 43 2c 23 30 3a 84 52 53 20 50 43 2c 52 31 |,PC,#0:.RS PC,R1| 000032d0 34 2c 23 56 66 6c 61 67 25 3a 45 51 55 44 20 61 |4,#Vflag%:EQUD a| 000032e0 25 3a a4 53 28 54 24 29 3a 5d 3a 3d 22 22 0d 15 |%:.S(T$):]:=""..| 000032f0 b8 04 0d 15 c2 11 dd 20 a4 63 6f 6d 28 54 24 2c |....... .com(T$,| 00003300 61 25 29 0d 15 cc 1d 5b 4f 50 54 70 61 73 73 3a |a%)....[OPTpass:| 00003310 45 51 55 53 20 54 24 3a 45 51 55 42 20 30 3a 5d |EQUS T$:EQUB 0:]| 00003320 0d 15 d6 25 21 4f 25 3d 30 20 20 20 20 20 3a f4 |...%!O%=0 :.| 00003330 20 7a 65 72 6f 20 6e 65 78 74 20 66 6f 75 72 20 | zero next four | 00003340 62 79 74 65 73 0d 15 e0 20 5b 4f 50 54 70 61 73 |bytes... [OPTpas| 00003350 73 3a 41 4c 49 47 4e 3a 45 51 55 44 20 61 25 3a |s:ALIGN:EQUD a%:| 00003360 5d 3a 3d 22 22 0d 15 ea 04 0d 15 f4 45 f4 20 43 |]:="".......E. C| 00003370 61 6c 6c 20 7a 61 70 20 61 74 20 65 6e 74 72 79 |all zap at entry| 00003380 20 6f 66 66 73 65 74 20 61 25 20 45 6e 74 72 79 | offset a% Entry| 00003390 20 52 30 2d 52 31 31 3d 61 72 67 73 20 52 31 32 | R0-R11=args R12| 000033a0 3d 7a 61 70 20 77 6f 72 6b 73 70 61 63 65 0d 15 |=zap workspace..| 000033b0 fe 0f dd 20 a4 63 61 6c 6c 28 61 25 29 0d 16 08 |... .call(a%)...| 000033c0 0c 5b 4f 50 54 70 61 73 73 0d 16 12 3a 4c 44 52 |.[OPTpass...:LDR| 000033d0 20 52 31 34 2c 5b 52 31 32 5d 20 20 20 20 20 20 | R14,[R12] | 000033e0 20 20 20 20 20 20 20 20 20 20 20 5c 20 67 65 74 | \ get| 000033f0 20 73 74 61 72 74 20 6f 66 20 7a 61 70 20 74 61 | start of zap ta| 00003400 62 6c 65 0d 16 1c 36 41 44 44 20 52 31 34 2c 52 |ble...6ADD R14,R| 00003410 31 34 2c 23 61 25 20 20 20 20 20 20 20 20 20 20 |14,#a% | 00003420 20 20 20 20 20 5c 20 67 65 74 20 61 64 64 72 65 | \ get addre| 00003430 73 73 20 6f 66 20 73 75 62 0d 16 26 39 53 54 4d |ss of sub..&9STM| 00003440 46 44 20 52 31 33 21 2c 7b 52 31 34 7d 20 20 20 |FD R13!,{R14} | 00003450 20 20 20 20 20 20 20 20 20 20 20 5c 20 73 61 76 | \ sav| 00003460 65 20 61 64 64 72 65 73 73 20 6f 6e 20 73 74 61 |e address on sta| 00003470 63 6b 0d 16 30 3f 4d 4f 56 20 52 31 34 2c 50 43 |ck..0?MOV R14,PC| 00003480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003490 20 20 20 20 5c 20 72 65 74 75 72 6e 20 61 64 64 | \ return add| 000034a0 72 65 73 73 20 28 77 69 74 68 20 66 6c 61 67 73 |ress (with flags| 000034b0 29 0d 16 3a 30 4c 44 4d 46 44 20 52 31 33 21 2c |)..:0LDMFD R13!,| 000034c0 7b 50 43 7d 20 20 20 20 20 20 20 20 20 20 20 20 |{PC} | 000034d0 20 20 20 5c 20 63 61 6c 6c 20 74 68 65 20 73 75 | \ call the su| 000034e0 62 0d 16 44 09 5d 3a 3d 22 22 0d 16 4e 04 0d ff |b..D.]:=""..N...| 000034f0