Comp24
My computer for year 2024
Blog 2024
2024.01.03 16:04:00 - 2024.01.03 16:27:08 end blog Gilhad

1   2024.02.10 Robodoupě

  • Na chlubírnu jsem přinesl ukázku jak Arduino UNO přez kompozitní signál a RCA ovládá monitor - postavil jsem to podle https://www.youtube.com/watch?v=Th18tLP86WQ jenom jsem tam dal jeden odpor menší (500 Ω místo 1 kΩ na TX), protože to na mojem monitorku svítilo místy špatně. Snížením odporu na polovinu se jas zvedl a všechny body byly dost vysvícené :)

2   2024.02.06 Part 1+2 again

Příprava

su -
uname -a
        Linux cobra-mk3 6.1.19-gentoo #1 SMP PREEMPT_DYNAMIC Sun Aug 27 01:29:22 CEST 2023 x86_64 AMD Ryzen 9 3900X 12-Core Processor AuthenticAMD GNU/Linux

echo "dev-embedded/openocd ~amd64" >>/etc/portage/package.accept_keywords/openocd
gemerge -avq openocd
        * Last emerge --sync was Sun Mar 19 05:40:02 2023.
        [ebuild  N    ] acct-group/plugdev-0-r1
        [ebuild  N    ] dev-lang/jimtcl-0.81  USE="-doc -static-libs"
        [ebuild  N    ] dev-embedded/libjaylink-0.3.1
        [ebuild  N    ] dev-embedded/libftdi-1.5-r4  USE="-cxx -doc -examples -python -test -tools" PYTHON_SINGLE_TARGET="python3_10 -python3_9"
        [ebuild  N    ] dev-embedded/openocd-0.12.0  USE="cmsis-dap ftdi jlink usb -capstone -dummy -parport -verbose-io"

        Would you like to merge these packages? [Yes/No] y
        ...
useradd -m -g users -G plugdev SomeUserName
passwd SomeUserName
cat >/etc/udev/rules.d/99-usbBlaster.rules
        # Intel FPGA Download Cable
        SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="0666", SYMLINK+="UsbBlaster"
        SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6002", MODE="0666", SYMLINK+="UsbBlaster"
        SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6003", MODE="0666", SYMLINK+="UsbBlaster"

        # Intel FPGA Download Cable II
        SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6010", MODE="0666", SYMLINK+="UsbBlaster"
        SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6810", MODE="0666", SYMLINK+="UsbBlaster"
exit

Provedení

