.TITLE LOADER load intel-hex data .IDENT /01.03/ .LIST ME .ENABL REG ; ; LOADER loads intel-hex data from the console device ; Register usage: R5: byte count ; R4: address ; R3: record type ; R2: data byte ; R1: checksum ; R0: temporary storage ; ; 30-SEP-2004 H. Rosenfeld ; TKS=177560 TKB=177562 TPS=177564 TPB=177566 PRCHAR=76 START: RESET MOV PC,R0 CMP -(R0),-(R0) MOV R0,SP 1$: MOV #15,R0 JSR PC,PUTC MOV #12,R0 JSR PC,PUTC MOV #PRCHAR,R0 JSR PC,PUTC ; cr, lf, prompt JSR PC,GETC JSR PC,PUTC CMP #':,R0 BNE ERROR CLR R1 JSR PC,GETH MOV R0,R5 ASH #4,R5 JSR PC,GETH ADD R0,R5 ADD R5,R1 JSR PC,GETH MOV R0,R4 ASH #4,R4 JSR PC,GETH ADD R0,R4 ADD R4,R1 SWAB R4 JSR PC,GETH MOV R0,R3 ASH #4,R3 JSR PC,GETH ADD R0,R3 ADD R3,R1 ADD R3,R4 JSR PC,GETH MOV R0,R3 ASH #4,R3 JSR PC,GETH ADD R0,R3 ADD R3,R1 TST R3 BEQ 2$ DEC R3 BNE ERROR INC R3 BR 3$ 2$: JSR PC,GETH MOV R0,R2 ASH #4,R2 JSR PC,GETH ADD R0,R2 ADD R2,R1 MOVB R2,(R4)+ SOB R5,2$ 3$: JSR PC,GETH MOV R0,R2 ASH #4,R2 JSR PC,GETH ADD R0,R2 ADD R2,R1 TSTB R1 BNE ERROR JSR PC,GETC TST R3 BEQ 1$ HALT ERROR: MOV #7,R0 JSR PC,PUTC JSR PC,PUTC JSR PC,PUTC HALT PUTC: TSTB @#TPS ; console printer ready? BPL PUTC ; nay. MOVB R0,@#TPB ; write character RTS PC GETC: TSTB @#TKS ; character in buffer? BPL GETC ; nay. MOVB @#TKB,R0 ; read character RTS PC GETH: JSR PC,GETC JSR PC,PUTC SUB #'A,R0 BPL 1$ ADD #7,R0 1$: ADD #12,R0 RTS PC .END START