[Coco] F9dasm and bad 6809 op codes

Sean Conner sean at conman.org
Fri Nov 21 20:16:37 EST 2025


It was thus said that the Great Allen Huffman via Coco once stated:
> Is there such an op code as DEY or PSHX?
> 
> Both are generated by the f9dasm disassembler:
> 
>         LDY     M3AFD                    ;3A04: 10 BE 3A FD    '..:.'
> Z3A08   DEY                              ;3A08: 31 3F          '1?'
>         BNE     GETKEY                   ;3A0A: 26 05          '&.'
> 
> …then later…
> 
>         LEAX    -$05,X                   ;3A6D: 30 1B          '0.'
>         PSHX                             ;3A6F: 34 10          '4.'
>         LDX     #DCOPC                   ;3A71: 8E 00 EA       '...'
> 
> Any op code but experts out there?  The 31 seems to be LEAY $3F,Y,
> perhaps. Unsure about the other. The document I am looking at is not OCR’d
> so I cannot do a search in it.

  The DEY seems to be a macro (why?) for LEAY -1,Y.  PSHX seems to be a
macro for PSHS X.  The author of f9dasm probably didn't like typing, or was
too used to another style CPU (maybe the 6800?).

> https://github.com/allenhuffman/SubEthaSoftware/tree/main/OS-9/MultiBoot/asm
> 
> The dat file (one directory higher) also exists as data numbers in my C
> program, so I used a Python script to spit those data numbers into
> multiboot.bin and am working from that.
> 
> Earlier, I was doing it from an Intel HEX file. I was having problems
> there, too, so switched to the .bin approach - same issues.
> 
> Just me?

  Might need some better tools.  Here's what I was able to do with the
second array.  It seems to assume SECB, so for a Coco 3.

3900 8E   3800   - LDX   #3800              ; -aa0- 
3903 108E 2600   - LDY   #2600              ; -aa0- 
3907 EC   81     - LDD   ,X++               ; -aa0- 
3909 ED   A1     - STD   ,Y++               ; -aa0- 
390B 8C   3900   - CMPX  #3900              ; -aaaa 
390E 25   F7     - BLO   3907               ; ----- backwards unsigned
3910 17   0198   - LBSR  3AAB               ; ----- forwards 
3913 17   01AB   - LBSR  3AC1               ; ----- forwards 

"        MultiBoot V1.12\r"
" by Terry Todd & Allen Huffman\r"
"  Copyright (C) 1993 by\r"
"       Sub-Etha Software\r"

3982 108E 05C0   - LDY   #05C0              ; -aa0- 
3986 109F 88     - STY   88                 ; -aa0- 	; CURPOS
3989 17   0135   - LBSR  3AC1               ; ----- forwards 

"     Use UP/DOWN to scroll\r"
"[ENTER] Selects   [BREAK] Quits"

