OldComp.cz

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


Právě je 09.12.2024, 18:12

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 18 ]  Přejít na stránku 1, 2  Další
Autor Zpráva
PříspěvekNapsal: 29.11.2024, 21:17 
Offline
Profík

Registrován: 15.01.2014, 20:08
Příspěvky: 884
Bydliště: Šlapanice
Has thanked: 151 times
Been thanked: 123 times
Narazil jsem na limit překladače M80/L80 pod CPM … spíše na limit linkeru aneb program je už příliš dlouhý. Listing vypadá v pořádky a i překlad proběhne v pořádku v emulátoru ALTAIRZ80 ale část programu nefunguje tak jak má. Po pokusu při překladu na reálném železe konkrétně SAPI-1 tak překlad prošel (M80), ale linker (L80) ohlásil „Out of memory“.

Nevěděl by někdo o překladači, co používá sejnou nebo aspoň co nejvíce podobnou syntaxi jako M80/L80 ale je schopen přeložit program co má po překladu více než 48kB a hromadu návěští.

Mám prográmek na tes IO a tabulky zabírají už tolik místa, že jaksi dobový překladač (M80/L80) na dobovém systému (CPM) jaksi narazil na limit. Zdrojový kód v příloze. Předělávat to na výrazně jinou syntaxi by bylo děsně práce … čemuž bych se chtěl vyhnout.


Přílohy:
Poznámka: Zdrojový kód programu na test IO aneb IOT.MAC
IOT.rar [58.86 KiB]
9 krát

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

http://www.sapi.cz/
Nahoru
 Profil  
 
PříspěvekNapsal: 29.11.2024, 22:14 
Online
Pan Štábní

Registrován: 11.11.2013, 10:29
Příspěvky: 1231
Has thanked: 394 times
Been thanked: 310 times
Myslis neco takoveho?
Kód:
>M80 IOT=IOT.MAC/I/L

No Fatal error(s)

>L80 IOT,IOT/N/Y/E

Link-80  3.44  09-Dec-81  Copyright (c) 1981 Microsoft

Data    0100    B200    <45312>

 8506 Bytes Free
[0000   B200      177]

Me se to prelozilo a sestavilo v poradku, jen jsem pouzil takovy maly trik. Vypada to, ze mas malo pameti v TPA, ja mam skoro 53kB a tak tam jeste kousek zbyva. Prikladam vysledny listing a COM soubor na odzkouseni.


Přílohy:
IOT_COM.ZIP [296.88 KiB]
2 krát

_________________
Sharp MZ-800++, MZ-1500++, MZ-2500++, SM-B-80T, MK-14_replica, HP-85, ZX-80+replica, ZX81, ZX-Spectrum+replica++, PMI-80+replica, SAM coupe++, PMD-85-2A+3, Didaktik-M, SORD-M5, TI-57, TI-59+PC-100, TI99/4A, ZetaV2+ppp, ZX-uno, Petr
Nahoru
 Profil  
 
PříspěvekNapsal: 29.11.2024, 22:57 
Offline
Profík

Registrován: 15.01.2014, 20:08
Příspěvky: 884
Bydliště: Šlapanice
Has thanked: 151 times
Been thanked: 123 times
Jo funguje to, ale to problém neřeší. Zkusil jsem to stejně přeložit i v ALTAIRZ80 simulátoru ale výsledek dopadl špatně aneb kus kódu na konci je 00H ale celková délka kódu sedí.

Získal jsem několik nových obvodů a chtěl bych si pro ně dodělat testovací tabulky. RAM na SAPI-1 mám 62KB. Velikost TPA netuším, ale tuším jak zjistit. Vlastní kód je pořád o dost kratší než TPA takže problém je jak přeložit.

Jedna možnost by byla jak překládat i s M80/L80 i s „malou“ TPA aneb rozdělit na menší bloky (vlastní program, datové bloky) ty přeložit zvlášť a pak spojit. Už jsem o tom uvažoval dříve, ale to by si vyžádalo docela velké úpravy a taky vyřešit problém jak přenášet hromadu adres mezi bloky.

Zatím jako nejjednodušší se mi jeví použit moderní překladač s pokud možno co nejpodobnější syntaxí s M80/L80.

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

http://www.sapi.cz/


Nahoru
 Profil  
 
PříspěvekNapsal: 29.11.2024, 23:38 
Offline
Profík

