home *** CD-ROM | disk | FTP | other *** search
/ Set of Apple II Hard Drive Images / hard.hdv / HARD / FORTH / PASTE.TST < prev    next >
Encoding:
Text File  |  1995-06-23  |  1.8 KB  |  99 lines  |  [04] ASCII Text (0x0000)

  1. ( PASTING SEQUENCES )
  2.  
  3. HEX
  4.  
  5. VARIABLE LASTDLY
  6. VARIABLE LASTDLYLEN
  7. VARIABLE FIRSTDLY
  8. VARIABLE FIRSTDLYLEN
  9.  
  10. : PASTE  ( ADRS LEN -- )
  11.  
  12. \ MAKE SURE WE HAVE A DELAY
  13. NEEDZERODLY IF  0 C,  0 TO NEEDZERODLY  THEN
  14.  
  15. \ GET LAST DELAY OF CURRENT SEQUENCE
  16. 0 LASTDLY !  
  17. 1 LASTDLYLEN !
  18. HERE 2 - C@  \ CHECK 2 PREVIOUS BYTES TO GET DELAY
  19. DUP 7F > IF 
  20.     80 - 80 * LASTDLY !
  21.     2 LASTDLYLEN !
  22. ELSE
  23.     DROP
  24. THEN
  25. HERE 1 - C@
  26. LASTDLY @ + LASTDLY !
  27.  
  28. ." STACK BEFORE GETTING FIRST DELAY" S.
  29. \ GET FIRST DELAY OF NEW SEQUENCE
  30. SWAP 8 + SWAP OVER \ POINT TO FIRST DELAY
  31. C@
  32. 0 FIRSTDLY !  
  33. 1 FIRSTDLYLEN !
  34. DUP 7F > IF 
  35.     80 - 80 * FIRSTDLY !
  36.     2 FIRSTDLYLEN !
  37.     OVER 1+ C@
  38.     FIRSTDLY @ + FIRSTDLY !
  39. ELSE
  40.     FIRSTDLY !
  41. THEN
  42.  
  43. ." LASTDLY=" LASTDLY ?
  44. ." LASTDLYLEN=" LASTDLYLEN ?
  45. ." FIRSTDLY=" FIRSTDLY ?
  46. ." FIRSTDLYLEN=" FIRSTDLYLEN ?
  47. ." HERE=" HERE .
  48.  
  49. \ STORE SUM OVER OLD DELAY
  50. LASTDLYLEN @ -1 * ALLOT
  51. LASTDLY @ FIRSTDLY @ + 
  52. DUP 7F > IF 
  53.     DUP 80 / 80 + C,
  54.     80 MOD
  55. THEN C,
  56.  
  57. \ PREPARE FOR CMOVE
  58. \ STACK CURRENTLY HAS: ADRS OF FIRSTDLY, SEQ LEN
  59. S.
  60. SWAP FIRSTDLYLEN @ +     \ POINT TO FIRST EVENT OF NEW SEQ
  61. S.
  62. SWAP 8 - FIRSTDLYLEN @ - 3 -  \ ADJUST LEN FOR HEADER (8)
  63.                          \  AND TRAILER (3) AND FIRST DELAY
  64. S.
  65. DUP ROT ROT            \ LEN ADRS LEN
  66. S.
  67. HERE SWAP 
  68. ." STACK BEFORE CMOVE: " S.
  69. CMOVE    \ LEN ADRS HERE LEN CMOVE -- LEN
  70. ALLOT
  71. ." HERE IS NOW: " HERE .
  72.  
  73. 1 TO DLYLENGTH     \ ADJUST DLYLENGTH FOR FUTURE EVENTS
  74. HERE 2 - C@ 7F > IF
  75.      2 TO DLYLENGTH
  76. THEN
  77. ." DLYLENGTH IS " DLYLENGTH .
  78.  
  79. 0 TO PREVSTAT
  80. 0 TO NEEDZERODLY   \ GET READY FOR ADDING MORE TO SEQUENCE
  81. ;
  82.  
  83. \ TEST DATA
  84. 0 TO PLAYING
  85. SEQUENCE ER1
  86. EN // C ON // C OFF //
  87. END-SEQ
  88. SEQUENCE ER2
  89. QN // C ON // C OFF //
  90. END-SEQ
  91. SEQUENCE ER3
  92. EN // C ON // C OFF QN //
  93. END-SEQ
  94. SEQUENCE ER4
  95. QN // C ON // C OFF EN //
  96. END-SEQ
  97. SEQUENCE ER5
  98. C ON QN // C OFF 
  99. END-SEQ