home *** CD-ROM | disk | FTP | other *** search
/ Commodore Disc 53 / Commodore_Disc_53_19xx_-_de.d64 / lektion8 < prev    next >
Text File  |  2022-10-26  |  2KB  |  40 lines

  1. /* Lektion8
  2.  
  3. Blockfunktionen
  4.  
  5. Zeichenketten, also Strings, kommen beim Programmieren nicht gerade selten vor. Sie byteweise mit einfachen CP-Befehlen zu bearbeiten kostet Zeit. Damit es superschnell geht, gibt es bereits die fertigen, in Maschinensprache vorliegende Routinen fill, find, <>find, comp, <comp, >comp und copy:
  6.  
  7. ( adr , wert , anzahl fill )
  8. ( anf , ende , wert find )
  9. ( anf , ende , wert <>find )
  10. ( adr1 , adr2 , anzahl comp )
  11. ( adr1 , adr2 , anzahl <comp )
  12. ( adr1 , adr2 , anzahl >comp )
  13. ( quelle , ziel , anzahl copy )
  14.  
  15. fill fuellt den Speicher ab adr mit einer Anzahl Zeichen vom Wert wert.
  16.  
  17. find durchsucht einen Speicherbereich von anf bis ende nach dem Zeichen wert und liefert als Ergebnis die Adresse, in der das Zeichen vorliegt, oder Null, falls es nicht in diesem Bereich gefunden wurde.
  18.  
  19. <>find sucht nach einem Zeichen ungleich wert.
  20.  
  21. comp vergleicht zwei Speicherbereiche adr1 und adr2 auf eine Anzahl uebereinstimmender Bytes. Ergebnis bei Uebereinstimmung ist 0xffff, anderenfalls Null.
  22.  
  23. <comp vergleicht, ob die Zeichenkette in adr1 alphabetisch kleiner ist.
  24.  
  25. >comp vergleicht auf alphabetisch groesser.
  26.  
  27. copy kopiert aus quelle eine Anzahl von Bytes nach ziel. Bei ueberlappenden Speicherbereichen werden, sofern nach hoeheren Adressen kopiert wird, die zu kopierenden Daten von den Kopien ueberschrieben. Dies soll in einer spaeteren CP-Version geaendert werden.
  28.  
  29. Um die Schnelligkeit noch besser als in Lektion7 sehen zu koennen, schreibt unser Programmbeispiel diesmal 256 Bildschirme mit je einem anderen Zeichen voll. Dies dauert lediglich sieben Sekunden.
  30. */
  31.  
  32.  
  33. main()
  34. begin
  35.   int wert 0 ;
  36. : lab ( 1024 , wert ] , 1000 fill )
  37.   wert by ++] if lab
  38. bend
  39.  
  40. /* Weiter mit lektion9 */