home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-12-13 | 1.8 KB | 68 lines | [04] ASCII Text (0x0000) |
- ( LOADING AND SAVING SEQUENCES )
-
- HEX
-
- FORTH DEFINITIONS
-
-
- ( SYNTAX: PREFIX" /PATHNAME" )
-
- : PREFIX"
- 1 PAD C! ASCII " WORD PAD 1+ ! PAD C6 MLI
- ;
-
-
- : BSAVE" ( START.ADRS LENGTH -- )
- OVER ( ADRS LEN ADRS )
- ASCII " WORD DUP ( ADRS LEN ADRS WORD WORD )
- ROT ( ADRS LEN WORD WORD ADRS )
- 6 ( BIN ) SWAP ( ADRS LEN WORD WORD 6 ADRS )
- ( CREATEF USES TOP 3 PARMS, OPENF USES WORD, WRITEF USES ADRS,LEN )
- (CREATEF) ?DERR \ CREATE NEW FILE
- (OPENF) ?DERR \ PASS PATHNAME - RETURN FILE#
- (WRITEF) ?DERR \ WRITE THE BINARY DATA TO THE FILE
- 0 (CLOSEF) ?DERR
- ;
-
-
- ( SYNTAX: <SEQ-WORD> SAVESEQ" /PATHNAME" )
- ( SAVES FROM STARTADRS-2 )
-
- : SAVESEQ" ( START.ADRS LENGTH -- )
- 2+ SWAP 2 - SWAP BSAVE"
- ( GET START.ADRS-2 WHICH POINTS TO LENGTH BYTE ==> AUXTYPE)
- ;
-
-
- ( SYNTAX: SEQUENCE NEWWORD LOADSEQ" PART1" LOADSEQ" PART2" END-SEQ )
- : BLOAD"
- ASCII " WORD ( GET PATHNAME )
- (OPENF) ?DERR DUP ( OPENF RETURNS FILE# -- SAVE A COPY FOR LATER)
- (EOF) ?DERR ( --- F#, D.EOF )
- DROP DUP HERE SWAP ALLOT ( SAVE HERE & ALLOT USING LO 16 BITS FROM EOF)
- SWAP ROT ( SETUP START.ADRS, LENGTH, AND FILE# )
- (READF) ?DERR ( GET REST OF FILE )
- 0 (CLOSEF) ?DERR ( CLOSE IT)
- ;
-
-
- ( CONVERSION TO MIDI FILE FORMAT )
-
- ( SYNTAX: SEQUENCE NEWWORD OLDWORD MIDIPASTE END-SEQ )
-
- : CHKDRTN ( ADRS -- )
- @ DUP 80 < IF C, ELSE DUP 80 / 80 + C, 80 MOD C, THEN
- ;
-
- : CHKNOTES ( ADRS -- )
- 2+ C@ C, DUP 3+ C@ C,
- ;
-
- : MIDIPASTE ( START.ADDR LENGTH -- )
- 4 / ( GET NUMBER OF EVENTS )
- 0 C, 90 C, 0 C, 0 C, ( START MIDISEQ WITH STATUS BYTE )
- 0 DO DUP CHKDRTN DUP CHKNOTES 4 + LOOP
- 0 C, FF C, 2F C, ( STORE END OF MIDI SEQ )
- ;
-
- DEC