Registrován: 15.01.2014, 20:08
Příspěvky: 884
Bydliště: Šlapanice
Has thanked: 151 times
Been thanked: 123 times
Tak jestli jsem nic nepopletl tak TPA v ALTERZ80 konči na adrese 58373 aneb E405H a na SAPI-1 na adrese 54527 aneb D4FFH.

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

http://www.sapi.cz/


Nahoru
 Profil  
 
PříspěvekNapsal: 30.11.2024, 00:18 
Online
Pan Štábní

Registrován: 11.11.2013, 10:29
Příspěvky: 1231
Has thanked: 394 times
Been thanked: 310 times
Obavam se, ze s takovym pristupem to bude jen otazkou casu (ktery uz vlastne nastal), kdy narazis na velikost dostupne pameti.
To rozdeleni na nekolik mensich bloku neboli modulu umi prave ten M80/L80 velice pekne resit pomoci relativniho prekladu. A je to jeho silna stranka. Jen tak narychlo, podivej se tady na ten link: https://stackoverflow.com/questions/15023238/building-rom-images-on-cp-m.
Koukal jsem do toho tveho kodu a myslim, ze by to takto slo. Prece jen se bude potreba podivat po nejake novejsi praktice nez je absolutni programovani v jednom obrovskem souboru ;-) Toho kodu tam az tak moc nemas, vetsina jsou datove tabulky.
A do budoucna by asi bylo lepsi uvazovat o rozdeleni programu na program a data. A pak ty data nacitat do pameti az podle potreby pri behu programu. Ok, ja vim, chce to nejaky cas to predelat, ale ta namaha se rozhodne vyplati. A je to investice do budoucna :-)

Poznamka: Vetsinou to, ze nejde najit nikoho, kdo to dela po staru je, ze to zacali vsichni delat po novu. A to se vyplati... :-D

_________________
Sharp MZ-800++, MZ-1500++, MZ-2500++, SM-B-80T, MK-14_replica, HP-85, ZX-80+replica, ZX81, ZX-Spectrum+replica++, PMI-80+replica, SAM coupe++, PMD-85-2A+3, Didaktik-M, SORD-M5, TI-57, TI-59+PC-100, TI99/4A, ZetaV2+ppp, ZX-uno, Petr


Nahoru
 Profil  
 
PříspěvekNapsal: 30.11.2024, 00:58 
Offline
Profík

Registrován: 15.01.2014, 20:08
Příspěvky: 884
Bydliště: Šlapanice
Has thanked: 151 times
Been thanked: 123 times
To že M80/L80 je mohutný nástroj vím a to že umí globální proměnné a spoustu další věcí. Jenže kde schrastit dokumentaci a to v dostatečně blbu vzdornou a pokut možno česky.

S tabulkami je trochu problém v tom že je v nich možno spouštět i strojový kód co se odkazuje i na věci ve vlastním programu.

Hrubou představu jak rozdělit program na bloky mám, ale jak to udělat aby se to přeložilo celé automatiky, tj. bez přepisu adres netuším, ale vím, že by to mělo jít.

Zkusím prolézt knížky, co mám ale co si tak matně vybavuji tak se tam hlavně řešilo jak, kde co spáchat v systému ale možnosti vlastního překladače jen okrajově.

Pokud jde o to, kdy narazím na hranici paměti … asi to tak hned nebude, aneb těch obvodů asi už moc nepřibude.

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

http://www.sapi.cz/


Nahoru
 Profil  
 
PříspěvekNapsal: 02.12.2024, 17:10 
Offline
Profík

Registrován: 26.11.2018, 16:59
Příspěvky: 610
Bydliště: Holešov
Has thanked: 13 times
Been thanked: 99 times
Já používám pro 8080 a Z80 překladač Macro Assembler AS V1.42 (teda jeho wokenní verzi ASW) a zatím jsem přeložil 99% věcí co bylo pro M80
http://john.ccac.rwth-aachen.de:8000/as/


Nahoru
 Profil  
 
PříspěvekNapsal: 02.12.2024, 17:23 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 14.05.2013, 19:10
Příspěvky: 1559
Bydliště: Kurim
Has thanked: 881 times
Been thanked: 626 times
Jako moderní verze M80/L80 existuje překladač Nestor80, který je s M80/L80 kompatibilní a běží pod moderními OS.
https://github.com/Konamiman/Nestor80

