;*********************************************************************** ;* * ;* MX336 PROGRAM SYSTREM HEADER FILE (1986/01/27) * ;* * ;*********************************************************************** ;--------------- V50 IO ADDRESS DEFINE ------------------------------------ ; [SYSTEM IO CONTROL ] OPCN EQU 0FFFEH ; OP CONNECTION OPSEL EQU 0FFFDH ; OP SELECTION OPHA EQU 0FFFCH ; OP HIGH ADDRESS (00) DULA EQU 0FFFBH ; DMAU LOW ADDRESS (F0) IULA EQU 0FFFAH ; IUL (E0) TULA EQU 0FFF9H ; TUL (C0) SULA EQU 0FFF8H ; SUL (D0) WCY2 EQU 0FFF6H ; WAIT CYCLE 2 WCY1 EQU 0FFF5H ; WAIT CYCLE 1 WMB EQU 0FFF4H ; WAIT MEMORY BOUNDARY RFC EQU 0FFF2H ; REFRESH CONTROL TCKS EQU 0FFF0H ; TIMER CLOCK SELECTION ;[ TCU ] TCU EQU 0C0H TCT0 EQU TCU+0 ; TIMER 0 READ/WRITE TCT1 EQU TCU+2 ; TIMER 1 TCT2 EQU TCU+4 ; TIMER 2 TMD EQU TCU+6 ; TIMER MODE ;[ SCU ] SCU EQU 0D0H SRB EQU SCU+0 ; SERIAL RECIEVE BUFFER STB EQU SRB ; SERIAL TRANSMITTE BUFFER SST EQU SCU+2 ; SERIAL STATUS SCM EQU SST ; SERIAL COMMAND SMD EQU SCU+4 ; SERIAL MODE SMK EQU SCU+6 ; SERIAL INTERAPT MASK ;[ ICU ] ICU EQU 0E0H IRQ EQU ICU ; INTERAPT REQUEST IMK EQU ICU+2 ; INTERAPT MASK ;[ DMAU ] ;DMAU EQU 0F0H ** no use dmac ** ;DICM EQU DMAU+0 ;DCH EQU DMAU+1 ;DBC EQU DMAU+2 ;DBA EQU DMAU+4 ;DDC EQU DMAU+8 ;DMD EQU DMAU+10 ;DST EQU DMAU+11 ;DMK EQU DMAU+15 ;--------------- MX336 IO ADDRESS DEFINE ---------------------------------- IO1S EQU 018H ; PORT 1 IO2S EQU 020H ; PORT 2 ADST EQU 060H ; AD START PORT ADCU EQU 068H ; AD CONVERTER UNIT KBDU EQU 028H ; OM100 MUSIC KEYBOARD CONU EQU IO2S+4 ; CONCOLSE KEY SWITCH LCDU EQU 070H ; LCD PORT LEDU EQU 078H ; LED DISPLAY PORT GAAS EQU 000H ; PCM GATEARRAY A GABS EQU 008H ; PCM GATEARRAY B EBBU EQU 080H ; OUTPUT DCF/DCA/DCQ MBNK EQU IO2S+2 ; WAVE MEMORY BANK CHANGE FDCU EQU 010H ; FDD CONTROL PIA11 EQU 01AH ; PIA12 EQU 01CH ; STBI EQU 040H ; DATA STB ;--------------- GROBAL SYMBOLS ------------------------------------------- OK EQU 00000H ; OK FLAG ERROR EQU 0FFFFH ; ERROR FLAG NULL EQU 00000H ; NULL CHARACTER ; TIMESET EQU 007D0H ; TIME INTERVAL = 0.5msec*4MHz ; EXTPROG EQU 06000H ; External program start address ;--------------- SEGMEMT DEFINE ------------------------------------------- PRGSEG EQU 0F000H ; PROGRAM SEGMENT MEMSEG EQU 00000H ; WORK MEMORY SEGMENT PCMSEG EQU 01000H ; PCM MEMORY SEGMENT ;--------------- INTERPAT MASK BIT DEFINE --------------------------------- TIMEBIT EQU 00000001B ; TIME SCHEDULER MIDIBIT EQU 00000010B ; MIDI SCU PCMLBIT EQU 00000100B ; PCM LOOP END PCMRBIT EQU 00001000B ; PCM DATA READY KYBDBIT EQU 01000000B ; KEY BOARD SEQCBIT EQU 10000000B ; SEQUENCER CLOCK PORTBIT EQU 00100000B ; PORT INTERAPT FDDSIZ EQU 1024 ; FDD BUFFER SIZE ; ---------- PARAMETERS ------------------------------------------ MAXB EQU 8 MAXV EQU 64 MAXE EQU 8 MAXG EQU 8 MAXR EQU 256 MAXC EQU 16 ; ---------- STRUCTER SIZE --------------------------------------- VSIZE EQU 00C0H ;(sizeof (struct voicedata) ) BSIZE EQU 0290H ;(sizeof (struct bankdata) ) ESIZE EQU 0018H ;(sizeof (struct efectdata)) MSIZE EQU 0004H ;(sizeof (struct mididata)) GSIZE EQU 003AH ;(sizeof (struct gendata)) ; ---------- KEYBOARD STATUS ------------------------------------- OM100 EQU 0 ;* iner key priolity */ MIDI EQU 1 ;* midi in data */ SEQOUT EQU 2 ;* sequencer */ ;* ---------- consol switches define ---------------------------- */ ZERO EQU 0 ; tenkey 0-9 */ INC EQU 10 ; increment value */ DEC EQU 11 ; decrement */ UP EQU 16 ; move up cursor */ DOWN EQU 17 ; down */ RIGHT EQU 18 ; right */ LEFT EQU 19 ; left */ ENT EQU 20 ; entry menu */ ESC EQU 21 ; escape */ DISP EQU 22 ; display mode change */ PLAY EQU 24 ; play mode */ MOD EQU 25 ; parameter modify */ CALSET EQU 26 ; scrach switch */ TRANS EQU 27 ; transpose */ TUNE EQU 28 ; tunning */ ; --------------- basic data structure define ------------------- */ voicedata struc wavst DB 4 DUP(?) ;/* wave start address 00*/ waved DB 4 DUP(?) ;/* end 04*/ genst DB 4 DUP(?) ;/* generator start address 08*/ gened DB 4 DUP(?) ;/* end 0C*/ ; loop DB 2 DUP(?) ;/* ga mode status (see gaa) 10*/ loop_sus DB 1 DUP(?) ;/* loop sustain number (0-7) 12*/ loop_end DB 1 DUP(?) ;/* loop end number (0-7) 13*/ loopst DB MAXE*4 DUP(?) ;/* loop start address 14*/ ; ;/* --- b15~b12 for loop fine */ looped DB MAXE*4 DUP(?) ;/* loop end address 34*/ ; ;/* --- b15 for jumploop flg */ loopxf DB MAXE*2 DUP(?) ;/* loop x feed time 54*/ looptm DB MAXE*2 DUP(?) ;/* loop time ( or times) 64*/ ; dcp DB 2 DUP(?) ;/* dcp voice pitch with detune74*/ dcf DB 1 DUP(?) ;/* frequency offset value 76*/ dcq DB 1 DUP(?) ;/* filter Q offset value 77*/ dca_sus DB 1 DUP(?) ;/* dca envelop sustain point 78*/ dca_end DB 1 DUP(?) ;/* dca envelop end point 79*/ dca_rate DB MAXE DUP(?) ;/* dca envelop rate value 7A*/ dca_stop DB MAXE DUP(?) ;/* dca envelop stop value 82*/ ; dcf_sus DB 1 DUP(?) ;/* dcf envelop sustain point 8A*/ dcf_end DB 1 DUP(?) ;/* dcf envelop end point 8B*/ dcf_rate DB MAXE DUP(?) ;/* dcf envelop rate value 8C*/ dcf_stop DB MAXE DUP(?) ;/* dcf envelop stop value 94*/ ; lfo_delay DB 2 DUP(?) ;/* lfo delay time 9C*/ lfo_name DB 1 DUP(?) ;/* lfo wave form define 9E*/ ; ;/* --- b7 use sync (1:ON) */ lfo_atck DB 1 DUP(?) ;/* lfo attack value 9F*/ lfo_rate DB 1 DUP(?) ;/* lfo rate ( time increment )A0*/ lfo_dcp DB 1 DUP(?) ;/* lfo pitch depth A1*/ lfo_dca DB 1 DUP(?) ;/* lfo amp depth A2*/ lfo_dcf DB 1 DUP(?) ;/* lfo filter depth A3*/ lfo_dcq DB 1 DUP(?) ;/* lfo fileter Q depth A4*/ vel_dcq_kf DB 1 DUP(?) ;/* initial touch dcq follow A5*/ ; dca_kf DB 1 DUP(?) ;/* dca keyboard follow depth A6*/ dca_rs DB 1 DUP(?) ;/* dca noterate scaling depth A7*/ dcf_kf DB 1 DUP(?) ;/* dcf keyboard follow depth A8*/ dcf_rs DB 1 DUP(?) ;/* dcf noterate scaling depth A9*/ ; vel_dca_kf DB 1 DUP(?) ;/* initial touchamp key followAA*/ vel_dca_rs DB 1 DUP(?) ;/* initial touchamp rate scaleAB*/ vel_dcf_kf DB 1 DUP(?) ;/* initial touchdcf key followAC*/ vel_dcf_rs DB 1 DUP(?) ;/* initial touchdcf rate scaleAD*/ ; vhwid DB 1 DUP(?) ;/* high width MIDI code AE*/ vlwid DB 1 DUP(?) ;/* low AF*/ vcent DB 1 DUP(?) ;/* keynote centor B0*/ ; samp DB 1 DUP(?) ;/* sampling frequency B1*/ ; vname DB 14 DUP(?) ;/* wave name B2*/ ; ;/* total byte -- 0C0 */ voicedata ends ;/* -------------------- bank data structure -------------------- */ bankdata struc bstep DB 2 DUP(?) ;/* bank use voice number 00*/ bhwid DB MAXV DUP(?) ;/* high keynote width 02*/ blwid DB MAXV DUP(?) ;/* low 42*/ bhtch DB MAXV DUP(?) ;/* high keytouch width 82*/ bltch DB MAXV DUP(?) ;/* low C2*/ bcent DB MAXV DUP(?) ;/* keynote centor 102*/ mchn DB MAXV DUP(?) ;/* generate midi channel 142*/ gchn DB MAXV DUP(?) ;/* generate channel select 182*/ bvol DB MAXV DUP(?) ;/* generate outptu level 1C2*/ vp DB MAXV*2 DUP(?) ;/* voice data pointer 202*/ bname DB 14 DUP(?) ;/* bank name 282*/ ; ;/* --- total byte 290 */ bankdata ends ;/* -------------------- efector controler structure define ----- */ effectdata struc bend DB 1 DUP(?) ;/* bender depth 00*/ mvol DB 1 DUP(?) ;/* master volume value 01*/ suss DB 1 DUP(?) ;/* sustain switch ON,OFF 02*/ ; mod_lfp DB 1 DUP(?) ;/* modulation lfo pitch 03*/ mod_lfa DB 1 DUP(?) ;/* lfa amp 04*/ mod_lff DB 1 DUP(?) ;/* lfo filter 05*/ mod_lfq DB 1 DUP(?) ;/* lfo filter q 06*/ mod_dcf DB 1 DUP(?) ;/* filter offset 07*/ mod_dca DB 1 DUP(?) ;/* amp offset 08*/ mod_dcq DB 1 DUP(?) ;/* fil q offset 09*/ ; fot_lfp DB 1 DUP(?) ;/* foot volume lfo pitch 0A*/ fot_lfa DB 1 DUP(?) ;/* lfo amp 0B*/ fot_lff DB 1 DUP(?) ;/* lfo filter 0C*/ fot_lfq DB 1 DUP(?) ;/* lfo filter q 0D*/ fot_dca DB 1 DUP(?) ;/* amp offset 0E*/ fot_dcf DB 1 DUP(?) ;/* filter offset 0F*/ fot_dcq DB 1 DUP(?) ;/* fil q offset 10*/ ; aft_lfp DB 1 DUP(?) ;/* after touch lfo pitch 11*/ aft_lfa DB 1 DUP(?) ;/* lfo amp 12*/ aft_lff DB 1 DUP(?) ;/* lfo filter 13*/ aft_lfq DB 1 DUP(?) ;/* lfo filter q 14*/ aft_dca DB 1 DUP(?) ;/* amp offset 15*/ aft_dcf DB 1 DUP(?) ;/* filter offset 16*/ aft_dcq DB 1 DUP(?) ;/* fil q offset 17*/ ; ;/* total byte = 18 */ effectdata ends ;/*******************************/ ;/* FZ-1 WORK AREA */ ;/*******************************/ ORG 0400H keycount DB 1 DUP(?) ; numbers of key_on lastresp DB 1 DUP(?) ; the last touch response vaule 1~127 keymap DB 8 DUP(?) ; key on/off table sch DB 2 DUP(?) ; big timer counter olddca DB 16 DUP(?) ; generater data newdca DB 16 DUP(?) ; --- key DB 1 DUP(?) ; console key code kkk DB 1 DUP(?) ; --- kls DB 1 DUP(?) ; --- sls DB 1 DUP(?) ; --- ki0 DB 4 DUP(?) ; --- ki1 DB 4 DUP(?) ; --- rpc DB 2 DUP(?) ; repeat counter for console key adc1 DB 8 DUP(?) ; adc() static adcb1 DB 2 DUP(?) ; --- env DB 1 DUP(?) ; ad convert vaule of line or mic in vol DB 1 DUP(?) ; ad convert value of entry volume old DB 8 DUP(?) ; last ad convert value max DB 8 DUP(?) ; max ad value min DB 8 DUP(?) ; min ad value cenh DB 1 DUP(?) ; center high limit for bender cenl DB 1 DUP(?) ; center low limit for bender stat DB 3 DUP(?) ; midi status byte par1 DB 3 DUP(?) ; midi first data byte nownote DB 2 DUP(?) ; last MIDI key code and response genbit DB 2 DUP(?) ; generater bit:num lastiy DB 2 DUP(?) ; last generater pointer excn DB 1 DUP(?) ; exclusive midi data counter nowled DB 1 DUP(?) ; now led rand DB 2 DUP(?) ; random number for lfo generate jump0 DB 2 DUP(?) ; con()'s static lev DB 1 DUP(?) ; --- lv0 DB 3 DUP(?) ; --- dm DB 1 DUP(?) ; --- dm0 DB 3 DUP(?) ; --- sm DB 1 DUP(?) ; --- sm0 DB 3 DUP(?) ; --- mm DB 1 DUP(?) ; --- mm0 DB 3 DUP(?) ; --- lpos DB 2 DUP(?) ; para_change() parameter cpos DB 2 DUP(?) ; --- lmax DB 2 DUP(?) ; --- cmax DB 2 DUP(?) ; --- loff DB 2 DUP(?) ; --- ltop DB 2 DUP(?) ; --- vpos DB 2 DUP(?) ; --- posv DB 2 DUP(?) ; graph() parameter posp DB 2 DUP(?) ; --- vhi DB 2 DUP(?) ; --- wid DB 4 DUP(?) ; --- pos DB 16 DUP(?) ; --- grast DB 4 DUP(?) ; --- graed DB 4 DUP(?) ; --- pp1st DB 4 DUP(?) ; --- pp1ed DB 4 DUP(?) ; --- pp2st DB 4 DUP(?) ; --- pp2ed DB 4 DUP(?) ; --- mcount DB 2 DUP(?) ; meter() or jobbing() static mlevel DB 2 DUP(?) ; --- mpeek DB 2 DUP(?) ; --- mtrig DB 2 DUP(?) ; --- bb0 DB 1 DUP(?) ; brink() static bb1 DB 1 DUP(?) ; --- l_pos DB 4 DUP(?) ; d_graph() static l_cur DB 2 DUP(?) ; --- l_vhi DB 2 DUP(?) ; --- l_brk DB 2 DUP(?) ; --- trig DB 1 DUP(?) ; recording trig level (0~255) rmod DB 1 DUP(?) ; recording mode gain DB 1 DUP(?) ; recording gain 0=L 1=H rate DB 1 DUP(?) ; sampling rate (0:36kHz,1:18kHz,2:9kHz) length DB 2 DUP(?) ; recording length ( 10msec ) sintable DB 48 DUP(?) ; sin table for sin_synthesis add_v1 DB 1 DUP(?) ; source 1 voice # (0~63) add_v2 DB 1 DUP(?) ; source 2 voice # (0~63) add_l1 DB 1 DUP(?) ; source 1 mix level (0~255) add_l2 DB 1 DUP(?) ; source 2 mix level (0~255) add_t1 DB 1 DUP(?) ; source 1 detune (-127~127) add_t2 DB 1 DUP(?) ; source 2 detune (-127~127) add_dly DB 4 DUP(?) ; source 2 delay WORD address add_xs1 DB 4 DUP(?) ; xmix start WORD address add_xs2 DB 4 DUP(?) ; xmix end WORD address devnum DB 2 DUP(?) ; device number (0:FDD,1:MIDI,2:PORT) restat DB 2 DUP(?) ; remote() static remode DB 2 DUP(?) ; --- cat DB 160 DUP(?) ; claster alocation table dloc DB 2 DUP(?) ; disk location counter xysheet DB 768 DUP(?) ; lcd graphic dot image voice_num DB 2 DUP(?) ; disk subroutine's static bank_num DB 2 DUP(?) ; --- wave_num DB 2 DUP(?) ; --- cnv_sta DB 2 DUP(?) ; --- cnv_pos DB 2 DUP(?) ; --- cnv_rp DB 4 DUP(?) ; --- memsize DB 2 DUP(?) ; wave memory size (*64Kbyte) mi DB 260 DUP(?) ; midi input ring buffer mo DB 260 DUP(?) ; midi output ring buufer kb DB 260 DUP(?) ; keyboard ring buffer qi DB 260 DUP(?) ; sequencer input ring buffer qo DB 260 DUP(?) ; sequencer output ring buffer midirev DB 1 DUP(?) ; midi recieve channel midisnd DB 1 DUP(?) ; midi send channel midimsk DB 1 DUP(?) ; midi mask status midiprg DB 1 DUP(?) ; midi program change resister (-1:MASK) seq DB 2 DUP(?) ; sequencer status godtime DB 4 DUP(?) ; god time for sequencer oldtime DB 4 DUP(?) ; old time for sequencer tempo DB 2 DUP(?) ; tempo counter mastertune DB 2 DUP(?) ; master tune (1/256 sub tone) pbn DB 2 DUP(?) ; play bank number (0-7) pb DB 4 DUP(?) ; &bank[pbn] evn DB 2 DUP(?) ; edit voice number (0-63) ev DB 4 DUP(?) ; &voic[evn] bank DB 5248 DUP(?) ; struct bankdata bank[8] voic DB 12288 DUP(?) ; struct voicdata voic[64] pare DB 24 DUP(?) ; struct paradata para nowe DB 384 DUP(?) ; run time paradata nowe[16] gene DB 464 DUP(?) ; run time generater data psa DB 2 DUP(?) ; rom entry static pca DB 2 DUP(?) ; --- pwa DB 2 DUP(?) ; --- tranv DB 1 DUP(?) ; transpose value tunev DB 1 DUP(?) ; tunning value PUBLIC tranv,tunev PUBLIC keycount PUBLIC lastresp PUBLIC keymap PUBLIC sch PUBLIC olddca PUBLIC newdca PUBLIC key PUBLIC kkk PUBLIC kls PUBLIC sls PUBLIC ki0 PUBLIC ki1 PUBLIC rpc PUBLIC adc1 PUBLIC adcb1 PUBLIC env PUBLIC vol PUBLIC old PUBLIC max PUBLIC min PUBLIC cenh PUBLIC cenl PUBLIC stat PUBLIC par1 PUBLIC nownote PUBLIC genbit PUBLIC lastiy PUBLIC excn PUBLIC nowled PUBLIC rand PUBLIC jump0 PUBLIC lev PUBLIC lv0 PUBLIC dm PUBLIC dm0 PUBLIC sm PUBLIC sm0 PUBLIC mm PUBLIC mm0 PUBLIC lpos PUBLIC cpos PUBLIC lmax PUBLIC cmax PUBLIC loff PUBLIC ltop PUBLIC vpos PUBLIC posv PUBLIC posp PUBLIC vhi PUBLIC wid PUBLIC pos PUBLIC grast PUBLIC graed PUBLIC pp1st PUBLIC pp1ed PUBLIC pp2st PUBLIC pp2ed PUBLIC mcount PUBLIC mlevel PUBLIC mpeek PUBLIC mtrig PUBLIC bb0 PUBLIC bb1 PUBLIC l_pos PUBLIC l_cur PUBLIC l_vhi PUBLIC l_brk PUBLIC trig PUBLIC rmod PUBLIC gain PUBLIC rate PUBLIC length PUBLIC sintable PUBLIC add_v1 PUBLIC add_v2 PUBLIC add_l1 PUBLIC add_l2 PUBLIC add_t1 PUBLIC add_t2 PUBLIC add_dly PUBLIC add_xs1 PUBLIC add_xs2 PUBLIC devnum PUBLIC restat PUBLIC remode PUBLIC cat PUBLIC dloc PUBLIC xysheet PUBLIC voice_num PUBLIC bank_num PUBLIC wave_num PUBLIC cnv_sta PUBLIC cnv_pos PUBLIC cnv_rp PUBLIC memsize PUBLIC mi PUBLIC mo PUBLIC kb PUBLIC qi PUBLIC qo PUBLIC midirev PUBLIC midisnd PUBLIC midimsk PUBLIC midiprg PUBLIC seq PUBLIC godtime PUBLIC oldtime PUBLIC tempo PUBLIC mastertune PUBLIC pbn PUBLIC pb PUBLIC evn PUBLIC ev PUBLIC bank PUBLIC voic PUBLIC pare PUBLIC nowe PUBLIC gene PUBLIC psa PUBLIC pca PUBLIC pwa