su - SomeUserName
mkdir ~/Downloads
cd ~/Downloads/
# obtain or create pld example XorTest.pld
# now the programs ...
# **Part 1**
WINEARCH=win32 WINEPREFIX=~/.wine wine wineboot
WINEARCH=win32 WINEPREFIX=~/.wine winetricks mfc42
# firefox https://www.microchip.com/en-us/search?searchQuery=awincupl&category=ALL&fq=start%3D0%26rows%3D10 select avincupl, download it, or wget the link
wget https://ww1.microchip.com/downloads/en/DeviceDoc/awincupl.exe.zip
unzip -x awincupl.exe.zip
WINEARCH=win32 WINEPREFIX=~/.wine wine ~/Downloads/awincupl.exe
# firefox https://sourceforge.net/projects/cupl-ide/ click download, or wget it (linux version and give it sane name)
wget https://sourceforge.net/projects/cupl-ide/files/3.x.x/latest/CUPLIDE-linux.gtk.x86_64.tar.gz/download -O CUPLIDE-linux.gtk.x86_64.tar.gz
tar -xzf CUPLIDE-linux.gtk.x86_64.tar.gz
~/Downloads/CUPLIDE
# File -> Open File ... -> select Downloads/XorTest.pld, Ctrl-A (select all), Ctrl-C (copy it), Ctrl-W (close it)
# File -> New -> Cupl Project (give it name), Ctrl-A (select all), Ctrl-V (replace it with the Downloads/XorTest.pld content), Ctrl-S (save it), Build -> JEDEC Generator
# File -> Exit, now we have JEDEC file in ~/CUPLworkspace/XorTest/output/XorTest.jed and ASCII chip picture in ~/CUPLworkspace/XorTest/output/XorTest.fit
# firefox https://www.microchip.com/en-us/search?searchQuery=ProChip&category=ALL&fq=start%3D0%26rows%3D10 select Prochip5, download it, or wget the link
# **Part 2**
wget https://ww1.microchip.com/downloads/aemDocuments/documents/OTH/ProductDocuments/SoftwareLibraries/Firmware/ProChip5.zip
unzip -x ProChip5.zip
WINEARCH=win32 WINEPREFIX=~/.wine wine ~/Downloads/ProChip5_setup.exe
# install all, extract FTD CDM Drivers
cp ~/.wine/drive_c/users/*/Temp/FTDI-Driver/i386/ftd2xx.{lib,dll} ~/.wine/drive_c/ATMEL_PLS_Tools/ATMISP/
WINEARCH=win32 WINEPREFIX=~/.wine wine ~/.wine/drive_c/ATMEL_PLS_Tools/ATMISP/ATMISP.exe
# Edit -> Add device , select ATF1504AS, program/verify, file ~/CUPLworkspace/XorTest/output/XorTest.jed, OK, check Write SVF file, select the SVF file. Run, Exit and we have ~/CUPLworkspace/XorTest/output/XorTest.svf
# **Part 3** = modul
# **Part 4** - Blaster V1 process
ls -al /usr/share/openocd/scripts/interface/altera-usb-blaster.cfg
        -rw-r--r-- 1 root root 298 2024-02-06 22:45 /usr/share/openocd/scripts/interface/altera-usb-blaster.cfg
ls -al /dev/UsbBlaster
        lrwxrwxrwx 1 root root 15 2024-02-06 22:59 /dev/UsbBlaster -> bus/usb/005/058
openocd -f /usr/share/openocd/scripts/interface/altera-usb-blaster.cfg -c "adapter speed 400" -c "jtag newtap ATF1504AS tap -irlen 3 -expected-id 0x0150403f" -c init -c "sleep 200" -c shutdown

Part 3 = modul

Part 4 ...

  • nainstalováno mám, UsbBlaster se hlásí, dokonce i něco vidí, ale ne to, co by měl. Myslím si, že po lince leze nějaký bordel, zkusím tam dát ty kondíky

gemerge = emerge --jobs=25 --load-average=25 "$@"

Programování v CUPL https://class.ece.uw.edu/475/peckol/doc/cupl.html

cupl přez skript https://github.com/adrienkohlbecker/cupl.bat

3   2024.02.05 ATF1504AS - modul a part 2

Tak jsem doletoval poslední drátky v testovacím modul pro ATF1504AS a všechno několikrát proměřil a po připojení na napájení to asi neshořelo. Teď to ještě naprogramovat a otestovat a pak se uvidí

  • mám JEDEC, nejde mi nainstalovat ATMISP, ... zkusím stáhnout z mikrochipu něco nového ... vyhledám ProChip, najde to ProChip5
rm -r -f ~/.wine
WINEARCH=win32 WINEPREFIX=~/.wine wine wineboot
WINEARCH=win32 WINEPREFIX=~/.wine winetricks mfc42
WINEARCH=win32 WINEPREFIX=~/.wine winetricks
WINEARCH=win32 WINEPREFIX=~/.wine wine ~/Downloads/ProChip5_setup.exe
WINEARCH=win32 WINEPREFIX=~/.wine wine ~/.wine/drive_c/ATMEL_PLS_Tools/ATMISP/ATMISP.exe
        0084:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
        0084:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
        0084:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
        0084:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
        0024:err:module:import_dll Library FTD2XX.dll (which is needed by L"C:\\ATMEL_PLS_Tools\\ATMISP\\ATMISP.exe") not found
        0024:err:module:LdrInitializeThunk Importing dlls for L"C:\\ATMEL_PLS_Tools\\ATMISP\\ATMISP.exe" failed, status c0000135
cp ~/.wine/drive_c/users/*/Temp/FTDI-Driver/i386/ftd2xx.{lib,dll} ~/.wine/drive_c/ATMEL_PLS_Tools/ATMISP/
WINEARCH=win32 WINEPREFIX=~/.wine wine ~/.wine/drive_c/ATMEL_PLS_Tools/ATMISP/ATMISP.exe

