Skip to content

Latest commit

 

History

History
72 lines (57 loc) · 3.94 KB

scrollen_in_kun_basic.md

File metadata and controls

72 lines (57 loc) · 3.94 KB
    S C R O L L I N G   I N   K U N - B A S I C 
                                                           
      
      Zo, nu gaan we weer eens terug naar het begin: BASIC! Ik heb 
      namelijk  een horizontale  scroll gemaakt,  geheel an  al in 
      BASIC geschreven!  Geen bitje  machinetaal! (Nou ja, die ene 
      sprong naar adres &H69 niet meegerekend, dat is om eventueel 
      aanwezige sprites te wissen. Die routine staat gewoon in het 
      BIOS.)  Het enige  wat je  nodig hebt  is KUN-BASIC, oftewel 
      XBASIC.
      
      Kijk  maar eens in de listing hoe ik het precies gedaan heb. 
      De  truuk  is:  VDP(19)  en  het  gebruik maken  van integer 
      variabelen.
      
      
                     V D P   R E G I S T E R   1 8 
      
      Zo!  Hier ben  ik nog  eens met wat aanvullende info over de 
      super-scroll in  BASIC. Zoals  eerder vermeld heb ik gebruik 
      gemaakt van VDP register 18 (VDP(19)) Dit register wordt ook 
      gebruikt  met  het  commando SET  ADJUST (X,Y).  Het is  ook 
      mogelijk om met dit register verticaal te scrollen, maar dat 
      zou  niet slim  zijn, want  met register  18 kun je dan over 
      slechts 16 pixels scrollen. vdp register 23 (VDP(23)) is dan 
      een beter  alternatief, omdat  dat register, nou ja, laat ik 
      maar  zeggen, speciaal  gemaakt is om verticaal te scrollen: 
      alle  8   bits  worden   gebruikt  voor  die  ene  richting: 
      verticaal.  Je kunt  zo dus heel eenvoudig en snel verticaal 
      scrollen, over  255 beeldlijnen  (ja! Onder  het scherm  zit 
      namelijk  ook nog het gedeelte waar de sprites, kleurwaardes 
      e.d.  opgeslagen  zijn,  maar  die  zie  je  normaal  niet). 
      Voorbeeld in de listing ALPHA.BAS in de laatste regels.
      
      Nu  even terug  naar register 20. Zoals gezegd worden 4 bits 
      voor   de   verticale  en   4  bits   voor  de   horizontale 
      positionering gebruikt.  Scrollen bestaat dus eigenlijk uit: 
      1  keer per interrupt 1 pixel "opschuiven" en in de tijd dat 
      je  zo   16  pixels  laat  opschuiven,  ÇÇn  keer  het  hele 
      beeldscherm m.b.v. het COPY-commando kopieert. Et voilÖ! Een 
      mooie  horizontale scroll!
      
      
                         P R O B L E E M P J E 
      
      Nou  is  er  nog  een  probleempje  met  de  ietwat  vreemde 
      programmering van het register: als je netjes 16 pixels wilt 
      scrollen, moet  je eerst  de waardes  8 t/m  15 invoeren, en 
      daarna pas 0 t/m 7, anders klopt er niet zoveel van.
      
      Zo,  dat was  het wel, ik hoop dat BASIC-programmeurs en ook 
      wel ML-programmeurs  in spÇ hiermee wel vooruit kunnen. Voor 
      voorbeelden kijk je maar in de listing.
      
      Och,  voor  ik  het  vergeet:  ik  gebruikte  wel  het woord 
      interrupt, maar  daarmee bedoel  ik de tijd die de VDP nodig 
      heeft  om een  beeld op  te bouwen, normaal dus 1/50 seconde 
      (of 1/60  bij Japanse  computers). Om  mooi die  tijd aan te 
      houden,  gebruik ik  de TIME  variabele, deze wordt namelijk 
      door de  VDP met  een opgehoogd, als de VDP klaar is met het 
      opbouwen van een beeld, dus elke 1/50 seconde.
      
      Volgende  keer  heb  ik  misschien  een  mooi programma  (in 
      BASIC!)  om  zelf  vector-graphics  te maken.  Een programma 
      waarmee je in principe elk willekeurig 3-dimensionaal object 
      kunt invoeren,  en dan  in elke richting kunt laten draaien, 
      verplaatsen,  vergroten e.d.  Lijnen die  dan (gedeeltelijk) 
      buiten het  beeld vallen  worden geclipt: ze worden dan toch 
      goed getekend!!
      
                                                     Randy Simons