Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » wla-xx Macroassembler jemand? » Themenansicht

Autor Thread - Seiten: -1-
000
26.01.2014, 20:24 Uhr
holm

Avatar von holm

Ich habe doch ein Bisschen an dem Z80 Emuf der mir in die Hänmde gefalle nist dran herumgefriemt.
Das Ding hat jetzt 64K Byte RAM und 32KByte Rom, eine CTC und eine SIO zusätzlich und läuft mit 6,144 Mhz..

Um da aus lauter dummdödelei was drauf zu bringen habe ich mir den Zapple-Monitor und das Zapple-Basic hervorgekramt. Beide erfordern einen Macroassembler so das der von mir sonst verwendete asz80 aus der Frankenstein Suite ausfällt, das kann er nicht.
Ich habe in Bisschen gegoogelt und bin über das Ding hier :

http://www.villehelin.com/wla.html

gestolpert, habe es mir aus dem Git Repository gezogen und auf mein BSD portiert. '(Seltsam, viele Leute können gute Software schreiben aber bei Makefiles scheitern sie :-) )
Die Sourcen scheinen sehr sauber zu sein, der gcc hat trotz -pedantic nicht genörgelt.

Jetzt zum Problem, der Assembler unterstützt eine für mich noch schleierhafte Art der Definition mit Rombanks und Memorymaps durch das ich noch nicht recht durchgestiegen bin.
.MEMORYMAP
DEFAULTSLOT 0
SLOTSIZE $200
SLOT 0 $0000
SLOT 1 $0200
.ENDME

.ROMBANKMAP
BANKSTOTAL 10
BANKSIZE $200
BANKS 10
.ENDRO

Das Stammt wohl daher, das der Assembler auch z.B. die CPU des Gameboy, welche ja eine abgerüstete Z80 ist und einige Andere von SpielKonsolen unterstützt.

Hat hier schon mal einer mit dem Ding herumgefummelt?

Die nächste Hürde war ein Listing zu erzeugen, das Listing kommt nicht aus dem Assembler, sondern aus dem Linker aber auch nur dann, wenn man seine Quelle mist .SECTION "foo" force und .ENDS eingeklammert hat. Gewöhnungsbedürftig, aber im Endeffekt scheint das zu funktionieren..
es kommt dann Sowas raus:

Quellcode:
;
                                        ;-LIST DEVICE CONFIGURATION
                                        .EQU    LTTY    0            ;TELEPRINTER PRINTER
                                        .EQU    LCRT    40H          ;C.R.T. SCREEN
                                        .EQU    LINE    80H          ;LINE PRINTER (EXTERNAL ROUTINE)
                                        .EQU    LUSER   0C0H         ;USER DEFINED
                                        ;
                                        ;
                                        ;       VECTOR FOR USER DEFINED ROUTINES
                                        ;
                                        ;.LOC:  USER    
$FF $FF $FF                             CILOC:  .DSB    3,0ffh       ;CONSOLE INPUT
$FF $FF $FF                             COLOC:  .DSB    3,0ffh       ;CONSOLE OUTPUT
$FF $FF $FF                             RPTPL:  .DSB    3,0ffh       ;HIGH-SPEED READER
$FF $FF $FF                             RULOC:  .DSB    3,0ffh       ;USER DEFINED STORAGE (INPUT)
$FF $FF $FF                             PTPL:   .DSB    3,0ffh       ;HIGH-SPEED PUNCH
$FF $FF $FF                             PULOC:  .DSB    3,0ffh       ;USER DEFINED STORAGE (OUTPUT)
$FF $FF $FF                             LNLOC:  .DSB    3,0ffh       ;LINE PRINTER
$FF $FF $FF                             LULOC:  .DSB    3,0ffh       ;USER DEFINED PRINTER
$FF $FF $FF                             CSLOC:  .DSB    3,0ffh       ;CONSOLE INPUT STATUS ROUTINE
                                        ;J:     =.      
                                        ;
                                        ;       PROGRAM CODE BEGINS HERE
                                        ;
                                        ;
                                        ;.LOC:  BASE    
$C3 $4C $F0                                     JP      BEGIN        ;GO AROUND VECTORS
                                        ;
                                        ;       <VECTOR FOR CALLING PROGRAMS>
                                        ;

Ein Bisschen stört mich daran noch da die Adressen nicht mit ausgegeben werden wie es sich IMHO gehöhrt, evtl. gibts ja da auch noch einen Schalter..

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek