2479 lines
88 KiB
C++
2479 lines
88 KiB
C++
/*
|
|
Chassis polysynth framework
|
|
|
|
Copyright 2024 Gordon JC Pearce <gordonjcp@gjcp.net>
|
|
|
|
Permission to use, copy, modify, and/or distribute this software for any
|
|
purpose with or without fee is hereby granted, provided that the above
|
|
copyright notice and this permission notice appear in all copies.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
|
OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
|
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
|
|
#include "ic1.hpp"
|
|
#include <cstdio>
|
|
|
|
// Disassembly of assigner.bin, 8192 bytes [0x0 to 0x1fff]
|
|
// coldstart
|
|
// 0000: 4e 9a JRE $009C
|
|
// 0002: 00 NOP
|
|
// 0003: 00 NOP
|
|
|
|
// NMI handler
|
|
// 0004: aa EI
|
|
// 0005: 62 RETI
|
|
// 0006: 00 NOP
|
|
// 0007: 00 NOP
|
|
|
|
// ; bit patterns used for Note On
|
|
// 0008: 01 02 04 08 10 20 40 80
|
|
// ; bit patterns used for Note Off
|
|
// 0010: fe fd fb f7 ef df bf 7f
|
|
|
|
// 0018: 00 00 00 00 00 00 00 00
|
|
|
|
// timer handler
|
|
// 0020: 20 cb INRW $FFCB_timerCounter
|
|
// 0022: c3 JR $0026
|
|
// 0023: 54 4b 05 JMP $054B
|
|
// 0026: aa EI
|
|
// 0027: 62 RETI
|
|
|
|
// serial handler
|
|
// 0028: 54 95 05 JMP $0595
|
|
// 002b: 00 NOP
|
|
// 002c: 00 NOP
|
|
// 002d: 00 NOP
|
|
// 002e: 00 NOP
|
|
// 002f: 00 NOP
|
|
|
|
// table of values referenced at 0x088c
|
|
// likely to be something to do with
|
|
// patch data addresses
|
|
// 0030: 9c 97 94 90 9d 9a 95 93
|
|
// 0038: 9e 98 96 91 9b 99 9f 92
|
|
|
|
// LED code numbers for numbers " 1" to "16"
|
|
// used for MIDI channel display
|
|
// 0040: f1 f2 f3 f4 f5 f6 f7 f8
|
|
// 0048: f9 1a 11 12 13 14 15 16
|
|
|
|
// LED bitfield table for symbols
|
|
// <top bar> 1 2 3 4 5 6 7
|
|
// 8 9 0 c E P r <space>
|
|
// 0050: 01 60 c7 e5 6c ad af e8
|
|
// 0058: ef ed eb 07 8f ce 07 00
|
|
|
|
// LED bitfield table for transpose values
|
|
// 25 in total
|
|
// C C. d d. E F F. G G. A A. B
|
|
// 0060: 8b 9b 67 77 8f 8e 9e ab
|
|
// 0068: bb ee fe 2f 8b 9b 67 77
|
|
// 0070: 8f 8e 9e ab bb ee fe 2f 8b
|
|
|
|
// start of code proper
|
|
// 0079: 69 00 MVI A,$00
|
|
// 007b: 4d c1 MOV PB,A
|
|
// 007d: 4d c5 MOV PF,A
|
|
// 007f: 63 cc STAW $FFCC // something to do with ADC
|
|
// 0081: 63 cd STAW $FFCD // something to do with ADC
|
|
// 0083: 63 c0 STAW $FFC0_runningStatus
|
|
// 0085: 63 b7 STAW $FFB7 // set to zero for Manual
|
|
// 0087: 64 02 fd MVI PC,$FD
|
|
// 008a: aa EI
|
|
// 008b: 75 cd 08 EQIW $FFCD,$08
|
|
// 008e: fc JR $008B
|
|
// 008f: 71 b8 2a MVIW $FFB8,$2A
|
|
// 0092: 7c 54 CALF $0C54
|
|
// 0094: 75 cd 10 EQIW $FFCD,$10
|
|
// 0097: fc JR $0094
|
|
// 0098: 7b 81 CALF $0B81
|
|
// 009a: 4e 71 JRE $010D
|
|
|
|
// startup
|
|
// 009c: 69 0e MVI A,$0E
|
|
// 009e: 4d d0 MOV MM,A
|
|
// 00a0: 69 0e MVI A,$0E
|
|
// 00a2: 4d c9 MOV SMH,A
|
|
// 00a4: 69 4e MVI A,$4E
|
|
// 00a6: 4d ca MOV SML,A
|
|
// 00a8: 64 80 08 MVI ANM,$08
|
|
// 00ab: 68 ff MVI V,$FF
|
|
// 00ad: 10 EXA
|
|
// 00ae: 68 ff MVI V,$FF
|
|
// 00b0: 04 ff ff LXI SP,$FFFF
|
|
// 00b3: 69 00 MVI A,$00
|
|
// 00b5: 34 00 ff LXI HL,$FF00
|
|
// 00b8: 3d STAX (HL+)
|
|
// 00b9: 74 7f 00 EQI L,$00
|
|
// 00bc: fb JR $00B8
|
|
// 00bd: 69 03 MVI A,$03
|
|
// 00bf: 4d d1 MOV MCC,A
|
|
// 00c1: 69 3a MVI A,$3A
|
|
// 00c3: 4d d4 MOV MC,A
|
|
// 00c5: 69 00 MVI A,$00
|
|
// 00c7: 4d d3 MOV MB,A
|
|
// 00c9: 4d d7 MOV MF,A
|
|
// 00cb: 4d c5 MOV PF,A
|
|
// 00cd: 4d c1 MOV PB,A
|
|
// 00cf: 69 ff MVI A,$FF
|
|
// 00d1: 4d d2 MOV MA,A
|
|
// 00d3: 71 bc 08 MVIW $FFBC,$08
|
|
// 00d6: 7b 81 CALF $0B81
|
|
// 00d8: 71 c8 42 MVIW $FFC8,$42
|
|
// 00db: 24 ff 1f LXI DE,$1FFF
|
|
// 00de: 4a de MVIX DE,$DE
|
|
// 00e0: 4c c0 MOV A,PA
|
|
// 00e2: 63 a8 STAW $FFA8_midiSwitch
|
|
// 00e4: 07 01 ANI A,$01
|
|
// 00e6: 63 b6 STAW $FFB6
|
|
// 00e8: 4a dd MVIX DE,$DD
|
|
// 00ea: 4c c0 MOV A,PA
|
|
// 00ec: 63 a7 STAW $FFA7
|
|
// 00ee: 4a e8 MVIX DE,$E8
|
|
// 00f0: 64 06 00 MVI MKH,$00
|
|
// 00f3: aa EI
|
|
// 00f4: 75 cd 10 EQIW $FFCD,$10
|
|
// 00f7: fc JR $00F4
|
|
// 00f8: 71 b8 2a MVIW $FFB8,$2A
|
|
// 00fb: 7c 47 CALF $0C47
|
|
// 00fd: 78 43 CALF $0843_sendOmniOffPoly
|
|
// 00ff: 71 ba 20 MVIW $FFBA,$20
|
|
// 0102: 71 bb 01 MVIW $FFBB,$01
|
|
// 0105: 58 b6 BIT 0,$FFB6
|
|
// 0107: 71 ba 10 MVIW $FFBA,$10
|
|
// 010a: 71 be 0c MVIW $FFBE_transpose,$0C
|
|
// 010d: 7b 9a CALF $0B9A
|
|
// 010f: 78 28 CALF $0828
|
|
// 0111: 58 a8 BIT 0,$FFA8_midiSwitch
|
|
// 0113: c7 JR $011B
|
|
// 0114: 55 87 40 OFFIW $FF87,$40
|
|
// 0117: c3 JR $011B
|
|
// 0118: 55 a8 08 OFFIW $FFA8_midiSwitch,$08 (MIDI Ch)
|
|
// 011b: 4e 75 JRE $0192
|
|
// 011d: 7b 70 CALF $0B70_stopAllNotes
|
|
// 011f: 7b 9e CALF $0B9E
|
|
// 0121: 7b 81 CALF $0B81
|
|
// 0123: 7d 33 CALF $0D33
|
|
// 0125: 78 00 CALF $0800
|
|
// 0127: 24 ff 1f LXI DE,$1FFF
|
|
// 012a: 34 50 ff LXI HL,$FF50
|
|
// 012d: 6a e8 MVI B,$E8
|
|
// 012f: 0a MOV A,B
|
|
// 0130: 3a STAX (DE)
|
|
// 0131: 00 NOP
|
|
// 0132: 00 NOP
|
|
// 0133: 4c c0 MOV A,PA
|
|
// 0135: 3b STAX (HL)
|
|
// 0136: 0a MOV A,B
|
|
// 0137: 17 10 ORI A,$10
|
|
// 0139: 3a STAX (DE)
|
|
// 013a: 32 INX HL
|
|
// 013b: 42 INR B
|
|
// 013c: 48 0b SK HC
|
|
// 013e: f0 JR $012F
|
|
// 013f: 34 50 ff LXI HL,$FF50
|
|
// 0142: 6a 07 MVI B,$07
|
|
// 0144: 24 00 00 LXI DE,$0000
|
|
// 0147: 2d LDAX (HL+)
|
|
// 0148: 67 00 NEI A,$00
|
|
// 014a: ca JR $0155
|
|
// 014b: 6b 07 MVI C,$07
|
|
// 014d: 48 01 SLRC A
|
|
// 014f: c1 JR $0151
|
|
// 0150: cb JR $015C
|
|
// 0151: 22 INX DE
|
|
// 0152: 53 DCR C
|
|
// 0153: f9 JR $014D
|
|
// 0154: c3 JR $0158
|
|
// 0155: 74 45 08 ADI E,$08
|
|
// 0158: 52 DCR B
|
|
// 0159: ed JR $0147
|
|
// 015a: 4e 21 JRE $017D
|
|
// 015c: 0d MOV A,E
|
|
// 015d: 36 0c SUINB A,$0C
|
|
// 015f: 46 0c ADI A,$0C
|
|
// 0161: 37 25 LTI A,$25
|
|
// 0163: 66 0c SUI A,$0C
|
|
// 0165: 37 19 LTI A,$19
|
|
// 0167: 66 0c SUI A,$0C
|
|
// 0169: 63 be STAW $FFBE_transpose
|
|
// 016b: 77 0c EQI A,$0C
|
|
// 016d: c7 JR $0175
|
|
// 016e: 01 c8 LDAW $FFC8
|
|
// 0170: 07 fe ANI A,$FE
|
|
// 0172: 63 c8 STAW $FFC8
|
|
// 0174: c6 JR $017B
|
|
// 0175: 01 c8 LDAW $FFC8
|
|
// 0177: 17 01 ORI A,$01
|
|
// 0179: 63 c8 STAW $FFC8
|
|
// 017b: 78 00 CALF $0800
|
|
// 017d: 24 ff 1f LXI DE,$1FFF
|
|
// 0180: 69 de MVI A,$DE
|
|
// 0182: 3a STAX (DE)
|
|
// 0183: 00 NOP
|
|
// 0184: 00 NOP
|
|
// 0185: 4c c0 MOV A,PA
|
|
// 0187: 47 01 ONI A,$01
|
|
// 0189: c2 JR $018C
|
|
// 018a: 4f 9b JRE $0127
|
|
// 018c: 7d 3c CALF $0D3C
|
|
// 018e: 78 28 CALF $0828
|
|
// 0190: 7b 9a CALF $0B9A
|
|
// 0192: 01 cd LDAW $FFCD
|
|
// 0194: 07 10 ANI A,$10
|
|
// 0196: 74 f8 bf EQAW $FFBF
|
|
// 0199: 71 c0 00 MVIW $FFC0_runningStatus,$00
|
|
// 019c: 63 bf STAW $FFBF
|
|
// 019e: 24 ff 1f LXI DE,$1FFF
|
|
// 01a1: 34 50 ff LXI HL,$FF50
|
|
// 01a4: 6a e8 MVI B,$E8
|
|
// 01a6: 0a MOV A,B
|
|
// 01a7: 3a STAX (DE)
|
|
// 01a8: 00 NOP
|
|
// 01a9: 00 NOP
|
|
// 01aa: 4c c0 MOV A,PA
|
|
// 01ac: 1b MOV C,A
|
|
// 01ad: 77 00 EQI A,$00
|
|
// 01af: 15 87 80 ORIW $FF87,$80
|
|
// 01b2: 0a MOV A,B
|
|
// 01b3: 17 10 ORI A,$10
|
|
// 01b5: 3a STAX (DE)
|
|
// 01b6: 0b MOV A,C
|
|
// 01b7: 70 93 XRAX (HL)
|
|
// 01b9: 48 0c SK Z
|
|
// 01bb: 79 96 CALF $0996
|
|
// 01bd: 0b MOV A,C
|
|
// 01be: 3d STAX (HL+)
|
|
// 01bf: 42 INR B
|
|
// 01c0: 48 0b SK HC
|
|
// 01c2: e3 JR $01A6
|
|
// 01c3: 55 87 80 OFFIW $FF87,$80
|
|
// 01c6: d3 JR $01DA
|
|
// 01c7: 5e 87 BIT 6,$FF87
|
|
// 01c9: d0 JR $01DA
|
|
// 01ca: 69 f9 MVI A,$F9
|
|
// 01cc: 79 e8 CALF $09E8_sendToTx
|
|
// 01ce: 69 b0 MVI A,$B0
|
|
// 01d0: 79 d5 CALF $09D5
|
|
// 01d2: 69 7b MVI A,$7B
|
|
// 01d4: 79 e8 CALF $09E8_sendToTx
|
|
// 01d6: 69 00 MVI A,$00
|
|
// 01d8: 79 e8 CALF $09E8_sendToTx
|
|
// 01da: 01 87 LDAW $FF87
|
|
// 01dc: 48 21 SLR A
|
|
// 01de: 63 87 STAW $FF87
|
|
// 01e0: 6a 0d MVI B,$0D
|
|
// 01e2: 34 3d ff LXI HL,$FF3D
|
|
// 01e5: 24 57 ff LXI DE,$FF57
|
|
// 01e8: 71 d0 00 MVIW $FFD0,$00
|
|
// 01eb: af 10 LDAX (HL+$10)
|
|
// 01ed: 74 3a 03 LTI B,$03
|
|
// 01f0: 74 3a 0b LTI B,$0B
|
|
// 01f3: c3 JR $01F7
|
|
// 01f4: 70 9a ORAX (DE)
|
|
// 01f6: 23 DCX DE
|
|
// 01f7: 1b MOV C,A
|
|
// 01f8: 70 93 XRAX (HL)
|
|
// 01fa: 48 0c SK Z
|
|
// 01fc: 7a 18 CALF $0A18
|
|
// 01fe: 0b MOV A,C
|
|
// 01ff: 3b STAX (HL)
|
|
// 0200: 33 DCX HL
|
|
// 0201: 52 DCR B
|
|
// 0202: e8 JR $01EB
|
|
// 0203: 65 d0 ff NEIW $FFD0,$FF
|
|
// 0206: 7b 9e CALF $0B9E
|
|
// 0208: 24 ff 1f LXI DE,$1FFF
|
|
// 020b: 34 a4 ff LXI HL,$FFA4
|
|
// 020e: 6a da MVI B,$DA
|
|
// 0210: 0a MOV A,B
|
|
// 0211: 3a STAX (DE)
|
|
// 0212: 00 NOP
|
|
// 0213: 00 NOP
|
|
// 0214: 4c c0 MOV A,PA
|
|
// 0216: 1b MOV C,A
|
|
// 0217: 0a MOV A,B
|
|
// 0218: 17 20 ORI A,$20
|
|
// 021a: 3a STAX (DE)
|
|
// 021b: 0b MOV A,C
|
|
// 021c: 70 93 XRAX (HL)
|
|
// 021e: bf 06 STAX (HL+$06)
|
|
// 0220: 60 8b ANA A,C
|
|
// 0222: bf 0c STAX (HL+$0C)
|
|
// 0224: 0b MOV A,C
|
|
// 0225: 3d STAX (HL+)
|
|
// 0226: 42 INR B
|
|
// 0227: 48 0b SK HC
|
|
// 0229: e6 JR $0210
|
|
// 022a: 58 b6 BIT 0,$FFB6
|
|
// 022c: c2 JR $022F
|
|
// 022d: 4e 3f JRE $026E
|
|
// 022f: 5b ae BIT 3,$FFAE
|
|
// 0231: d6 JR $0248
|
|
// 0232: 5b a8 BIT 3,$FFA8_midiSwitch ; MIDI CH button
|
|
// 0234: d1 JR $0246
|
|
// 0235: 78 43 CALF $0843_sendOmniOffPoly
|
|
// 0237: 7b 9a CALF $0B9A
|
|
// 0239: 78 28 CALF $0828
|
|
// 023b: 7d 33 CALF $0D33
|
|
// 023d: 01 bd LDAW $FFBD_midiChannel
|
|
// 023f: 34 40 00 LXI HL,$0040
|
|
// 0242: ac LDAX (HL+A)
|
|
// 0243: 7d 45 CALF $0D45_digitLookup
|
|
// 0245: c2 JR $0248
|
|
// 0246: 7d 3c CALF $0D3C
|
|
// 0248: 5b a8 BIT 3,$FFA8_midiSwitch ; MIDI CH button
|
|
// 024a: 4e 4f JRE $029B
|
|
// 024c: 55 87 40 OFFIW $FF87,$40
|
|
// 024f: db JR $026B
|
|
// 0250: 64 4a 08 ONI PC,$08
|
|
// 0253: d7 JR $026B
|
|
// 0254: 25 b0 00 GTIW $FFB0,$00
|
|
// 0257: c7 JR $025F
|
|
// 0258: 01 b0 LDAW $FFB0
|
|
// 025a: 7c 9d CALF $0C9D
|
|
// 025c: 51 DCR A
|
|
// 025d: 78 13 CALF $0813
|
|
// 025f: 25 b1 00 GTIW $FFB1,$00
|
|
// 0262: c8 JR $026B
|
|
// 0263: 01 b1 LDAW $FFB1
|
|
// 0265: 7c 9d CALF $0C9D
|
|
// 0267: 46 07 ADI A,$07
|
|
// 0269: 78 13 CALF $0813
|
|
// 026b: 54 5d 04 JMP $045D
|
|
// 026e: 5b b4 BIT 3,$FFB4
|
|
// 0270: c2 JR $0273
|
|
// 0271: 78 5c CALF $085C // tell the module board to zero the DAC
|
|
// 0273: 01 a8 LDAW $FFA8_midiSwitch
|
|
// 0275: 48 21 SLR A
|
|
// 0277: 07 38 ANI A,$38
|
|
// 0279: 1b MOV C,A
|
|
// 027a: 01 c8 LDAW $FFC8
|
|
// 027c: 07 c7 ANI A,$C7
|
|
// 027e: 60 9b ORA A,C
|
|
// 0280: 63 c8 STAW $FFC8
|
|
// 0282: 75 ba 10 EQIW $FFBA,$10
|
|
// 0285: cf JR $0295
|
|
// 0286: 59 cd BIT 1,$FFCD
|
|
// 0288: c7 JR $0290
|
|
// 0289: 5f b6 BIT 7,$FFB6
|
|
// 028b: 69 30 MVI A,$30
|
|
// 028d: 7b 55 CALF $0B55
|
|
// 028f: c5 JR $0295
|
|
// 0290: 5f b6 BIT 7,$FFB6
|
|
// 0292: c2 JR $0295
|
|
// 0293: 7b 70 CALF $0B70_stopAllNotes
|
|
// 0295: 25 aa 00 GTIW $FFAA,$00
|
|
// 0298: c2 JR $029B
|
|
// 0299: 7b 70 CALF $0B70_stopAllNotes
|
|
// 029b: 55 b5 38 OFFIW $FFB5,$38
|
|
// 029e: 54 62 0d JMP $0D62
|
|
// 02a1: 59 b5 BIT 1,$FFB5
|
|
// 02a3: c4 JR $02A8
|
|
// 02a4: 5c a9 BIT 4,$FFA9
|
|
// 02a6: 7c 47 CALF $0C47
|
|
// 02a8: 5a af BIT 2,$FFAF
|
|
// 02aa: 4e 20 JRE $02CC
|
|
// 02ac: 5a a9 BIT 2,$FFA9
|
|
// 02ae: d0 JR $02BF
|
|
// 02af: 7d 33 CALF $0D33
|
|
// 02b1: 05 b6 fb ANIW $FFB6,$FB
|
|
// 02b4: 64 4a 10 ONI PC,$10
|
|
// 02b7: cf JR $02C7
|
|
// 02b8: 69 00 MVI A,$00
|
|
// 02ba: 63 b9 STAW $FFB9
|
|
// 02bc: 7d 45 CALF $0D45_digitLookup
|
|
// 02be: cd JR $02CC
|
|
// 02bf: 5a b6 BIT 2,$FFB6
|
|
// 02c1: 7d 3c CALF $0D3C
|
|
// 02c3: 05 b6 fb ANIW $FFB6,$FB
|
|
// 02c6: c5 JR $02CC
|
|
// 02c7: 69 de MVI A,$DE
|
|
// 02c9: 40 45 0d CALL $0D45_digitLookup
|
|
// 02cc: 5f b4 BIT 7,$FFB4
|
|
// 02ce: 4e 2f JRE $02FF
|
|
// 02d0: 01 c8 LDAW $FFC8
|
|
// 02d2: 16 c0 XRI A,$C0
|
|
// 02d4: 63 c8 STAW $FFC8
|
|
// 02d6: 58 b6 BIT 0,$FFB6
|
|
// 02d8: cc JR $02E5
|
|
// 02d9: 69 fd MVI A,$FD // select module board // select module board
|
|
// 02db: 79 e8 CALF $09E8_sendToTx
|
|
// 02dd: 5e c8 BIT 6,$FFC8
|
|
// 02df: 69 86 MVI A,$86
|
|
// 02e1: 69 87 MVI A,$87
|
|
// 02e3: 79 e8 CALF $09E8_sendToTx
|
|
// 02e5: 59 b6 BIT 1,$FFB6
|
|
// 02e7: 55 a9 04 OFFIW $FFA9,$04
|
|
// 02ea: d4 JR $02FF
|
|
// 02eb: 01 bb LDAW $FFBB
|
|
// 02ed: 74 98 ba ORAW $FFBA
|
|
// 02f0: 1b MOV C,A
|
|
// 02f1: 7c d0 CALF $0CD0
|
|
// 02f3: 7c 93 CALF $0C93
|
|
// 02f5: 55 a8 10 OFFIW $FFA8_midiSwitch,$10 (MIDI Func2)
|
|
// 02f8: 79 29 CALF $0929
|
|
// 02fa: 45 a8 30 ONIW $FFA8_midiSwitch,$30 (MIDI Func1+2)
|
|
// 02fd: 78 f0 CALF $08f0_sendSysexPatch
|
|
// 02ff: 45 b4 06 ONIW $FFB4,$06
|
|
// 0302: d3 JR $0316
|
|
// 0303: 7b 70 CALF $0B70_stopAllNotes
|
|
// 0305: 7b 9e CALF $0B9E
|
|
// 0307: 7b 81 CALF $0B81
|
|
// 0309: 01 a8 LDAW $FFA8_midiSwitch
|
|
// 030b: 07 06 ANI A,$06 ; Poly mode switches
|
|
// 030d: 1b MOV C,A
|
|
// 030e: 01 c8 LDAW $FFC8
|
|
// 0310: 07 f9 ANI A,$F9
|
|
// 0312: 60 9b ORA A,C
|
|
// 0314: 63 c8 STAW $FFC8
|
|
// 0316: 25 b1 00 GTIW $FFB1,$00
|
|
// 0319: 4e 41 JRE $035C
|
|
// 031b: 01 b1 LDAW $FFB1
|
|
// 031d: 7c 9d CALF $0C9D
|
|
// 031f: 07 0f ANI A,$0F
|
|
// 0321: 63 bb STAW $FFBB
|
|
// 0323: 5a a9 BIT 2,$FFA9
|
|
// 0325: 4e 20 JRE $0347
|
|
// 0327: 64 4a 10 ONI PC,$10
|
|
// 032a: 4e 7a JRE $03A6
|
|
// 032c: 5a b6 BIT 2,$FFB6
|
|
// 032e: c2 JR $0331
|
|
// 032f: 4e 75 JRE $03A6
|
|
// 0331: 01 b9 LDAW $FFB9
|
|
// 0333: 07 f0 ANI A,$F0
|
|
// 0335: 1a MOV B,A
|
|
// 0336: 74 98 bb ORAW $FFBB
|
|
// 0339: 7d 45 CALF $0D45_digitLookup
|
|
// 033b: 01 bb LDAW $FFBB
|
|
// 033d: 63 b9 STAW $FFB9
|
|
// 033f: 74 2a 00 GTI B,$00
|
|
// 0342: d9 JR $035C
|
|
// 0343: 7d 06 CALF $0D06
|
|
// 0345: 4e 5f JRE $03A6
|
|
// 0347: 74 98 ba ORAW $FFBA
|
|
// 034a: 7d 45 CALF $0D45_digitLookup
|
|
// 034c: 7c 3c CALF $0C3C
|
|
// 034e: 7c d0 CALF $0CD0
|
|
// 0350: 7c 93 CALF $0C93
|
|
// 0352: 55 a8 10 OFFIW $FFA8_midiSwitch,$10 (MIDI Func2)
|
|
// 0355: 79 29 CALF $0929
|
|
// 0357: 45 a8 30 ONIW $FFA8_midiSwitch,$30 (MIDI Func1+2)
|
|
// 035a: 78 f0 CALF $08f0_sendSysexPatch
|
|
// 035c: 25 b0 00 GTIW $FFB0,$00
|
|
// 035f: 4e 45 JRE $03A6
|
|
// 0361: 01 b0 LDAW $FFB0
|
|
// 0363: 7c 9d CALF $0C9D
|
|
// 0365: 48 25 SLL A
|
|
// 0367: 48 25 SLL A
|
|
// 0369: 48 25 SLL A
|
|
// 036b: 48 25 SLL A
|
|
// 036d: 63 ba STAW $FFBA
|
|
// 036f: 5a a9 BIT 2,$FFA9
|
|
// 0371: df JR $0391
|
|
// 0372: 64 4a 10 ONI PC,$10
|
|
// 0375: 4e 2f JRE $03A6
|
|
// 0377: 5a b6 BIT 2,$FFB6
|
|
// 0379: c2 JR $037C
|
|
// 037a: 4e 2a JRE $03A6
|
|
// 037c: 01 b9 LDAW $FFB9
|
|
// 037e: 07 0f ANI A,$0F
|
|
// 0380: 1a MOV B,A
|
|
// 0381: 74 98 ba ORAW $FFBA
|
|
// 0384: 7d 45 CALF $0D45_digitLookup
|
|
// 0386: 01 ba LDAW $FFBA
|
|
// 0388: 63 b9 STAW $FFB9
|
|
// 038a: 74 2a 00 GTI B,$00
|
|
// 038d: d8 JR $03A6
|
|
// 038e: 7d 06 CALF $0D06
|
|
// 0390: d5 JR $03A6
|
|
// 0391: 74 98 bb ORAW $FFBB
|
|
// 0394: 7d 45 CALF $0D45_digitLookup
|
|
// 0396: 7c 3c CALF $0C3C
|
|
// 0398: 7c d0 CALF $0CD0
|
|
// 039a: 7c 93 CALF $0C93
|
|
// 039c: 55 a8 10 OFFIW $FFA8_midiSwitch,$10 (MIDI Func2)
|
|
// 039f: 79 29 CALF $0929
|
|
// 03a1: 45 a8 30 ONIW $FFA8_midiSwitch,$30 (MIDI Func1+2)
|
|
// 03a4: 78 f0 CALF $08f0_sendSysexPatch
|
|
// 03a6: 5a a9 BIT 2,$FFA9
|
|
// 03a8: 58 b5 BIT 0,$FFB5
|
|
// 03aa: 4e 28 JRE $03D4
|
|
// 03ac: 59 b6 BIT 1,$FFB6
|
|
// 03ae: c6 JR $03B5
|
|
// 03af: 7c 3c CALF $0C3C
|
|
// 03b1: 01 bb LDAW $FFBB
|
|
// 03b3: 1b MOV C,A
|
|
// 03b4: cb JR $03C0
|
|
// 03b5: 01 bb LDAW $FFBB
|
|
// 03b7: 37 08 LTI A,$08
|
|
// 03b9: 69 00 MVI A,$00
|
|
// 03bb: 46 01 ADI A,$01
|
|
// 03bd: 63 bb STAW $FFBB
|
|
// 03bf: 1b MOV C,A
|
|
// 03c0: 01 ba LDAW $FFBA
|
|
// 03c2: 60 9b ORA A,C
|
|
// 03c4: 7d 45 CALF $0D45_digitLookup
|
|
// 03c6: 7c d0 CALF $0CD0
|
|
// 03c8: 7c 93 CALF $0C93
|
|
// 03ca: 55 a8 10 OFFIW $FFA8_midiSwitch,$10 (MIDI Func2)
|
|
// 03cd: 79 29 CALF $0929
|
|
// 03cf: 45 a8 30 ONIW $FFA8_midiSwitch,$30 (MIDI Func1+2)
|
|
// 03d2: 78 f0 CALF $08f0_sendSysexPatch
|
|
// 03d4: 5f a3 BIT 7,$FFA3
|
|
// 03d6: 4e 32 JRE $040A
|
|
// 03d8: 05 a3 7f ANIW $FFA3,$7F
|
|
// 03db: 01 c8 LDAW $FFC8
|
|
// 03dd: 07 3f ANI A,$3F
|
|
// 03df: 5e a3 BIT 6,$FFA3
|
|
// 03e1: c3 JR $03E5
|
|
// 03e2: 17 80 ORI A,$80
|
|
// 03e4: c2 JR $03E7
|
|
// 03e5: 17 40 ORI A,$40
|
|
// 03e7: 63 c8 STAW $FFC8
|
|
// 03e9: 01 a3 LDAW $FFA3
|
|
// 03eb: 1b MOV C,A
|
|
// 03ec: 07 07 ANI A,$07
|
|
// 03ee: 41 INR A
|
|
// 03ef: 63 bb STAW $FFBB
|
|
// 03f1: 0b MOV A,C
|
|
// 03f2: 07 38 ANI A,$38
|
|
// 03f4: 48 25 SLL A
|
|
// 03f6: 46 10 ADI A,$10
|
|
// 03f8: 63 ba STAW $FFBA
|
|
// 03fa: 74 98 bb ORAW $FFBB
|
|
// 03fd: 7d 45 CALF $0D45_digitLookup
|
|
// 03ff: 7c 3c CALF $0C3C
|
|
// 0401: 7c d0 CALF $0CD0
|
|
// 0403: 7c 93 CALF $0C93
|
|
// 0405: 55 a3 80 OFFIW $FFA3,$80
|
|
// 0408: 4f ce JRE $03D8
|
|
// 040a: 4c c2 MOV A,PC
|
|
// 040c: 1b MOV C,A
|
|
// 040d: 74 90 bc XRAW $FFBC
|
|
// 0410: 07 08 ANI A,$08
|
|
// 0412: 48 0c SK Z
|
|
// 0414: 7b a9 CALF $0BA9
|
|
// 0416: 0b MOV A,C
|
|
// 0417: 63 bc STAW $FFBC
|
|
// 0419: 5b b6 BIT 3,$FFB6
|
|
// 041b: cb JR $0427
|
|
// 041c: 05 b6 f7 ANIW $FFB6,$F7
|
|
// 041f: 69 fd MVI A,$FD // select module board // select module board
|
|
// 0421: 79 e8 CALF $09E8_sendToTx
|
|
// 0423: 69 87 MVI A,$87
|
|
// 0425: 79 e8 CALF $09E8_sendToTx
|
|
// 0427: 5c b6 BIT 4,$FFB6
|
|
// 0429: cb JR $0435
|
|
// 042a: 05 b6 ef ANIW $FFB6,$EF
|
|
// 042d: 69 fd MVI A,$FD // select module board // select module board
|
|
// 042f: 79 e8 CALF $09E8_sendToTx
|
|
// 0431: 69 86 MVI A,$86
|
|
// 0433: 79 e8 CALF $09E8_sendToTx
|
|
// 0435: 5f a1 BIT 7,$FFA1
|
|
// 0437: cb JR $0443
|
|
// 0438: 01 a1 LDAW $FFA1
|
|
// 043a: 07 7f ANI A,$7F
|
|
// 043c: 63 a1 STAW $FFA1
|
|
// 043e: 6a a0 MVI B,$A0
|
|
// 0440: 78 37 CALF $0837
|
|
// 0442: cd JR $0450
|
|
// 0443: 5f a0 BIT 7,$FFA0
|
|
// 0445: ca JR $0450
|
|
// 0446: 01 a0 LDAW $FFA0
|
|
// 0448: 07 7f ANI A,$7F
|
|
// 044a: 63 a0 STAW $FFA0
|
|
// 044c: 6a a1 MVI B,$A1
|
|
// 044e: 78 37 CALF $0837
|
|
// 0450: 5f a2 BIT 7,$FFA2
|
|
// 0452: ca JR $045D
|
|
// 0453: 01 a2 LDAW $FFA2
|
|
// 0455: 07 7f ANI A,$7F
|
|
// 0457: 63 a2 STAW $FFA2
|
|
// 0459: 6a a2 MVI B,$A2
|
|
// 045b: 78 37 CALF $0837
|
|
// 045d: 25 b2 00 GTIW $FFB2,$00
|
|
// 0460: 4e 22 JRE $0484
|
|
// 0462: 59 b6 BIT 1,$FFB6
|
|
// 0464: 7d 5b CALF $0D5B
|
|
// 0466: 55 b2 07 OFFIW $FFB2,$07
|
|
// 0469: 7b cc CALF $0BCC
|
|
// 046b: 55 b2 18 OFFIW $FFB2,$18
|
|
// 046e: 7b da CALF $0BDA
|
|
// 0470: 55 b2 e0 OFFIW $FFB2,$E0
|
|
// 0473: 7b eb CALF $0BEB
|
|
// 0475: 7b f9 CALF $0BF9
|
|
// 0477: 55 a8 30 OFFIW $FFA8_midiSwitch,$30 (MIDI Func1+2)
|
|
// 047a: c9 JR $0484
|
|
// 047b: 01 c7 LDAW $FFC7
|
|
// 047d: 07 7f ANI A,$7F
|
|
// 047f: 1b MOV C,A
|
|
// 0480: 6d a0 MVI E,$A0
|
|
// 0482: 78 d6 CALF $08D6
|
|
// 0484: 25 ad 00 GTIW $FFAD,$00
|
|
// 0487: d5 JR $049D
|
|
// 0488: 01 a7 LDAW $FFA7
|
|
// 048a: 59 b6 BIT 1,$FFB6
|
|
// 048c: 7c 0c CALF $0C0C
|
|
// 048e: 7c 29 CALF $0C29
|
|
// 0490: 55 a8 30 OFFIW $FFA8_midiSwitch,$30 (MIDI Func1+2)
|
|
// 0493: c9 JR $049D
|
|
// 0494: 01 8f LDAW $FF8F_switches2
|
|
// 0496: 07 1f ANI A,$1F
|
|
// 0498: 1b MOV C,A
|
|
// 0499: 6d a1 MVI E,$A1
|
|
// 049b: 78 d6 CALF $08D6
|
|
// 049d: 6a 00 MVI B,$00
|
|
// 049f: 24 58 ff LXI DE,$FF58
|
|
// 04a2: 34 6c ff LXI HL,$FF6C
|
|
// 04a5: 2a LDAX (DE)
|
|
// 04a6: 70 b3 SUBNBX (HL)
|
|
// 04a8: 48 3a NEGA
|
|
// 04aa: 19 MOV EAL,A
|
|
// 04ab: 37 02 LTI A,$02
|
|
// 04ad: 78 7e CALF $087E
|
|
// 04af: 22 INX DE
|
|
// 04b0: 32 INX HL
|
|
// 04b1: 42 INR B
|
|
// 04b2: 74 7a 10 EQI B,$10
|
|
// 04b5: ef JR $04A5
|
|
// 04b6: 2a LDAX (DE)
|
|
// 04b7: 70 b3 SUBNBX (HL)
|
|
// 04b9: 48 3a NEGA
|
|
// 04bb: 37 02 LTI A,$02
|
|
// 04bd: 79 55 CALF $0955
|
|
// 04bf: 22 INX DE
|
|
// 04c0: 32 INX HL
|
|
// 04c1: 01 6b LDAW $FF6B
|
|
// 04c3: 27 80 GTI A,$80
|
|
// 04c5: 69 7f MVI A,$7F
|
|
// 04c7: 69 00 MVI A,$00
|
|
// 04c9: 1b MOV C,A
|
|
// 04ca: 74 f8 7f EQAW $FF7F
|
|
// 04cd: 79 7e CALF $097E
|
|
// 04cf: 55 4f 04 OFFIW $FF4F,$04
|
|
// 04d2: 54 11 01 JMP $0111
|
|
// 04d5: 25 ce 00 GTIW $FFCE,$00
|
|
// 04d8: d7 JR $04F0
|
|
// 04d9: 7d 5b CALF $0D5B
|
|
// 04db: 24 90 ff LXI DE,$FF90_patchRam
|
|
// 04de: 6a 07 MVI B,$07
|
|
// 04e0: 01 ce LDAW $FFCE
|
|
// 04e2: 1b MOV C,A
|
|
// 04e3: 48 2a CLC
|
|
// 04e5: 48 03 SLRC C
|
|
// 04e7: c2 JR $04EA
|
|
// 04e8: 79 47 CALF $0947
|
|
// 04ea: 22 INX DE
|
|
// 04eb: 52 DCR B
|
|
// 04ec: f8 JR $04E5
|
|
// 04ed: 71 ce 00 MVIW $FFCE,$00
|
|
// 04f0: 25 cf 00 GTIW $FFCF,$00
|
|
// 04f3: d7 JR $050B
|
|
// 04f4: 7d 5b CALF $0D5B
|
|
// 04f6: 24 98 ff LXI DE,$FF98
|
|
// 04f9: 6a 07 MVI B,$07
|
|
// 04fb: 01 cf LDAW $FFCF
|
|
// 04fd: 1b MOV C,A
|
|
// 04fe: 48 2a CLC
|
|
// 0500: 48 03 SLRC C
|
|
// 0502: c2 JR $0505
|
|
// 0503: 79 47 CALF $0947
|
|
// 0505: 22 INX DE
|
|
// 0506: 52 DCR B
|
|
// 0507: f8 JR $0500
|
|
// 0508: 71 cf 00 MVIW $FFCF,$00
|
|
// 050b: 5d b6 BIT 5,$FFB6
|
|
// 050d: d0 JR $051E
|
|
// 050e: 05 b6 df ANIW $FFB6,$DF
|
|
// 0511: 7d 5b CALF $0D5B
|
|
// 0513: 01 8e LDAW $FF8E_switches1
|
|
// 0515: 57 60 OFFI A,$60
|
|
// 0517: c4 JR $051C
|
|
// 0518: 17 80 ORI A,$80
|
|
// 051a: 63 8e STAW $FF8E_switches1
|
|
// 051c: 7b f9 CALF $0BF9
|
|
// 051e: 5e b6 BIT 6,$FFB6
|
|
// 0520: cc JR $052D
|
|
// 0521: 05 b6 bf ANIW $FFB6,$BF
|
|
// 0524: 7d 5b CALF $0D5B
|
|
// 0526: 71 b7 00 MVIW $FFB7,$00
|
|
// 0529: 01 8f LDAW $FF8F_switches2
|
|
// 052b: 7c 29 CALF $0C29
|
|
// 052d: 58 b6 BIT 0,$FFB6
|
|
// 052f: 54 11 01 JMP $0111
|
|
// 0532: 6a 05 MVI B,$05
|
|
// 0534: 34 8d ff LXI HL,$FF8D
|
|
// 0537: 2f LDAX (HL-)
|
|
// 0538: 47 80 ONI A,$80
|
|
// 053a: c5 JR $0540
|
|
// 053b: 52 DCR B
|
|
// 053c: fa JR $0537
|
|
// 053d: 69 00 MVI A,$00
|
|
// 053f: c2 JR $0542
|
|
// 0540: 0a MOV A,B
|
|
// 0541: 41 INR A
|
|
// 0542: 34 50 00 LXI HL,$0050
|
|
// 0545: ac LDAX (HL+A)
|
|
// 0546: 63 c6 STAW $FFC6_rightDigit
|
|
// 0548: 54 11 01 JMP $0111
|
|
// 054b: 10 EXA
|
|
// 054c: 11 EXX
|
|
// 054d: 64 c8 08 ONI ANM,$08
|
|
// 0550: d1 JR $0562
|
|
// 0551: 34 68 ff LXI HL,$FF68
|
|
// 0554: 78 71 CALF $0871
|
|
// 0556: 01 c5 LDAW $FFC5_leftDigit
|
|
// 0558: 4d c1 MOV PB,A
|
|
// 055a: 64 05 00 MVI PF,$00
|
|
// 055d: 64 80 00 MVI ANM,$00
|
|
// 0560: 4e 2b JRE $058D
|
|
// 0562: 6e ff MVI H,$FF
|
|
// 0564: 01 cc LDAW $FFCC
|
|
// 0566: 46 58 ADI A,$58
|
|
// 0568: 1f MOV L,A
|
|
// 0569: 78 71 CALF $0871
|
|
// 056b: 01 cc LDAW $FFCC
|
|
// 056d: 46 04 ADI A,$04
|
|
// 056f: 48 0b SK HC
|
|
// 0571: cc JR $057E
|
|
// 0572: 71 cc 00 MVIW $FFCC,$00
|
|
// 0575: 20 cd INRW $FFCD
|
|
// 0577: 00 NOP
|
|
// 0578: 64 80 08 MVI ANM,$08
|
|
// 057b: 69 fc MVI A,$FC
|
|
// 057d: d1 JR $058F
|
|
// 057e: 63 cc STAW $FFCC
|
|
// 0580: 48 01 SLRC A
|
|
// 0582: 48 01 SLRC A
|
|
// 0584: 46 c5 ADI A,$C5
|
|
// 0586: 1f MOV L,A
|
|
// 0587: 2b LDAX (HL)
|
|
// 0588: 4d c1 MOV PB,A
|
|
// 058a: 64 45 40 ADI PF,$40
|
|
// 058d: 69 f7 MVI A,$F7
|
|
// 058f: 63 cb STAW $FFCB_timerCounter_timerCounter
|
|
// 0591: 10 EXA
|
|
// 0592: 11 EXX
|
|
// 0593: aa EI
|
|
// 0594: 62 RETI
|
|
|
|
// Serial Interrupt Handler
|
|
// 0595: 10 EXA
|
|
// 0596: 11 EXX
|
|
// 0597: 64 5e 04 OFFI MKH,$04 // if the TX interrupt is masked
|
|
// 059a: c5 JR $05A0 // skip jumping to 05a0
|
|
// 059b: 48 49 SKIT FSR // skip if RX interrupt is set, and clear
|
|
// 059d: 54 af 07 JMP $07AF // handle the TX interrupt
|
|
// 05a0: 48 6b SKNIT ER // skip if the error flag is not set
|
|
// 05a2: 4e 6f JRE $0613 // handle serial error
|
|
// 05a4: 4c d9 MOV A,RXB // fetch received byte
|
|
// 05a6: 47 80 ONI A,$80 // is it a status byte?
|
|
// 05a8: 4e 70 JRE $061A // no, handle value
|
|
// 05aa: 37 f0 LTI A,$F0 // skip if < $f0
|
|
// 05ac: 4e 50 JRE $05FE // handle sysex
|
|
// 05ae: 1a MOV B,A // save byte
|
|
// 05af: 05 4f 33 ANIW $FF4F,$33 // bits 0, 1, 4, 5 left
|
|
// 05b2: 5d 4f BIT 5,$FF4F //
|
|
// 05b4: c4 JR $05B9 //
|
|
// 05b5: 74 e0 bd SUBW $FFBD_midiChannel // subtract MIDI channel
|
|
// 05b8: c2 JR $05BB
|
|
// 05b9: 07 f0 ANI A,$F0 // mask off channel
|
|
// 05bb: 67 90 NEI A,$90
|
|
// 05bd: c2 JR $05C0 // handle Note On
|
|
// 05be: 67 80 NEI A,$80
|
|
// 05c0: 4e 25 JRE $05E7 // handle Note Off
|
|
// 05c2: 67 b0 NEI A,$B0
|
|
// 05c4: d7 JR $05DC // handle Control Change
|
|
// 05c5: 5d a8 BIT 5,$FFA8_midiSwitch // MIDI Func 2
|
|
// 05c7: 4e 2a JRE $05F3 // handle patch change etc
|
|
// 05c9: 75 a2 00 EQIW $FFA2,$00 // these are something to do with pitch bend
|
|
// 05cc: 71 a2 80 MVIW $FFA2,$80
|
|
// 05cf: 75 a1 00 EQIW $FFA1,$00
|
|
// 05d2: 71 a1 80 MVIW $FFA1,$80
|
|
// 05d5: 75 a0 00 EQIW $FFA0,$00
|
|
// 05d8: 71 a0 80 MVIW $FFA0,$80
|
|
// 05db: d3 JR $05EF // restore registers and return from interrupt // restore registers and return from interrupt
|
|
|
|
// handle control change
|
|
// 05dc: 1b MOV C,A // save A
|
|
// 05dd: 0a MOV A,B // original status byte
|
|
// 05de: 07 0f ANI A,$0F // mask off MIDI channel
|
|
// 05e0: 74 e8 bd NEAW $FFBD_midiChannel
|
|
// 05e3: 15 4f 40 ORIW $FF4F,$40 // not the right channel
|
|
// 05e6: 0b MOV A,C // restore A
|
|
// 05e7: 71 3f 01 MVIW $FF3F_midiByteCount,$01 // expect two bytes
|
|
// 05ea: 63 4e STAW $FF4E_midiStatusByte // save status byte
|
|
// 05ec: 15 4f 80 ORIW $FF4F,$80 // parser status?
|
|
//
|
|
// return from interrupt
|
|
// 05ef: 10 EXA
|
|
// 05f0: 11 EXX
|
|
// 05f1: aa EI
|
|
// 05f2: 62 RETI
|
|
//
|
|
//
|
|
// 05f3: 67 c0 NEI A,$C0
|
|
// 05f5: c4 JR $05FA // handle patch change
|
|
// 05f6: 77 e0 EQI A,$E0 // skip if pitchbend?
|
|
// 05f8: f6 JR $05EF // restore registers and return from interrupt
|
|
// 05f9: ed JR $05E7 // handle pitch bend
|
|
//
|
|
// expect patch change or sysex
|
|
// 05fa: 71 3f 00 MVIW $FF3F_midiByteCount,$00 // one additional byte
|
|
// 05fd: ec JR $05EA // store the status byte
|
|
// 05fe: 37 f8 LTI A,$F8 // anything past sysex end $f7?
|
|
// 0600: ee JR $05EF // restore registers and return from interrupt
|
|
// 0601: 77 f0 EQI A,$F0
|
|
// 0603: d1 JR $0615 // not sysex start
|
|
// 0604: 55 a8 30 OFFIW $FFA8_midiSwitch,$30 (MIDI Func1+2)
|
|
// 0607: cd JR $0615 // not in sysex mode
|
|
// 0608: 05 4f f3 ANIW $FF4F,$F3
|
|
// 060b: 15 4f 04 ORIW $FF4F,$04
|
|
// 060e: 71 3f 00 MVIW $FF3F_midiByteCount,$00 // one additional byte
|
|
// 0611: 4f d7 JRE $05EA // store status and return
|
|
|
|
// handle serial error
|
|
// 0613: 4c d9 MOV A,RXB
|
|
// 0615: 05 4f 33 ANIW $FF4F,$33
|
|
// 0618: 4f d5 JRE $05EF // restore registers and return from interrupt
|
|
|
|
// 061a: 5f 4f BIT 7,$FF4F // are we looking for a value or status?
|
|
// 061c: fb JR $0618 // value, return
|
|
// 061d: 1b MOV C,A
|
|
// 061e: 5a 4f BIT 2,$FF4F
|
|
// 0620: 4e 8f JRE $06B1 // multibyte message
|
|
// 0622: 5b 4f BIT 3,$FF4F
|
|
// 0624: 4e 53 JRE $0679 // single byte
|
|
// 0626: 5c 4f BIT 4,$FF4F
|
|
// 0628: 4e 41 JRE $066B
|
|
// 062a: 01 3f LDAW $FF3F_midiByteCount
|
|
// 062c: 37 10 LTI A,$10 // have we got 16 bytes so far?
|
|
// 062e: 4e 20 JRE $0650 // jump ahead
|
|
// 0630: 1a MOV B,A // save A
|
|
// 0631: 0b MOV A,C
|
|
// 0632: 34 90 ff LXI HL,$FF90_patchRam
|
|
// 0635: bd STAX (HL+B) // store received byte in patch RAM
|
|
// 0636: 34 08 00 LXI HL,$0008 // address of note bitmask
|
|
// 0639: 0a MOV A,B
|
|
// 063a: 07 07 ANI A,$07 // A = 0 to 7
|
|
// 063c: ac LDAX (HL+A) // a = 01 to 80
|
|
// 063d: 34 cf ff LXI HL,$FFCF //
|
|
// 0640: 74 4a 08 ONI B,$08 // bit 3 set, why?
|
|
// 0643: 34 ce ff LXI HL,$FFCE //
|
|
// 0646: 70 9b ORAX (HL) // OR in the bits at that address
|
|
// 0648: 3b STAX (HL) // store it back
|
|
// 0649: 20 3f INRW $FF3F_midiByteCount // next byte
|
|
// 064b: 00 NOP // ignore skip
|
|
// 064c: 10 EXA // return from interrupt
|
|
// 064d: 11 EXX
|
|
// 064e: aa EI
|
|
// 064f: 62 RETI
|
|
|
|
// save switch bytes from sysex
|
|
// 0650: 67 10 NEI A,$10 // skip, if we are not at byte 16
|
|
// 0652: ca JR $065D // we are
|
|
// 0653: 67 11 NEI A,$11 // byte 17
|
|
// 0655: ce JR $0664 // we are
|
|
// 0656: 05 4f 33 ANIW $FF4F,$33 // 18? must be the end of sysex message
|
|
// 0659: 71 3f 00 MVIW $FF3F_midiByteCount,$00 // reset the counter
|
|
// 065c: ef JR $064C // return from interrupt
|
|
// 065d: 0b MOV A,C
|
|
// 065e: 63 8e STAW $FF8E_switches1 // save the switch values
|
|
// 0660: 15 b6 20 ORIW $FFB6,$20 // set a flag
|
|
// 0663: e5 JR $0649 // next byte
|
|
// 0664: 0b MOV A,C
|
|
// 0665: 63 8f STAW $FF8F_switches2 // save the switches
|
|
// 0667: 15 b6 40 ORIW $FFB6,$40 // set a flag
|
|
// 066a: f8 JR $0663 // next byte
|
|
|
|
// reading sysex data
|
|
// 066b: 55 3f 01 OFFIW $FF3F_midiByteCount,$01 // bit zero set
|
|
// 066e: c3 JR $0672 // yes
|
|
// 066f: 63 3e STAW $FF3E_midiParam1 // no, store count of bytes
|
|
// 0671: f1 JR $0663 // next byte
|
|
// 0672: 01 3e LDAW $FF3E_midiParam1 // get the byte count
|
|
// 0674: 27 11 GTI A,$11 // >17?
|
|
// 0676: 4f b4 JRE $062C // yes, go back and process the sysex packet
|
|
// 0678: ea JR $0663 // no, loop around for more bytes
|
|
|
|
// identify sysex data
|
|
// 0679: 75 3f 00 EQIW $FF3F_midiByteCount,$00 // first byte?
|
|
// 067c: c6 JR $0683
|
|
// 067d: 77 41 EQI A,$41 // yes, is it the Roland identifier?
|
|
// 067f: 4f d5 JRE $0656 // abort
|
|
// 0681: 4f c6 JRE $0649 // yes, loop around for another byte
|
|
// 0683: 75 3f 01 EQIW $FF3F_midiByteCount,$01 // second byte?
|
|
// 0686: d4 JR $069B // no
|
|
// 0687: 77 30 EQI A,$30 // yes, is it a memory patch?
|
|
// 0689: c5 JR $068F // no
|
|
// 068a: 15 4f 10 ORIW $FF4F,$10 // flag that we're receiving a patch dump
|
|
// 068d: 4f ba JRE $0649 // loop around for another byte
|
|
// 068f: 67 31 NEI A,$31 // was manual pressed? skip if not
|
|
// 0691: f8 JR $068A // manual message, jump back to flag we're receiving a full patch dump
|
|
// 0692: 77 32 EQI A,$32 // was it a single control message?
|
|
// 0694: 4f c0 JRE $0656 // no, abort
|
|
// 0696: 05 4f ef ANIW $FF4F,$EF // mask off patch dump bit
|
|
// 0699: 4f ae JRE $0649 // loop around for another byte
|
|
|
|
// 069b: 75 3f 02 EQIW $FF3F_midiByteCount,$02 // third byte of message
|
|
// 069e: ca JR $06A9 // no
|
|
// 069f: 74 f8 bd EQAW $FFBD_midiChannel // correct MIDI channel?
|
|
// 06a2: 4f b2 JRE $0656 // abort
|
|
// 06a4: 55 4f 10 OFFIW $FF4F,$10 // single value message
|
|
// 06a7: 4f a0 JRE $0649 // no
|
|
// 06a9: 15 4f 08 ORIW $FF4F,$08 // set flag
|
|
// 06ac: 71 3f 00 MVIW $FF3F_midiByteCount,$00 // no more bytes
|
|
// 06af: 4f 9b JRE $064C // return from interrupt
|
|
// 06b1: 30 3f DCRW $FF3F_midiByteCount // count down, skip if less than zero
|
|
// 06b3: 4e 59 JRE $070E // store it in FF3E, normally param but here byte count
|
|
// 06b5: 25 4e 91 GTIW $FF4E_midiStatusByte,$91
|
|
// 06b8: d1 JR $06CA
|
|
// 06b9: 65 4e b0 NEIW $FF4E_midiStatusByte,$B0
|
|
// 06bc: 4e 54 JRE $0712
|
|
// 06be: 65 4e c0 NEIW $FF4E_midiStatusByte,$C0
|
|
// 06c1: 4e bd JRE $0780
|
|
// 06c3: 65 4e e0 NEIW $FF4E_midiStatusByte,$E0
|
|
// 06c6: 4e c7 JRE $078F
|
|
// 06c8: 4f 8c JRE $0656
|
|
// 06ca: 01 3e LDAW $FF3E_midiParam1
|
|
// 06cc: 27 17 GTI A,$17
|
|
// 06ce: 4e 36 JRE $0706
|
|
// 06d0: 37 6d LTI A,$6D
|
|
// 06d2: 4e 36 JRE $070A
|
|
// 06d4: 74 e0 be SUBW $FFBE_transpose
|
|
// 06d7: 1a MOV B,A
|
|
// 06d8: 48 22 SLR B
|
|
// 06da: 48 22 SLR B
|
|
// 06dc: 48 22 SLR B
|
|
// 06de: 07 07 ANI A,$07
|
|
// 06e0: 75 4e 90 EQIW $FF4E_midiStatusByte,$90
|
|
// 06e3: d5 JR $06F9
|
|
// 06e4: 74 6b 00 NEI C,$00
|
|
// 06e7: d1 JR $06F9
|
|
// 06e8: 34 08 00 LXI HL,$0008
|
|
// 06eb: ac LDAX (HL+A)
|
|
// 06ec: 1b MOV C,A
|
|
// 06ed: 34 40 ff LXI HL,$FF40
|
|
// 06f0: ad LDAX (HL+B)
|
|
// 06f1: 60 9b ORA A,C
|
|
// 06f3: bd STAX (HL+B)
|
|
// 06f4: 71 3f 01 MVIW $FF3F_midiByteCount,$01
|
|
// 06f7: 4f 53 JRE $064C
|
|
// 06f9: 34 10 00 LXI HL,$0010
|
|
// 06fc: ac LDAX (HL+A)
|
|
// 06fd: 1b MOV C,A
|
|
// 06fe: 34 40 ff LXI HL,$FF40
|
|
// 0701: ad LDAX (HL+B)
|
|
// 0702: 60 8b ANA A,C
|
|
// 0704: bd STAX (HL+B)
|
|
// 0705: ee JR $06F4
|
|
// 0706: 46 0c ADI A,$0C
|
|
// 0708: 4f c2 JRE $06CC
|
|
// 070a: 66 0c SUI A,$0C
|
|
// 070c: 4f c2 JRE $06D0
|
|
// 070e: 63 3e STAW $FF3E_midiParam1
|
|
// 0710: 4f 3a JRE $064C
|
|
// 0712: 01 3e LDAW $FF3E_midiParam1
|
|
// 0714: 27 7a GTI A,$7A
|
|
// 0716: 4e 35 JRE $074D
|
|
// 0718: 45 4f 40 ONIW $FF4F,$40
|
|
// 071b: 4f d7 JRE $06F4
|
|
// 071d: 67 7b NEI A,$7B
|
|
// 071f: 4e 51 JRE $0772
|
|
// 0721: 47 02 ONI A,$02
|
|
// 0723: c8 JR $072C
|
|
// 0724: 05 4f fd ANIW $FF4F,$FD
|
|
// 0727: 47 01 ONI A,$01
|
|
// 0729: 4e 4d JRE $0778
|
|
// 072b: c8 JR $0734
|
|
// 072c: 05 4f fe ANIW $FF4F,$FE
|
|
// 072f: 47 01 ONI A,$01
|
|
// 0731: 15 4f 01 ORIW $FF4F,$01
|
|
// 0734: 69 03 MVI A,$03
|
|
// 0736: 74 88 4f ANAW $FF4F
|
|
// 0739: 15 4f 20 ORIW $FF4F,$20
|
|
// 073c: 77 01 EQI A,$01
|
|
// 073e: 05 4f df ANIW $FF4F,$DF
|
|
// 0741: 6a 0d MVI B,$0D
|
|
// 0743: 69 00 MVI A,$00
|
|
// 0745: 34 40 ff LXI HL,$FF40
|
|
// 0748: 3d STAX (HL+)
|
|
// 0749: 52 DCR B
|
|
// 074a: fd JR $0748
|
|
// 074b: 4f a7 JRE $06F4
|
|
// 074d: 77 40 EQI A,$40
|
|
// 074f: ce JR $075E
|
|
// 0750: 74 6b 00 NEI C,$00
|
|
// 0753: c5 JR $0759
|
|
// 0754: 15 b6 10 ORIW $FFB6,$10
|
|
// 0757: 4f 9b JRE $06F4
|
|
// 0759: 15 b6 08 ORIW $FFB6,$08
|
|
// 075c: 4f 96 JRE $06F4
|
|
// 075e: 77 01 EQI A,$01
|
|
// 0760: 4f 92 JRE $06F4
|
|
// 0762: 55 a8 20 OFFIW $FFA8_midiSwitch,$20 (MIDI Func1)
|
|
// 0765: c7 JR $076D
|
|
// 0766: 0b MOV A,C
|
|
// 0767: 17 80 ORI A,$80
|
|
// 0769: 63 a2 STAW $FFA2
|
|
// 076b: 4f 87 JRE $06F4
|
|
// 076d: 71 a2 80 MVIW $FFA2,$80
|
|
// 0770: 4f 82 JRE $06F4
|
|
// 0772: 5d 4f BIT 5,$FF4F
|
|
// 0774: 4f 7e JRE $06F4
|
|
// 0776: 4f c9 JRE $0741
|
|
// 0778: 74 7b 01 EQI C,$01
|
|
// 077b: 15 4f 02 ORIW $FF4F,$02
|
|
// 077e: 4f b4 JRE $0734
|
|
// 0780: 55 a8 20 OFFIW $FFA8_midiSwitch,$20 (MIDI Func1)
|
|
// 0783: c5 JR $0789
|
|
// 0784: 0b MOV A,C
|
|
// 0785: 17 80 ORI A,$80
|
|
// 0787: 63 a3 STAW $FFA3
|
|
// 0789: 71 3f 00 MVIW $FF3F_midiByteCount,$00
|
|
// 078c: 54 4c 06 JMP $064C
|
|
// 078f: 55 a8 20 OFFIW $FFA8_midiSwitch,$20 (MIDI Func1)
|
|
// 0792: d7 JR $07AA
|
|
// 0793: 0b MOV A,C
|
|
// 0794: 18 MOV EAH,A
|
|
// 0795: 01 3e LDAW $FF3E_midiParam1
|
|
// 0797: 48 25 SLL A
|
|
// 0799: 19 MOV EAL,A
|
|
// 079a: 48 a4 DSLL EA
|
|
// 079c: 08 MOV A,EAH
|
|
// 079d: 47 80 ONI A,$80
|
|
// 079f: c4 JR $07A4
|
|
// 07a0: 63 a1 STAW $FFA1
|
|
// 07a2: 4f 50 JRE $06F4
|
|
// 07a4: 16 ff XRI A,$FF
|
|
// 07a6: 63 a0 STAW $FFA0
|
|
// 07a8: 4f 4a JRE $06F4
|
|
// 07aa: 71 a1 80 MVIW $FFA1,$80
|
|
// 07ad: 4f 45 JRE $06F4
|
|
// 07af: 01 c1 LDAW $FFC1
|
|
// 07b1: 74 f8 c2 EQAW $FFC2
|
|
// 07b4: 4e 25 JRE $07DB
|
|
// 07b6: 64 1e 04 ORI MKH,$04
|
|
// 07b9: 11 EXX
|
|
// 07ba: 10 EXA
|
|
// 07bb: aa EI
|
|
// 07bc: 62 RETI
|
|
|
|
|
|
// 07bd: 1b MOV C,A
|
|
// 07be: 4c c2 MOV A,PC
|
|
// 07c0: 60 93 XRA A,C
|
|
// 07c2: 47 04 ONI A,$04
|
|
// 07c4: ca JR $07CF
|
|
// 07c5: 69 d0 MVI A,$D0
|
|
// 07c7: 48 49 SKIT FSR
|
|
// 07c9: c3 JR $07CD
|
|
// 07ca: 54 a0 05 JMP $05A0
|
|
// 07cd: 41 INR A
|
|
// 07ce: f8 JR $07C7
|
|
// 07cf: 0f MOV A,L
|
|
// 07d0: 37 30 LTI A,$30
|
|
// 07d2: 69 00 MVI A,$00
|
|
// 07d4: 63 c1 STAW $FFC1
|
|
// 07d6: 0b MOV A,C
|
|
// 07d7: 4d c2 MOV PC,A
|
|
// 07d9: 4f d4 JRE $07AF
|
|
// 07db: 6e ff MVI H,$FF
|
|
// 07dd: 1f MOV L,A
|
|
// 07de: 2d LDAX (HL+)
|
|
// 07df: 67 fd NEI A,$FD
|
|
// 07e1: 4f da JRE $07BD
|
|
// 07e3: 67 f9 NEI A,$F9
|
|
// 07e5: 4f d6 JRE $07BD
|
|
// 07e7: 48 4a SKIT FST
|
|
// 07e9: cd JR $07F7
|
|
// 07ea: 4d d8 MOV TXB,A
|
|
// 07ec: 0f MOV A,L
|
|
// 07ed: 37 30 LTI A,$30
|
|
// 07ef: 69 00 MVI A,$00
|
|
// 07f1: 63 c1 STAW $FFC1
|
|
// 07f3: 11 EXX
|
|
// 07f4: 10 EXA
|
|
// 07f5: aa EI
|
|
// 07f6: 62 RETI
|
|
// 07f7: 33 DCX HL
|
|
// 07f8: fa JR $07F3
|
|
// 07f9: 00 NOP
|
|
// 07fa: 00 NOP
|
|
// 07fb: 00 NOP
|
|
// 07fc: 00 NOP
|
|
// 07fd: 00 NOP
|
|
// 07fe: 00 NOP
|
|
// 07ff: 00 NOP
|
|
|
|
// something to do with display
|
|
// 0800: 01 be LDAW $FFBE_transpose
|
|
// 0802: 37 0c LTI A,$0C
|
|
// 0804: c4 JR $0809
|
|
// 0805: 71 c5 04 MVIW $FFC5_leftDigit,$04
|
|
// 0808: c3 JR $080C
|
|
// 0809: 71 c5 00 MVIW $FFC5_leftDigit,$00
|
|
// 080c: 34 60 00 LXI HL,$0060
|
|
// 080f: ac LDAX (HL+A)
|
|
// 0810: 63 c6 STAW $FFC6_rightDigit
|
|
// 0812: b8 RET
|
|
|
|
// set flags store MIDI channel
|
|
// 0813: 05 4f dc ANIW $FF4F,$DC
|
|
// 0816: 15 4f 21 ORIW $FF4F,$21
|
|
// 0819: 63 bd STAW $FFBD_midiChannel
|
|
// 081b: 34 40 00 LXI HL,$0040
|
|
// 081e: ac LDAX (HL+A)
|
|
// 081f: 7d 45 CALF $0D45_digitLookup
|
|
// 0821: 78 43 CALF $0843_sendOmniOffPoly
|
|
// 0823: 7b 9a CALF $0B9A
|
|
// 0825: 78 28 CALF $0828
|
|
// 0827: b8 RET
|
|
|
|
// centre bend to module board
|
|
// 0828: 69 80 MVI A,$80
|
|
// 082a: 63 a1 STAW $FFA1
|
|
// 082c: 63 a2 STAW $FFA2
|
|
// 082e: 69 fd MVI A,$FD // select module board
|
|
// 0830: 79 e8 CALF $09E8_sendToTx
|
|
// 0832: 69 87 MVI A,$87
|
|
// 0834: 79 e8 CALF $09E8_sendToTx
|
|
// 0836: b8 RET
|
|
|
|
// send to module board
|
|
// 0837: 1b MOV C,A
|
|
// 0838: 69 fd MVI A,$FD // select module board
|
|
// 083a: 79 e8 CALF $09E8_sendToTx
|
|
// 083c: 0a MOV A,B
|
|
// 083d: 79 e8 CALF $09E8_sendToTx
|
|
// 083f: 0b MOV A,C
|
|
// 0840: 79 e8 CALF $09E8_sendToTx
|
|
// 0842: b8 RET
|
|
|
|
// send Omni Off Poly
|
|
// 0843: 69 f9 MVI A,$F9
|
|
// 0845: 79 e8 CALF $09E8_sendToTx
|
|
// 0847: 69 b0 MVI A,$B0
|
|
// 0849: 79 d5 CALF $09D5
|
|
// 084b: 69 7c MVI A,$7C
|
|
// 084d: 79 e8 CALF $09E8_sendToTx
|
|
// 084f: 69 00 MVI A,$00
|
|
// 0851: 79 e8 CALF $09E8_sendToTx
|
|
// 0853: 69 7f MVI A,$7F
|
|
// 0855: 79 e8 CALF $09E8_sendToTx
|
|
// 0857: 69 00 MVI A,$00
|
|
// 0859: 79 e8 CALF $09E8_sendToTx
|
|
// 085b: b8 RET
|
|
|
|
// send Zero DAC command to module board
|
|
// 085c: 69 fd MVI A,$FD // select module board
|
|
// 085e: 79 e8 CALF $09E8_sendToTx
|
|
// 0860: 69 8f MVI A,$8F
|
|
// 0862: 79 e8 CALF $09E8_sendToTx
|
|
// 0864: 69 5f MVI A,$5F
|
|
// 0866: 79 e8 CALF $09E8_sendToTx
|
|
// 0868: 69 a3 MVI A,$A3
|
|
// 086a: 79 e8 CALF $09E8_sendToTx
|
|
// 086c: 69 00 MVI A,$00
|
|
// 086e: 79 e8 CALF $09E8_sendToTx
|
|
// 0870: b8 RET
|
|
|
|
// read ADCs
|
|
// 0871: 4c e0 MOV A,CR0
|
|
// 0873: 3d STAX (HL+)
|
|
// 0874: 4c e1 MOV A,CR1
|
|
// 0876: 3d STAX (HL+)
|
|
// 0877: 4c e2 MOV A,CR2
|
|
// 0879: 3d STAX (HL+)
|
|
// 087a: 4c e3 MOV A,CR3
|
|
// 087c: 3b STAX (HL)
|
|
// 087d: b8 RET
|
|
|
|
|
|
// 087e: 78 c3 CALF $08C3
|
|
// 0880: 59 b6 BIT 1,$FFB6
|
|
// 0882: 4e 23 JRE $08A7
|
|
// 0884: 55 c5 10 OFFIW $FFC5_leftDigit,$10
|
|
// 0887: df JR $08A7
|
|
// 0888: b3 PUSH HL
|
|
// 0889: b2 PUSH DE
|
|
// 088a: 6c ff MVI D,$FF
|
|
// 088c: 34 30 00 LXI HL,$0030
|
|
// 088f: ad LDAX (HL+B)
|
|
// 0890: 1d MOV E,A
|
|
// 0891: 0b MOV A,C
|
|
// 0892: 3a STAX (DE)
|
|
// 0893: 69 fd MVI A,$FD // select module board
|
|
// 0895: 79 e8 CALF $09E8_sendToTx
|
|
// 0897: 0d MOV A,E
|
|
// 0898: 79 e8 CALF $09E8_sendToTx
|
|
// 089a: 0b MOV A,C
|
|
// 089b: 79 e8 CALF $09E8_sendToTx
|
|
// 089d: 45 a8 30 ONIW $FFA8_midiSwitch,$30 (MIDI Func1+2)
|
|
// 08a0: 78 d6 CALF $08D6
|
|
// 08a2: a2 POP DE
|
|
// 08a3: a3 POP HL
|
|
// 08a4: 2a LDAX (DE)
|
|
// 08a5: 3b STAX (HL)
|
|
// 08a6: b8 RET
|
|
// 08a7: b3 PUSH HL
|
|
// 08a8: b2 PUSH DE
|
|
// 08a9: 6c ff MVI D,$FF
|
|
// 08ab: 34 30 00 LXI HL,$0030
|
|
// 08ae: ad LDAX (HL+B)
|
|
// 08af: 1d MOV E,A
|
|
// 08b0: 2a LDAX (DE)
|
|
// 08b1: 57 80 OFFI A,$80
|
|
// 08b3: c9 JR $08BD
|
|
// 08b4: 09 MOV A,EAL
|
|
// 08b5: 37 10 LTI A,$10
|
|
// 08b7: c3 JR $08BB
|
|
// 08b8: a2 POP DE
|
|
// 08b9: a3 POP HL
|
|
// 08ba: b8 RET
|
|
// 08bb: 7d 5b CALF $0D5B
|
|
// 08bd: 0b MOV A,C
|
|
// 08be: 17 80 ORI A,$80
|
|
// 08c0: 3a STAX (DE)
|
|
// 08c1: 4f d0 JRE $0893
|
|
|
|
// unknown1
|
|
// 08c3: 2a LDAX (DE)
|
|
// 08c4: 36 04 SUINB A,$04
|
|
// 08c6: 69 00 MVI A,$00
|
|
// 08c8: 27 f2 GTI A,$F2
|
|
// 08ca: c7 JR $08D2
|
|
// 08cb: 1b MOV C,A
|
|
// 08cc: 66 f2 SUI A,$F2
|
|
// 08ce: 60 a3 ADDNC A,C
|
|
// 08d0: 69 ff MVI A,$FF
|
|
// 08d2: 48 21 SLR A
|
|
// 08d4: 1b MOV C,A
|
|
// 08d5: b8 RET
|
|
|
|
// send single value sysex
|
|
// 08d6: 6c 32 MVI D,$32
|
|
// 08d8: 79 15 CALF $0915_sendSysexHeader
|
|
// 08da: 0d MOV A,E
|
|
// 08db: 66 90 SUI A,$90
|
|
// 08dd: 07 7f ANI A,$7F
|
|
// 08df: 79 e8 CALF $09E8_sendToTx
|
|
// 08e1: 0b MOV A,C
|
|
// 08e2: 79 e8 CALF $09E8_sendToTx
|
|
// 08e4: 69 f7 MVI A,$F7
|
|
// 08e6: 79 e6 CALF $09E6_setRunningStatus
|
|
// 08e8: b8 RET
|
|
|
|
// send sysex header for Manual mode
|
|
// 08e9: 6c 31 MVI D,$31
|
|
// 08eb: 79 15 CALF $0915_sendSysexHeader
|
|
// 08ed: 69 00 MVI A,$00
|
|
// 08ef: c6 JR $08F6
|
|
|
|
// sendSysexPatch
|
|
// 08f0: 6c 30 MVI D,$30
|
|
// 08f2: 79 15 CALF $0915_sendSysexHeader
|
|
// 08f4: 79 36 CALF $0936
|
|
// 08f6: 79 e8 CALF $09E8_sendToTx
|
|
// 08f8: 6a 0f MVI B,$0F
|
|
// 08fa: 34 90 ff LXI HL,$FF90_patchRam
|
|
// 08fd: 2d LDAX (HL+)
|
|
// 08fe: 07 7f ANI A,$7F
|
|
// 0900: 79 e8 CALF $09E8_sendToTx
|
|
// 0902: 52 DCR B
|
|
// 0903: f9 JR $08FD
|
|
// 0904: 01 8e LDAW $FF8E_switches1
|
|
// 0906: 07 7f ANI A,$7F
|
|
// 0908: 79 e8 CALF $09E8_sendToTx
|
|
// 090a: 01 8f LDAW $FF8F_switches2
|
|
// 090c: 07 1f ANI A,$1F
|
|
// 090e: 79 e8 CALF $09E8_sendToTx
|
|
// 0910: 69 f7 MVI A,$F7
|
|
// 0912: 79 e8 CALF $09E8_sendToTx
|
|
// 0914: b8 RET
|
|
|
|
// sendSysexHeader
|
|
// 0915: 69 f9 MVI A,$F9
|
|
// 0917: 79 e8 CALF $09E8_sendToTx
|
|
// 0919: 69 f0 MVI A,$F0
|
|
// 091b: 79 e6 CALF $09E6_setRunningStatus
|
|
// 091d: 69 41 MVI A,$41
|
|
// 091f: 79 e8 CALF $09E8_sendToTx
|
|
// 0921: 0c MOV A,D
|
|
// 0922: 79 e8 CALF $09E8_sendToTx
|
|
// 0924: 01 bd LDAW $FFBD_midiChannel
|
|
// 0926: 79 e8 CALF $09E8_sendToTx
|
|
// 0928: b8 RET
|
|
|
|
// send Program Change message over MIDI
|
|
// 0929: 69 f9 MVI A,$F9
|
|
// 092b: 79 e8 CALF $09E8_sendToTx
|
|
// 092d: 69 c0 MVI A,$C0
|
|
// 092f: 79 d5 CALF $09D5
|
|
// 0931: 79 36 CALF $0936
|
|
// 0933: 79 e8 CALF $09E8_sendToTx
|
|
// 0935: b8 RET
|
|
|
|
// calculate patch number for MIDI
|
|
// 0936: 01 bb LDAW $FFBB
|
|
// 0938: 51 DCR A
|
|
// 0939: 1b MOV C,A
|
|
// 093a: 01 ba LDAW $FFBA
|
|
// 093c: 66 10 SUI A,$10
|
|
// 093e: 48 21 SLR A
|
|
// 0940: 60 9b ORA A,C
|
|
// 0942: 5e c8 BIT 6,$FFC8
|
|
// 0944: 17 40 ORI A,$40
|
|
// 0946: b8 RET
|
|
|
|
// send E followed by (DE) to module board
|
|
// 0947: 69 fd MVI A,$FD // select module board
|
|
// 0949: 79 e8 CALF $09E8_sendToTx
|
|
// 094b: 0d MOV A,E
|
|
// 094c: 79 e8 CALF $09E8_sendToTx
|
|
// 094e: 2a LDAX (DE)
|
|
// 094f: 07 7f ANI A,$7F
|
|
// 0951: 3a STAX (DE)
|
|
// 0952: 79 e8 CALF $09E8_sendToTx
|
|
// 0954: b8 RET
|
|
|
|
// send Pitch Bend
|
|
// 0955: 55 a8 20 OFFIW $FFA8_midiSwitch,$20 (MIDI Func1)
|
|
// 0958: b8 RET
|
|
// 0959: 2a LDAX (DE)
|
|
// 095a: 3b STAX (HL)
|
|
// 095b: 44 00 00 LXI EA,$0000
|
|
// 095e: 35 6a 80 LTIW $FF6A,$80
|
|
// 0961: 16 ff XRI A,$FF
|
|
// 0963: 18 MOV EAH,A
|
|
// 0964: 48 a0 DSLR EA
|
|
// 0966: 48 a0 DSLR EA
|
|
// 0968: 69 f9 MVI A,$F9
|
|
// 096a: 79 e8 CALF $09E8_sendToTx
|
|
// 096c: 69 e0 MVI A,$E0
|
|
// 096e: 79 dc CALF $09DC
|
|
// 0970: 09 MOV A,EAL
|
|
// 0971: 48 21 SLR A
|
|
// 0973: 79 e8 CALF $09E8_sendToTx
|
|
// 0975: 08 MOV A,EAH
|
|
// 0976: 25 6a 80 GTIW $FF6A,$80
|
|
// 0979: 17 40 ORI A,$40
|
|
// 097b: 79 e8 CALF $09E8_sendToTx
|
|
// 097d: b8 RET
|
|
|
|
// send modwheel to MIDI
|
|
// 097e: 0b MOV A,C
|
|
// 097f: 63 7f STAW $FF7F
|
|
// 0981: 55 a8 20 OFFIW $FFA8_midiSwitch,$20 (MIDI Func1)
|
|
// 0984: b8 RET
|
|
// 0985: 1b MOV C,A
|
|
// 0986: 69 f9 MVI A,$F9
|
|
// 0988: 79 e8 CALF $09E8_sendToTx
|
|
// 098a: 69 b0 MVI A,$B0
|
|
// 098c: 79 d5 CALF $09D5
|
|
// 098e: 69 01 MVI A,$01
|
|
// 0990: 79 e8 CALF $09E8_sendToTx
|
|
// 0992: 0b MOV A,C
|
|
// 0993: 79 e8 CALF $09E8_sendToTx
|
|
// 0995: b8 RET
|
|
|
|
// voice mapper?
|
|
// 0996: 19 MOV EAL,A
|
|
// 0997: 0a MOV A,B
|
|
// 0998: 07 07 ANI A,$07
|
|
// 099a: 7a 0d CALF $0A0D
|
|
// 099c: b3 PUSH HL
|
|
// 099d: b1 PUSH BC
|
|
// 099e: 6a 00 MVI B,$00
|
|
// 09a0: 09 MOV A,EAL
|
|
// 09a1: 1b MOV C,A
|
|
// 09a2: 48 03 SLRC C
|
|
// 09a4: d5 JR $09BA
|
|
// 09a5: 34 08 00 LXI HL,$0008
|
|
// 09a8: ad LDAX (HL+B)
|
|
// 09a9: 74 c8 c3 ONAW $FFC3
|
|
// 09ac: c7 JR $09B4
|
|
// 09ad: 79 c2 CALF $09C2
|
|
// 09af: 69 40 MVI A,$40
|
|
// 09b1: 79 e8 CALF $09E8_sendToTx
|
|
// 09b3: c6 JR $09BA
|
|
// 09b4: 79 c2 CALF $09C2
|
|
// 09b6: 69 00 MVI A,$00
|
|
// 09b8: 79 e8 CALF $09E8_sendToTx
|
|
// 09ba: 42 INR B
|
|
// 09bb: 74 7a 08 EQI B,$08
|
|
// 09be: e3 JR $09A2
|
|
// 09bf: a1 POP BC
|
|
// 09c0: a3 POP HL
|
|
// 09c1: b8 RET
|
|
|
|
// send Note On to MIDI
|
|
// 09c2: 69 f9 MVI A,$F9
|
|
// 09c4: 79 e8 CALF $09E8_sendToTx
|
|
// 09c6: 69 90 MVI A,$90
|
|
// 09c8: 79 dc CALF $09DC
|
|
// 09ca: 08 MOV A,EAH
|
|
// 09cb: 60 9a ORA A,B
|
|
// 09cd: 46 18 ADI A,$18
|
|
// 09cf: 74 c0 be ADDW $FFBE_transpose
|
|
// 09d2: 79 e8 CALF $09E8_sendToTx
|
|
// 09d4: b8 RET
|
|
|
|
// add MIDI channel to status, set running status, send
|
|
// 09d5: 74 c0 bd ADDW $FFBD_midiChannel
|
|
// 09d8: 71 c0 00 MVIW $FFC0_runningStatus,$00
|
|
// 09db: cc JR $09E8_sendToTx
|
|
|
|
// add MIDI channel and send
|
|
// 09dc: 47 80 ONI A,$80
|
|
// 09de: c9 JR $09E8_sendToTx
|
|
// 09df: 74 c0 bd ADDW $FFBD_midiChannel
|
|
// 09e2: 74 e8 c0 NEAW $FFC0_runningStatus
|
|
// 09e5: b8 RET
|
|
|
|
// set running status
|
|
// 09e6: 63 c0 STAW $FFC0_runningStatus
|
|
// send to TX
|
|
// 09e8: b3 PUSH HL
|
|
// 09e9: b1 PUSH BC
|
|
// 09ea: b2 PUSH DE
|
|
// 09eb: 1b MOV C,A
|
|
// 09ec: 01 c2 LDAW $FFC2
|
|
// 09ee: 41 INR A
|
|
// 09ef: 67 30 NEI A,$30
|
|
// 09f1: 69 00 MVI A,$00
|
|
// 09f3: 74 e8 c1 NEAW $FFC1
|
|
// 09f6: fc JR $09F3
|
|
// 09f7: 1d MOV E,A
|
|
// 09f8: 01 c2 LDAW $FFC2
|
|
// 09fa: 34 00 ff LXI HL,$FF00
|
|
// 09fd: 1a MOV B,A
|
|
// 09fe: 0b MOV A,C
|
|
// 09ff: bd STAX (HL+B)
|
|
// 0a00: 0d MOV A,E
|
|
// 0a01: 64 1e 07 ORI MKH,$07
|
|
// 0a04: 63 c2 STAW $FFC2
|
|
// 0a06: 64 0e f8 ANI MKH,$F8
|
|
// 0a09: a2 POP DE
|
|
// 0a0a: a1 POP BC
|
|
// 0a0b: a3 POP HL
|
|
// 0a0c: b8 RET
|
|
|
|
// a / 8 into EAH, C back into A, store C at $FFC3
|
|
// to do with note on flags
|
|
// 0a0d: 48 25 SLL A
|
|
// 0a0f: 48 25 SLL A
|
|
// 0a11: 48 25 SLL A
|
|
// 0a13: 18 MOV EAH,A
|
|
// 0a14: 0b MOV A,C
|
|
// 0a15: 63 c3 STAW $FFC3
|
|
// 0a17: b8 RET
|
|
|
|
// voice functions?
|
|
// 0a18: 19 MOV EAL,A
|
|
// 0a19: 0a MOV A,B
|
|
// 0a1a: 7a 0d CALF $0A0D
|
|
// 0a1c: b3 PUSH HL
|
|
// 0a1d: b1 PUSH BC
|
|
// 0a1e: 6a 07 MVI B,$07
|
|
// 0a20: 09 MOV A,EAL
|
|
// 0a21: 1b MOV C,A
|
|
// 0a22: 34 08 00 LXI HL,$0008
|
|
// 0a25: 48 07 SLLC C
|
|
// 0a27: 4e 37 JRE $0A60
|
|
// 0a29: ad LDAX (HL+B)
|
|
// 0a2a: 74 c8 c3 ONAW $FFC3
|
|
// 0a2d: 4e 23 JRE $0A52
|
|
// 0a2f: 08 MOV A,EAH
|
|
// 0a30: 60 9a ORA A,B
|
|
// 0a32: 59 c8 BIT 1,$FFC8
|
|
// 0a34: da JR $0A4F
|
|
// 0a35: 5a c8 BIT 2,$FFC8
|
|
// 0a37: c7 JR $0A3F
|
|
// 0a38: 58 b6 BIT 0,$FFB6
|
|
// 0a3a: c7 JR $0A42
|
|
// 0a3b: 7a 88 CALF $0A88
|
|
// 0a3d: 4e 21 JRE $0A60
|
|
// 0a3f: 58 b6 BIT 0,$FFB6
|
|
// 0a41: ca JR $0A4C
|
|
// 0a42: 75 d0 00 EQIW $FFD0,$00
|
|
// 0a45: da JR $0A60
|
|
// 0a46: 7b 55 CALF $0B55
|
|
// 0a48: 71 d0 80 MVIW $FFD0,$80
|
|
// 0a4b: d4 JR $0A60
|
|
// 0a4c: 7a af CALF $0AAF
|
|
// 0a4e: d1 JR $0A60
|
|
// 0a4f: 7a 76 CALF $0A76
|
|
// 0a51: ce JR $0A60
|
|
// 0a52: 08 MOV A,EAH
|
|
// 0a53: 60 9a ORA A,B
|
|
// 0a55: 59 c8 BIT 1,$FFC8
|
|
// 0a57: c6 JR $0A5E
|
|
// 0a58: 5a c8 BIT 2,$FFC8
|
|
// 0a5a: cb JR $0A66
|
|
// 0a5b: 58 b6 BIT 0,$FFB6
|
|
// 0a5d: cb JR $0A69
|
|
// 0a5e: 7b 30 CALF $0B30
|
|
// 0a60: 52 DCR B
|
|
// 0a61: 4f c2 JRE $0A25
|
|
// 0a63: a1 POP BC
|
|
// 0a64: a3 POP HL
|
|
// 0a65: b8 RET
|
|
// 0a66: 58 b6 BIT 0,$FFB6
|
|
// 0a68: ca JR $0A73
|
|
// 0a69: 75 d0 00 EQIW $FFD0,$00
|
|
// 0a6c: f3 JR $0A60
|
|
// 0a6d: 7b 70 CALF $0B70_stopAllNotes
|
|
// 0a6f: 71 d0 ff MVIW $FFD0,$FF
|
|
// 0a72: ed JR $0A60
|
|
// 0a73: 7a f8 CALF $0AF8
|
|
// 0a75: ea JR $0A60
|
|
|
|
// voice functions
|
|
// 0a76: b3 PUSH HL
|
|
// 0a77: b1 PUSH BC
|
|
// 0a78: 1b MOV C,A
|
|
// 0a79: 6a 05 MVI B,$05
|
|
// 0a7b: 34 88 ff LXI HL,$FF88
|
|
// 0a7e: 2b LDAX (HL)
|
|
// 0a7f: 57 80 OFFI A,$80
|
|
// 0a81: dc JR $0A9E
|
|
// 0a82: 32 INX HL
|
|
// 0a83: 52 DCR B
|
|
// 0a84: f9 JR $0A7E
|
|
// 0a85: a1 POP BC
|
|
// 0a86: a3 POP HL
|
|
// 0a87: b8 RET
|
|
|
|
// voice functions
|
|
// 0a88: b3 PUSH HL
|
|
// 0a89: b1 PUSH BC
|
|
// 0a8a: 6e ff MVI H,$FF
|
|
// 0a8c: 1b MOV C,A
|
|
// 0a8d: 01 86 LDAW $FF86
|
|
// 0a8f: 41 INR A
|
|
// 0a90: 77 8e EQI A,$8E
|
|
// 0a92: c2 JR $0A95
|
|
// 0a93: 69 88 MVI A,$88
|
|
// 0a95: 63 86 STAW $FF86
|
|
// 0a97: 1f MOV L,A
|
|
// 0a98: 2b LDAX (HL)
|
|
// 0a99: 57 80 OFFI A,$80
|
|
// 0a9b: c2 JR $0A9E
|
|
// 0a9c: 52 DCR B
|
|
// 0a9d: ef JR $0A8D
|
|
// 0a9e: 69 fd MVI A,$FD // select module board
|
|
// 0aa0: 79 e8 CALF $09E8_sendToTx
|
|
// 0aa2: 0f MOV A,L
|
|
// 0aa3: 79 e8 CALF $09E8_sendToTx
|
|
// 0aa5: 0b MOV A,C
|
|
// 0aa6: 3b STAX (HL)
|
|
// 0aa7: 74 c0 be ADDW $FFBE_transpose
|
|
// 0aaa: 79 e8 CALF $09E8_sendToTx
|
|
// 0aac: a1 POP BC
|
|
// 0aad: a3 POP HL
|
|
// 0aae: b8 RET
|
|
|
|
// voice functions
|
|
// 0aaf: b3 PUSH HL
|
|
// 0ab0: b1 PUSH BC
|
|
// 0ab1: b2 PUSH DE
|
|
// 0ab2: 1b MOV C,A
|
|
// 0ab3: 6a 05 MVI B,$05
|
|
// 0ab5: 6c ff MVI D,$FF
|
|
// 0ab7: 34 85 ff LXI HL,$FF85
|
|
// 0aba: 2b LDAX (HL)
|
|
// 0abb: 1d MOV E,A
|
|
// 0abc: 2a LDAX (DE)
|
|
// 0abd: 57 80 OFFI A,$80
|
|
// 0abf: ca JR $0ACA
|
|
// 0ac0: a2 POP DE
|
|
// 0ac1: a1 POP BC
|
|
// 0ac2: a3 POP HL
|
|
// 0ac3: b8 RET
|
|
// 0ac4: 2b LDAX (HL)
|
|
// 0ac5: 1d MOV E,A
|
|
// 0ac6: 2a LDAX (DE)
|
|
// 0ac7: 47 80 ONI A,$80
|
|
// 0ac9: c8 JR $0AD2
|
|
// 0aca: 07 7f ANI A,$7F
|
|
// 0acc: 60 eb NEA A,C
|
|
// 0ace: d1 JR $0AE0
|
|
// 0acf: 33 DCX HL
|
|
// 0ad0: 52 DCR B
|
|
// 0ad1: f2 JR $0AC4
|
|
// 0ad2: 32 INX HL
|
|
// 0ad3: 2b LDAX (HL)
|
|
// 0ad4: 1d MOV E,A
|
|
// 0ad5: 0b MOV A,C
|
|
// 0ad6: ce JR $0AE5
|
|
// 0ad7: 33 DCX HL
|
|
// 0ad8: af 01 LDAX (HL+$01)
|
|
// 0ada: 1b MOV C,A
|
|
// 0adb: 2b LDAX (HL)
|
|
// 0adc: bf 01 STAX (HL+$01)
|
|
// 0ade: 0b MOV A,C
|
|
// 0adf: 3b STAX (HL)
|
|
// 0ae0: 52 DCR B
|
|
// 0ae1: f5 JR $0AD7
|
|
// 0ae2: 2a LDAX (DE)
|
|
// 0ae3: 07 7f ANI A,$7F
|
|
// 0ae5: 3a STAX (DE)
|
|
// 0ae6: 74 c0 be ADDW $FFBE_transpose
|
|
// 0ae9: 1b MOV C,A
|
|
// 0aea: 69 fd MVI A,$FD // select module board
|
|
// 0aec: 79 e8 CALF $09E8_sendToTx
|
|
// 0aee: 0d MOV A,E
|
|
// 0aef: 79 e8 CALF $09E8_sendToTx
|
|
// 0af1: 0b MOV A,C
|
|
// 0af2: 79 e8 CALF $09E8_sendToTx
|
|
// 0af4: a2 POP DE
|
|
// 0af5: a1 POP BC
|
|
// 0af6: a3 POP HL
|
|
// 0af7: b8 RET
|
|
|
|
// voice functions
|
|
// 0af8: b3 PUSH HL
|
|
// 0af9: b1 PUSH BC
|
|
// 0afa: b2 PUSH DE
|
|
// 0afb: 1b MOV C,A
|
|
// 0afc: 6a 05 MVI B,$05
|
|
// 0afe: 6c ff MVI D,$FF
|
|
// 0b00: 34 80 ff LXI HL,$FF80
|
|
// 0b03: 2b LDAX (HL)
|
|
// 0b04: 1d MOV E,A
|
|
// 0b05: 2a LDAX (DE)
|
|
// 0b06: 07 7f ANI A,$7F
|
|
// 0b08: 60 eb NEA A,C
|
|
// 0b0a: d0 JR $0B1B
|
|
// 0b0b: 32 INX HL
|
|
// 0b0c: 52 DCR B
|
|
// 0b0d: f5 JR $0B03
|
|
// 0b0e: a2 POP DE
|
|
// 0b0f: a1 POP BC
|
|
// 0b10: a3 POP HL
|
|
// 0b11: b8 RET
|
|
// 0b12: 2b LDAX (HL)
|
|
// 0b13: 1b MOV C,A
|
|
// 0b14: af 01 LDAX (HL+$01)
|
|
// 0b16: 3b STAX (HL)
|
|
// 0b17: 0b MOV A,C
|
|
// 0b18: bf 01 STAX (HL+$01)
|
|
// 0b1a: 32 INX HL
|
|
// 0b1b: 52 DCR B
|
|
// 0b1c: f5 JR $0B12
|
|
// 0b1d: 2a LDAX (DE)
|
|
// 0b1e: 17 80 ORI A,$80
|
|
// 0b20: 3a STAX (DE)
|
|
// 0b21: 0d MOV A,E
|
|
// 0b22: 66 08 SUI A,$08
|
|
// 0b24: 1b MOV C,A
|
|
// 0b25: 69 fd MVI A,$FD // select module board
|
|
// 0b27: 79 e8 CALF $09E8_sendToTx
|
|
// 0b29: 0b MOV A,C
|
|
// 0b2a: 79 e8 CALF $09E8_sendToTx
|
|
// 0b2c: a2 POP DE
|
|
// 0b2d: a1 POP BC
|
|
// 0b2e: a3 POP HL
|
|
// 0b2f: b8 RET
|
|
|
|
// voice functions
|
|
// 0b30: b3 PUSH HL
|
|
// 0b31: b1 PUSH BC
|
|
// 0b32: 1b MOV C,A
|
|
// 0b33: 6a 05 MVI B,$05
|
|
// 0b35: 34 88 ff LXI HL,$FF88
|
|
// 0b38: 2b LDAX (HL)
|
|
// 0b39: 47 80 ONI A,$80
|
|
// 0b3b: c6 JR $0B42
|
|
// 0b3c: 32 INX HL
|
|
// 0b3d: 52 DCR B
|
|
// 0b3e: f9 JR $0B38
|
|
// 0b3f: a1 POP BC
|
|
// 0b40: a3 POP HL
|
|
// 0b41: b8 RET
|
|
// 0b42: 60 eb NEA A,C
|
|
// 0b44: c1 JR $0B46
|
|
// 0b45: f6 JR $0B3C
|
|
// 0b46: 17 80 ORI A,$80
|
|
// 0b48: 3b STAX (HL)
|
|
// 0b49: 69 fd MVI A,$FD // select module board
|
|
// 0b4b: 79 e8 CALF $09E8_sendToTx
|
|
// 0b4d: 0f MOV A,L
|
|
// 0b4e: 66 08 SUI A,$08
|
|
// 0b50: 79 e8 CALF $09E8_sendToTx
|
|
// 0b52: a1 POP BC
|
|
// 0b53: a3 POP HL
|
|
// 0b54: b8 RET
|
|
|
|
// send note on to module board
|
|
// 0b55: b3 PUSH HL
|
|
// 0b56: b1 PUSH BC
|
|
// 0b57: 74 c0 be ADDW $FFBE_transpose
|
|
// 0b5a: 1b MOV C,A
|
|
// 0b5b: 6a 05 MVI B,$05
|
|
// 0b5d: 34 88 ff LXI HL,$FF88
|
|
// 0b60: 69 fd MVI A,$FD // select module board
|
|
// 0b62: 79 e8 CALF $09E8_sendToTx
|
|
// 0b64: 0f MOV A,L
|
|
// 0b65: 79 e8 CALF $09E8_sendToTx
|
|
// 0b67: 0b MOV A,C
|
|
// 0b68: 79 e8 CALF $09E8_sendToTx
|
|
// 0b6a: 32 INX HL
|
|
// 0b6b: 52 DCR B
|
|
// 0b6c: f7 JR $0B64
|
|
// 0b6d: a1 POP BC
|
|
// 0b6e: a3 POP HL
|
|
// 0b6f: b8 RET
|
|
|
|
// stop all notes
|
|
// 0b70: b1 PUSH BC
|
|
// 0b71: 6b 80 MVI C,$80 // first "voice off"
|
|
// 0b73: 6a 05 MVI B,$05 // six voices
|
|
// 0b75: 69 fd MVI A,$FD // select module board // send to module board
|
|
// 0b77: 79 e8 CALF $09E8_sendToTx
|
|
// 0b79: 0b MOV A,C
|
|
// 0b7a: 79 e8 CALF $09E8_sendToTx
|
|
// 0b7c: 43 INR C
|
|
// 0b7d: 52 DCR B
|
|
// 0b7e: fa JR $0B79
|
|
// 0b7f: a1 POP BC
|
|
// 0b80: b8 RET
|
|
|
|
// something to do with voice allocation
|
|
// 0b81: 34 88 ff LXI HL,$FF88
|
|
// 0b84: 6a 05 MVI B,$05
|
|
// 0b86: 69 80 MVI A,$80
|
|
// 0b88: 3d STAX (HL+)
|
|
// 0b89: 52 DCR B
|
|
// 0b8a: fd JR $0B88
|
|
// 0b8b: 34 80 ff LXI HL,$FF80
|
|
// 0b8e: 6a 05 MVI B,$05
|
|
// 0b90: 69 88 MVI A,$88
|
|
// 0b92: 3d STAX (HL+)
|
|
// 0b93: 41 INR A
|
|
// 0b94: 52 DCR B
|
|
// 0b95: fc JR $0B92
|
|
// 0b96: 71 86 88 MVIW $FF86,$88
|
|
// 0b99: b8 RET
|
|
|
|
// clear MIDI on bits
|
|
// 0b9a: 34 40 ff LXI HL,$FF40
|
|
// 0b9d: c3 JR $0BA1
|
|
|
|
// clear note on bits
|
|
// 0b9e: 34 30 ff LXI HL,$FF30
|
|
// 0ba1: 6a 0d MVI B,$0D
|
|
// 0ba3: 69 00 MVI A,$00
|
|
// 0ba5: 3d STAX (HL+)
|
|
// 0ba6: 52 DCR B
|
|
// 0ba7: fd JR $0BA5
|
|
// 0ba8: b8 RET
|
|
|
|
// sends stuff to module board
|
|
// 0ba9: 69 fd MVI A,$FD // select module board // select module board
|
|
// 0bab: 79 e8 CALF $09E8_sendToTx
|
|
// 0bad: 0b MOV A,C
|
|
// 0bae: 47 08 ONI A,$08
|
|
// 0bb0: 69 86 MVI A,$86
|
|
// 0bb2: 69 87 MVI A,$87
|
|
// 0bb4: 79 e8 CALF $09E8_sendToTx
|
|
// 0bb6: 69 f9 MVI A,$F9
|
|
// 0bb8: 79 e8 CALF $09E8_sendToTx
|
|
// 0bba: 69 b0 MVI A,$B0
|
|
// 0bbc: 79 d5 CALF $09D5
|
|
// 0bbe: 69 40 MVI A,$40
|
|
// 0bc0: 79 e8 CALF $09E8_sendToTx
|
|
// 0bc2: 0b MOV A,C
|
|
// 0bc3: 47 08 ONI A,$08
|
|
// 0bc5: 69 7f MVI A,$7F
|
|
// 0bc7: 69 00 MVI A,$00
|
|
// 0bc9: 79 e8 CALF $09E8_sendToTx
|
|
// 0bcb: b8 RET
|
|
|
|
// switches values?
|
|
// 0bcc: 01 b2 LDAW $FFB2
|
|
// 0bce: 07 07 ANI A,$07
|
|
// 0bd0: 1a MOV B,A
|
|
// 0bd1: 01 8e LDAW $FF8E_switches1
|
|
// 0bd3: 07 f8 ANI A,$F8
|
|
// 0bd5: 60 9a ORA A,B
|
|
// 0bd7: 63 8e STAW $FF8E_switches1
|
|
// 0bd9: b8 RET
|
|
|
|
// switches values
|
|
// 0bda: 01 b2 LDAW $FFB2
|
|
// 0bdc: 74 90 8e XRAW $FF8E_switches1
|
|
// 0bdf: 07 18 ANI A,$18
|
|
// 0be1: 1a MOV B,A
|
|
// 0be2: 01 8e LDAW $FF8E_switches1
|
|
// 0be4: 07 e7 ANI A,$E7
|
|
// 0be6: 60 9a ORA A,B
|
|
// 0be8: 63 8e STAW $FF8E_switches1
|
|
// 0bea: b8 RET
|
|
|
|
// switches values
|
|
// 0beb: 01 b2 LDAW $FFB2
|
|
// 0bed: 07 e0 ANI A,$E0
|
|
// 0bef: 1a MOV B,A
|
|
// 0bf0: 01 8e LDAW $FF8E_switches1
|
|
// 0bf2: 07 1f ANI A,$1F
|
|
// 0bf4: 60 9a ORA A,B
|
|
// 0bf6: 63 8e STAW $FF8E_switches1
|
|
// 0bf8: b8 RET
|
|
|
|
// send switches1 to module board
|
|
// 0bf9: 63 c7 STAW $FFC7
|
|
// 0bfb: 16 ff XRI A,$FF
|
|
// 0bfd: 07 7f ANI A,$7F
|
|
// 0bff: 1b MOV C,A
|
|
// 0c00: 69 fd MVI A,$FD // select module board
|
|
// 0c02: 79 e8 CALF $09E8_sendToTx
|
|
// 0c04: 69 8e MVI A,$8E
|
|
// 0c06: 79 e8 CALF $09E8_sendToTx
|
|
// 0c08: 0b MOV A,C
|
|
// 0c09: 79 e8 CALF $09E8_sendToTx
|
|
// 0c0b: b8 RET
|
|
|
|
// adjust switches2
|
|
// 0c0c: 7d 5b CALF $0D5B
|
|
// 0c0e: 55 ad 18 OFFIW $FFAD,$18
|
|
// 0c11: 15 ad 18 ORIW $FFAD,$18
|
|
// 0c14: 01 b7 LDAW $FFB7
|
|
// 0c16: 74 98 ad ORAW $FFAD
|
|
// 0c19: 63 b7 STAW $FFB7
|
|
// 0c1b: 16 ff XRI A,$FF
|
|
// 0c1d: 74 88 8f ANAW $FF8F_switches2
|
|
// 0c20: 1a MOV B,A
|
|
// 0c21: 01 a7 LDAW $FFA7
|
|
// 0c23: 74 88 b7 ANAW $FFB7
|
|
// 0c26: 60 9a ORA A,B
|
|
// 0c28: b8 RET
|
|
|
|
// send switches2 to module board
|
|
// 0c29: 63 8f STAW $FF8F_switches2
|
|
// 0c2b: 16 ff XRI A,$FF
|
|
// 0c2d: 07 1f ANI A,$1F
|
|
// 0c2f: 1b MOV C,A
|
|
// 0c30: 69 fd MVI A,$FD // select module board // select module board
|
|
// 0c32: 79 e8 CALF $09E8_sendToTx
|
|
// 0c34: 69 8f MVI A,$8F
|
|
// 0c36: 79 e8 CALF $09E8_sendToTx
|
|
// 0c38: 0b MOV A,C
|
|
// 0c39: 79 e8 CALF $09E8_sendToTx
|
|
// 0c3b: b8 RET
|
|
|
|
// test bits, juggle switches around
|
|
// 0c3c: 59 b6 BIT 1,$FFB6
|
|
// 0c3e: c7 JR $0C46
|
|
// 0c3f: 01 8e LDAW $FF8E_switches1
|
|
// 0c41: 63 b8 STAW $FFB8
|
|
// 0c43: 05 b6 fd ANIW $FFB6,$FD
|
|
// 0c46: b8 RET
|
|
|
|
// manual mode middle bars
|
|
// 0c47: 71 b7 00 MVIW $FFB7,$00
|
|
// 0c4a: 71 c5 04 MVIW $FFC5_leftDigit,$04
|
|
// 0c4d: 71 c6 04 MVIW $FFC6_rightDigit,$04
|
|
// 0c50: 01 c7 LDAW $FFC7
|
|
// 0c52: 59 b6 BIT 1,$FFB6
|
|
|
|
// switches? falls through from previous
|
|
// 0c54: 01 b8 LDAW $FFB8
|
|
// 0c56: 63 8e STAW $FF8E_switches1
|
|
// 0c58: 7b f9 CALF $0BF9
|
|
// 0c5a: 01 a7 LDAW $FFA7
|
|
// 0c5c: 63 8f STAW $FF8F_switches2
|
|
// 0c5e: 7c 29 CALF $0C29
|
|
// 0c60: 6a 00 MVI B,$00
|
|
// 0c62: 24 58 ff LXI DE,$FF58
|
|
// 0c65: 34 6c ff LXI HL,$FF6C
|
|
// 0c68: 78 c3 CALF $08C3
|
|
// 0c6a: b3 PUSH HL
|
|
// 0c6b: b2 PUSH DE
|
|
// 0c6c: 6c ff MVI D,$FF
|
|
// 0c6e: 34 30 00 LXI HL,$0030
|
|
// 0c71: ad LDAX (HL+B)
|
|
// 0c72: 1d MOV E,A
|
|
// 0c73: 0b MOV A,C
|
|
// 0c74: 3a STAX (DE)
|
|
// 0c75: a2 POP DE
|
|
// 0c76: a3 POP HL
|
|
// 0c77: 2a LDAX (DE)
|
|
// 0c78: 3b STAX (HL)
|
|
// 0c79: 22 INX DE
|
|
// 0c7a: 32 INX HL
|
|
// 0c7b: 42 INR B
|
|
// 0c7c: 74 7a 10 EQI B,$10
|
|
// 0c7f: e8 JR $0C68
|
|
// 0c80: 34 90 ff LXI HL,$FF90_patchRam
|
|
// 0c83: 6a 0f MVI B,$0F
|
|
// 0c85: 2d LDAX (HL+)
|
|
// 0c86: 79 e8 CALF $09E8_sendToTx
|
|
// 0c88: 52 DCR B
|
|
// 0c89: fb JR $0C85
|
|
// 0c8a: 45 a8 30 ONIW $FFA8_midiSwitch,$30 (MIDI Func1+2)
|
|
// 0c8d: 78 e9 CALF $08E9
|
|
// 0c8f: 15 b6 02 ORIW $FFB6,$02
|
|
// 0c92: b8 RET
|
|
|
|
// decimal points off?
|
|
// 0c93: 71 b7 00 MVIW $FFB7,$00
|
|
// 0c96: 05 c5 ef ANIW $FFC5_leftDigit,$EF
|
|
// 0c99: 05 c6 ef ANIW $FFC6_rightDigit,$EF
|
|
// 0c9c: b8 RET
|
|
|
|
// shift bits in a and count?
|
|
// 0c9d: 6a 01 MVI B,$01
|
|
// 0c9f: 48 01 SLRC A
|
|
// 0ca1: c2 JR $0CA4
|
|
// 0ca2: 0a MOV A,B
|
|
// 0ca3: b8 RET
|
|
|
|
// 0ca4: 42 INR B
|
|
// 0ca5: f9 JR $0C9F
|
|
// 0ca6: b8 RET
|
|
|
|
// calculate address for patch data
|
|
// 0ca7: 58 b6 BIT 0,$FFB6 // are we in test mode
|
|
// 0ca9: c8 JR $0CB2 // no, skip ahead
|
|
// 0caa: 6e 0f MVI H,$0F // address is $0f00
|
|
// 0cac: 07 f0 ANI A,$F0
|
|
// 0cae: 46 70 ADI A,$70
|
|
// 0cb0: 1f MOV L,A // address is now $0f80 to $fd0
|
|
// 0cb1: dd JR $0CCF // return
|
|
// 0cb2: 01 bb LDAW $FFBB // patch digit?
|
|
// 0cb4: 51 DCR A // -1
|
|
// 0cb5: 1b MOV C,A // save
|
|
// 0cb6: 01 ba LDAW $FFBA // bank digit
|
|
// 0cb8: 66 10 SUI A,$10 // -16
|
|
// 0cba: 48 21 SLR A // double it
|
|
// 0cbc: 60 9b ORA A,C // OR in patch digit
|
|
// 0cbe: 5e c8 BIT 6,$FFC8 // upper/lower?
|
|
// 0cc0: 17 40 ORI A,$40 // OR in that too
|
|
// 0cc2: 44 00 02 LXI EA,$0200 // form the address in RAM
|
|
// 0cc5: 19 MOV EAL,A // address
|
|
// 0cc6: 48 a4 DSLL EA
|
|
// 0cc8: 48 a4 DSLL EA
|
|
// 0cca: 48 a4 DSLL EA
|
|
// 0ccc: 48 a4 DSLL EA // multiply by 16 bytes
|
|
// 0cce: b7 DMOV HL,EA // HL now looks like $2nn0
|
|
// 0ccf: b8 RET // return
|
|
|
|
// change patch
|
|
// called with patch value in C
|
|
// 0cd0: 69 fd MVI A,$FD // select module board // select module board
|
|
// 0cd2: 79 e8 CALF $09E8_sendToTx
|
|
// 0cd4: 69 90 MVI A,$90 // start with LFO rate, first slider
|
|
// 0cd6: 79 e8 CALF $09E8_sendToTx
|
|
// 0cd8: 0b MOV A,C
|
|
// 0cd9: 7c a7 CALF $0CA7_calcPatchAddr // HL has the address of the patch in RAM
|
|
// 0cdb: 24 90 ff LXI DE,$FF90_patchRam // address to copy to
|
|
// 0cde: 7c f1 CALF $0CF1 // send 8 bytes
|
|
// 0ce0: 0b MOV A,C // get the switches value
|
|
// 0ce1: 63 8e STAW $FF8E_switches1 // save in patchRam
|
|
// 0ce3: 7b f9 CALF $0BF9 // send switches1 to module
|
|
// 0ce5: 69 98 MVI A,$98 // VCF LFO depth
|
|
// 0ce7: 79 e8 CALF $09E8_sendToTx // start it
|
|
// 0ce9: 7c f1 CALF $0CF1 // send the next 8 bytes
|
|
// 0ceb: 0b MOV A,C // get switches value
|
|
// 0cec: 63 8f STAW $FF8F_switches2 // save in patchRam
|
|
// 0cee: 7c 29 CALF $0C29 // send switches2 to module
|
|
// 0cf0: b8 RET
|
|
|
|
// transmit patch bytes to module board
|
|
// decodes bit 7 into C and returns it to send to the switches
|
|
// 0cf1: 6a 07 MVI B,$07 // seven bits
|
|
// 0cf3: 6b 00 MVI C,$00 // clear
|
|
// 0cf5: 2d LDAX (HL+) // get byte
|
|
// 0cf6: 48 2a CLC // clear carry
|
|
// 0cf8: 57 80 OFFI A,$80 // if top bit clear
|
|
// 0cfa: 48 2b STC // set carry
|
|
// 0cfc: 48 33 RLR C // rotate into C
|
|
// 0cfe: 07 7f ANI A,$7F // mask top bit
|
|
// 0d00: 3c STAX (DE+) // store at patchRam
|
|
// 0d01: 79 e8 CALF $09E8_sendToTx
|
|
// 0d03: 52 DCR B // count down
|
|
// 0d04: f0 JR $0CF5 // loop back around for next byte
|
|
// 0d05: b8 RET
|
|
|
|
// something to do with patches, possibly packing?
|
|
// 0d06: 0b MOV A,C
|
|
// 0d07: 63 b9 STAW $FFB9
|
|
// 0d09: 7c a7 CALF $0CA7_calcPatchAddr
|
|
// 0d0b: 24 90 ff LXI DE,$FF90_patchRam
|
|
// 0d0e: 01 8e LDAW $FF8E_switches1
|
|
// 0d10: 1b MOV C,A
|
|
// 0d11: 7d 25 CALF $0D25
|
|
// 0d13: 01 8f LDAW $FF8F_switches2
|
|
// 0d15: 1b MOV C,A
|
|
// 0d16: 7d 25 CALF $0D25
|
|
// 0d18: 15 b6 04 ORIW $FFB6,$04
|
|
// 0d1b: 7c 3c CALF $0C3C
|
|
// 0d1d: 01 b9 LDAW $FFB9
|
|
// 0d1f: 1b MOV C,A
|
|
// 0d20: 7c d0 CALF $0CD0
|
|
// 0d22: 7c 93 CALF $0C93
|
|
// 0d24: b8 RET
|
|
|
|
// encode switches byte into upper bits?
|
|
// 0d25: 6a 07 MVI B,$07
|
|
// 0d27: 2c LDAX (DE+)
|
|
// 0d28: 07 7f ANI A,$7F
|
|
// 0d2a: 48 03 SLRC C
|
|
// 0d2c: c2 JR $0D2F
|
|
// 0d2d: 17 80 ORI A,$80
|
|
// 0d2f: 3d STAX (HL+)
|
|
// 0d30: 52 DCR B
|
|
// 0d31: f5 JR $0D27
|
|
// 0d32: b8 RET
|
|
|
|
// save digit pattern
|
|
// 0d33: 01 c5 LDAW $FFC5_leftDigit
|
|
// 0d35: 63 c9 STAW $FFC9
|
|
// 0d37: 01 c6 LDAW $FFC6_rightDigit
|
|
// 0d39: 63 ca STAW $FFCA
|
|
// 0d3b: b8 RET
|
|
|
|
// restore digit pattern
|
|
// 0d3c: 01 c9 LDAW $FFC9
|
|
// 0d3e: 63 c5 STAW $FFC5_leftDigit
|
|
// 0d40: 01 ca LDAW $FFCA
|
|
// 0d42: 63 c6 STAW $FFC6_rightDigit
|
|
// 0d44: b8 RET
|
|
|
|
// look up digit in table
|
|
// called with value in A to show on LED
|
|
// 0d45: 34 50 00 LXI HL,$0050 // bitmap
|
|
// 0d48: 1b MOV C,A // save
|
|
// 0d49: 48 21 SLR A
|
|
// 0d4b: 48 21 SLR A
|
|
// 0d4d: 48 21 SLR A
|
|
// 0d4f: 48 21 SLR A // upper nybble
|
|
// 0d51: ac LDAX (HL+A) // fetch bit pattern from table
|
|
// 0d52: 63 c5 STAW $FFC5_leftDigit // store
|
|
// 0d54: 0b MOV A,C
|
|
// 0d55: 07 0f ANI A,$0F // lower nybble
|
|
// 0d57: ac LDAX (HL+A) // fetch bit pattern from table
|
|
// 0d58: 63 c6 STAW $FFC6_rightDigit // store
|
|
// 0d5a: b8 RET
|
|
|
|
// switch on decimal points
|
|
// 0d5b: 15 c5 10 ORIW $FFC5_leftDigit_leftDigit,$10
|
|
// 0d5e: 15 c6 10 ORIW $FFC6_rightDigit,$10
|
|
// 0d61: b8 RET
|
|
|
|
// probably something to do with tape
|
|
// 0d62: 07 38 ANI A,$38 // mask off all but LOAD/SAVE/VERIFY
|
|
// 0d64: 5f c8 BIT 7,$FFC8
|
|
// 0d66: 17 04 ORI A,$04 // poly 2 LED?
|
|
// 0d68: 63 d1 STAW $FFD1 // save somewhere
|
|
// 0d6a: 64 05 ff MVI PF,$FF // column 3 LEDs
|
|
// 0d6d: 4d c1 MOV PB,A // enable
|
|
// 0d6f: 24 ff 1f LXI DE,$1FFF
|
|
// 0d72: 4a df MVIX DE,$DF
|
|
// 0d74: 7b 70 CALF $0B70_stopAllNotes //
|
|
// 0d76: 69 87 MVI A,$87 // and also sustain off
|
|
// 0d78: 79 e8 CALF $09E8_sendToTx //
|
|
// 0d7a: 6a ff MVI B,$FF
|
|
// 0d7c: 48 2d MUL A
|
|
// 0d7e: 52 DCR B
|
|
// 0d7f: fc JR $0D7C // wait
|
|
// 0d80: ba DI
|
|
// 0d81: 64 01 00 MVI PB,$00
|
|
// 0d84: 64 05 c0 MVI PF,$C0
|
|
// 0d87: 05 d1 3c ANIW $FFD1,$3C
|
|
// 0d8a: 55 d1 20 OFFIW $FFD1,$20
|
|
// 0d8d: 4e 69 JRE $0DF8
|
|
// 0d8f: 55 d1 10 OFFIW $FFD1,$10
|
|
// 0d92: 4e 6d JRE $0E01
|
|
// 0d94: 45 d1 08 ONIW $FFD1,$08
|
|
// 0d97: 4e f7 JRE $0E90
|
|
// 0d99: 64 85 bf MVI TMM,$BF
|
|
// 0d9c: 48 42 SKIT FT1
|
|
// 0d9e: 00 NOP
|
|
// 0d9f: 64 01 08 MVI PB,$08
|
|
// 0da2: 44 00 24 LXI EA,$2400
|
|
// 0da5: 5a d1 BIT 2,$FFD1
|
|
// 0da7: 44 00 28 LXI EA,$2800
|
|
// 0daa: 34 00 20 LXI HL,$2000
|
|
// 0dad: 5a d1 BIT 2,$FFD1
|
|
// 0daf: 34 00 24 LXI HL,$2400
|
|
// 0db2: 24 c0 00 LXI DE,$00C0
|
|
// 0db5: 15 d1 01 ORIW $FFD1,$01
|
|
// 0db8: 69 01 MVI A,$01
|
|
// 0dba: 4d db MOV TM1,A
|
|
// 0dbc: 64 8d 7f ANI TMM,$7F
|
|
// 0dbf: 7e b4 CALF $0EB4
|
|
// 0dc1: 69 4a MVI A,$4A
|
|
// 0dc3: 1a MOV B,A
|
|
// 0dc4: 60 44 ADD D,A
|
|
// 0dc6: 7f 07 CALF $0F07
|
|
// 0dc8: 7e f0 CALF $0EF0
|
|
// 0dca: 69 55 MVI A,$55
|
|
// 0dcc: 1a MOV B,A
|
|
// 0dcd: 60 44 ADD D,A
|
|
// 0dcf: 7f 07 CALF $0F07
|
|
// 0dd1: 7e f0 CALF $0EF0
|
|
// 0dd3: 7f 01 CALF $0F01
|
|
// 0dd5: 2d LDAX (HL+)
|
|
// 0dd6: 1a MOV B,A
|
|
// 0dd7: 60 44 ADD D,A
|
|
// 0dd9: 7f 07 CALF $0F07
|
|
// 0ddb: 7e f0 CALF $0EF0
|
|
// 0ddd: 74 ff DEQ EA,HL
|
|
// 0ddf: f3 JR $0DD3
|
|
// 0de0: 0c MOV A,D
|
|
// 0de1: 1a MOV B,A
|
|
// 0de2: 7f 07 CALF $0F07
|
|
// 0de4: 6a aa MVI B,$AA
|
|
// 0de6: 7f 07 CALF $0F07
|
|
// 0de8: 6a aa MVI B,$AA
|
|
// 0dea: 7f 07 CALF $0F07
|
|
// 0dec: 5e d1 BIT 6,$FFD1
|
|
// 0dee: c4 JR $0DF3
|
|
// 0def: 7e b4 CALF $0EB4
|
|
// 0df1: 4e 9d JRE $0E90
|
|
// 0df3: 15 d1 40 ORIW $FFD1,$40
|
|
// 0df6: 4f a1 JRE $0D99
|
|
// 0df8: 64 4a 10 ONI PC,$10
|
|
// 0dfb: 4e 9f JRE $0E9C
|
|
// 0dfd: 64 01 20 MVI PB,$20
|
|
// 0e00: c3 JR $0E04
|
|
// 0e01: 64 01 10 MVI PB,$10
|
|
// 0e04: 5a d1 BIT 2,$FFD1
|
|
// 0e06: ca JR $0E11
|
|
// 0e07: 64 11 40 XRI PB,$40
|
|
// 0e0a: 34 00 20 LXI HL,$2000
|
|
// 0e0d: 44 00 24 LXI EA,$2400
|
|
// 0e10: c9 JR $0E1A
|
|
// 0e11: 64 11 80 XRI PB,$80
|
|
// 0e14: 34 00 24 LXI HL,$2400
|
|
// 0e17: 44 00 28 LXI EA,$2800
|
|
// 0e1a: 64 85 b7 MVI TMM,$B7
|
|
// 0e1d: 69 0d MVI A,$0D
|
|
// 0e1f: 4d da MOV TM0,A
|
|
// 0e21: 69 1e MVI A,$1E
|
|
// 0e23: 4d db MOV TM1,A
|
|
// 0e25: 15 d1 01 ORIW $FFD1,$01
|
|
// 0e28: 64 4a 20 ONI PC,$20
|
|
// 0e2b: 05 d1 fe ANIW $FFD1,$FE
|
|
// 0e2e: 48 41 SKIT FT0
|
|
// 0e30: 00 NOP
|
|
// 0e31: 48 42 SKIT FT1
|
|
// 0e33: 00 NOP
|
|
// 0e34: 6b ff MVI C,$FF
|
|
// 0e36: 64 8d 6f ANI TMM,$6F
|
|
// 0e39: 7f 38 CALF $0F38
|
|
// 0e3b: 48 0a SK CY
|
|
// 0e3d: f6 JR $0E34
|
|
// 0e3e: 7e f0 CALF $0EF0
|
|
// 0e40: 53 DCR C
|
|
// 0e41: f7 JR $0E39
|
|
// 0e42: 15 d1 02 ORIW $FFD1,$02
|
|
// 0e45: 14 00 80 LXI BC,$8000
|
|
// 0e48: 7f 38 CALF $0F38
|
|
// 0e4a: 48 1a SKN CY
|
|
// 0e4c: 4e 30 JRE $0E7E
|
|
// 0e4e: 6b 00 MVI C,$00
|
|
// 0e50: 7f 27 CALF $0F27
|
|
// 0e52: 77 4a EQI A,$4A
|
|
// 0e54: d3 JR $0E68
|
|
// 0e55: 60 43 ADD C,A
|
|
// 0e57: 7f 18 CALF $0F18
|
|
// 0e59: 77 55 EQI A,$55
|
|
// 0e5b: cc JR $0E68
|
|
// 0e5c: 60 43 ADD C,A
|
|
// 0e5e: 7f 18 CALF $0F18
|
|
// 0e60: 60 43 ADD C,A
|
|
// 0e62: 45 d1 10 ONIW $FFD1,$10
|
|
// 0e65: c5 JR $0E6B
|
|
// 0e66: 70 fd EQAX (HL+)
|
|
// 0e68: 4e 22 JRE $0E8C
|
|
// 0e6a: c5 JR $0E70
|
|
// 0e6b: 64 4a 10 ONI PC,$10
|
|
// 0e6e: dd JR $0E8C
|
|
// 0e6f: 3d STAX (HL+)
|
|
// 0e70: 74 ff DEQ EA,HL
|
|
// 0e72: eb JR $0E5E
|
|
// 0e73: 7f 18 CALF $0F18
|
|
// 0e75: 60 fb EQA A,C
|
|
// 0e77: d4 JR $0E8C
|
|
// 0e78: 7f 18 CALF $0F18
|
|
// 0e7a: 77 aa EQI A,$AA
|
|
// 0e7c: cf JR $0E8C
|
|
// 0e7d: d2 JR $0E90
|
|
// 0e7e: 5c d1 BIT 4,$FFD1
|
|
// 0e80: 7e fb CALF $0EFB
|
|
// 0e82: 7e f0 CALF $0EF0
|
|
// 0e84: 13 DCX BC
|
|
// 0e85: 0b MOV A,C
|
|
// 0e86: 60 9a ORA A,B
|
|
// 0e88: 77 00 EQI A,$00
|
|
// 0e8a: 4f bc JRE $0E48
|
|
// 0e8c: 15 d1 80 ORIW $FFD1,$80
|
|
// 0e8f: c3 JR $0E93
|
|
// 0e90: 05 d1 7f ANIW $FFD1,$7F
|
|
// 0e93: 64 01 00 MVI PB,$00
|
|
// 0e96: 64 85 bf MVI TMM,$BF
|
|
// 0e99: 5f d1 BIT 7,$FFD1
|
|
// 0e9b: d1 JR $0EAD
|
|
// 0e9c: 69 ce MVI A,$CE
|
|
// 0e9e: 5f d1 BIT 7,$FFD1
|
|
// 0ea0: 69 de MVI A,$DE
|
|
// 0ea2: 7d 45 CALF $0D45_digitLookup
|
|
// 0ea4: 04 ff ff LXI SP,$FFFF
|
|
// 0ea7: 64 80 08 MVI ANM,$08
|
|
// 0eaa: 54 79 00 JMP $0079
|
|
// 0ead: 71 c5 04 MVIW $FFC5_leftDigit,$04
|
|
// 0eb0: 71 c6 04 MVIW $FFC6_rightDigit,$04
|
|
// 0eb3: f0 JR $0EA4
|
|
|
|
// uknown2
|
|
// 0eb4: 6a 18 MVI B,$18
|
|
// 0eb6: 6b ff MVI C,$FF
|
|
// 0eb8: 7e d5 CALF $0ED5
|
|
// 0eba: 7e f0 CALF $0EF0
|
|
// 0ebc: 53 DCR C
|
|
// 0ebd: fa JR $0EB8
|
|
// 0ebe: 7f 01 CALF $0F01
|
|
// 0ec0: 52 DCR B
|
|
// 0ec1: f4 JR $0EB6
|
|
// 0ec2: b8 RET
|
|
|
|
|
|
// 0ec3: 0d MOV A,E
|
|
// 0ec4: 58 d1 BIT 0,$FFD1
|
|
// 0ec6: c8 JR $0ECF
|
|
// 0ec7: 16 c0 XRI A,$C0
|
|
// 0ec9: 1d MOV E,A
|
|
// 0eca: 69 05 MVI A,$05
|
|
// 0ecc: 7e e7 CALF $0EE7
|
|
// 0ece: b8 RET
|
|
|
|
|
|
// 0ecf: 15 d1 01 ORIW $FFD1,$01
|
|
// 0ed2: 16 80 XRI A,$80
|
|
// 0ed4: f4 JR $0EC9
|
|
|
|
// unknown5, probably still tape
|
|
// 0ed5: 0d MOV A,E
|
|
// 0ed6: 58 d1 BIT 0,$FFD1
|
|
// 0ed8: cb JR $0EE4
|
|
// 0ed9: 05 d1 fe ANIW $FFD1,$FE
|
|
// 0edc: 16 80 XRI A,$80
|
|
// 0ede: 1d MOV E,A
|
|
// 0edf: 69 14 MVI A,$14
|
|
// 0ee1: 7e e7 CALF $0EE7
|
|
// 0ee3: b8 RET
|
|
// 0ee4: 16 c0 XRI A,$C0
|
|
// 0ee6: f7 JR $0EDE
|
|
|
|
// unknown3
|
|
// 0ee7: 48 42 SKIT FT1
|
|
// 0ee9: fd JR $0EE7
|
|
// 0eea: 4d db MOV TM1,A
|
|
// 0eec: 0d MOV A,E
|
|
// 0eed: 4d c2 MOV PC,A
|
|
// 0eef: b8 RET
|
|
|
|
// called from seven places
|
|
// possibly to do with tape
|
|
// 0ef0: 5a d1 BIT 2,$FFD1 // status bit?
|
|
// 0ef2: c4 JR $0EF7
|
|
// 0ef3: 64 11 40 XRI PB,$40 // toggle a scan line for LEDs?
|
|
// 0ef6: b8 RET
|
|
// 0ef7: 64 11 80 XRI PB,$80 // toggle a scan line for LEDs?
|
|
// 0efa: b8 RET
|
|
|
|
// memory protect switch
|
|
// 0efb: 64 4a 10 ONI PC,$10
|
|
// 0efe: 4f 8c JRE $0E8C
|
|
// 0f00: b8 RET
|
|
|
|
// two keys pressed together, maybe poly1+2?
|
|
// 0f01: 64 48 06 ONI PA,$06
|
|
// 0f04: b8 RET
|
|
// 0f05: 4f 89 JRE $0E90
|
|
|
|
// possibly to do with tape
|
|
// 0f07: 6b 07 MVI C,$07
|
|
// 0f09: 7e c3 CALF $0EC3
|
|
// 0f0b: 48 02 SLRC B
|
|
// 0f0d: c3 JR $0F11
|
|
// 0f0e: 7e d5 CALF $0ED5
|
|
// 0f10: c2 JR $0F13
|
|
// 0f11: 7e c3 CALF $0EC3
|
|
// 0f13: 53 DCR C
|
|
// 0f14: f6 JR $0F0B
|
|
// 0f15: 7e d5 CALF $0ED5
|
|
// 0f17: b8 RET
|
|
|
|
// unknown6
|
|
// 0f18: 5a d1 BIT 2,$FFD1
|
|
// 0f1a: c4 JR $0F1F
|
|
// 0f1b: 64 11 40 XRI PB,$40
|
|
// 0f1e: c3 JR $0F22
|
|
// 0f1f: 64 11 80 XRI PB,$80
|
|
// 0f22: 7f 38 CALF $0F38
|
|
// 0f24: 48 1a SKN CY
|
|
// 0f26: ce JR $0F35
|
|
|
|
//
|
|
// 0f27: 69 00 MVI A,$00
|
|
// 0f29: 6a 07 MVI B,$07
|
|
// 0f2b: 7f 38 CALF $0F38
|
|
// 0f2d: 48 31 RLR A
|
|
// 0f2f: 52 DCR B
|
|
// 0f30: fa JR $0F2B
|
|
// 0f31: 7f 38 CALF $0F38
|
|
// 0f33: 48 0a SK CY
|
|
// 0f35: 4f 55 JRE $0E8C
|
|
// 0f37: b8 RET
|
|
|
|
// unknown7
|
|
// 0f38: 7f 01 CALF $0F01
|
|
// 0f3a: 58 d1 BIT 0,$FFD1
|
|
// 0f3c: cc JR $0F49
|
|
// 0f3d: 05 d1 fe ANIW $FFD1,$FE
|
|
// 0f40: 64 4a 20 ONI PC,$20
|
|
// 0f43: d1 JR $0F55
|
|
// 0f44: 48 62 SKNIT FT1
|
|
// 0f46: 7f 64 CALF $0F64
|
|
// 0f48: f7 JR $0F40
|
|
// 0f49: 15 d1 01 ORIW $FFD1,$01
|
|
// 0f4c: 64 5a 20 OFFI PC,$20
|
|
// 0f4f: c5 JR $0F55
|
|
// 0f50: 48 62 SKNIT FT1
|
|
// 0f52: 7f 64 CALF $0F64
|
|
// 0f54: f7 JR $0F4C
|
|
// 0f55: 48 41 SKIT FT0
|
|
// 0f57: c9 JR $0F61
|
|
// 0f58: 48 2b STC
|
|
// 0f5a: 64 95 90 XRI TMM,$90
|
|
// 0f5d: 64 95 90 XRI TMM,$90
|
|
// 0f60: b8 RET
|
|
// 0f61: 48 2a CLC
|
|
// 0f63: f6 JR $0F5A
|
|
|
|
// unknown4
|
|
// 0f64: 55 d1 02 OFFIW $FFD1,$02
|
|
// 0f67: 4f 23 JRE $0E8C
|
|
// 0f69: 64 95 90 XRI TMM,$90
|
|
// 0f6c: 64 95 90 XRI TMM,$90
|
|
// 0f6f: 48 41 SKIT FT0
|
|
// 0f71: 00 NOP
|
|
// 0f72: 6b ff MVI C,$FF
|
|
// 0f74: 5c d1 BIT 4,$FFD1
|
|
// 0f76: 7e fb CALF $0EFB
|
|
// 0f78: 7f 01 CALF $0F01
|
|
// 0f7a: 7e f0 CALF $0EF0
|
|
// 0f7c: b8 RET
|
|
// 0f7d: 00 NOP
|
|
// 0f7e: 00 NOP
|
|
// 0f7f: 00 NOP
|
|
// 0f80: 40 80 00 CALL $0080
|
|
// 0f83: 00 NOP
|
|
// 0f84: 00 NOP
|
|
// 0f85: ff JR $0F85
|
|
// 0f86: 00 NOP
|
|
// 0f87: 00 NOP
|
|
// 0f88: 00 NOP
|
|
// 0f89: 7f 40 CALF $0F40
|
|
// 0f8b: 00 NOP
|
|
// 0f8c: 80 CALT ($0080)
|
|
// 0f8d: 00 NOP
|
|
// 0f8e: 00 NOP
|
|
// 0f8f: 00 NOP
|
|
// 0f90: 40 80 00 CALL $0080
|
|
// 0f93: 00 NOP
|
|
// 0f94: 00 NOP
|
|
// 0f95: ff JR $0F95
|
|
// 0f96: 00 NOP
|
|
// 0f97: 00 NOP
|
|
// 0f98: 00 NOP
|
|
// 0f99: 7f 40 CALF $0F40
|
|
// 0f9b: 00 NOP
|
|
// 0f9c: 80 CALT ($0080)
|
|
// 0f9d: 7f 00 CALF $0F00
|
|
// 0f9f: 7f 40 CALF $0F40
|
|
// 0fa1: 80 CALT ($0080)
|
|
// 0fa2: 00 NOP
|
|
// 0fa3: 00 NOP
|
|
// 0fa4: 00 NOP
|
|
// 0fa5: b1 PUSH BC
|
|
// 0fa6: 7f 00 CALF $0F00
|
|
// 0fa8: 00 NOP
|
|
// 0fa9: 7f 40 CALF $0F40
|
|
// 0fab: 00 NOP
|
|
// 0fac: 80 CALT ($0080)
|
|
// 0fad: 7f 00 CALF $0F00
|
|
// 0faf: 00 NOP
|
|
// 0fb0: 40 80 00 CALL $0080
|
|
// 0fb3: 00 NOP
|
|
// 0fb4: 80 CALT ($0080)
|
|
// 0fb5: ff JR $0FB5
|
|
// 0fb6: 00 NOP
|
|
// 0fb7: 00 NOP
|
|
// 0fb8: 00 NOP
|
|
// 0fb9: 7f 40 CALF $0F40
|
|
// 0fbb: 00 NOP
|
|
// 0fbc: 80 CALT ($0080)
|
|
// 0fbd: 7f 00 CALF $0F00
|
|
// 0fbf: 00 NOP
|
|
// 0fc0: 40 80 00 CALL $0080
|
|
// 0fc3: 80 CALT ($0080)
|
|
// 0fc4: 00 NOP
|
|
// 0fc5: ff JR $0FC5
|
|
// 0fc6: 00 NOP
|
|
// 0fc7: 00 NOP
|
|
// 0fc8: 80 CALT ($0080)
|
|
// 0fc9: 7f 40 CALF $0F40
|
|
// 0fcb: 00 NOP
|
|
// 0fcc: 80 CALT ($0080)
|
|
// 0fcd: 7f 00 CALF $0F00
|
|
// 0fcf: 00 NOP
|
|
// 0fd0: 40 80 00 CALL $0080
|
|
// 0fd3: 00 NOP
|
|
// 0fd4: 7f ff CALF $0FFF
|
|
// 0fd6: 00 NOP
|
|
// 0fd7: 00 NOP
|
|
// 0fd8: 00 NOP
|
|
// 0fd9: 7f 40 CALF $0F40
|
|
// 0fdb: 00 NOP
|
|
// 0fdc: 80 CALT ($0080)
|
|
// 0fdd: 7f 00 CALF $0F00
|
|
// 0fdf: 00 NOP
|
|
// 0fe0: 40 80 00 CALL $0080
|
|
// 0fe3: 00 NOP
|
|
// 0fe4: 00 NOP
|
|
// 0fe5: ff JR $0FE5
|
|
// 0fe6: 7f 00 CALF $0F00
|
|
// 0fe8: 00 NOP
|
|
// 0fe9: 7f 40 CALF $0F40
|
|
// 0feb: 00 NOP
|
|
// 0fec: 80 CALT ($0080)
|
|
// 0fed: 7f 00 CALF $0F00
|
|
// 0fef: 00 NOP
|
|
// 0ff0: 40 80 00 CALL $0080
|
|
// 0ff3: 80 CALT ($0080)
|
|
// 0ff4: 00 NOP
|
|
// 0ff5: ff JR $0FF5
|
|
// 0ff6: 00 NOP
|
|
// 0ff7: 00 NOP
|
|
// 0ff8: 00 NOP
|
|
// 0ff9: 7f 40 CALF $0F40
|
|
// 0ffb: 00 NOP
|
|
// 0ffc: 8a CALT ($0094)
|
|
// 0ffd: 00 NOP
|
|
// 0ffe: 0a MOV A,B
|
|
// 0fff: 00 NOP
|