[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