Mysterious Program in EPROM of Synertek SYM-1 Owned by Composer Richard Teitelbaum (like KIM-1)

Поділитися
Вставка
  • Опубліковано 26 вер 2024
  • Here's the disassembly of the program we found (I've tasked a student with reverse engineering it; $ACxx addresses are memory-mapped I/O):
    C000 A9 01 LDA #$01
    C002 8D 03 AC STA $AC03
    C005 A9 FF LDA #$FF
    C007 8D 02 AC STA $AC02
    C00A A9 01 LDA #$01
    C00C 8D 0C AC STA $AC0C
    C00F A9 00 LDA #$00
    C011 8D 03 A8 STA $A803
    C014 A9 FF LDA #$FF
    C016 8D 02 A8 STA $A802
    C019 A9 88 LDA #$88
    C01B 8D 0C A8 STA $A80C
    C01E A9 01 LDA #$01
    C020 85 31 STA $31
    C022 A9 00 LDA #$00
    C024 85 33 STA $33
    C026 85 2F STA $2F
    C028 85 39 STA $39
    C02A 85 3A STA $3A
    C02C A9 00 LDA #$00
    C02E 85 30 STA $30
    C030 A2 08 LDX #$08
    C032 AD 0D AC LC032 LDA $AC0D
    C035 4A LSR A
    C036 4A LSR A
    C037 90 F9 BCC LC032
    C039 AD 00 AC LDA $AC00
    C03C 49 FF EOR #$FF
    C03E 8D 00 AC STA $AC00
    C041 AD 01 AC LDA $AC01
    C044 29 80 AND #$80
    C046 85 34 STA $34
    C048 A9 00 LC048 LDA #$00
    C04A 06 39 ASL $39
    C04C 90 02 BCC LC050
    C04E 09 01 ORA #$01
    C050 06 3A LC050 ASL $3A
    C052 90 02 BCC LC056
    C054 09 02 ORA #$02
    C056 A8 LC056 TAY
    C057 AD 0D AC LC057 LDA $AC0D
    C05A 29 10 AND #$10
    C05C F0 F9 BEQ LC057
    C05E 98 TYA
    C05F 4D 00 AC EOR $AC00
    C062 8D 00 AC STA $AC00
    C065 06 30 ASL $30
    C067 06 2F ASL $2F
    C069 AD 01 AC LDA $AC01
    C06C 29 80 AND #$80
    C06E C5 34 CMP $34
    C070 F0 04 BEQ LC076
    C072 E6 30 INC $30
    C074 E6 2F INC $2F
    C076 A5 31 LC076 LDA $31
    C078 F0 11 BEQ LC08B
    C07A A5 2F LDA $2F
    C07C C9 FD CMP #$FD
    C07E D0 0B BNE LC08B
    C080 A9 00 LDA #$00
    C082 A2 00 LDX #$00
    C084 85 33 STA $33
    C086 85 31 STA $31
    C088 4C 8E C0 JMP LC08E
    C08B CA LC08B DEX
    C08C D0 A4 BNE LC032
    C08E E6 33 LC08E INC $33
    C090 A5 33 LDA $33
    C092 C9 10 CMP #$10
    C094 D0 0E BNE LC0A4
    C096 A5 30 LDA $30
    C098 C9 FD CMP #$FD
    C09A F0 04 BEQ LC0A0
    C09C A9 01 LDA #$01
    C09E 85 31 STA $31
    C0A0 A9 00 LC0A0 LDA #$00
    C0A2 85 33 STA $33
    C0A4 A5 30 LC0A4 LDA $30
    C0A6 8D 00 A8 STA $A800
    C0A9 A9 00 LDA #$00
    C0AB 85 30 STA $30
    C0AD A2 08 LDX #$08
    C0AF AD 0D AC LC0AF LDA $AC0D
    C0B2 4A LSR A
    C0B3 4A LSR A
    C0B4 90 F9 BCC LC0AF
    C0B6 AD 00 AC LDA $AC00
    C0B9 49 FF EOR #$FF
    C0BB 8D 00 AC STA $AC00
    C0BE AD 01 AC LDA $AC01
    C0C1 29 80 AND #$80
    C0C3 85 34 STA $34
    C0C5 AD 0D A8 LC0C5 LDA $A80D
    C0C8 29 02 AND #$02
    C0CA F0 F9 BEQ LC0C5
    C0CC AD 01 A8 LDA $A801
    C0CF 85 39 STA $39
    C0D1 AD 0D A8 LC0D1 LDA $A80D
    C0D4 29 02 AND #$02
    C0D6 F0 F9 BEQ LC0D1
    C0D8 AD 01 A8 LDA $A801
    C0DB 85 3A STA $3A
    C0DD 4C 48 C0 JMP LC048
    .END
    ;auto-generated symbols and labels
    LC032 $C032
    LC050 $C050
    LC056 $C056
    LC057 $C057
    LC076 $C076
    LC08B $C08B
    LC08E $C08E
    LC0A4 $C0A4
    LC0A0 $C0A0
    LC0AF $C0AF
    LC0C5 $C0C5
    LC0D1 $C0D1
    LC048 $C048
    Support this channel via a special purpose donation to the Georgia Tech Foundation (GTF210000920), earmarked for my work: • Support This Channel v...

