- ld e,(hl)\r
- inc hl\r
- ld d,(hl)\r
- inc hl ; get next message address\r
- add a,a\r
- push af ; shift left and push residual bits with status\r
- ex de,hl\r
- call c,?pmsg\r
- ex de,hl ; print message, saving table pointer\r
- pop af\r
- jr nz,errm1 ; if any more bits left, continue\r
-\r
-prompt:\r
- call pr.inln\r
- db ' Retry (Y/N) ? ',0\r
-\r
- call u$conin$echo ; get operator response\r
- cp 'Y'\r
- jp z,retry ; Yes, then retry\r
-\r
-hard$error:\r
- ; otherwise,\r
- xor a\r
- ld (residual),a\r
-\r
- ld a,1 ; return hard error to BDOS\r
- ret\r
-\r
-cancel: ; here to abort job\r
- jp ?wboot ; leap directly to warmstart vector\r
-\r
-\r
-; get console input, echo it, and shift to upper case\r
-\r
-u$conin$echo:\r
- push bc\r
-u$c0:\r
- call ?const\r
- or a\r
- jr z,u$c1 ; see if any char already struck\r
- call ?conin\r
- jr u$c0 ; yes, eat it and try again\r
-u$c1:\r
- call ?conin\r
+ ld hl,b0$msg ; point at message[0]\r
+ dec e ; index of next message\r
+ add a,a ; shift left and push residual bits with status\r