4   2024.02.03 part 1

  • Zkusil jsem stáhnout assembler HXA a funguje, jen v pythonu je potřeba nahradit NOFLAG za 0 a převést všechny soubory na lowercase jména (nebo mu to opravit)
    • dala by se tam přidělat 6309, asi, nějak
    • ale jako doporučený assembler je tam i cc65 který má C a assembler
  • Dal jsem dohromady testovací modul pro ATF1504AS, ale nemám ho zatím jak programovat. Postup podle http://forum.6502.org/viewtopic.php?f=10&t=7920 se zasekne už v prvním kroku, možná protože mám wine 8.0, nikoli 8.0.2 (asi to spíš viselo na těch winetricks a WINEARCH)
    • zkusím emergnout wine 8.1, jestli to pomůže

    • různě to padá a nejede

    • fix podle náhodného webu pod novým uživatelem:

    • PLD -> JEDEC
      rm -r -f ~/.wine
      WINEARCH=win32 WINEPREFIX=~/.wine wine wineboot
      WINEARCH=win32 WINEPREFIX=~/.wine winetricks mfc40
      WINEARCH=win32 WINEPREFIX=~/.wine winetricks
      WINEARCH=win32 WINEPREFIX=~/.wine wine ~/Downloads/awincupl.exe
      WINEARCH=win32 WINEPREFIX=~/.wine wine ~/.wine/drive_c/Wincupl/WinCupl/Wincupl.exe
      
    • to už jede

    • tady je cuplIDE, ale je to asi jenom frontend (a vše musí být v "projektech")
      • ano, ale průběžně kontroluje syntaxi a má o fous lepší chybové hlášky než ten Wincupl - takže stojí za to ho používat
      • a udělal jsem si modul pro XOR 4 input-only pinů (87-90 = xIO61..xIO64) zpropagovaný na všechny ostatní a střídavě negovaný, pro testy...
    • po určitých úpravách (přeházení pinů) mi jede i https://mansfield-devine.com/speculatrix/2022/06/a-newbies-introduction-to-cupl-and-cplds/ v 1504 se 100 pin pouzdrem

  • nicméně mám způsob, jak získat JEDEC, můžu se snažit o další krok (http://forum.6502.org/viewtopic.php?f=10&t=7920 Part 2)

5   2024.01.28 ATF1504AS

  • objednal jsem si u TME 2x CLPD ATF1504AS-10 TQFP100 doufám, že to zvládnu naprogramovat a připájet. (USB BLASTER, openOCD)
    • CPLD, mělo by to zvládnout veškerou glue logiku včetně D latchů a 3state, 2way, 64 I/O (+4 JTAG) na ploše 16x16 mm (0.5mm mezi středy pinů)

6   2024.01.27 Test HD6309

Z aliexpresu přišly tři 8-bitové procesory HD6309P (a opravdu to jsou 6309, nikoli jen 6809 a P, nikoli PE a ačkoli jsou určené "až do 3MHz", tak se rozeběhnou i na 4MHz - viz obrázek z testu) a hrst krystalů 14.7456 MHz (se kterými to běží jen o něco pomaleji než s 16MHz, ale zato na dobře dělitelné frekvenci a tak to má být)

To na obrázku je "NOP generátor", zapojení, kde bez ohledu na adresu má procesor na datových vstupech instrukci No OPeration, takže vesele cykluje i bez spousty přídavných obvodů. Piezo-reproduktorek je přez zesilovaš připojený na adresovou sběrnici, takže je slyšet, jak se tam ty adresy mění (efektivně jde o děličku kmitočtu toho krystalu, kde ho procesor dělí 4, adresy mají 16 bitů takže dělí 65536x a instrukce NOP zabere 2 takty, takže dělí 2x a tím se ty MHz převedou do slyšitelného pásma. Odposloucháváním různých adres se přelaďuje o oktávy. )

DSC_8000.s.jpg DSC_8001.s.jpg DSC_8002.s.jpg

7   2024.01.25 Kicad

  • Začal jsem kreslit schémata v KiCadu a nějak se to rozrostlo
    • Copy-Paste mezi projekty mi nefunguje uspokojivě pro boardy, takže zatím jen umím pastnout schema k existujícímu projektu, syncnout PCB a součástky natahat ručně
    • Template se z projektu udělá adresářem meta se souborem info.html a případnou ikonou 64x64 icon.png
      • nový projekt z templatu si přejmenuje soubory na ten nový projekt
    • Zatím tam mám HD6309 + 2x 32K RAM + Glue logic (4x GAL) + Arduino Mega + 32K RAM na sdílení a pracuju na card logic pro předávání řízení a nějak se to vejde (součástky polochaoticky, autorouter nějak naroutuje)
      • ale musím si rozmyslet komunikační protokol, jak si tu RAM předávat
      • Arduino Mega by taky mělo emulovat systémovou ROM předvyplněním RAM
      • po restartu si musí umět vynutit sběrnici
      • card logic - R/W registr pro namapovanou/požadovanou stránku, pořešit chci/nechci
  • objednávám z alíka 10xmicroSD(TF) reader s LV125A chipem (4x level shift) (problém s odstíněním non=SPI chování viz Expanduino)

8   2024.01.22

9   2024.01.20 I2C + SPI konektor

.      /........................./
      //--------------/|......../
     //Vcc  Clk (cut)/ |......./
    /┌────┬────┬────┐  |....../
   /.│  2 │  4 │ (X)│  /...../
  /..├────┼────┼────┤ /...../
 /...│  1 │  3 │  5 │/...../
═════╧════╧════╧════╧══════(board edge)
      Data  Gnd  IRQ\

10   2024.01.18 Krystaly 14.7456 MHz a 16 MHz, RAM místo ROM, $8000 .. 8K bank?

  • generování hodin plus odkazy na variabilní hodiny (ohulíme to, dokud to snese a pak trochu uberem)
  • Pokud bych předvyplnil RAM pomocí ATMEGA, tak nepotřebuju EEPROM a tudíz ji nepotřebuju ani umět vypalovat.
    • eventuálně můžu mít EEPROM třeba sériovou pro ATMEGA a zapisovat ji taky odtamtud
    • a většinu věcí tahat z SD karty
  • Možná by nebyla špatná "půjčovna paměti" pro 8K nad $8000, kde by se na nějaké I/O adrese zažádalo o paměť s daným číslem a odpověď by byla buď "je tam", nebo "teď nelze", nebo "není a nebude"
    • každý požadavek by uvolnil aktuální paměť a buď tam namapoval novou, nebo tam namapoval read(FF), write(ignored) emulaci
    • paměti by pak byly
      • obecné RAM moduly (rozšíření paměti)
      • komunikační RAM (buffer, který si předává s ATMEGA)
        • tedy i třeba paměťově mapované soubory
      • ROM bloky (knihovny, ovladače, ....)
      • pseudo ROM bloky (RAM načtená z SD souboru)
  • otestoval jsem krystaly 14.7456 MHz a 16 MHz na NOP generátoru a 6309 s nima bez problému běhá na breadboardu
  • otestoval jsem taky issue-3 zapojení oscilátoru (74HC04 + 14.7456 MHz krystal + 1 MΩ paralelně a dva kondíky k zemi) a taky to chodí
  • I/O ICs 6522 VIA + 6551 ACIA - spousta detailů

11   2024.01.16 Ruby comp, BBC Micro out, shared RAM w. ATMEGA

  • 2024.01.16 Xtal 14.7456 Mhz - pro rychlejší 6309 a ACIA (nebo pro ACIA s děličkou)
  • 2024.01.16 74HC74 - D-hradlo s resetem pro Edge RS
  • Čtu o Gordons Projects Ruby 6502/816
    • retropočítač založený na 65C02 schopný běžet na 14/16MHz
    • kromě jiného řeší pomalou EEPROM tím, že použije pouze RAM a pomocí ATMEGA1284p načte obsah ROM do RAM
    • grafiku a výstup obecně řeší přez Serial/USB na PC, kam posílá řídící znaky ve stylu BBC Micro
    • uvažoval i o ATMEGA -> composit výstupu, ale prý to ATMEGA zatíží na asi 70% a už to brzdí systém - možná bych mohl dát jednu ATMEGA jen na video a druhou na ROM a Expanduino-like device?
    • používá kus RAM jako sdílený, uvědomí ATMEGA, ta vypne 65C02 jak běh, tak sběrnici a data si přečte z RAM a odpověď tam zapíše
      • holds 6502 in reset and pulls the BE pin low to cause the 6502 to tri-state it’s buses
      • instruction WAI which causes the 6502 to halt, pull Rdy low then wait for an interrupt. The ATmega meanwhile has been reading the Rdy pin and when it sees it going low, it switches the bus RAM control over, reads a command and data out of the shared memory page and does whatever it’s commanded to do. For example, it might be asked to load block 5 of the bootloader, so it copies that block from it’s own internal flash to the shared memory then switches the bus control back to the 6502 and sends an interrupt to the 6502 which causes it to wake from the WAI sleep and carry on.
      • 6309 má signál HALT, který funguje podobně, dokončí instrukci a uvolní sběrnice na neomezeně dlouho
        • uvolnění je signalizováno pomocí BA=BS=1
        • taky jde použít instrukce SYNC
        • postup by asi byl:
          • 6309 nacpe požadavky do RAM
          • 6309 udělá SYNC
          • ATMEGA detekuje BA=BS=1 a nastaví HALT
          • ATMEGA si aktivuje A[0..15] a D[0..7] a přečte si RAM, shodí v ní příznaky příkazů (a případně zapíše výsledek a nastaví jeho příznaky)
          • ATMEGA deaktivuje A[0..15] a D[0..7]
          • ATMEGA shodí HALT
          • ATMEGA vybudí nějaký interrupt
          • 6309 se probere a začne něco dělat
        • alternativně 6309 jen nastaví někde nějaký RS klopák, že něco chce
          • ATMEGA si všimne RS klopáku a začne jednat
          • ATMEGA si dokončí nějakou pomalou operaci (třeba čtení SD) a začne jednat
        • ATMEGA nastaví HALT
        • ATMEGA čeká, dokud nedetekuje BA=BS=1
          • ATMEGA si aktivuje A[0..15] a D[0..7] a přečte si RAM, shodí v ní příznaky příkazů (a případně zapíše výsledek a nastaví jeho příznaky)
          • ATMEGA deaktivuje A[0..15] a D[0..7]
          • ATMEGA shodí HALT
          • 6309 pokračuje v práci a možná si časem všimne příznaků nebo nějakého vtipného RS klopáku
      • ATMEGA by potřebovala "zbytečných" 16+8+HALT+BA+(ovládání + čtení klopáku)x2(pro vstup+výstup) = 30 pinů volných (např. Arduino Mega)

12   2024.01.14 Sběrnice, desky, ...

  • Úvahy o sběrnici, kde mají být adresy, kde data, kde I/O a kde další signály
    • I/O vyhodnotit HW na CPU desce jako prioritní (a nepřemapovávané)
    • (1-2) horní ROM mít s defaultem pro ROM (nebo selektovatelně default/poslední)
    • možná použít pro pamatování EEPROM místo RAM 8x8?
      • spíš ne, protože stejně první starost systému by měla být namapovat si někam RAM pro zásobník a buffery pro I/O a když už to dělá, tak si může snadno namapovat i ten zbytek správně, a ne jen odhadem
      • potřebuju mít BOOT ROM namapovanou by default, jakmile se jednou přemapuje, tak je to až do restartu jedno
        • takže nejspíš A/B -> Y a RS s defaultem přez pull-up/down
    • všechny DIP paměti mají data převážně vpravo dole (a trochu vlevo dole), adresy vlevo nahoře (a trochu chaoticky vpravo nahoře) - ale u RAM můžu mezi sebou libovolně přeházet linky, u EPROM sice taky, ale pak se to zkomplikuje všude jinde, takže raději ne.
    • UT62.256 32Kx8 SRAM má data vpravo uprostřed, adresy převážně chaoticky vlevo (ale, jak bylo řečeno, můžu to přečíslovat)
    • všechny PIA/VIA/ACIA mají data vpravo uprostřed, D0 nahoře (na tom záleží) a výstupy vlevo
    • 6309 má data vpravo uprostřed, D0 nahoře a adresy převážně vlevo (ale ty se budou překládat)
    • možná dát sběrnici teda vpravo, data doprostřed, adresy nahoru a I/O dolů?
  • na sběrnici půjdou data automaticky přez průchodku 74HC245, jak u desek, tak u CPU
  • na desce bude PAL pro vnitřní dekódování adres
    • adresa 0000 read bude průchodka 74HC245 s nasvitchovanou adresou
  • I/O desky:
    • 0000 read bude průchodka 74HC245 s nasvitchovanou adresou
    • 0001 read bude výstup 8 RS
    • 0000 write reset bits pro 8 RS
    • 0001 write set bits pro 8 RS
    • 001x R/W ACIA
    • 01xx R/W PIA
  • Expanduino:
    • 0000 read bude průchodka 74HC245 s nasvitchovanou adresou
    • 01xx R/W Expanduino 1+3 kanály
  • CPU:
    • 6309 CPU (+6309 E variant?)
    • 16MHz krystal
    • 7.3728 MHz krystal pro ACIA system wide - asi by šlo zapojit podle kilo issue3 schema pro 6309E
    • glue logika pro I/O[0..7]
  • Memory card:
    • simple menory:
      • A[0..15]+E+R/W -> 74HC00 + RAM + ROM podle OMEN kilo

13   2024.01.13 openScad

  • Z Alíka objednávám 10* UT62256C-70LL - 32kB SRAM (á 10.35Kč) - nebudu pracně drátovat sloty 8x8, prsknu tam 32.000x8 a půjde to taky a levně :)
    • Paměť rozhodím po 8kB, jedna 32kB RAM bude dole, druhá nad ní pro zrcadlení ROM a pod nepoužitýma devicema - tam si systém může cpát buffery do 7.x kB a přepínání ROM nějak vymyslím a druhý slot se po částech bude mapovat do 8000+8kB
  • Z Alíka objednávám 40 M3 16mm spacerů - 10 pater hned tak nedám :)

