home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / pc / 0600 / CCE_0657.ZIP / CCE_0657.PD / FAST_DVI.S < prev    next >
Text File  |  1993-10-13  |  3KB  |  152 lines

  1. ;********************************************************************
  2. ;***    *Schnelle* Ausgabe von Zeichen im Hintergrund        *****
  3. ;********************************************************************
  4.  
  5. EXPORT    prn_byte, exstall, old_vec, CookieJar
  6. IMPORT    shm_name, Fdelete, Cconws, Supexec, Fselect
  7.  
  8.     TEXT
  9. ; **********************************************
  10. ; ****    Sucht nach CookieJar (für Dialoge)  ****
  11. Cook:    DC.L    0
  12. CookieJar:
  13.     MOVE.L    D0,    Cook
  14.     PEA    SearchCookie(PC)
  15.     MOVE    #38,    -(A7)
  16.     TRAP    #14
  17.     ADDQ.L    #6,    A7
  18.     MOVE.L    Cook,    D0
  19.     RTS
  20.  
  21. SearchCookie:
  22.     MOVE.L    $5A0,    D0
  23.     BLE    NoCookie
  24.     MOVE.L    D0,    A0
  25.     MOVE.L    Cook,    D0
  26. cl:    CMP.L    (A0),    D0
  27.     BEQ    YesCookie
  28.     TST.L    (A0)+
  29.     BEQ    NoCookie
  30.     ADDQ.L    #4,    A0
  31.     BRA    cl
  32. YesCookie:
  33.     MOVE.L    4(A0),    Cook
  34.     RTS
  35. NoCookie:
  36.     CLR.L    Cook
  37.     RTS
  38. ;****    30.1.92    ****
  39.  
  40.  
  41. ; **** Programm durch Signal gekillt! */
  42. exstall:
  43.     TST.L    ptr
  44.     BEQ    no_ex_
  45.     LEA    ex_print(PC),A0
  46.     BSR    Supexec
  47. no_ex_:    
  48. ;    LEA    shm_name,A0    ; Temporäre Datei wird z.Zt. nicht gelöscht!
  49. ;    BSR    Fdelete
  50.     LEA    killed,    A0
  51.     BSR    Cconws
  52.     CLR    -(A7)
  53.     TRAP    #1
  54.     RTS
  55.  
  56. ex_print:
  57.     CLR.L    anzahl
  58.     BCLR    #0,    $FA09.W    ; Ausschalten
  59.     BCLR    #0,    $FA15.W    ; Maskieren
  60.     MOVE.L    old_vec,$100.W
  61.     CLR.L    old_vec
  62.     RTS
  63.  
  64. /* Idee aus ST-Computer 5/92, sehr stark modifiziert */
  65. prn_byte:
  66.     MOVE.L    D0,    anzahl    ; Anzahl
  67.     BLE    no_print
  68.     MOVE.L    A0,    ptr
  69.     LEA    i_byte(PC),A0
  70.     BSR    Supexec
  71. no_print:RTS
  72.  
  73. ;* Interrupt installieren *
  74. i_byte:    LEA    xbra,    A0    ; Xbra-Routine bauen
  75.     MOVE.L    #'XBRA',(A0)+
  76.     MOVE.L    #'DVIR',(A0)+
  77.     MOVE.L    $100.W,    (A0)+    ; alter Vektor
  78.     MOVE.L    #$07C0700,(A0)+    ; ORI #$0700,SR
  79.     MOVE.W    #$4EB9,    (A0)+    ; JSR out
  80.     MOVE.L    #out,    (A0)+
  81.     MOVE.W    #$4E73,    (A0)+    ; RTE
  82.     MOVE.L    #int,    $100.W
  83.  
  84.     BCLR    #0,    $FA03.W
  85.     BCLR    #0,    $FA05.W
  86.     BSET    #0,    $FA09.W    ; Anschalten
  87.     BSET    #0,    $FA15.W    ; Maskieren
  88.     MOVE.B    #$FE,    $FA11.W
  89.  
  90.     MOVE.B    #14,    $8800.W        ; Strobe aus
  91.     MOVE.B    $8800.W,D0
  92.     BSET    #5,    D0
  93.     MOVE.B    D0,    $8802.W
  94.  
  95.  
  96. ;* Ab hier Druck *
  97. ;* Byte ausgeben *
  98. out:    SUBQ.L    #1,    anzahl    ; Schon fertig?
  99.     BMI    ende
  100.     MOVEM.L    D0/A0,    -(A7)
  101. ;    BCLR    #0,    $FA15.W    ; Demaskieren
  102.     MOVE.B    #15,    $8800.W
  103.     MOVE.L    ptr,    A0
  104.     MOVE.B    (A0)+,    $8802.W
  105.     MOVE.L    A0,    ptr
  106.  
  107.     MOVE    wait1,    D0
  108. .time1:    NOP
  109.     DBRA    D0,    .time1
  110.  
  111.     MOVE.B    #14,    $8800.W
  112.     MOVE.B    $8800.W,D0
  113.     BCLR    #5,    D0
  114.     MOVE.B    D0,    $8802.W
  115.     BSET    #5,    D0
  116.     MOVE.W    D0,    A0
  117.  
  118.     MOVE    wait2,    D0
  119. .time2:    NOP
  120.     DBRA    D0,    .time2
  121.     MOVE.W    A0,    D0
  122.     MOVE.B    D0,    $8802.W
  123.  
  124.     MOVEM.L    (A7)+,    D0/A0
  125. ;    BSET    #0,    $FA15.W    ; Maskieren
  126.     MOVE.B    #$FE,    $FA11.W
  127.     RTS
  128.  
  129. ;* Beenden *
  130. ende:    MOVE.L    old_vec,$100.W
  131.     BCLR    #0,    $FA09.W    ; Ausschalten
  132.     BCLR    #0,    $FA15.W    ; Demaskieren
  133.     CLR.L    old_vec
  134.     RTS
  135.  
  136.  
  137.  
  138.     DATA
  139.     DC.B    'PATCH:'
  140. wait1:    DC.W    0
  141. wait2:    DC.W    0
  142. killed:    DC.B    27,'H ',7,0
  143.  
  144.     BSS
  145. anzahl:    DS.L    1
  146. ptr:    DS.L    1
  147.  
  148. ;* Die Interuptroutine */
  149. xbra:    DS.L    2
  150. old_vec:DS.L    1
  151. int:    DS.L    3
  152.