39C7 F6   3AEB   - LDB   3AEB               ; -aa0- 
39CA 17   0110   - LBSR  3ADD               ; ----- forwards 
39CD CE   04A4   - LDU   #04A4              ; -aa0- 
39D0 F6   3AFF   - LDB   3AFF               ; -aa0- 
39D3 1027 00D1   - LBEQ  3AA8               ; ----- forwards 
39D7 F0   3AEB   - SUBB  3AEB               ; uaaaa 
39DA C1   08     - CMPB  #08                ; uaaaa 
39DC 25   02     - BLO   39E0               ; ----- forwards unsigned
39DE C6   08     - LDB   #08                ; -aa0- 
39E0 34   14     - PSHS  X,B                ; ----- 
39E2 DF   88     - STU   88                 ; -aa0- 
39E4 BD   3AD0   - JSR   3AD0               ; ----- 
39E7 35   14     - PULS  B,X                ; ccccc 
39E9 30   8820   - LEAX  32,X               ; --a-- 
39EC 33   C820   - LEAU  32,U               ; ----- 
39EF 5A          - DECB                     ; -aaa- 
39F0 26   EE     - BNE   39E0               ; ----- backwards 
39F2 B6   3AEA   - LDA   3AEA               ; -aa0- 
39F5 B0   3AEB   - SUBA  3AEB               ; uaaaa 
39F8 C6   20     - LDB   #20                ; -aa0- 
39FA 3D          - MUL                      ; --a-a 
39FB C3   04A3   - ADDD  #04A3              ; -aaaa 
39FE 1F   01     - TFR   D,X                ; ccccc 
3A00 86   6A     - LDA   #6A                ; -aa0- 
3A02 A7   84     - STA   ,X                 ; -aa0- 
3A04 10BE 3AFD   - LDY   3AFD               ; -aa0- 
3A08 31   3F     - LEAY  -1,Y               ; --a-- 
3A0A 26   05     - BNE   3A11               ; ----- forwards 
3A0C 32   62     - LEAS  2,S                ; ----- 
3A0E 16   0097   - LBRA  3AA8               ; ----- forwards 
3A11 AD   9FA000 - JSR   [A000]             ; ----- 
3A15 27   F1     - BEQ   3A08               ; ----- backwards 
3A17 C6   60     - LDB   #60                ; -aa0- 
3A19 E7   84     - STB   ,X                 ; -aa0- 
3A1B C6   FF     - LDB   #FF                ; -aa0- 
3A1D 81   5E     - CMPA  #5E                ; uaaaa 
3A1F 27   11     - BEQ   3A32               ; ----- forwards 
3A21 81   0A     - CMPA  #0A                ; uaaaa 
3A23 27   24     - BEQ   3A49               ; ----- forwards 
3A25 81   0D     - CMPA  #0D                ; uaaaa 
3A27 27   3E     - BEQ   3A67               ; ----- forwards 
3A29 81   03     - CMPA  #03                ; uaaaa 
3A2B 26   C5     - BNE   39F2               ; ----- backwards 
3A2D 0F   71     - CLR   71                 ; -0100 
3A2F 7E   8C1B   - JMP   8C1B               ; ----- ; DLOAD
3A32 B6   3AEA   - LDA   3AEA               ; -aa0- 
3A35 27   BB     - BEQ   39F2               ; ----- backwards 
3A37 F7   0155   - STB   0155               ; -aa0- 
3A3A 4A          - DECA                     ; -aaa- 
3A3B B7   3AEA   - STA   3AEA               ; -aa0- 
3A3E B1   3AEB   - CMPA  3AEB               ; uaaaa 
3A41 24   03     - BHS   3A46               ; ----- forwards unsigned
3A43 7A   3AEB   - DEC   3AEB               ; -aaa- 
3A46 16   FF7E   - LBRA  39C7               ; ----- backwards 
3A49 B6   3AEA   - LDA   3AEA               ; -aa0- 
3A4C 4C          - INCA                     ; -aaa- 
3A4D B1   3AFF   - CMPA  3AFF               ; uaaaa 
3A50 24   A0     - BHS   39F2               ; ----- backwards unsigned
3A52 F7   0156   - STB   0156               ; -aa0- 
3A55 B7   3AEA   - STA   3AEA               ; -aa0- 
3A58 B6   3AEB   - LDA   3AEB               ; -aa0- 
3A5B 8B   07     - ADDA  #07                ; aaaaa 
3A5D B1   3AEA   - CMPA  3AEA               ; uaaaa 
3A60 24   E4     - BHS   3A46               ; ----- backwards unsigned
3A62 7C   3AEB   - INC   3AEB               ; -aaa- 
3A65 20   DF     - BRA   3A46               ; ----- backwards 
3A67 F6   3AEA   - LDB   3AEA               ; -aa0- 
3A6A 5C          - INCB                     ; -aaa- 
3A6B 8D   70     - BSR   3ADD               ; ----- forwards 
3A6D 30   1B     - LEAX  -5,X               ; --a-- 
3A6F 34   10     - PSHS  X                  ; ----- 
3A71 8E   00EA   - LDX   #00EA              ; -aa0- 
3A74 CC   0200   - LDD   #0200              ; -aa0- 
3A77 ED   84     - STD   ,X                 ; -aa0- 
3A79 CC   0001   - LDD   #0001              ; -aa0- 
3A7C ED   02     - STD   2,X                ; -aa0- 
3A7E CC   01DA   - LDD   #01DA              ; -aa0- 
3A81 ED   04     - STD   4,X                ; -aa0- 
3A83 AD   9FC004 - JSR   [C004]             ; ----- 
3A87 6D   06     - TST   6,X                ; -aa0- 
3A89 26   4F     - BNE   3ADA               ; ----- forwards 
3A8B 10AE 04     - LDY   4,X                ; -aa0- 
3A8E 31   A815   - LEAY  21,Y               ; --a-- 
3A91 35   40     - PULS  U                  ; ccccc 
3A93 C6   05     - LDB   #05                ; -aa0- 
3A95 A6   C0     - LDA   ,U+                ; -aa0- 
3A97 A7   A0     - STA   ,Y+                ; -aa0- 
3A99 5A          - DECB                     ; -aaa- 
3A9A 26   F9     - BNE   3A95               ; ----- backwards 
3A9C 86   03     - LDA   #03                ; -aa0- 
3A9E A7   84     - STA   ,X                 ; -aa0- 
3AA0 AD   9FC004 - JSR   [C004]             ; ----- 
3AA4 6D   06     - TST   6,X                ; -aa0- 
3AA6 26   32     - BNE   3ADA               ; ----- forwards 
3AA8 7E   2602   - JMP   2602               ; ----- 
3AAB 86   57     - LDA   #57                ; -aa0- ; patch ECB to force
3AAD B7   95C9   - STA   95C9               ; -aa0- ; black-on-orange text
3AB0 86   10     - LDA   #10                ; -aa0- ; set black-on-orange
3AB2 B7   FF22   - STA   FF22               ; -aa0- ; text
3AB5 CC   3F00   - LDD   #3F00              ; -aa0- 
3AB8 FD   FFBC   - STD   FFBC               ; -aa0- ; set pallette register
3ABB BD   F652   - JSR   F652               ; ----- ; force 32-column screen
3ABE 7E   A928   - JMP   A928               ; ----- ; CLS
3AC1 AE   E4     - LDX   ,S                 ; -aa0- ; point to string
3AC3 A6   80     - LDA   ,X+                ; -aa0- ; get next character
3AC5 27   06     - BEQ   3ACD               ; ----- forwards ; NUL? exit
3AC7 AD   9FA002 - JSR   [A002]             ; ----- ; print character
3ACB 20   F6     - BRA   3AC3               ; ----- backwards ; continue
3ACD AF   E4     - STX   ,S                 ; -aa0- ; save return address
3ACF 39          - RTS                      ; ----- ; return
3AD0 A6   80     - LDA   ,X+                ; -aa0- ; get next character
3AD2 27   FB     - BEQ   3ACF               ; ----- backwards ; NUL? exit
3AD4 AD   9FA002 - JSR   [A002]             ; ----- ; print character
3AD8 20   F6     - BRA   3AD0               ; ----- backwards ;continue
3ADA 7E   D709   - JMP   D709               ; ----- ; signal IO error
3ADD 8E   3B00   - LDX   #3B00              ; -aa0- 
3AE0 5D          - TSTB                     ; -aa0- 
3AE1 27   EC     - BEQ   3ACF               ; ----- backwards 
3AE3 30   8820   - LEAX  32,X               ; --a-- 
3AE6 5A          - DECB                     ; -aaa- 
3AE7 26   FA     - BNE   3AE3               ; ----- backwards 
3AE9 39          - RTS                      ; ----- 

3AEA	fdb	0
3AEC	fdb	0
3AEE	fdb	0
3AF0	fdb	0
3AF2	fdb	0
3AF4	fdb	0
3AF6	fdb	0
3AF8	fdb	0
3AFA	fdb	0
3AFC	fdb	$0042
3AFE	fdb	$4200

  -spc

  


More information about the Coco mailing list