Nainstaloval jsem openScad (Dokumentace) a upravil si podstavu pro Comp24

Click to expand/collapse code
$fn=200;
include <defaults.scad>;
use <M3.scad>;
use <Nut.scad>;

card=[100+1,100+1,2];
holes=[90,90];
base=[100+4,100+4,6];
wing=60;
radius=2;

difference() {

        minkowski(){
                cube(base,center=true);
                cylinder(r=radius,h=1);
                }

        for(i=[-1,1]) for(j=[-1,1]) {
                translate([i*holes.x/2, j*holes.y/2, -0.5])
                        NutM3( h=2.5, inset=1);
                translate([i*holes.x/2, j*holes.y/2, 10])
                        BoltM3(l=15, inset=1);
        }

        translate([0,0,3.1]) {
                cube(card, center=true);
                cube([wing,base.y+2*radius+1,2],center=true);
                cube([base.x+2*radius+1,wing,2],center=true);
        }

        translate([-30, -base.y/2-1.5,-2.5])
                rotate(90,[1,0,0])
                linear_extrude(3)
                text("Comp24 - Gilhad 2024",size=4, font = "Liberation Sans:style=Bold Italic");

        translate([-base.x/2-1.5,28,-2.5])
                rotate(90,[1,0,0])
                rotate(90,[0,-1,0])
                linear_extrude(3)
        text("v.0.0.1 date 2024.01.12",size=4, font = "Liberation Sans:style=Bold Italic");
        }
