; Wie lädt man eine Bibiliothek ?

execbase = 4
OpenLib  = -408
CloseLib = -414
Open     = -30
Close    = -36
Write    = -48
Read     = -42
waitforch= -204

Start:
    move.l    execbase,a6     ; Execadresse nach a6
    lea       dosname,a1      ; Adresse der Library nach a1
    moveq     #0,d0           ; Versionsnummer nach d0
    jsr       OpenLib(a6)     ; Anspringen der LibraryOpenRoutine
    move.l    d0,dosbase      ; Adresse der DosLib aus d0 nach Label  

    move.l    #fenstername,d1 ; Fensterstruktur(s.u.) nach d1
    move.l    #1005,d2        ; ? laut Buch Art des Fensters
    jsr       do_open         ; Öffne das Window
    move.l    d0,handle       ; Adresse des Windows retten !

    move.l    #ein,d2         ; Prefixdaten schreiben    
    move.l    #eine-ein,d3    ;   "    "      "   "
    jsr       Schreibe        ; verzweige Schreibroutine

    move.l    #text1,d2           ; Textadresse nach d2
    move.l    #text1ende-text1,d3 ; Länge des Textes nach d3
    jsr       Schreibe            ; Schreiben aufrufen
    jsr       Wait                ; Warte-Taste !

Ende:
    jsr       do_close            ; Window schließen
    move.l    execbase,a6         ; Vorbereitung zum schließen der
    move.l    dosbase,a1          ; DOS-Library ! 
    jsr       CloseLib(a6)        ; Aufruf schließen

    rts                       ; Fertig !!                       


Schreibe:
    move.l    dosbase,a6  ; vor dem Funktionsaufruf muß der Text mit
    move.l    handle,d1   ; move.l #text,d2  und 
    jsr       Write(a6)   ; move.l #textende-text,d3 gespeichert sein
    rts
wait:
    move.l    #wartet,d2            ; Ausgabe des in wartet
    move.l    #wartetende-wartet,d3 ; gespeicherten Textes !
    jsr       Schreibe              ; Aufruf Subroutine
    move.l    #10000000,d2          ; Warte je 10 Sekunden
    move.l    dosbase,a6            ; Vorbereitung
    move.l    handle,d1             ; der 
    jsr       waitforch(a6)         ; Wait for a character Routine !
    tst.l     d0          ; Test, ob eine Taste gedrückt wurde
    beq       wait        ; Wenn nicht dann warte nochmal !   
    rts  
do_open:
    move.l    dosbase,a6
    jsr       Open(a6)
    tst.l     d0
    rts
do_close:
    move.l    handle,d1
    move.l    dosbase,a6
    jsr       Close(a6)
    rts
dosname:
    dc.b      'dos.library',0,0 
    even
dosbase:
    blk.l     1
    even
handle:
    blk.l     1
    even
fenstername:
    dc.b 'CON:0/0/640/200/First Powerboy Message on the Amiga',0
    even
Text1:
 dc.b $0a,"  Hallo Lutz du alter Nasenbär !",$0a,$0a
 dc.b " Was macht dein Computer? Ich hoffe du hast ihn schon zurück!"
 dc.b $0a,$0a
 dc.b " Wie solltest du auch sonst diese famose Nachricht lesen ?"
 dc.b $0a,$0a
 dc.b " Aber genug geschwafelt, Ich will gleich zur Sache kommen !"
 dc.b $0a,$0a
 dc.b " Anbei sende ich dir 5 (fünf) Disketten, die Ich sobald es"
 dc.b $0a,$0a
 dc.b " geht gerne zurückhaben möchte !",$0a,$0a
 dc.b " Außerdem liegen einige nette Damen dem Brief bei die ich"
 dc.b $0a,$0a
 dc.b " dir hiermit vermache ! Also beeile dich bitte mit den Disks!"
 dc.b $0a,$0a
 dc.b " Den "
 dc.b $9b,"3;32;41m"
 dc.b " Digitiser "
 dc.b $9b,"0;31;40m"
 dc.b " kriege ich hofentlich nächste Woche !"
Text1ende:
    even
Wartet:
    dc.b      $9b,"3;33;40m",$9b,"22;5H"
    dc.b      "Bitte drücke » Return « !"
Wartetende:
    even
ein:
    dc.b      $9b,$30,$20,$70    ; Cursor unsichtbar !
eine:
    even
