OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 22.05.2024, 07:20

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 15 ] 
Autor Zpráva
 Předmět příspěvku: Programování pro Ondru
PříspěvekNapsal: 15.05.2024, 18:29 
Offline
Nemluva

Registrován: 15.05.2024, 17:59
Příspěvky: 5
Bydliště: Svojetice
Has thanked: 0 time
Been thanked: 0 time
Ahoj,

rád bych se na stará kolena od nuly naučil vytvářet SW pro Ondru. Cokoli co mě napadne od her po utility.
Dokázal by mě někdo nasměrovat, jak začít krom studia ofico dokumentace ?
Myslím tím, jaký emulátor a editor použít na tvorbu a ladění před samotným spuštěním na reálném hw ?
Dá se pro Ondru programovat v C nebo se to musí dělat v assembleru a získat tap ? Jak ho dostáváte na kazetu, aby to šlo vůbec pak pustit ?
Určitě zkušení mají spoustu tipů, jak ulehčit život úplnému newbikovi :)

Děkuji za cokoli, co mi pomůže se ponořit do světa tohoto unikátu.

Nějakého Ondru jsem si pořídil, ale nemám zatím propojovací kabely, čekám až někdo dá k prodeji.
Ani nevím, zda funguje.
Nejsem elektrotechnik, a tak si takovéto srandičky sám neudělám. Zajímá mě především tvorba SW. Tvorba HW tak max jako učeň pod dohledem :)

_________________
https://sites.google.com/view/badlovo/
I am a Dwarf - Diggy Diggy Hole https://www.youtube.com/watch?v=ytWz0qVvBZ0


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování pro Ondru
PříspěvekNapsal: 15.05.2024, 20:36 
Offline
Kecálek
Uživatelský avatar

Registrován: 27.06.2021, 15:15
Příspěvky: 159
Has thanked: 44 times
Been thanked: 192 times
Ahoj vítej, já začal taky úplně od nuly, jsou to asi tři roky. Poskytnu rád všechny informace. Na začátek je velmi důležité zcela porozumět HW Ondry.
Já dělám jen v assembleru, existuje projekt z88dk s podporou Ondry, ale je třeba aby to někdo dotáhl.
Navštívit můžeš stránky ondraspo186.8u.cz kde dost rozepisuju určité peripetie při vývoji tak snad se to konečně bude hodit.

_________________
https://github.com/72ka


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování pro Ondru
PříspěvekNapsal: 15.05.2024, 23:11 
Offline
Pan Generální

Registrován: 07.05.2014, 01:21
Příspěvky: 2620
Bydliště: Praha
Has thanked: 514 times
Been thanked: 621 times
Ještě bych ke zdrojům přihodil stránky MartinaK - https://sites.google.com/site/ondraspo186/ondra-spo-186
Má tam pár poznámek k tvorbě her a lecsos užitečného ke stažení...

_________________
ZX80, ZX81, ZX Spectrum, ZX Spectrum +2, Didaktik M, PMD 85-1,2A,3, Olivetti Prodest PC 128, Acorn BBC Micro, PC-XT, Amiga 500


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování pro Ondru
PříspěvekNapsal: 16.05.2024, 09:07 
Offline
Kecálek
Uživatelský avatar

Registrován: 27.06.2021, 15:15
Příspěvky: 159
Has thanked: 44 times
Been thanked: 192 times
vanthomas píše:
Ještě bych ke zdrojům přihodil stránky MartinaK - https://sites.google.com/site/ondraspo186/ondra-spo-186
Má tam pár poznámek k tvorbě her a lecsos užitečného ke stažení...


Pro mě tohle byl a je zlatý důl informací a také dexovy stránky.
Ve zkratce můj setup:

Vyvíjím na Linuxu, editor kódu Geany, assembler používám SJASM+, výsledný bin spoustim rovnou v emulátoru JOndra (v poslední verzi už umí bin jako argument při spouštění z cmd)

Tap dělám pomocí utility bin2tap.exe pod Wine. Když chci wav, tak program TapeExport.

Já tehdy jako první věc když jsem si tohle vše nastavoval, udělal kód, který vykreslil jeden pixel na obrazovku.

_________________
https://github.com/72ka


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování pro Ondru
PříspěvekNapsal: 16.05.2024, 09:11 
Offline
Nemluva

Registrován: 15.05.2024, 17:59
Příspěvky: 5
Bydliště: Svojetice
Has thanked: 0 time
Been thanked: 0 time
Mezitím jsem trochu pokročil, viz můj nový tématický web https://sites.google.com/view/badlovo/home (popisuju i trampoty, co mě potkaly :) ).

Podařilo se mi uchodit JOndra a použít z88dk(zcc), abych viděl Hello world pomocí C kódu. ASM verze mě zlobí, viz web.