Click to expand/collapse rotacniZuby
module rotacniZuby(n=24,d1=10,d2=15,h=2){
difference(){}
color("red")
    rotate_extrude()
        translate([d1, 0])
            square([d2-d1,h]);
color("blue")
    translate([0,0,0])
    for(i=[0:n-1])
        rotate([0,0,i*360/n])
            translate([d1,0,0])
                rotate([45,0,0])
                    cube([d2-d1,h,h]);
{}
}
 rotacniZuby();

14   2024.01.10 Akvizice

  • Z Alíka dorazily zahnuté 40 pin lišty (pro I/O na hranách desek)
  • Z Alíka dorazily MC68B50 - ACIA - pro sériovou komunikaci - otestoval jsem je a asi chodí :)
  • 2024.01.11 Sběrnice - 2x32 pin header, dlouhé nohy - Výška patra 17mm, z toho 1.5mm tloušťka desky - potřebuju M3 16mm spacery
  • Čtu https://wilsonminesco.com/ a jiné věci okolo http://6502.org/, původně kvůli stránkování, ale je tu toho zajímavého výrazně víc
    • 8-bit Identity comparators - snadné dekódování adresy
    • 2->4 výběr adres, různá logika
    • Priority Encoder
    • Použití paralelních portů 6522 jako výběr adresy s defaultem po resetu
    • víc zemí a napětí na konektoru, rozházené tak, aby to ostatní signály "neměly daleko"
    • víc zemních cest na desce spíš než tlusté čáry (0.2 mm stačí na 0.5A)
    • Open colector AND může mít dlouhý nárůst napětí - čistit interrupty na začátku ISR, aby to stihly a neudeřily ještě jednou navíc (než se dostatečně nabijou parazitní kapacity)
  • video "karta" http://forum.6502.org/viewtopic.php?f=12&t=4482&start=45

