; GML-X1(MUSIC DATA LINKER) V1.00 ; 89/05/16 05:50PM ORG $DE00 JR PROGRAM.START #FILE EQU $1FA3 #ROPEN EQU $2009 #WOPEN EQU $1FAF #RDD EQU $1FA6 #WRD EQU $1FAC #MPRNT EQU $1FE2 #PRTHL EQU $1FBE #FPRNT EQU $1F9D #DTADR EQU $1F70 #SIZE EQU $1F72 ; IN DE=COMPILE TABLE NAME ; (FROM S-OS " GML-X1:filename1:filename2") ; filename1 SUBMIT FILE ; filename2 SAVE FILE ;FILE TABLE ; 1 |SAVE FILENAME ; 2 |1ST LOAD FILENAME ; 3 |2ND LOAD FILENAME ; | . ; | . ; | . DATA.AREA SAVENAME DW 0 DEWORK DW 0 LINKADR DW 0 LINKNO DB 0 LABEL.AREA FILE.TABLE.ADR EQU $D800 LINK.ADR.TABLE EQU $4000 ;LINK.DATA.ADR-$4000GA HAIRU. LINK.DATA.ADR EQU $4100 COMPILE.ADR EQU $9000 TEXT.LOAD.ADR EQU $4E80 GMC_X1 EQU $DF00 GRAM.HOSEI EQU $40 ; MEM->GRAM XFFR TO.GRAM ; IN HL=START MEM ADR ; DE=XFFR GRAM ADR ; BC=SIZE PUSH AF PUSH DE:PUSH BC:POP DE:POP BC ;EX BC,DE TO.GRAM.LP LD A,(HL) OUT (C),A INC HL INC BC DEC DE LD A,D OR E JR NZ,TO.GRAM.LP POP AF PUSH DE:PUSH BC:POP DE:POP BC ;EX BC,DE RET LOAD ; IN DE=FILE NAME,HL=LOAD START ADR ; OUT DE=NEXT FILE NAME PUSH HL LD A,4 ;Asc CALL #FILE JR C,LOADERR LD (DEWORK),DE CALL #ROPEN JR C,LOADERR POP HL LD (#DTADR),HL CALL #RDD JR C,LOADERR+1 LD DE,(DEWORK) INC DE RET LOADERR POP HL POP HL RET ;TO S-OS NEXT.LINE LD A,(DE) INC DE CP $0D RET Z JR NEXT.LINE ; ; ; ; PROGRAM.START LD HL,FILE.TABLE.ADR CALL LOAD LD (SAVENAME),DE LD HL,LINK.DATA.ADR LD (LINKADR),HL LD A,$FF LD (LINKNO),A LD DE,FILE.TABLE.ADR ; LD (LOADNAME),DE LINK.START LD A,(LINKNO) INC A LD (LINKNO),A ADD A,A LD C,A LD B,GRAM.HOSEI LD HL,(LINKADR) OUT (C),L INC BC LD A,H SUB GRAM.HOSEI OUT (C),A LINK.LOOP LD A,(DE) OR A JR Z,LINKEND IF A=$0D THEN INC DE:JR LINK.LOOP IF A=";" THEN CALL NEXT.LINE:JR LINK.LOOP LD HL,TEXT.LOAD.ADR CALL LOAD :PUSH DE:CALL #FPRNT:POP DE PUSH DE CALL GMC_X1 LD DE,COMPILE.ADR OR A:SBC HL,DE LD BC,HL INC BC LD HL,COMPILE.ADR LD DE,(LINKADR) CALL TO.GRAM LD (LINKADR),DE POP DE JR LINK.START LINKEND LD BC,LINK.ADR.TABLE LD HL,$9000 LINKEND.LOOP IN A,(C) LD (BC),A INC BC DEC HL LD A,H OR L JR NZ,LINKEND.LOOP CALL #MPRNT DB $0D DM "DATAEND $" DB $00 LD HL,(LINKADR) CALL #PRTHL CALL #MPRNT DB ".":$0D:$00 LD A,1 LD DE,(SAVENAME) CALL #FILE LD HL,(LINKADR) LD A,H SUB GRAM.HOSEI LD H,A LD (#SIZE),HL LD HL,LINK.ADR.TABLE LD (#DTADR),HL CALL #WOPEN RET C JP #WRD