A MASM nem 8048-ra fordít, hanem pc processzorra.
Ezzel tisztában vagyok csak úgy látszik hogy tegnap este agyilag kissé zokni voltam. Azt akartam elővezetni hogy a PC-re csak assembly fordítót tudtam szerezni egy ismerőstől, C fordítóról nem is álmodtam. (Akkoriban nem is volt más lehetőségem.) Ez az assembly fordító a masm volt. Ennek segítségével fejlesztettem azt a programot ami végül le tudott fordítani egy assembly nyelvű forráskódot az i8048 MCU-ra. Egyszerű definíciókkal elboldogult de a makrózást meg sem kiséreltem mert olyan kacifántos lett volna amit nem tudtam átlátni és kezelni. (Nem volt semmi segítségem, mindent nekem kellett kitalálnom. Ha Pesten jártam akkor a Liszt Ferenc téren egy boltban tudtam szakkönyvekhez jutni.) Dióhéjban ennyi. :-)
Az említett zokni állapotnak köszönhető hogy összemostam a Banksel és az Assume szerepét és használatát. Te szépen leírtad a lényeget.
Nincs szegmens regiszter, ...
Hát dehogy nincs! Azért mert banknak hívják, a memória bájtot meg (memory)file register-nek attól még az.
Ezen az alapon a 12 és 14 bites MCU-kban van még egy virtuális szegmens regiszter a PCLATH felső bitjein. Vagyis mondhatnánk azt hogy a RAM-hoz van egy "Adat Szegmens Regiszter", a ROM-hoz meg egy "Program Szegmens Regiszter". (Utóbbi a 16 bites MCU-kban nincs mivel az egész ROM egyetlen lapon van.)
Lehet hogy vastag fejű vagyok de úgy látom ha az ember helyesen használja a Banksel direktívákat akkor az Assume szerintem pluszt nem hozna. Hiszen ha kiadom a Banksel-t és valóban csak az adott bankot használom (kivéve az Access területet) akkor a fordító csöndben marad mindaddig amíg ki nem címzek a bankból. Ekkor viszont az a dolga hogy figyelmeztessen.
Egyébként az __ACTIVE_BANK_ADDR és az __ACTIVE_PAGE_ADDR változó, tehát az értéküket te is átírhatod. Így csinálhatsz valami hasonlót mint az Assume. (Az érvénytelen értékek: __BANK_INV [-1], __PAGE_INV [-1]) Ezt a két változót és a többi állandót valamikor ez év január elején kezdtem beépíteni, amikor Petr Mikše beküldött egy patch-et: #65 Smarter message 302
Ezután vérszemet kaptam és belemásztam a dologba. Ennek nyomán valósítottam meg a bank követést, hasonló szemlélettel mint ahogyan a gpdasm-ban is csináltam.
Minden esetre javasolom az errorlevel direktíva használatával eltüntetni a zavaró üzeneteket. Éppen most bővítettem úgy hogy az errorlevel - gpasm módban - elfogad szám tartományokat is, például: errorlevel -302-310
gputils-src-20160706-1231.tar.bz2
gputils-20160706-1231-setup.exe