15   2024.01.03 Nový Blog

  • Objednal jsem z alíka integráče pro Comp24 - můj nový návrh (ve stádiu zrodu) pro nástupce OMEN kilo
  • založil jsem si tady blog, abych věci o Comp24 měl u něj
  • tady píše nějaký Dan, jak UNO+Serial RAM = video output BW, 256 x 192 resolution, 32 x 24 characters + PS/2 a tady má zdrojáky
    • Z Alíka objednávám 4x 23LC1024-I/SN Serial RAM

16   2024.01.02 Nový Rok

  • Zkouším udělat návrh počítače Comp24 - modeluju v KiCadu obecnou desku a učím se, jak s ním pracovat, zejména Bus-y

17   Postřehy (jak to dělají jinde, co mě napadlo)

18   Parts

Click to expand/collapse
  • 2024.01.16 Xtal 14.7456 Mhz - pro rychlejší 6309 a ACIA (nebo pro ACIA s děličkou)
  • 2024.01.16 74HC74 - D-hradlo s resetem pro Edge RS
  • 2024.01.11 Sběrnice - 2x32 pin header, dlouhé nohy
  • 2024.01.10 MC68B50 - ACIA - pro sériovou komunikaci
  • 2024.01.10 zahnuté 40 pin lišty (pro I/O na hranách desek)
  • 2024.01.09 MC68B21CP - PIA - paralelní port
  • 2024.01.24 UT62256C - 32K x8 SRAM SMD asi TSOP28
  • 2024.01.28 objednal jsem si u TME 2x CLPD ATF1504AS-10 TQFP100 doufám, že to zvládnu naprogramovat a připájet. (USB BLASTER, openOCD)
    • CPLD, mělo by to zvládnout veškerou glue logiku včetně D latchů a 3state, 2way, 64 I/O (+4 JTAG) na ploše 16x16 mm (0.5mm mezi středy pinů)

