;********************************* ; HexLoader for Z80PicCompact ; Ver0.01 2022/10/09 by skyriver ;********************************* 0100 STACK EQU 0100H 0000 DATPORT EQU 0 0001 CMDPORT EQU 1 0000' ASEG ORG 0100H 0100 31 0100 HexLd: LD SP,STACK 0103 21 017B LD HL,HexMsg 0106 CD 019A CALL Puts 0109 CD 0194 START: CALL RGETC 010C FE 3A CP ':' 010E 20 F9 JR NZ,START 0110 CD 0165 CALL RDBYTE ; get byte count 0113 47 LD B,A 0114 CD 0172 CALL RDWORD ; get address 0117 22 01A2 LD (STADR),HL 011A 18 0E JR LOAD01 011C CD 0194 LOAD: CALL RGETC 011F FE 3A CP ':' 0121 20 F9 JR NZ,LOAD 0123 CD 0165 CALL RDBYTE ; get byte count 0126 47 LD B,A 0127 CD 0172 CALL RDWORD ; get address 012A CD 0165 LOAD01: CALL RDBYTE ; get record type 012D 5F LD E,A ; save type 012E FE 01 CP 1 0130 20 07 JR NZ,LOAD02 0132 CD 014E CALL DSPTYP ; end of data 0135 2A 01A2 LD HL,(STADR) 0138 E9 JP (HL) 0139 B7 LOAD02: OR A 013A 20 0C JR NZ,LdErr ; data record 013C CD 0165 RDDATA: CALL RDBYTE 013F 77 LD (HL),A 0140 23 INC HL 0141 10 F9 DJNZ RDDATA 0143 CD 014E CALL DSPTYP 0146 18 D4 JR LOAD
0148 21 018D LdErr: LD HL,ErrMsg ; error occur 014B C3 019A JP Puts 014E CD 0165 DSPTYP: CALL RDBYTE ; read check sum 0151 CD 0194 CALL RGETC ; read delimitor 0154 7B LD A,E ; get type 0155 C6 30 ADD A,'0' 0157 C3 0197 JP RPUTC ; read hex nible ; A -> data 015A CD 0194 RDNBL: CALL RGETC 015D D6 30 SUB '0' 015F FE 0A CP 10 0161 D8 RET C 0162 C6 F9 ADD A,10 + '0' - 'A' 0164 C9 RET ; read byte data ; A -> byte data 0165 CD 015A RDBYTE: CALL RDNBL 0168 07 RLCA 0169 07 RLCA 016A 07 RLCA 016B 07 RLCA 016C 4F LD C,A 016D CD 015A CALL RDNBL 0170 B1 OR C 0171 C9 RET ; read hex word ; HL -> data 0172 CD 0165 RDWORD: CALL RDBYTE 0175 67 LD H,A 0176 CD 0165 CALL RDBYTE 0179 6F LD L,A 017A C9 RET 017B 48 65 78 4C HexMsg: DB 'HexLoader Start',13,10,0 017F 6F 61 64 65 0183 72 20 53 74 0187 61 72 74 0D 018B 0A 00 018D 20 65 72 72 ErrMsg: DB ' err',13,10,0 0191 0D 0A 00 0194 DB 00 RGETC: IN A,(DATPORT) 0196 C9 RET
0197 D3 00 RPUTC: OUT (DATPORT),A 0199 C9 RET 019A 7E Puts: LD A,(HL) 019B 23 INC HL 019C B7 OR A 019D C8 RET Z 019E D3 00 OUT (DATPORT),A 01A0 18 F8 JR Puts 01A2 STADR: DS 2 END
Macros:
Symbols: 0001 CMDPORT 0000 DATPORT 014E DSPTYP 018D ERRMSG 0100 HEXLD 017B HEXMSG 0148 LDERR 011C LOAD 012A LOAD01 0139 LOAD02 019A PUTS 0165 RDBYTE 013C RDDATA 015A RDNBL 0172 RDWORD 0194 RGETC 0197 RPUTC 0100 STACK 01A2 STADR 0109 START
No Fatal error(s)
|