Hozzád képest szerencsés voltam.
Volt a munkahelyemen gép "* promptos rendszerrel", 2x160kB floppy.
Utána Enterprise 128, macro80, TurboPascal 3.0, pc kompatibilis floppy.
A végén xt, V20, (Az a NEC 8088, de magasabb az órajele, néhány utasítást mikroprogram helyett hardverrel csinál, van néhány spec. utasítása ÉS natív 8080 kódot is tud futtatni), amelyen futot az Intel Isis-II fejlesztőrendszer. Ez utóbbi fenn van a githubon! Ilyen rendszer azóta sem láttam. Van két modulod (és nem obj!), lefordítod, linkeled és lokálod, majd szimbolikus debugger. Mondjuk egy 10 modulból álló rendszerből megírhatsz 2 modult, és az előbbi módszerrel memóriában debuggolod. A végén a lokálás (jókimagyarfejezve: locate) az EPROM-ra történik és kész a firmware!
Amire saját pc-m kerekedett, addigra egy haver átrakta crossassemblerrel a m80+l80 csomagot pc-re.
Ja, és akkoriban 8085-re fejlesztettem.
Ezen az alapon a 12 és 14 bites MCU-kban van még egy virtuális szegmens regiszter...
Pontosan. Persze azért nem tökugyanaz, mint az x86 esetén, mert ott a szegmentálás "lefelé" a 64kB-os 8080 komptibilitást célozta (lást CP/M és .com formátum), felfelé meg a nagyobb, virtuális memóriát illetve a védett módot. Talán azért esik le nekem gyorsabban, mert (némi költői túlzással) csináltam már hardver támogatású multitaszkot, a hol a taszkcsere egyúttal a taszkhoz tartozó "adatszegmenst" is cserélte - éppúgy, mint egy 80286-on. (Ismétlem: némi túlzással.:))
Visszatérve a körmondat előtti gondolatra, nos ezek meg PIC-ek. A nagyon kicsik és az egyre nagyobbak között tán még a C sem biztosít teljes átjárást. Ahol már tényleg felejthető egy kicsit a hardver, az a szint a 24-eseknél kezdődik. Azért nem felejtem el, hogy a fordító készítőjének a teljes termékcsládra kell gondolni minden apró módosításkor. De bevallom, nekem már a fejlettebb PC18 a legkisebb szerkezet. ;)
Egyébként az __ACTIVE_BANK_ADDR és az __ACTIVE_PAGE_ADDR...csinálhatsz valami hasonlót mint az Assume.
Ez egy zseniális gondolat! Nem hiába az a hitvallásom, hogy a jó mérnök addig gondolkodik, amíg le tudja csökkenteni a munkaráfordítást. ;) Nem csak az assume, hanem mondjuk az assume_global is elkészíthető, ami passzol az "egy fix bankos" használati módomhoz. Már csak az a kérdés, hogy mennyire lineáris a fordító vizsgálata. De ez majd kiderül a végén.
ha az ember helyesen használja a Banksel direktívákat akkor az Assume szerintem pluszt nem hozna
Már csak az a kérdés, hogy az ember akarje-e használni a banksel direktívát? ;) Úgy lelki szempontokból, ha kódot generálhat, és a fordító nem biztos a bsr állásában... Az én esetemben tudom, hogy nem kell bankot váltani.
Az errolevel ki-be kapcsolgatva használható, de valószínűleg azért tűnt fel másnak is, mert sok felesleges üzenet keletkezett. (Tisztára gcc! :) Egyes esetekben a kapcsolgatást érdemes lehet ellenőrzés céljából blokkonként kapcsolgatni. Helyette kényelmesebb az assume. De most már megírom azokat a makrókat! (*)
A friss verzió már egész jól meghatározza a bsr értékét. Egyetlen -1 érték szerepel az üzenetekben a program eleje és a főprogram között, az interrupt-ban - ez jogos. A próbát mindig egy éles 5400 soros (lst,noexpand,sok makró) programon végzem.
Az üzenetek száma már csak 117, ami alig 10 százaléka az eredetinek.
Kipróbáltad a móricka tesztprogramomat, amit kértél? (Ott feljebb, be lehet keríteni egérrel! :) Mert abban semmi változás. :(
(*) Sajnos minél jobban el vagyok havazva, annál többet írok a fórumra. :(