19   ToDo

Click to expand/collapse
  • Comp24
    • KiCad
      • jdou dělat sub-busy?
      • Navrhnout Basic board
        • 10x10 cm
        • 9x9cm díry na M3 (Totem compatible)
        • 2x32 pin bus + rezerva pro cik-cak
        • data průchodka 74HC245 SMD (D0..7, R/W=dir, E&IOx=enable (?PAL))
        • lišta pro výběr karty IO0..7
        • PAL pro IOx, E, R, W, A0..3
    • Rozhodnout mapu adres
      • 32kB RAM, 8kB external, 8kB I/O (posledních 8*16 adres), 16kB ROM (paged RAM?)
      • PIA MC68B21 po resetu ma A-port pull-up a B-port HighRes, to jde využít pro nastavení defaultního stránkování (aspoň ROM a ta už nastaví všechny ostatní stránky - otázka, zvládnu 2x8kB ROM namapovat, nebo potřebuju reset oštřit v horní části s vektory?)
    • bezzákmitová tlačítka a přepínače
      • ROM bank
      • ROM R/W
      • RAM/ROM at RESET
    • ROM/RAM karta? (asi ano, aby se dalo bankovat a použít víc karet)
  • Součástky otestovat
    • PIA MC68B21
    • ACIA MC68B50
    • OK 74 D + 02 NOR = RS Edge
    • CP1205 RST/CTR ?
  • Shield 02?
    • Testování chipů a desek s 0/1/Z logikou bez odporů, s LEDkama
  • Univerzální Monitor - Arduino
    • Program pro Mega / Totem?
    • intuitivní nastavování hodnot
    • krokování (změnit piny v podstatě naráz)
    • makra a konstanty/proměnné
    • Programovací jazyk
  • Emulátor 6309
    • v Linuxu
      • TurboVision ?
    • Arduino
      • Trik s SPI RAM
    • odchytávání adres karet a jasná detekce přístupu
    • počítání času (a jeho zobrazování)
    • vnější fronty událostí (115200 b/s ACIA, fronta vstupu, RTS/CTR)
  • Debugger 6309
    • disassm
    • asm
    • IRQ

20   Done

Click to expand/collapse
  • Součástky otestovat
    • OK 74 D + 02 NOR = RS Edge
  • test
  • druhy
    • treti