home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-06-23 | 1.8 KB | 99 lines | [04] ASCII Text (0x0000) |
- ( PASTING SEQUENCES )
-
- HEX
-
- VARIABLE LASTDLY
- VARIABLE LASTDLYLEN
- VARIABLE FIRSTDLY
- VARIABLE FIRSTDLYLEN
-
- : PASTE ( ADRS LEN -- )
-
- \ MAKE SURE WE HAVE A DELAY
- NEEDZERODLY IF 0 C, 0 TO NEEDZERODLY THEN
-
- \ GET LAST DELAY OF CURRENT SEQUENCE
- 0 LASTDLY !
- 1 LASTDLYLEN !
- HERE 2 - C@ \ CHECK 2 PREVIOUS BYTES TO GET DELAY
- DUP 7F > IF
- 80 - 80 * LASTDLY !
- 2 LASTDLYLEN !
- ELSE
- DROP
- THEN
- HERE 1 - C@
- LASTDLY @ + LASTDLY !
-
- ." STACK BEFORE GETTING FIRST DELAY" S.
- \ GET FIRST DELAY OF NEW SEQUENCE
- SWAP 8 + SWAP OVER \ POINT TO FIRST DELAY
- C@
- 0 FIRSTDLY !
- 1 FIRSTDLYLEN !
- DUP 7F > IF
- 80 - 80 * FIRSTDLY !
- 2 FIRSTDLYLEN !
- OVER 1+ C@
- FIRSTDLY @ + FIRSTDLY !
- ELSE
- FIRSTDLY !
- THEN
-
- ." LASTDLY=" LASTDLY ?
- ." LASTDLYLEN=" LASTDLYLEN ?
- ." FIRSTDLY=" FIRSTDLY ?
- ." FIRSTDLYLEN=" FIRSTDLYLEN ?
- ." HERE=" HERE .
-
- \ STORE SUM OVER OLD DELAY
- LASTDLYLEN @ -1 * ALLOT
- LASTDLY @ FIRSTDLY @ +
- DUP 7F > IF
- DUP 80 / 80 + C,
- 80 MOD
- THEN C,
-
- \ PREPARE FOR CMOVE
- \ STACK CURRENTLY HAS: ADRS OF FIRSTDLY, SEQ LEN
- S.
- SWAP FIRSTDLYLEN @ + \ POINT TO FIRST EVENT OF NEW SEQ
- S.
- SWAP 8 - FIRSTDLYLEN @ - 3 - \ ADJUST LEN FOR HEADER (8)
- \ AND TRAILER (3) AND FIRST DELAY
- S.
- DUP ROT ROT \ LEN ADRS LEN
- S.
- HERE SWAP
- ." STACK BEFORE CMOVE: " S.
- CMOVE \ LEN ADRS HERE LEN CMOVE -- LEN
- ALLOT
- ." HERE IS NOW: " HERE .
-
- 1 TO DLYLENGTH \ ADJUST DLYLENGTH FOR FUTURE EVENTS
- HERE 2 - C@ 7F > IF
- 2 TO DLYLENGTH
- THEN
- ." DLYLENGTH IS " DLYLENGTH .
-
- 0 TO PREVSTAT
- 0 TO NEEDZERODLY \ GET READY FOR ADDING MORE TO SEQUENCE
- ;
-
- \ TEST DATA
- 0 TO PLAYING
- SEQUENCE ER1
- EN // C ON // C OFF //
- END-SEQ
- SEQUENCE ER2
- QN // C ON // C OFF //
- END-SEQ
- SEQUENCE ER3
- EN // C ON // C OFF QN //
- END-SEQ
- SEQUENCE ER4
- QN // C ON // C OFF EN //
- END-SEQ
- SEQUENCE ER5
- C ON QN // C OFF
- END-SEQ