Budu experimentovat i s jinými kompilátory (pokud jsou) a uvidíme.

_________________
https://sites.google.com/view/badlovo/
I am a Dwarf - Diggy Diggy Hole https://www.youtube.com/watch?v=ytWz0qVvBZ0


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování pro Ondru
PříspěvekNapsal: 16.05.2024, 12:43 
Offline
Nemluva

Registrován: 15.05.2024, 17:59
Příspěvky: 5
Bydliště: Svojetice
Has thanked: 0 time
Been thanked: 0 time
Na https://sites.google.com/site/ondraspo1 ... s-grafikou jsem našel příklad na grafiku.

Hodil jsem si to asm fajlu a zkusil kompilaci:

badl@zeus:~/devel/ondra$ sjasmplus pixel.asm
SjASMPlus Z80 Cross-Assembler v1.20.3 (https://github.com/z00m128/sjasmplus)
Pass 1 complete (0 errors)
Pass 2 complete (0 errors)
pixel.asm(11): error: Label not found: LS174
pixel.asm(37): error: Label not found: LS174
pixel.asm(49): error: Label not found: LS174
pixel.asm(67): error: Label not found: LS174
Pass 3 complete
Errors: 4, warnings: 0, compiled: 80 lines, work time: 0.000 seconds

Jako neznalec ASM (jedním z cílů mých aktivit je právě se na Ondrovi naučit psát poprvé v životě v ASM) jsem si řekl, aha nemám nějaký include s definicí konstant či co to je.
Zřejmě se to odkazuje na definice přímo v ROMce, tak jsem zkusil disam:

objdump -D -b binary -m i8086 roms/OndraViLi_a.ROM > viliadis.txt
objdump -D -b binary -m i8086 roms/OndraViLi_bROM > vilibdis.txt

a grep

badl@zeus:~/devel/ondra$ grep -i 174 viliadis.txt vilibdis.txt
viliadis.txt: 174: 21 20 and %sp,(%bx,%si)

ale to je jen číslo řádku.

Hádám, že jsem z neznalosti zmotal několik věcí dohromady nepochopením základů a a čeká mě edukace :)

Kdyby někomu nevadilo mě nakopnout správným směrem, tak děkuji předem.

Mimochodem je toto originální CPU pro Ondru a stále v prodeji ? http://www.elfax.cz/0%7C86%7C.d.D53480. ... 50mm-.html

_________________
https://sites.google.com/view/badlovo/
I am a Dwarf - Diggy Diggy Hole https://www.youtube.com/watch?v=ytWz0qVvBZ0


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování pro Ondru
PříspěvekNapsal: 16.05.2024, 16:08 
Offline
Kecálek
Uživatelský avatar

Registrován: 27.06.2021, 15:15
Příspěvky: 159
Has thanked: 44 times
Been thanked: 192 times
Moje doporučení, při vývoji her nepoužívat jakékoliv služby ROM. Prostě jde o to jen ovládnout HW. Nejlíp je použít OndraGDK od Martina. S použitím služeb ROM a bez ASM nikdy nepůjde dosáhnout takových výsledků. Navíc lze pak výtvor připravit pro zavedení z obou typů ROM.
Stáhni si zdrojáky od Pacmana tam najdeš vše jak se dá dělat hra. ASM není tak šílený, je to jen o to myslet jako CPU. Nejhorší pro mě bylo zjištění že nemám proměnné :D
Ale když nastavíš svoje myšlení tak, že je to všechno jen o práci se čtením z paměti, manipulaci v registrech a zase zapisování, začne to jít.

Jinak to LSxxx to jsou jen definice portů Ondry, LSxxx je označení daného IO, který zastupuje funkci portu.

_________________
https://github.com/72ka


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování pro Ondru
PříspěvekNapsal: 16.05.2024, 16:15 
Offline
Kecálek
Uživatelský avatar

Registrován: 27.06.2021, 15:15
Příspěvky: 159
Has thanked: 44 times
Been thanked: 192 times
Jo CPU to je skoro ono, akorát v Ondrovi je UB880 (2,5MHz), nikoli UA880D (4MHz)

_________________
https://github.com/72ka


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování pro Ondru
PříspěvekNapsal: 16.05.2024, 16:39 
Offline
Profík

Registrován: 15.01.2014, 20:08
Příspěvky: 810
Bydliště: Šlapanice
Has thanked: 134 times
Been thanked: 101 times
Osobně píši ASM v obyčejném textovém editoru a překládám dobovým M80/L80 (CREF80) v emulátoru ALTAIRZ80. Asi největší dílko je program IOT

badl píše:
objdump -D -b binary -m i8086 roms/OndraViLi_a.ROM > viliadis.txt
objdump -D -b binary -m i8086 roms/OndraViLi_bROM > vilibdis.txt

I8086 … v ONDROVI je Z80 takže nemáš použity blbý CPU …

