046
12.04.2010, 13:43 Uhr
holm
|
Ich habe indessen mal das cpabas.erl disassembliert, d.h. nicht das File direkt sondern das was davon an einem CP/A @os.com zu finden ist. Bis auf ein augescheinlich kurzes totes Stück Code da drin ist klar was es macht. Schwieriger wird es mit dem Lader auf dem Bootspuren, der enthält nämlich ein komplettes BDOS um die Datei @os.com laden zu können, als BIOS benutzt dieses BDOS etwas "Leim " Code und die Services die der Bootloader der K2526 (Bitmuster 083) zur Verfügung stellt. Gibt es irgendwo eine Doku über diesen Laderom? Der muß doch spezifizierte Interfaces haben...? Kann da einer helfen?
Hier mal mein CPABAS.MAC File:
Quellcode: | title CPABAS 2nd Loader name ('CPABAS') .z80
EXTRN BIOS EXTRN CCP EXTRN BIOSCE DEFAULT equ 0004h ; default Laufwerk
START: ;0100 LD HL,CCPKOP-START+0100h ;Offset CCP im File LD A,(DEFAULT) ; default Laufwerk nach A JR LOADER NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP LD HL,3800H ; 0xdeadbeef ? DI LD A,(03FCH) LD B,3 L0129: RLCA JR NC,L012E DJNZ L0129 L012E: LD A,B LOADER: DI LD SP,CCP ; Ladeadresse CCP, Stack abwaerts (0BD00h) PUSH HL ; Ofsett sichern AND 3 ; ausmaskieren der hoeheren Bits des aktuellen Laufwerks PUSH AF ; sichern LD BC,1603H; Laenge CCP,BDOS+3 = 1603h ADD HL,BC ; 180h Ofsett dazu = 1783h EX DE,HL ; Adresse nach DE LD HL,CCP ; CCP Ladeadresse ADD HL,BC ; (0BD00h) + 1603h = 0D303h LD BC,30H ; Laenge fuer Ueberpruefung jungfrl. Start LVERG: LD A,(DE) ; Daten aus geladenem File INC DE ; erhoehen CPI ; Vergleich A,(HL) JR NZ,LJUNG; Nicht gleich, neu laden, jungfrl. Start LD A,B OR C JR NZ,LVERG; 30h verglichen? POP AF ; ja identisch, restauriere akt. Laufw. SET 7,A ; Flag setzten fuer nicht jungfrl. Start PUSH AF LJUNG: ; Neu laden IN A,(0AH) ; Datenbort B ZVE PIO AND 0F6H ; ausblenden Lade ROM und WAIT-ZVE2 OUT (0AH),A ; Standardverhalten herstellen LD A,3 OUT (9),A ; Interrrupts Kanal A ZVE PIO gesperrt OUT (0CH),A ; Kanalreset aller CTC Kanaele der ZVE-CTC OUT (0DH),A OUT (0EH),A OUT (0FH),A OUT (11H),A ; Interrupts SteuerPIO der AMF gesperrt OUT (13H),A LD A,0FFH OUT (18H),A ; Ruecksetzten des Signalregisters 8121 auf der AMF POP AF ; aktives Laufwerk zurueck nach A LD DE,CCP ; CCP Ladeadresse LD HL,BIOSCE ; Endadresse BIOS OR A ; Carry ruecksetzen fuer Subtraktion SBC HL,DE ; Subtraktion LD B,H ; umzuladende Laenge nach BC (03501h) LD C,L POP HL ; Offset im File (Quelladresse CCP) LDIR ; Umladen JP BIOS ; BIOS Kaltstart NOP NOP NOP CCPKOP equ $ ; Hier Kopie des CCP END
|
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;} Dieser Beitrag wurde am 12.04.2010 um 20:00 Uhr von holm editiert. |