Nicméně nepodporuje syntaxi 8080, musel bys přejít na Z80 :-(

_________________
http://www.8bity.cz


Nahoru
 Profil  
 
PříspěvekNapsal: 03.12.2024, 22:09 
Offline
Profík

Registrován: 15.01.2014, 20:08
Příspěvky: 884
Bydliště: Šlapanice
Has thanked: 151 times
Been thanked: 123 times
Na ten AS jsem se zběžně kouknul a vypádá to že by syntaxi M80 měl dát … ale absolutně jsem nepochopil jak nastavit překlad tj. co přesně napsat do příkazového řádku aby se to přeložilo a správně.

Zatím jsem ještě nepořešil nestavení proměněních systému … tak nějak tuším ale … koukal jsem se na tu DOS verzi.

Pokusím se tu DOS verzi (Protec mód) rozchodit ale kdy to bude, netuším.

Syntaxe Z80 je mi proti smrti aneb furt LD. Jo vím 99% instrukcí ji o nějakém tom stěhování dat, holt ta Intelí Syntaxe je pestřejší.

Přemýšlel jsem tom rozdělení na více bloků … rozdělit to na program a data bude jednoduché, aneb pokud nebudu počítat strojoví kód v rámci tabulek tak jde o dvě adresy co je potřeba přinést mezi bloky … jenže to problém moc neřeší, aneb vlastní program zabírá malou část kódu. Rozdělit tabulky na více bloků tak tam bude problém v tom, že je to několik navzájem provázaných datových polí, v rámci vlastních testovacích dat je možno provádět skok či jedno úrovňový „podprogram“. Což je výhodné pro obvody co mají společné části testovacích dat. Některé testovací data jsou společné pro více obvodů. A jako bonus jde v rámci testovacích dat spustit strojový kód kdy se dost část odkapuje na vlastní program ….

Co jsem tak nad tím přemýšlel tak asi skončím u varianty, že pro odladění nových testovacích dat se dočasné podmíněně při překladu zablokuje část dat a vzhledem k tomu že listin se zdá bít v pořádku tak si asi napíšu prográmkem (ve FORTRANu) co z listingu vyseparuje strojový kód.

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

http://www.sapi.cz/


Nahoru
 Profil  
 
PříspěvekNapsal: 03.12.2024, 23:03 
Offline
Radil
Uživatelský avatar

Registrován: 13.05.2013, 17:48
Příspěvky: 547
Bydliště: Košice
Has thanked: 463 times
Been thanked: 274 times
EC1045.01 píše:
Na ten AS jsem se zběžně kouknul a vypádá to že by syntaxi M80 měl dát … ale absolutně jsem nepochopil jak nastavit překlad tj. co přesně napsat do příkazového řádku aby se to přeložilo a správně.
Možno ti pomôže tento popis, ktorý sa síce vzťahuje k programovaniu pre PMD 85, ale to podstatné k makroassembleru AS tam snáď je.
https://pmd85.borik.net/wiki/Blog:Programovanie_v_assembleri_i8080_pre_PMD_85_%287%29#Kompil.C3.A1tor

_________________
https://pmd85.borik.net - PMD 85 Emulátor, PMD 85, PMD 32-SD
https://pp01.borik.net - PP 01 Emulátor, PP 01, SD-ROM Modul


Nahoru
 Profil  
 
PříspěvekNapsal: 05.12.2024, 13:56 
Offline
Profík

Registrován: 26.11.2018, 16:59
Příspěvky: 610
Bydliště: Holešov
Has thanked: 13 times
Been thanked: 99 times
já to používám jako lenoch...

zdroják nakopíruju do BIN adresáře ASW a pak dám : C:\asw\bin>asw jmeno.asm -L
toto přeloží soubor do jmeno.P a vytvoří listing jmeno.LST
no a pak dám
C:\asw\bin>p2bin jmeno

a tím se mi udělá binárka jmeno.BIN

jo, a nic bych nerozděloval, poradí si s dlouhými soubory bez problémů, klidně to přelož celé naráz

tohle jsem si připsal když jsem předělával zdroják MS BASIC 5 do AS:

;all 14 original source codes combined into one file
;removed all EXTERN,PUBLIC,PAGE directives
;removed IF2 and . directives

;for ASW needed to change:
;-------------------------
; $ in labels to _D or D_
; OR to |
; AND to &
; on some places switched ' ' with " "

no a přidat direktivy:
cpu 8080 ;ASW !
org 100h ;COM file

zdroják má 500kB a udělá binárku 36kB


Nahoru
 Profil  
 
PříspěvekNapsal: 08.12.2024, 15:09 
Offline
Profík

Registrován: 15.01.2014, 20:08
Příspěvky: 884
Bydliště: Šlapanice
Has thanked: 151 times
Been thanked: 123 times
Tak se tak nějak povedl rozchodit překladač AS, ale mám tam prozatím 8 ERRORů (ve verzi pro CPM) … ve většině případů se to tíká direktiv „HIGH“ a „LOW“ (aneb výběr spodního či spodního byte v adrese) a pak direktivy IFF a se mu cosi nelíbí v datovém poli aneb neznámá instrukce.

Snažil jsem se dohledat nějakou přímou náhradu či konstrukt za „HIGH“ a „LOW“ ale jaksi jsem nic konkrétního nenašel. Anglicky neumím a taky moc netuším co hledat.

zdrojový kód a i listing s chybami v příloze


Přílohy:
IOT.rar [230.5 KiB]
3 krát

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

http://www.sapi.cz/
Nahoru
 Profil  
 
PříspěvekNapsal: 08.12.2024, 15:40 
Offline
Radil
Uživatelský avatar

Registrován: 13.05.2013, 17:48
Příspěvky: 547
Bydliště: Košice
Has thanked: 463 times
Been thanked: 274 times
EC1045.01 píše:
Snažil jsem se dohledat nějakou přímou náhradu či konstrukt za „HIGH“ a „LOW“ ale jaksi jsem nic konkrétního nenašel.
HIGH SYMBOL treba nahradiť za SYMBOL>>8
LOW SYMBOL treba nahradiť za SYMBOL&255
EC1045.01 píše:
pak direktivy IFF
IFF SYMBOL treba nahradiť IF ~~SYMBOL

Pseudoinštrukcie .PHASE a .DEPAHSE teba nahradiť PHASE a DEPHASE.

Za návestím CRLFT: zjavne chýba DB.

_________________
https://pmd85.borik.net - PMD 85 Emulátor, PMD 85, PMD 32-SD
https://pp01.borik.net - PP 01 Emulátor, PP 01, SD-ROM Modul


Nahoru
 Profil  
 
PříspěvekNapsal: 08.12.2024, 18:31 
Offline
Profík

Registrován: 15.01.2014, 20:08
Příspěvky: 884
Bydliště: Šlapanice
Has thanked: 151 times
Been thanked: 123 times
Ještě jsem narazil na jeden zádrhel a to jak nahradit „.PRINTX“ aneb aby se při překladu vypsala hláška, že program je delší než limit.

Mam tam toto ale jaksi to nefunguje … program je dlouhý 0F4FFH ale maximum je 0EFFFH.
Kód:
   IF   ~~SYS      ;MIKOS
   ELSE
   IF   MIKOSD
   IF   Z_KONEC > 0F000H
;   IF   D_KONEC GT 0EFFFH
;   .PRINTX 'PRO MIKOS/D PROGRAM DELSI NEZ EFFFH'
   PRTEXIT 'PRO MIKOS/D PROGRAM DELSI NEZ EFFFH'
   ENDIF
   ENDIF
   ENDIF

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

http://www.sapi.cz/


Nahoru
 Profil  
 
PříspěvekNapsal: 08.12.2024, 19:11 
Offline
Radil
Uživatelský avatar

Registrován: 13.05.2013, 17:48
Příspěvky: 547
Bydliště: Košice
Has thanked: 463 times
Been thanked: 274 times
EC1045.01 píše:
Ještě jsem narazil na jeden zádrhel a to jak nahradit „.PRINTX“ aneb aby se při překladu vypsala hláška, že program je delší než limit.
Na to slúžia pseudo-inštrukcie:
MESSAGE "text" - vypíše text
WARNING "text" - vypíše text, pokračuje v kompilovaní zdrojového kódu a generovaní výsledného kódu
ERROR "text" - vypíše text, pokračuje v kompilovaní zdrojového kódu, ale výsledný kód už negeneruje
FATAL "text" - vypíše text a ukončí kompiláciu

"text" môže obsahovať aj odkaz na symboly, ktorých hodnotu vypíše, napr.
Kód:
IF Z_KONEC > 0F000H
  ERROR "PRO MIKOS/D PROGRAM DELSI NEZ EFFFH: \{Z_KONEC}"
ENDIF

_________________
https://pmd85.borik.net - PMD 85 Emulátor, PMD 85, PMD 32-SD
https://pp01.borik.net - PP 01 Emulátor, PP 01, SD-ROM Modul


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ů: 18 ]  Přejít na stránku 1, 2  Další

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