КОМЕНТАРІ • 13

  • @Don-ev5ov
    @Don-ev5ov 5 місяців тому +3

    Very cool. If only Bach had had EPROMs, what a forensic trip that would be.

  • @Spongman
    @Spongman 5 місяців тому +3

    it's a serial-to-parallel converter that uses 2 ports on each of the 2 6522's U28 & U29. i tried sharing a link to some pseudocode for it here in the YT comment, but YT keeps deleting my comments for some reason.

    • @Spongman
      @Spongman 5 місяців тому +2

      at the risk of having some AI bot delete my comments again, you can look on a certain very popular source-code sharing site whose name has to do with parts of wheels connected by spokes. on a part of that site whose name rhymes with 'jist', and under my YT username, you can find a recent such 'jist' that has the same name as the eeprom above. i have been a member on here for god knows how long. you would have thought that YT would have worked out i'm not a spam-bot by now...

    • @Lantertronics
      @Lantertronics  5 місяців тому

      I found it, thanks!!! Wow, you are FAST!

  • @AnalogDude_
    @AnalogDude_ 5 місяців тому +1

    Having 32 bit Microchip Fubarino is a blast with 256kb storage and 64kb ram.
    : )

  • @brocktechnology
    @brocktechnology 5 місяців тому +1

    I tasked ChatGPT with reverse engineering it. Way dumber than your student but it's really fast! Near as it and I can tell this feels like glue logic to bring external devices together. I'll be waiting to hear what the smart people figured out.

  • @elmegil
    @elmegil 5 місяців тому

    Because I'm an inveterate geek...
    C000: A9 01 8D 03 AC A9 FF 8D
    C008: 02 AC A9 01 8D 0C AC A9
    C010: 00 8D 03 A8 A9 FF 8D 02
    C018: AB A9 88 8D 0C A8 A9 01
    C020: 85 31 A9 00 85 33 85 2F
    C028: 85 39 85 3A A9 00 85 30
    C030: A2 08 AD 0D AC 4A 4A 90
    C038: F9 AD 00 AC 49 FF 8D 00
    C040: AC AD 01 AC 29 80 85 34
    C048: A9 00 06 39 90 02 09 01
    C050: 06 3A 90 02 09 02 A8 AD
    C058: 0D AC 29 10 F0 F9 98 4D
    C060: 00 AC 08 00 AC 06 30 06
    C068: 2F AD 01 AC 29 80 C5 34
    C070: F0 04 E6 30 E6 2F A5 31
    C078: F0 11 A5 2F C9 FD D0 0B
    C080: A9 00 A2 00 85 33 85 31
    C088: 4C BE C0 CA D0 A4 E6 33
    C090: A5 33 C9 10 D0 0E A5 30
    C098: C9 FD F0 04 A9 01 85 31
    C0A0: A9 00 85 33 A5 30 8D 00
    C0A8: AB A9 00 85 30 A2 08 AD
    C0B0: 0D AC 4A 4A 90 F9 AD 00
    C0B8: AC 49 FF 8D 00 AC AD 01
    C0C0: AC 29 80 85 34 AD 0D AB
    C0C8: 29 02 F0 F9 AD 01 A8 85
    C0D0: 39 AD 0D AB 29 02 F0 F9
    C0D8: AD 01 A8 95 3A 4C 48 C0

    • @elmegil
      @elmegil 5 місяців тому

      which disassembles to
      * = $C000
      C000 A9 01 LDA #$01
      C002 8D 03 AC STA $AC03
      C005 A9 FF LDA #$FF
      C007 8D 02 AC STA $AC02
      C00A A9 01 LDA #$01
      C00C 8D 0C AC STA $AC0C
      C00F A9 00 LDA #$00
      C011 8D 03 A8 STA $A803
      C014 A9 FF LDA #$FF
      C016 8D 02 AB STA $AB02
      C019 A9 88 LDA #$88
      C01B 8D 0C A8 STA $A80C
      C01E A9 01 LDA #$01
      C020 85 31 STA $31
      C022 A9 00 LDA #$00
      C024 85 33 STA $33
      C026 85 2F STA $2F
      C028 85 39 STA $39
      C02A 85 3A STA $3A
      C02C A9 00 LDA #$00
      C02E 85 30 STA $30
      C030 A2 08 LDX #$08
      C032 AD 0D AC LC032 LDA $AC0D
      C035 4A LSR A
      C036 4A LSR A
      C037 90 F9 BCC LC032
      C039 AD 00 AC LDA $AC00
      C03C 49 FF EOR #$FF
      C03E 8D 00 AC STA $AC00
      C041 AD 01 AC LDA $AC01
      C044 29 80 AND #$80
      C046 85 34 STA $34
      C048 A9 00 LC048 LDA #$00
      C04A 06 39 ASL $39
      C04C 90 02 BCC LC050
      C04E 09 01 ORA #$01
      C050 06 3A LC050 ASL $3A
      C052 90 02 BCC LC056
      C054 09 02 ORA #$02
      C056 A8 LC056 TAY
      C057 AD 0D AC LC057 LDA $AC0D
      C05A 29 10 AND #$10
      C05C F0 F9 BEQ LC057
      C05E 98 TYA
      C05F 4D 00 AC EOR $AC00
      C062 08 PHP
      C063 00 BRK
      C064 AC 06 30 LDY $3006
      C067 06 2F ASL $2F
      C069 AD 01 AC LDA $AC01
      C06C 29 80 AND #$80
      C06E C5 34 CMP $34
      C070 F0 04 BEQ LC076
      C072 E6 30 INC $30
      C074 E6 2F INC $2F
      C076 A5 31 LC076 LDA $31
      C078 F0 11 BEQ LC08B
      C07A A5 2F LDA $2F
      C07C C9 FD CMP #$FD
      C07E D0 0B BNE LC08B
      C080 A9 00 LDA #$00
      C082 A2 00 LDX #$00
      C084 85 33 STA $33
      C086 85 31 STA $31
      C088 4C BE C0 JMP LC0BE
      C08B CA LC08B DEX
      C08C D0 A4 BNE LC032
      C08E E6 33 INC $33
      C090 A5 33 LDA $33
      C092 C9 10 CMP #$10
      C094 D0 0E BNE LC0A4
      C096 A5 30 LDA $30
      C098 C9 FD CMP #$FD
      C09A F0 04 BEQ LC0A0
      C09C A9 01 LDA #$01
      C09E 85 31 STA $31
      C0A0 A9 00 LC0A0 LDA #$00
      C0A2 85 33 STA $33
      C0A4 A5 30 LC0A4 LDA $30
      C0A6 8D 00 AB STA $AB00
      C0A9 A9 00 LDA #$00
      C0AB 85 30 STA $30
      C0AD A2 08 LDX #$08
      C0AF AD 0D AC LC0AF LDA $AC0D
      C0B2 4A LSR A
      C0B3 4A LSR A
      C0B4 90 F9 BCC LC0AF
      C0B6 AD 00 AC LDA $AC00
      C0B9 49 FF EOR #$FF
      C0BB 8D 00 AC STA $AC00
      C0BE AD 01 AC LC0BE LDA $AC01
      C0C1 29 80 AND #$80
      C0C3 85 34 STA $34
      C0C5 AD 0D AB LC0C5 LDA $AB0D
      C0C8 29 02 AND #$02
      C0CA F0 F9 BEQ LC0C5
      C0CC AD 01 A8 LDA $A801
      C0CF 85 39 STA $39
      C0D1 AD 0D AB LC0D1 LDA $AB0D
      C0D4 29 02 AND #$02
      C0D6 F0 F9 BEQ LC0D1
      C0D8 AD 01 A8 LDA $A801
      C0DB 95 3A STA $3A,X
      C0DD 4C 48 C0 JMP LC048
      .END
      ;auto-generated symbols and labels
      LC032 $C032
      LC050 $C050
      LC056 $C056
      LC057 $C057
      LC076 $C076
      LC08B $C08B
      LC0BE $C0BE
      LC0A4 $C0A4
      LC0A0 $C0A0
      LC0AF $C0AF
      LC0C5 $C0C5
      LC0D1 $C0D1
      LC048 $C048

    • @elmegil
      @elmegil 5 місяців тому

      Except I got some AB and A8's crossed at least early on.

    • @Spongman
      @Spongman 5 місяців тому +1

      check out the video description ;-)

    • @elmegil
      @elmegil 5 місяців тому

      @@Spongman LOL

    • @elmegil
      @elmegil 5 місяців тому

      Maybe this is something to add? 🙂
      A800 memory mapping are control registers for VIA (6522 Versatile Interface Adapter) #2 AC00 memory mappings are for VIA #3. The one byte addresses are down in the zero page but.... I haven't yet found good explanation of them (e.g. $30) except that $FF and $FE are supposed to be reserved for the monitor program (which clearly this doesn't seem to be concerned about 😀)
      There are a few variations of the manual, but the best I found was SYM-1_Reference_Manual_198101.pdf (had to do save as and override Chrome's basic insistence that anything with old certs was baaaaad).