Home » Recent acquisitions » Acorn ADFS disks » adfs_AcornUser_199611.adf » Regulars » StarInfo/Turnbull/!BasicLib/MiscMacros
StarInfo/Turnbull/!BasicLib/MiscMacros
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 » Recent acquisitions » Acorn ADFS disks » adfs_AcornUser_199611.adf » Regulars |
Filename: | StarInfo/Turnbull/!BasicLib/MiscMacros |
Read OK: | ✔ |
File size: | 079B bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM Miscellaneous macros used in most ARM code programs 20: 30DEFPROCmode(X%,Y%,C%) 40DIMJ%64:P%=J%:[OPT 2 50EQUD 1:EQUD X%:EQUD Y%:EQUD C%:EQUD -1 60]:IFC%=3THEN[OPT 2:EQUD 3:EQUD 255:] 70[OPT 2:EQUD -1:]:MODEJ% 80ENDPROC 90: 100DEFFNadr(R%,A%,I%) 110IF(P%AND3)<>0THENPRINT"Code isn't word aligned!":END 120IF(T%AND2)=0THENP%+=I%<<2:=T% 130LOCALN%,O%,H%,U%:H%=A%-(P%+8):N%=0:O%=15 140FORU%=1TOI%:IFH%=0THEN 150[OPT T%:MOV R%,O%:] 160ELSEWHILE(H%AND3)=0:H%=H%>>2:N%+=2:ENDWHILE 170IF(H%AND256)=0THEN 180[OPT T%:ADD R%,O%,#(H%AND255)<<N%:]:H%-=H%AND255 190ELSE[OPT T%:SUB R%,O%,#(256-H%AND255)<<N%:]:H%+=256-H%AND255 200ENDIF 210ENDIF:O%=R%:NEXT 220IFH%<>0THENPRINT"Could not ADR to &";~A%;" in ";I%;" instructions (R%=";R%;")":END 230=T% 240: 250DEFFNmakej(J%,N%,dummy%) 260FORU%=0TON%-1:[OPT T% 270EQUD dummy%-J% 280]:NEXT:=T% 290: 300DEFFNregisterj(J%,N%) 310IFP%<J%THENERROR255,"j routines must come after j table (J%=&"+STR$~J%+")" 320J%!(N%<<2)=P%-J% 330=T% 340: 350REM Does R=S*C+O 360REM Copes with R=O 370REM Takes registers R, S and O and constant C 380: 390DEFFNmla(R%,S%,C%,O%) 400IFC%=0THEN[OPT T%:MOV R%,O%:] 410LOCALN% 420N%=0:WHILEC%<>0 430WHILE(C%AND1)=0:N%+=1:C%=C%>>1:ENDWHILE 440IF(C%AND2)=0THEN 450[OPT T%:ADD R%,O%,S%,ASL#N%:]:C%-=1 460ELSE[OPT T%:SUB R%,O%,S%,ASL#N%:]:C%+=1 470ENDIF:O%=R%:ENDWHILE 480=T% 490: 500REM Does R+=[(N<<F) div D]*C 510REM Also N=(N<<F) mod D 520REM M is maximum expected value of (N<<F) div D 530REM Copes with (N<<F) bigger than 2^32 540REM N and D are unsigned 550REM Takes registers R, N, D and constants C, F and M 560: 570DEFFNdiva(R%,N%,F%,D%,C%,M%) 580LOCALU% 590M%=1+INT(LN(M%)/LN(2)) 600IFM%>F%+1THEN 610FORU%=M%-1TOF%+1STEP-1:[OPT T% 620CMP D%,N%,ASR#U%-F% 630SUBLE N%,N%,D%,ASL#U%-F% 640]:IFC%>=0THEN 650[OPT T%:ADDLE R%,R%,#C%<<U%:] 660ELSE[OPT T%:SUBLE R%,R%,#-C%<<U%:] 670ENDIF:NEXT 680ENDIF:IFM%>F%THEN 690[OPT T% 700CMP N%,D% 710SUBGE N%,N%,D% 720]:IFC%>=0THEN 730[OPT T%:ADDGE R%,R%,#C%<<F%:] 740ELSE[OPT T%:SUBGE R%,R%,#-C%<<F%:] 750ENDIF 760ENDIF:IFF%>0THEN 770FORU%=F%-1TO0STEP-1:[OPT T% 780RSBS N%,D%,N%,ASL#1 790ADDLT N%,N%,D% 800]:IFC%>=0THEN 810[OPT T%:ADDGE R%,R%,#C%<<U%:] 820ELSE[OPT T%:SUBGE R%,R%,#-C%<<U%:] 830ENDIF:NEXT 840ENDIF:=T%
9� Miscellaneous macros used in most ARM code programs : ��mode(X%,Y%,C%) (�J%64:P%=J%:[OPT 2 2*EQUD 1:EQUD X%:EQUD Y%:EQUD C%:EQUD -1 <$]:�C%=3�[OPT 2:EQUD 3:EQUD 255:] F[OPT 2:EQUD -1:]:�J% P� Z: dݤadr(R%,A%,I%) n,�(P%�3)<>0��"Code isn't word aligned!":� x�(T%�2)=0�P%+=I%<<2:=T% �(�N%,O%,H%,U%:H%=A%-(P%+8):N%=0:O%=15 ��U%=1�I%:�H%=0� �[OPT T%:MOV R%,O%:] � �ȕ(H%�3)=0:H%=H%>>2:N%+=2:� ��(H%�256)=0� �0[OPT T%:ADD R%,O%,#(H%�255)<<N%:]:H%-=H%�255 �9�[OPT T%:SUB R%,O%,#(256-H%�255)<<N%:]:H%+=256-H%�255 �� � �:O%=R%:� �L�H%<>0��"Could not ADR to &";~A%;" in ";I%;" instructions (R%=";R%;")":� �=T% �: �ݤmakej(J%,N%,dummy%) �U%=0�N%-1:[OPT T% EQUD dummy%-J% ]:�:=T% ": ,ݤregisterj(J%,N%) 6C�P%<J%��255,"j routines must come after j table (J%=&"+�~J%+")" @J%!(N%<<2)=P%-J% J=T% T: ^� Does R=S*C+O h� Copes with R=O r/� Takes registers R, S and O and constant C |: �ݤmla(R%,S%,C%,O%) ��C%=0�[OPT T%:MOV R%,O%:] ��N% �N%=0:ȕC%<>0 �ȕ(C%�1)=0:N%+=1:C%=C%>>1:� ��(C%�2)=0� �'[OPT T%:ADD R%,O%,S%,ASL#N%:]:C%-=1 �(�[OPT T%:SUB R%,O%,S%,ASL#N%:]:C%+=1 � �:O%=R%:� �=T% �: �� Does R+=[(N<<F) div D]*C �� Also N=(N<<F) mod D 1� M is maximum expected value of (N<<F) div D (� Copes with (N<<F) bigger than 2^32 � N and D are unsigned &6� Takes registers R, N, D and constants C, F and M 0: :ݤdiva(R%,N%,F%,D%,C%,M%) D�U% NM%=1+�(�(M%)/�(2)) X �M%>F%+1� b�U%=M%-1�F%+1�-1:[OPT T% lCMP D%,N%,ASR#U%-F% vSUBLE N%,N%,D%,ASL#U%-F% � ]:�C%>=0� �![OPT T%:ADDLE R%,R%,#C%<<U%:] �#�[OPT T%:SUBLE R%,R%,#-C%<<U%:] ��:� � �:�M%>F%� �[OPT T% � CMP N%,D% �SUBGE N%,N%,D% � ]:�C%>=0� �![OPT T%:ADDGE R%,R%,#C%<<F%:] �#�[OPT T%:SUBGE R%,R%,#-C%<<F%:] �� ��:�F%>0� �U%=F%-1�0�-1:[OPT T% RSBS N%,D%,N%,ASL#1 ADDLT N%,N%,D% ]:�C%>=0� *![OPT T%:ADDGE R%,R%,#C%<<U%:] 4#�[OPT T%:SUBGE R%,R%,#-C%<<U%:] >�:� H �:=T% �
00000000 0d 00 0a 39 f4 20 4d 69 73 63 65 6c 6c 61 6e 65 |...9. Miscellane| 00000010 6f 75 73 20 6d 61 63 72 6f 73 20 75 73 65 64 20 |ous macros used | 00000020 69 6e 20 6d 6f 73 74 20 41 52 4d 20 63 6f 64 65 |in most ARM code| 00000030 20 70 72 6f 67 72 61 6d 73 0d 00 14 05 3a 0d 00 | programs....:..| 00000040 1e 14 dd f2 6d 6f 64 65 28 58 25 2c 59 25 2c 43 |....mode(X%,Y%,C| 00000050 25 29 0d 00 28 16 de 4a 25 36 34 3a 50 25 3d 4a |%)..(..J%64:P%=J| 00000060 25 3a 5b 4f 50 54 20 32 0d 00 32 2a 45 51 55 44 |%:[OPT 2..2*EQUD| 00000070 20 31 3a 45 51 55 44 20 58 25 3a 45 51 55 44 20 | 1:EQUD X%:EQUD | 00000080 59 25 3a 45 51 55 44 20 43 25 3a 45 51 55 44 20 |Y%:EQUD C%:EQUD | 00000090 2d 31 0d 00 3c 24 5d 3a e7 43 25 3d 33 8c 5b 4f |-1..<$]:.C%=3.[O| 000000a0 50 54 20 32 3a 45 51 55 44 20 33 3a 45 51 55 44 |PT 2:EQUD 3:EQUD| 000000b0 20 32 35 35 3a 5d 0d 00 46 18 5b 4f 50 54 20 32 | 255:]..F.[OPT 2| 000000c0 3a 45 51 55 44 20 2d 31 3a 5d 3a eb 4a 25 0d 00 |:EQUD -1:]:.J%..| 000000d0 50 05 e1 0d 00 5a 05 3a 0d 00 64 13 dd a4 61 64 |P....Z.:..d...ad| 000000e0 72 28 52 25 2c 41 25 2c 49 25 29 0d 00 6e 2c e7 |r(R%,A%,I%)..n,.| 000000f0 28 50 25 80 33 29 3c 3e 30 8c f1 22 43 6f 64 65 |(P%.3)<>0.."Code| 00000100 20 69 73 6e 27 74 20 77 6f 72 64 20 61 6c 69 67 | isn't word alig| 00000110 6e 65 64 21 22 3a e0 0d 00 78 1b e7 28 54 25 80 |ned!":...x..(T%.| 00000120 32 29 3d 30 8c 50 25 2b 3d 49 25 3c 3c 32 3a 3d |2)=0.P%+=I%<<2:=| 00000130 54 25 0d 00 82 28 ea 4e 25 2c 4f 25 2c 48 25 2c |T%...(.N%,O%,H%,| 00000140 55 25 3a 48 25 3d 41 25 2d 28 50 25 2b 38 29 3a |U%:H%=A%-(P%+8):| 00000150 4e 25 3d 30 3a 4f 25 3d 31 35 0d 00 8c 13 e3 55 |N%=0:O%=15.....U| 00000160 25 3d 31 b8 49 25 3a e7 48 25 3d 30 8c 0d 00 96 |%=1.I%:.H%=0....| 00000170 17 5b 4f 50 54 20 54 25 3a 4d 4f 56 20 52 25 2c |.[OPT T%:MOV R%,| 00000180 4f 25 3a 5d 0d 00 a0 20 cc c8 95 28 48 25 80 33 |O%:]... ...(H%.3| 00000190 29 3d 30 3a 48 25 3d 48 25 3e 3e 32 3a 4e 25 2b |)=0:H%=H%>>2:N%+| 000001a0 3d 32 3a ce 0d 00 aa 10 e7 28 48 25 80 32 35 36 |=2:......(H%.256| 000001b0 29 3d 30 8c 0d 00 b4 30 5b 4f 50 54 20 54 25 3a |)=0....0[OPT T%:| 000001c0 41 44 44 20 52 25 2c 4f 25 2c 23 28 48 25 80 32 |ADD R%,O%,#(H%.2| 000001d0 35 35 29 3c 3c 4e 25 3a 5d 3a 48 25 2d 3d 48 25 |55)<<N%:]:H%-=H%| 000001e0 80 32 35 35 0d 00 be 39 cc 5b 4f 50 54 20 54 25 |.255...9.[OPT T%| 000001f0 3a 53 55 42 20 52 25 2c 4f 25 2c 23 28 32 35 36 |:SUB R%,O%,#(256| 00000200 2d 48 25 80 32 35 35 29 3c 3c 4e 25 3a 5d 3a 48 |-H%.255)<<N%:]:H| 00000210 25 2b 3d 32 35 36 2d 48 25 80 32 35 35 0d 00 c8 |%+=256-H%.255...| 00000220 05 cd 0d 00 d2 0d cd 3a 4f 25 3d 52 25 3a ed 0d |.......:O%=R%:..| 00000230 00 dc 4c e7 48 25 3c 3e 30 8c f1 22 43 6f 75 6c |..L.H%<>0.."Coul| 00000240 64 20 6e 6f 74 20 41 44 52 20 74 6f 20 26 22 3b |d not ADR to &";| 00000250 7e 41 25 3b 22 20 69 6e 20 22 3b 49 25 3b 22 20 |~A%;" in ";I%;" | 00000260 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 28 52 25 |instructions (R%| 00000270 3d 22 3b 52 25 3b 22 29 22 3a e0 0d 00 e6 07 3d |=";R%;")":.....=| 00000280 54 25 0d 00 f0 05 3a 0d 00 fa 19 dd a4 6d 61 6b |T%....:......mak| 00000290 65 6a 28 4a 25 2c 4e 25 2c 64 75 6d 6d 79 25 29 |ej(J%,N%,dummy%)| 000002a0 0d 01 04 16 e3 55 25 3d 30 b8 4e 25 2d 31 3a 5b |.....U%=0.N%-1:[| 000002b0 4f 50 54 20 54 25 0d 01 0e 12 45 51 55 44 20 64 |OPT T%....EQUD d| 000002c0 75 6d 6d 79 25 2d 4a 25 0d 01 18 0b 5d 3a ed 3a |ummy%-J%....]:.:| 000002d0 3d 54 25 0d 01 22 05 3a 0d 01 2c 16 dd a4 72 65 |=T%..".:..,...re| 000002e0 67 69 73 74 65 72 6a 28 4a 25 2c 4e 25 29 0d 01 |gisterj(J%,N%)..| 000002f0 36 43 e7 50 25 3c 4a 25 8c 85 32 35 35 2c 22 6a |6C.P%<J%..255,"j| 00000300 20 72 6f 75 74 69 6e 65 73 20 6d 75 73 74 20 63 | routines must c| 00000310 6f 6d 65 20 61 66 74 65 72 20 6a 20 74 61 62 6c |ome after j tabl| 00000320 65 20 28 4a 25 3d 26 22 2b c3 7e 4a 25 2b 22 29 |e (J%=&"+.~J%+")| 00000330 22 0d 01 40 14 4a 25 21 28 4e 25 3c 3c 32 29 3d |"..@.J%!(N%<<2)=| 00000340 50 25 2d 4a 25 0d 01 4a 07 3d 54 25 0d 01 54 05 |P%-J%..J.=T%..T.| 00000350 3a 0d 01 5e 12 f4 20 44 6f 65 73 20 52 3d 53 2a |:..^.. Does R=S*| 00000360 43 2b 4f 0d 01 68 14 f4 20 43 6f 70 65 73 20 77 |C+O..h.. Copes w| 00000370 69 74 68 20 52 3d 4f 0d 01 72 2f f4 20 54 61 6b |ith R=O..r/. Tak| 00000380 65 73 20 72 65 67 69 73 74 65 72 73 20 52 2c 20 |es registers R, | 00000390 53 20 61 6e 64 20 4f 20 61 6e 64 20 63 6f 6e 73 |S and O and cons| 000003a0 74 61 6e 74 20 43 0d 01 7c 05 3a 0d 01 86 16 dd |tant C..|.:.....| 000003b0 a4 6d 6c 61 28 52 25 2c 53 25 2c 43 25 2c 4f 25 |.mla(R%,S%,C%,O%| 000003c0 29 0d 01 90 1d e7 43 25 3d 30 8c 5b 4f 50 54 20 |).....C%=0.[OPT | 000003d0 54 25 3a 4d 4f 56 20 52 25 2c 4f 25 3a 5d 0d 01 |T%:MOV R%,O%:]..| 000003e0 9a 07 ea 4e 25 0d 01 a4 10 4e 25 3d 30 3a c8 95 |...N%....N%=0:..| 000003f0 43 25 3c 3e 30 0d 01 ae 1f c8 95 28 43 25 80 31 |C%<>0......(C%.1| 00000400 29 3d 30 3a 4e 25 2b 3d 31 3a 43 25 3d 43 25 3e |)=0:N%+=1:C%=C%>| 00000410 3e 31 3a ce 0d 01 b8 0e e7 28 43 25 80 32 29 3d |>1:......(C%.2)=| 00000420 30 8c 0d 01 c2 27 5b 4f 50 54 20 54 25 3a 41 44 |0....'[OPT T%:AD| 00000430 44 20 52 25 2c 4f 25 2c 53 25 2c 41 53 4c 23 4e |D R%,O%,S%,ASL#N| 00000440 25 3a 5d 3a 43 25 2d 3d 31 0d 01 cc 28 cc 5b 4f |%:]:C%-=1...(.[O| 00000450 50 54 20 54 25 3a 53 55 42 20 52 25 2c 4f 25 2c |PT T%:SUB R%,O%,| 00000460 53 25 2c 41 53 4c 23 4e 25 3a 5d 3a 43 25 2b 3d |S%,ASL#N%:]:C%+=| 00000470 31 0d 01 d6 0d cd 3a 4f 25 3d 52 25 3a ce 0d 01 |1.....:O%=R%:...| 00000480 e0 07 3d 54 25 0d 01 ea 05 3a 0d 01 f4 1e f4 20 |..=T%....:..... | 00000490 44 6f 65 73 20 52 2b 3d 5b 28 4e 3c 3c 46 29 20 |Does R+=[(N<<F) | 000004a0 64 69 76 20 44 5d 2a 43 0d 01 fe 19 f4 20 41 6c |div D]*C..... Al| 000004b0 73 6f 20 4e 3d 28 4e 3c 3c 46 29 20 6d 6f 64 20 |so N=(N<<F) mod | 000004c0 44 0d 02 08 31 f4 20 4d 20 69 73 20 6d 61 78 69 |D...1. M is maxi| 000004d0 6d 75 6d 20 65 78 70 65 63 74 65 64 20 76 61 6c |mum expected val| 000004e0 75 65 20 6f 66 20 28 4e 3c 3c 46 29 20 64 69 76 |ue of (N<<F) div| 000004f0 20 44 0d 02 12 28 f4 20 43 6f 70 65 73 20 77 69 | D...(. Copes wi| 00000500 74 68 20 28 4e 3c 3c 46 29 20 62 69 67 67 65 72 |th (N<<F) bigger| 00000510 20 74 68 61 6e 20 32 5e 33 32 0d 02 1c 1a f4 20 | than 2^32..... | 00000520 4e 20 61 6e 64 20 44 20 61 72 65 20 75 6e 73 69 |N and D are unsi| 00000530 67 6e 65 64 0d 02 26 36 f4 20 54 61 6b 65 73 20 |gned..&6. Takes | 00000540 72 65 67 69 73 74 65 72 73 20 52 2c 20 4e 2c 20 |registers R, N, | 00000550 44 20 61 6e 64 20 63 6f 6e 73 74 61 6e 74 73 20 |D and constants | 00000560 43 2c 20 46 20 61 6e 64 20 4d 0d 02 30 05 3a 0d |C, F and M..0.:.| 00000570 02 3a 1d dd a4 64 69 76 61 28 52 25 2c 4e 25 2c |.:...diva(R%,N%,| 00000580 46 25 2c 44 25 2c 43 25 2c 4d 25 29 0d 02 44 07 |F%,D%,C%,M%)..D.| 00000590 ea 55 25 0d 02 4e 16 4d 25 3d 31 2b a8 28 aa 28 |.U%..N.M%=1+.(.(| 000005a0 4d 25 29 2f aa 28 32 29 29 0d 02 58 0d e7 4d 25 |M%)/.(2))..X..M%| 000005b0 3e 46 25 2b 31 8c 0d 02 62 1c e3 55 25 3d 4d 25 |>F%+1...b..U%=M%| 000005c0 2d 31 b8 46 25 2b 31 88 2d 31 3a 5b 4f 50 54 20 |-1.F%+1.-1:[OPT | 000005d0 54 25 0d 02 6c 17 43 4d 50 20 44 25 2c 4e 25 2c |T%..l.CMP D%,N%,| 000005e0 41 53 52 23 55 25 2d 46 25 0d 02 76 1c 53 55 42 |ASR#U%-F%..v.SUB| 000005f0 4c 45 20 4e 25 2c 4e 25 2c 44 25 2c 41 53 4c 23 |LE N%,N%,D%,ASL#| 00000600 55 25 2d 46 25 0d 02 80 0d 5d 3a e7 43 25 3e 3d |U%-F%....]:.C%>=| 00000610 30 8c 0d 02 8a 21 5b 4f 50 54 20 54 25 3a 41 44 |0....![OPT T%:AD| 00000620 44 4c 45 20 52 25 2c 52 25 2c 23 43 25 3c 3c 55 |DLE R%,R%,#C%<<U| 00000630 25 3a 5d 0d 02 94 23 cc 5b 4f 50 54 20 54 25 3a |%:]...#.[OPT T%:| 00000640 53 55 42 4c 45 20 52 25 2c 52 25 2c 23 2d 43 25 |SUBLE R%,R%,#-C%| 00000650 3c 3c 55 25 3a 5d 0d 02 9e 07 cd 3a ed 0d 02 a8 |<<U%:].....:....| 00000660 0d cd 3a e7 4d 25 3e 46 25 8c 0d 02 b2 0b 5b 4f |..:.M%>F%.....[O| 00000670 50 54 20 54 25 0d 02 bc 0d 43 4d 50 20 4e 25 2c |PT T%....CMP N%,| 00000680 44 25 0d 02 c6 12 53 55 42 47 45 20 4e 25 2c 4e |D%....SUBGE N%,N| 00000690 25 2c 44 25 0d 02 d0 0d 5d 3a e7 43 25 3e 3d 30 |%,D%....]:.C%>=0| 000006a0 8c 0d 02 da 21 5b 4f 50 54 20 54 25 3a 41 44 44 |....![OPT T%:ADD| 000006b0 47 45 20 52 25 2c 52 25 2c 23 43 25 3c 3c 46 25 |GE R%,R%,#C%<<F%| 000006c0 3a 5d 0d 02 e4 23 cc 5b 4f 50 54 20 54 25 3a 53 |:]...#.[OPT T%:S| 000006d0 55 42 47 45 20 52 25 2c 52 25 2c 23 2d 43 25 3c |UBGE R%,R%,#-C%<| 000006e0 3c 46 25 3a 5d 0d 02 ee 05 cd 0d 02 f8 0c cd 3a |<F%:]..........:| 000006f0 e7 46 25 3e 30 8c 0d 03 02 19 e3 55 25 3d 46 25 |.F%>0......U%=F%| 00000700 2d 31 b8 30 88 2d 31 3a 5b 4f 50 54 20 54 25 0d |-1.0.-1:[OPT T%.| 00000710 03 0c 17 52 53 42 53 20 4e 25 2c 44 25 2c 4e 25 |...RSBS N%,D%,N%| 00000720 2c 41 53 4c 23 31 0d 03 16 12 41 44 44 4c 54 20 |,ASL#1....ADDLT | 00000730 4e 25 2c 4e 25 2c 44 25 0d 03 20 0d 5d 3a e7 43 |N%,N%,D%.. .]:.C| 00000740 25 3e 3d 30 8c 0d 03 2a 21 5b 4f 50 54 20 54 25 |%>=0...*![OPT T%| 00000750 3a 41 44 44 47 45 20 52 25 2c 52 25 2c 23 43 25 |:ADDGE R%,R%,#C%| 00000760 3c 3c 55 25 3a 5d 0d 03 34 23 cc 5b 4f 50 54 20 |<<U%:]..4#.[OPT | 00000770 54 25 3a 53 55 42 47 45 20 52 25 2c 52 25 2c 23 |T%:SUBGE R%,R%,#| 00000780 2d 43 25 3c 3c 55 25 3a 5d 0d 03 3e 07 cd 3a ed |-C%<<U%:]..>..:.| 00000790 0d 03 48 09 cd 3a 3d 54 25 0d ff |..H..:=T%..| 0000079b