Ta „LS174“ je vybraná za předpokladu že je v nule adresný vodič A3, adresné vodiče A0 a A1 by měli být v jedničce a u ostatních by to mělo bít jedno. Jinak minimálně popis systémových služeb pro ViLi ROM by mělo existovat, ale kde hledat netuším. Pro TESLA ROM by měla platit ta samá tabulka služeb jak pro SAPI-1 v sestavě ZPS-2 s programovým vybavením V5.0 (maximálně bude na jiné adrese případné tam bude pár drobných změn vynucených jiným železem).

Na psaní her co ždímají z daného stroje maximum je použití systémových služeb kontraproduktivní. Zase u programu, který má běžet na čemkoli např. u CPM tak tam to bez systémových služeb nejde např. ten zmiňovaný program IOT jde přeložit pro chod od CPM a SAPI-1 v sestavě ZPS-2 … jediné co se při překladu mění je volání systémových služeb a odkud přeložit a to u obou zcela rozdílných systémů může být program ovládán přes monitor s klávesnicí nebo přes terminál po RS232C … a to podle toho kam je přesměrovaná CONSOLE …

Rozdíl mezi UA88xD a UB88xD je jen v tom jak se jim povedli ve výrobě, podle toho pak byli roztříděné takže 4MHz verze tam pojede … mně např. v SAPI-1 chodí UB880D na 4MHz (a to jsem ji nijak nevybíral) Pak taky MH1012 mi chodí na 38400 BAUD i když mají oficiálně maximum 19200BAUD (originál má oficiálně 38400 BAUD …) … je pravda že ne všechny obvody to dají, aneb se musí vybírat. Co vím tak první PENTIA INTEL třídil podle toho, jak moc topila … takže s dobrým chladičem se dali bez problému o jeden stupně přetaktovat.

_________________
Ne všichni jsme měli z češtiny za jedna, aneb jsem dyslektik a dysgrafik.

http://www.sapi.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování pro Ondru
PříspěvekNapsal: 16.05.2024, 17:08 
Offline
Nemluva

Registrován: 15.05.2024, 17:59
Příspěvky: 5
Bydliště: Svojetice
Has thanked: 0 time
Been thanked: 0 time
Děkuji všem za opravy faktických chyb, tipy a směrování na zdroje. GTKOndra zdrojáky od MartinaK jsem si komplet stáhnul a vydestiluji z nich postupně jednotlivé funkce.

Až se seknu, opět se zeptám.

_________________
https://sites.google.com/view/badlovo/
I am a Dwarf - Diggy Diggy Hole https://www.youtube.com/watch?v=ytWz0qVvBZ0


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování pro Ondru
PříspěvekNapsal: 16.05.2024, 17:47 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1535
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 389 times
Jojo.
Chybějící definice
LS174 EQU 11110111b ; memory mapping, audio_out, timers (PORT3)
LS175 EQU 11111110b ; beeper and relay (PORT10)

Ještě na začátku mívám

HIMEM EQU 0D4BAH ; * Ondra HIMEM VARIABLE
SPLOW EQU 0D4C0H ; * Ondra SPLOW VARIABLE
SYSBUF EQU 0D4BEH ; * Ondra SYSBUF VARIABLE

; ORG 100H ; UNCOMMENT FOR PURE BINARY WITHOUT Ondra FIRST HEADER
;**************************************************************

; Ondra EXECUTABLE FILE FIRST HEADER
ORG 100H-5

DEFB 01H ; FLAG
DEFW 0100H ; LOAD ADDRESS
DEFW LENGTH ; LENGTH
; END OF FIRST HEADER
;**************************************************************


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování pro Ondru
PříspěvekNapsal: 16.05.2024, 19:45 
Offline
Nemluva

Registrován: 15.05.2024, 17:59
Příspěvky: 5
Bydliště: Svojetice
Has thanked: 0 time
Been thanked: 0 time
Tak jsem se moc nepohnul. Pokusil jsem se zkompilovat z https://sites.google.com/site/ondraspo1 ... authuser=0 demo DRAW, ale hned chyby:

sjasmplus --raw=draw.bin drawdemo.asm

SjASMPlus Z80 Cross-Assembler v1.20.3 (https://github.com/z00m128/sjasmplus)
Pass 1 complete (0 errors)
Pass 2 complete (0 errors)
drawdemo.asm(1): error: Label not found: _.equ
drawdemo.asm(1): error: Invalid labelname: #define
drawdemo.asm(2): error: Invalid labelname: #define
Pass 3 complete
Errors: 3, warnings: 0, compiled: 2 lines, work time: 0.001 seconds

ChatGPT tvrdí, že sjasmplus nezná DEFINE a mám použít .define.

Když to zkusím, tak mi stejně vynadá, že redefinuju .define :)

