home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 12 / joycplot.asm < prev    next >
Encoding:
Assembly Source File  |  1987-09-29  |  2.3 KB  |  98 lines

  1. ;***************************************
  2. ;Zugriff auf das Screen-Environment
  3. ;             des Joyce
  4. ;
  5. ;Funktionsnummern:
  6. ;  0 = Plot
  7. ;  1 = GetDotColor
  8. ;  2 = Byte schreiben
  9. ;  3 = Byte lesen
  10. ;
  11. ;Param.Offset im Array:
  12. ;  100 = Funktionsnr.
  13. ;  101 = Byte/Farbe
  14. ;  102/103 = X-Koord./Adresse
  15. ;  104/105 = Y-Koord.
  16. ;
  17. ;***************************************
  18. ;IX zeigt auf ArrayStart
  19. ;
  20.   ld a,(ix+100); Funktionsnr. holen
  21.   ld c,(ix+102); LoByte X/Adr
  22.   ld b,(ix+103); HiByte X/Adr
  23.   cp 2         ; Funktionsnr, testen
  24.   jr c,graph   ; -> Grafikfunktion
  25.   jr nz,rdbyte ; -> Byte lesen
  26. ;
  27. ;*** Funktion 2: Byte schreiben
  28.   ld a,(ix+101); Byte holen
  29.   ld (bc),a    ; und schreiben
  30.   ret
  31. ;
  32. ;*** Funktion 3: Byte lesen
  33.   rdbyte ld a,(bc); Byte lesen
  34.   ld (ix+101),a   ; und sichern
  35.   ret
  36. ;
  37. ;*** Adressberechnung f. Grafik
  38. graph
  39.   ld a,(ix+104); LoByte y
  40.   and &Hf8     ; maskieren
  41.   ld l,a
  42.   ld h,&H5b    ; h = &Hb6/2
  43.   add hl,hl    ; hl = y*2 + &Hb600
  44.   ld e,(hl)    ; Adresse aus
  45.   inc hl       ; RollerRAM lesen
  46.   ld d,(hl)
  47.   ex de,hl     ; Adresse nach hl
  48.   add hl,hl    ; hl = Start Textzeile
  49.   ld a,(ix+104); LoByte y
  50.   and 7        ; maskieren
  51.   ld e,a       ; y-Offset in Zeile
  52.   ld d,0       ; nach de
  53.   add hl,de    ; und addieren
  54.   ld a,c       ; LoByte x
  55.   and &Hf8     ; maskieren
  56.   ld e,a       ; x-Offset in Zeile
  57.   ld d,b       ; nach de
  58.   add hl,de    ; und addieren
  59. ;(hl enthaelt Screenadr.)
  60. ;
  61. ;*** Bitmaske erzeugen
  62.   ld a,c    ; LoByte x
  63.   and 7     ; maskieren
  64.   ld b,a    ; Shiftcount nach b
  65.   ld a,&H80
  66. loop
  67.   rrca      ; Akku rechts rotieren
  68.   djnz loop
  69.   ld c,a
  70. ;(c enthaelt Bitmaske)
  71. ;
  72.   ld a,(ix+100); Funktionsnr holen
  73.   or a         ; und testen
  74.   jr nz,rdcol  ; -> Farbe holen
  75. ;
  76. ;*** Punkt setzen
  77.   ld b,(ix+101); Farbnummer holen
  78.   rr b         ; und ins Carry rot.
  79.   sbc a,a      ; Farbmaske erzeugen
  80.   rr b         ; Test auf XOR-Modus
  81.   jr c,xormod
  82.   xor (hl)     ; mit Screenbyte und
  83. xormod
  84.   and c        ; Bitmaske verknuepfen
  85.   xor (hl)
  86.   ld (hl),a    ; und zurueckschreiben
  87.   ret
  88. ;
  89. ;*** Punktfarbe holen
  90. rdcol
  91.   ld a,(hl)       ; Screenbyte holen
  92.   and c           ; ausmaskieren
  93.   add a,&Hff      ; Pixel ins Carry
  94.   ld a,b     ; a = b = 0 (wegen djnz)
  95.   rla    ; Farbnummer nach a rotieren
  96.   ld (ix+101),a   ; und sichern
  97.   ret
  98.