.. vim: noexpandtab fileencoding=utf-8 nomodified wrap textwidth=270 foldmethod=marker foldmarker={{{,}}} foldcolumn=4 ruler showcmd lcs=tab\:|- list tabstop=8 noexpandtab nosmarttab softtabstop=0 shiftwidth=0 :date: 2024.01.03 16:04:00 :modified: 2024.01.03 16:27:08 :tags: blog :authors: Gilhad :summary: Obecný blog 2024 :title: Blog 2024 :nice_title: |logo| %title% |logo| :style: blog .. // Comp24 blog %HEADER% .. sidebar:: Blogy :class: right-sidebar * `aktuální `__ * `2024 `__ * `únor `__ * `leden `__ .. _m-2024-1: .. {{{ 2024.02.10 Robodoupě 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 ``__ jenom jsem tam dal jeden odpor menší (500 |Ohm| místo 1 |kOhm| 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é :) .. }}} .. {{{ 2024.02.06 Part 1+2 again 2024.02.06 Part 1+2 again ================================================================================ Příprava .. code:: 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í .. code:: 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 ``__ cupl přez skript ``__ .. }}} .. {{{ 2024.02.05 ATF1504AS - modul a part 2 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 `__ .. code:: 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 .. }}} .. {{{ 2024.02.03 part 1 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 ``__ 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 .. code:: 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 ``__ v 1504 se 100 pin pouzdrem * nicméně mám způsob, jak získat JEDEC, můžu se snažit o další krok (``__ **Part 2**) * a možná nejdřív načíst ``__ kvůli JEDEC -> SVF - tak nic, ty moduly nejdou nijak rozumně stáhnout (možná jen zatím, ale stejně) .. }}} .. {{{ 2024.01.28 ATF1504AS 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ů) .. }}} .. {{{ 2024.01.27 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. ) .. image:: DSC_8000.s.jpg :width: 250 :target: DSC_8000.s.jpg .. image:: DSC_8001.s.jpg :width: 250 :target: DSC_8001.s.jpg .. image:: DSC_8002.s.jpg :width: 250 :target: DSC_8002.s.jpg * HD6309 ``__ * Krystaly ``__ .. }}} .. {{{ 2024.01.25 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 `__) .. }}} .. {{{ 2024.01.22 2024.01.22 ================================================================================ * `Specification <.root/Comp24-specification.html>`__ specifikace, čeho asi tak chci dosáhnout .. }}} .. {{{ 2024.01.20 I2C + SPI konektor 2024.01.20 I2C + SPI konektor ================================================================================ * `I2C-6 konektor` ``__ 6 pin (jeden ucvaknutý pro orientaci). U CPU je sameček (piny), zařízení(konektor) má samičku a nasouvá se * `ASM `__ .. code:: . /........................./ //--------------/|......../ //Vcc Clk (cut)/ |......./ /┌────┬────┬────┐ |....../ /.│ 2 │ 4 │ (X)│ /...../ /..├────┼────┼────┤ /...../ /...│ 1 │ 3 │ 5 │/...../ ═════╧════╧════╧════╧══════(board edge) Data Gnd IRQ\ * `SP-10 konektor` ``__ * SPI-10-Pinout3V3.gif |SPI-10-Pinout3V3.gif| * SPI-10-Pinout5V.gif |SPI-10-Pinout5V.gif| .. |SPI-10-Pinout3V3.gif| image:: SPI-10-Pinout3V3.gif :width: 250 :align: top :target: SPI-10-Pinout3V3.gif .. |SPI-10-Pinout5V.gif| image:: SPI-10-Pinout5V.gif :width: 250 :align: top :target: SPI-10-Pinout5V.gif .. }}} .. {{{ 2024.01.18 Krystaly 14.7456 MHz a 16 MHz, RAM místo ROM, $8000 .. 8K bank? 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 |MOhm| paralelně a dva kondíky k zemi) a taky to chodí * `I/O ICs `__ 6522 VIA + 6551 ACIA - spousta detailů .. }}} .. {{{ 2024.01.16 Ruby comp, BBC Micro out, shared RAM w. ATMEGA 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) .. }}} .. {{{ 2024.01.14 Sběrnice, desky, ... 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 .. }}} .. {{{ 2024.01.13 openScad 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 .. raw:: html
Click to expand/collapse code .. code:: $fn=200; include ; use ; use ; 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"); } .. raw:: html
* `Bevel Gear `__ ozubená kola a kruhy * rotacniZuby : .. raw:: html
Click to expand/collapse rotacniZuby .. code:: 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(); .. raw:: html
.. }}} .. {{{ 2024.01.10 Akvizice 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 ``__ a jiné věci okolo ``__, 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" ``__ .. }}} .. {{{ 2024.01.03 Nový Blog 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 .. }}} .. {{{ 2024.01.02 Nový Rok 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 .. }}} .. {{{ Postřehy (jak to dělají jinde, co mě napadlo) Postřehy (jak to dělají jinde, co mě napadlo) ================================================================================ * Dekódování adres * `74HC138` `3->8` výběr adres, různá logika * `74HC139` 2x `2->4` výběr adres, různá logika * `74HC688` - `8-bit Identity comparators` - snadné dekódování adresy !!! * `74HC148` - `Priority Encoder` - `8->3` první z adres, která sedí * ``__ * Použití paralelních portů R6522-VIA / MC6521-PIA jako výběr adresy (možná overkill, ale proč ne?) * `74HC257` - `QUADRUPLE 2-LINE TO 1-LINE DATA SELECTORS/MULTIPLEXERS WITH 3-STATE OUTPUTS` - přepíná 4bity: 4A, 4B -> 4Y * I/O * generic I2C interface `Datapod `__ * `Bit bang? `__ * `Různé obvody a triky `__ * Testy * `NOP generátor `__ * Emulátory a spol * ``__ obsahuje emulátor `hd6309` psmame/src/emu/cpu/hd6309 * Fake6502 CPU emulator core Mike Chambers `fake6502.c` * video "karta" ``__ * `74HC377` `OCTAL D-TYPE FLIP-FLOPS WITH CLOCK ENABLE` - `8xD + Clock+ Enable` * `74HC273` `OCTAL D-TYPE FLIP-FLOPS WITH CLEAR` - `8xD + Clock + Clear` .. }}} .. {{{ Parts Parts ================================================================================ .. raw:: html
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ů) .. raw:: html
.. }}} .. {{{ ToDo ToDo ================================================================================ .. raw:: html
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 .. raw:: html
.. }}} .. {{{ Done Done ================================================================================ .. raw:: html
Click to expand/collapse * Součástky otestovat * `OK` 74 D + 02 NOR = RS Edge * test * druhy * treti .. raw:: html
.. }}}