Plus ještě nezná .equ a .end:

drawdemo.asm(2): error: Duplicate label: _.define
drawdemo.asm(1): error: Label not found: _.equ
drawdemo.asm(2): error: Label not found: _.end

Poradil by mi někdo jak to demo z https://sites.google.com/site/ondraspo1 ... authuser=0 zkompilovat ?

PS: Ještě jsem teda upravil includy. byly tam odkazy na win disk D, takže hádám, že by to asi stejně nefungovalo.
; includes
#include "../ondragdk/draw.asm"
#include "../ondragdk/keyboard.asm"
#include "../ondragdk/mainprn.asm"
#include "./font8x8.asm"
#include "../ondragdk/beep.asm"
#include "./columbia.asm"

_________________
https://sites.google.com/view/badlovo/
I am a Dwarf - Diggy Diggy Hole https://www.youtube.com/watch?v=ytWz0qVvBZ0


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování pro Ondru
PříspěvekNapsal: 17.05.2024, 13:45 
Offline
Profík

Registrován: 26.11.2018, 16:59
Příspěvky: 586
Bydliště: Holešov
Has thanked: 13 times
Been thanked: 92 times
kód mám v adresáři s compilerem, knihovny v podaresáři OndraGDK
- smaž všechny ty počáteční #define
- v sekci includes dej:
Kód:
; --------------------------------------------
; includes
   include "ondragdk/draw.asm"
   include "ondragdk/keyboard.asm"
   include "ondragdk/mainprn.asm"
   include "font8x8.asm"
   include "ondragdk/beep.asm"
   include "columbia.asm"
; --------------------------------------------
; definovanie startovacej adresy

-> pozor na začátku musí být mezera nebo TAB jinak to bere jako návěští

a výsledek bude:

C:\SJ\sjasmplus>sjasmplus drawdemo.asm
SjASMPlus Z80 Cross-Assembler v1.18.3 (https://github.com/z00m128/sjasmplus)
Pass 1 complete (0 errors)
Pass 2 complete (0 errors)
Pass 3 complete
Errors: 0, warnings: 0, compiled: 5852 lines, work time: 0.015 seconds


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování pro Ondru
PříspěvekNapsal: 17.05.2024, 14:34 
Offline
Profík

Registrován: 06.02.2019, 11:47
Příspěvky: 910
Has thanked: 53 times
Been thanked: 230 times
badl píše:
Tak jsem se moc nepohnul. Pokusil jsem se zkompilovat z https://sites.google.com/site/ondraspo1 ... authuser=0 demo DRAW, ale hned chyby

Nič v zlom, ale keď sa chceš niečo naučiť od nuly, mal by si začať naozaj od nuly a nie sa hneď vrhnúť na kompiláciu rozsiahlych kódov, ktorým nerozumieš.
Treba prelúskať direktívy kompilera, pseudoinštrukcie kompilera a začať písať jednoduché programy (napr. "HELLO WORLD" s využitím servisných volaní).
Tento kód z Tvojich stránok určite nebude fungovať. Mohol by po úpravách fungovať možno na ZX81 alebo Z88.
Kód:
org 32768
ld hl, message
ld de, 16384
ld bc, message_end - message
ldir
jp 0
message:
defb 22 ; Clear screen
defb "Hello world", 0
message_end:


Problémy, na ktoré narážaš, sú spôsobené len neznalosťou základov.
Každý komiler je trochu iný, má iné direktívy a zdrojové kódy napísané v jednom automaticky nemusia bežať v inom.
Inštruckie na začiatku, napr.
Citace:
#define EQU .equ
#define END .end

sú preto, aby som assembleru, ktorý používam ja, vysvetlil, že mňou použité inštrukcie EQU sú jeho .equ

Ďalšou vecou je oboznámenie sa s počítačom, pre ktorý píšeš kód. Ondra je dosť nedokonalý počítač a preto dokonalý zážitok dosiahne len perfetkne optimalizovaný kód. GDK je len na inšpiráciu, sám by som už niektoré rutiny dnes napísal lepšie (napr. rutina na kreslenie čiar v GDK a v deme Genesis sa ani len nepodobajú).
Dosť o fungovaní počítača sa dá pochopiť z komentovaného výpisu SSM "ViLi" ROM. Ten spolu so schémou počítača by som nazval ako základný študijný materiál.
m1


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování pro Ondru
PříspěvekNapsal: 17.05.2024, 14:58 
Offline
Profík

Registrován: 06.02.2019, 11:47
Příspěvky: 910
Has thanked: 53 times
Been thanked: 230 times
Pekné lekcie na Z80 (a mnoho iných procesorov) sú napríklad od ChibiAku
https://www.youtube.com/watch?v=3cpG9p-Y4Mg
Aj keď tam treba vedieť aspoň niečo, ako funguje procesor.
m1


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 15 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz