+str_hex:\r
+ db 'HEX'\r
+\r
+read_hexchar:\r
+ call read_hexdigit\r
+ rlca\r
+ rlca\r
+ rlca\r
+ rlca\r
+ ld d,a\r
+ call read_hexdigit\r
+ add a,d\r
+ ld d,a\r
+ add a,c\r
+ ld c,a\r
+ ld a,d\r
+ ret\r
+\r
+read_hexdigit:\r
+ call read_byte\r
+ jr z,error8\r
+hex_digit_v:\r
+ call hex_digit\r
+ ret nc\r
+error8:\r
+ jp ERROR\r
+\r
+read_hexbyte:\r
+ call read_byte\r
+read_hexbyte0:\r
+ push bc\r
+ call hex_digit_v\r
+ rlca\r
+ rlca\r
+ rlca\r
+ rlca\r
+ ld c,a\r
+ call read_byte\r
+ call hex_digit_v\r
+ or c\r
+ pop bc\r
+ ret\r
+\r
+cmd_R:\r
+ ld hl,0 ;1062 21 00 00 ! . .\r
+ call get_lastarg_def ;1065 cd 69 03 . i .\r
+read_file:\r
+ ld de,dfcb1+1\r
+ ld a,(de)\r
+ cp '?'\r
+ jr z,read_symfile\r
+ dec de\r
+ push hl ;1068 e5 .\r
+ ld hl,0 ;1069 21 00 00 ! . .\r
+ ld (high_load),hl ;106c 22 9c 11 " . .\r
+ call file_open\r
+ ld hl,dfcb1+9 ;107b 21 65 00 ! e .\r
+ ld de,str_hex ;107e 11 a5 10 . . .\r
+ ld b,3 ;1081 06 03 . .\r
+ call strncmp ;1083 cd 67 11 . g .\r
+ pop hl ;1086 e1 .\r
+ jr z,read_hexfile ;1087 28 1f ( .\r
+ ld de,TPA ;1089 11 00 01 . . .\r
+ add hl,de ;108c 19 .\r
+ push hl ;108d e5 .\r
+l108eh:\r
+ call read_sector ;108e cd 21 11 . ! .\r
+ pop hl ;1091 e1 .\r
+ jr z,read_symfile ;1092 ca 72 11 . r .\r
+ ld de,DMA_BUF ;1095 11 80 00 . . .\r
+ ld b,080h ;1098 06 80 . .\r
+l109ah:\r
+ ld a,(de) ;109a 1a .\r
+ call cmdR_storebyte ;109b cd 36 11 . 6 .\r
+ inc de ;109e 13 .\r
+ inc hl ;109f 23 #\r
+ djnz l109ah ;10a0 10 f8 . .\r
+ push hl ;10a2 e5 .\r
+ jr l108eh ;10a3 18 e9 . .\r
+\r
+read_hexfile:\r
+ push hl ;10a8 e5 .\r
+l10aeh:\r
+ call read_byte ;10ae cd 05 11 . . .\r
+ jr z,rdhex_done ;10b1 28 31 ( 1\r
+ cp ':' ;10b3 fe 3a . :\r
+ jr nz,l10aeh ;10b5 20 f7 .\r
+ ld c,0 ;10b7 0e 00 . .\r
+ call read_hexchar ;10b9 cd e8 10 . . .\r
+ ld b,a ;10bc 47 G\r
+ call read_hexchar ;10bd cd e8 10 . . .\r
+ ld h,a ;10c0 67 g\r
+ call read_hexchar ;10c1 cd e8 10 . . .\r
+ ld l,a ;10c4 6f o\r
+ ld a,b ;10c5 78 x\r
+ and a ;10c6 a7 .\r
+ jr z,rdhex_done ;10c7 28 1b ( .\r
+ call read_hexchar ;10c9 cd e8 10 . . .\r
+l10cch:\r
+ call read_hexchar ;10cc cd e8 10 . . .\r
+ pop de ;10cf d1 .\r
+ push de ;10d0 d5 .\r
+ push hl ;10d1 e5 .\r
+ add hl,de ;10d2 19 .\r
+ call cmdR_storebyte ;10d3 cd 36 11 . 6 .\r
+ pop hl ;10d6 e1 .\r
+ inc hl ;10d7 23 #\r
+ djnz l10cch ;10d8 10 f2 . .\r
+ call read_hexchar ;10da cd e8 10 . . .\r
+ ld a,c ;10dd 79 y\r
+ and a ;10de a7 .\r
+ jr nz,error9 ;10df c2 07 01 . . .\r
+ jr l10aeh ;10e2 18 ca . .\r
+rdhex_done:\r
+ pop hl ;10e4 e1 .\r
+ jr read_symfile ;10e5 c3 72 11 . r .\r
+\r
+read_symfile:\r
+ ld de,fcbsym+1\r
+ ld a,(de)\r
+ cp ' '\r
+ jp z,p_max_high\r
+\r
+ ld hl,msg_symbols\r
+ call pstr\r
+\r
+ dec de\r
+ call file_open\r
+;------------------------------------------------------------------------\r
+rs_1:\r
+ call read_byte\r
+rs_2:\r
+ cp 1ah\r
+ jr z,p_max_high\r
+ cp '!'\r
+ jr c,rs_1\r
+ call read_hexbyte0\r
+ ld d,a\r
+ call read_hexbyte ; symval\r
+ ld e,a\r
+ push de ; symval\r
+ call read_byte\r
+ cp ' '\r
+ jr z,rs_4\r
+ pop hl ; discard symval\r
+rs_3: call read_byte\r
+ cp ' '\r
+ jr c,rs_2\r
+ jr rs_3\r
+;\r
+rs_4: ld hl,(BDOS+1) ;\r
+ ld e,0 ; setup symlen\r
+rs_5: dec hl ;\r
+ call read_byte ;\r
+ cp TAB ;\r
+ jr z,rs_6 ;\r
+ cp CR ;\r
+ jr z,rs_6 ;\r
+ cp '!' ;\r
+ jr c,error9 ;\r
+ ld (hl),a ;\r
+ inc e ; symlen++\r
+ ld a,e ;\r
+ cp 10h+1 ;\r
+ jr c,rs_5 ;\r
+error9:\r
+ jp ERROR ;\r
+;\r
+rs_6: push de ; symlen\r
+ push hl ;\r
+ ex de,hl ;\r
+ ld hl,(BDOS+1) ;\r
+ inc hl ;\r
+ ld e,(hl) ;\r
+ inc hl ;\r
+ ld d,(hl) ;\r
+ pop hl ;\r
+ ld (hl),d ;\r
+ dec hl ;\r
+ ld (hl),e ;\r
+ dec hl ;\r
+ ld (hl),0c3h ;\r
+\r
+ ld de,(max_load) ;\r
+ call cp_hl_de ;\r
+ jr c,error9 ;\r
+\r
+ ld de,(reg_sp) ;\r
+ call cp_hl_de ;\r
+ jr nc,rs_61 ;\r
+ ld (reg_sp),hl ;\r
+rs_61:\r
+\r
+ ld de,(BDOS+1) ;\r
+ ld (BDOS+1),hl ;\r
+ ex de,hl ;\r
+ pop de ;\r
+ ld (hl),e ; symlen\r
+ inc hl ;\r
+ pop de ; symval\r
+ ld (hl),e ;\r
+ inc hl ;\r
+ ld (hl),d ;\r
+ jp rs_1 ;\r
+;------------------------------------------------------------------------\r
+\r