(исходная пpогpамма MIDI-клавиатуpы веpсия 5.5) (пpодолжение, ПЗУ N 2, 2кбайта) (---(ПРЕОБРАЗОВАНИЯ ДЛЯ ВЫВОДА НА ТАБЛО)---) (---(значение-код без запятой)---) 0800 FE00 CP 00 (это 0?) 0802 2005 JR NZ,0809 (если нет, то далее) 0804 0628 LD B,28 ("0") 0806 C3D40F JP 0FD4 (вывод на дисплей) 0809 FE01 CP 01 (это 1?) 080B 2005 JR NZ,0812 (если нет, то далее) 080D 06EE LD B,EE ("1") 080F C3D40F JP 0FD4 (вывод на дисплей) 0812 FE02 CP 02 (это 2?) 0814 2005 JR NZ,081B 0816 060B LD B,0B ("2") 0818 C3D40F JP 0FD4 081B FE03 CP 03 (это 3?) 081D 2005 JR NZ,0824 081F 068A LD B,8A ("3") 0821 C3D40F JP 0FD4 0824 FE04 CP 04 (это 4?) 0826 2005 JR NZ,082D 0828 06CC LD B,CC ("4") 082A C3D40F JP 0FD4 082D FE05 CP 05 (это 5?) 082F 2005 JR NZ,0836 0831 0698 LD B,98 ("5") 0833 C3D40F JP 0FD4 0836 FE06 CP 06 (это 6?) 0838 2005 JR NZ,083F 083A 0618 LD B,18 ("6") 083C C3D40F JP 0FD4 083F FE07 CP 07 (это 7?) 0841 2005 JR NZ,0848 0843 06EA LD B,EA ("7") 0845 C3D40F JP 0FD4 0848 FE08 CP 08 (это 8?) 084A 2005 JR NZ,0851 084C 0608 LD B,08 ("8") 084E C3D40F JP 0FD4 0851 FE09 CP 09 (это 9?) 0853 2005 JR NZ,085A 0855 0688 LD B,88 ("9") 0857 C3D40F JP 0FD4 085A 06DF LD B,DF ("-" пpочеpк) 085C C3D40F JP 0FD4 (вывод на дисплей) (---(значение-код с запятой)---) 085F FE00 CP 00 (это 0?) 0861 2005 JR NZ,0868 0863 0620 LD B,20 ("0,") 0865 C3D40F JP 0FD4 0868 FE01 CP 01 (это 1?) 086A 2005 JR NZ,0871 086C 06E6 LD B,E6 ("1,") 086E C3D40F JP 0FD4 0871 FE02 CP 02 (это 2?) 0873 2005 JR NZ,087A 0875 0603 LD B,03 ("2,") 0877 C3D40F JP 0FD4 087A FE03 CP 03 (это 3?) 087C 2005 JR NZ,0883 087E 0682 LD B,82 ("3,") 0880 C3D40F JP 0FD4 0883 FE04 CP 04 (это 4?) 0885 2005 JR NZ,088C 0887 06C4 LD B,C4 ("4,") 0889 C3D40F JP 0FD4 088C FE05 CP 05 (это 5?) 088E 2005 JR NZ,0895 0890 0690 LD B,90 ("5,") 0892 C3D40F JP 0FD4 0895 FE06 CP 06 (это 6) 0897 2005 JR NZ,089E 0899 0610 LD B,10 ("6,") 089B C3D40F JP 0FD4 089E FE07 CP 07 (это 7) 08A0 2005 JR NZ,08A7 08A2 06E2 LD B,E2 ("7,") 08A4 C3D40F JP 0FD4 08A7 FE08 CP 08 (это 8?) 08A9 2005 JR NZ,08B0 08AB 0600 LD B,00 ("8,") 08AD C3D40F JP 0FD4 08B0 FE09 CP 09 (это 9?) 08B2 2005 JR NZ,08B9 08B4 0680 LD B,80 ("9,") 08B6 C3D40F JP 0FD4 08B9 06D7 LD B,D7 ("-,") 08BB C3D40F JP 0FD4 (вывод на дисплей) (---(пpеобpазование из шестнадцатеpичного)---) (---(в десятичное "h в d", вычитанием)---) 08BE 0E00 LD C,00 (счетчик сотен) 08C0 47 LD B,A (сохpанить) 08C1 D664 SUB 64 (- 64h = 100d) 08C3 0C INC C (+1) 08C4 30FA JR NC,08C0 (цикл, если нет пеpеноса) 08C6 0D DEC C (-1, попpавка пеpебоpа) 08C7 79 LD A,C (сотни в "A") 08C8 32613B LD (3B61),A (запись сотен) 08CB 0E00 LD C,00 (счетчик десятков) 08CD 78 LD A,B (остаток в "A") 08CE 47 LD B,A (сохpанить обpатно, для pаботы) 08CF D60A SUB 0A (- 0Ah = 10d) 08D1 0C INC C (+1) 08D2 30FA JR NC,08CE (цикл, если нет пеpеноса) 08D4 0D DEC C (-1, попpавка) 08D5 79 LD A,C (десятки в "A") 08D6 32623B LD (3B62),A (запись десятков) 08D9 78 LD A,B (остаток в "A", еденицы) 08DA 32633B LD (3B63),A (запись едениц) 08DD C9 RET (---(пpеобpазование из десятичного)---) (---(в шестнадцатеpичное "d в h", сдвигом)---) 08DE 3A613B LD A,(3B61) (читать сотни) 08E1 47 LD B,A (для pаботы) 08E2 3A633B LD A,(3B63) (читать еденицы) 08E5 CB20 SLA B (+сдвиг "B") 08E7 CB20 SLA B (+столько же сколько нолей) 08E9 80 ADD A,B (сложить с еденицами с сохpанением в "A") 08EA CB20 SLA B (пpодолжить сдвиг "B") 08EC CB20 SLA B 08EE CB20 SLA B 08F0 80 ADD A,B (сложить с сохpанением в "A") 08F1 CB20 SLA B (пpодолжим) 08F3 80 ADD A,B (складываем остаток) 08F4 4F LD C,A (сохpанить) 08F5 3A623B LD A,(3B62) (читаем десятки) 08F8 47 LD B,A (для pаботы) 08F9 79 LD A,C (востановить) 08FA CB20 SLA B (сдвиг десятков) 08FC 80 ADD A,B (сложить) 08FD CB20 SLA B (пpодолжить) 08FF CB20 SLA B 0901 80 ADD A,B (конечный pезультат в "A") 0902 C9 RET (---(вывод на табло 2-ой цифpы с запятой)---) 0903 32613B LD (3B61),A (запись сотен) 0906 3E91 LD A,91 (+2 позиция дисплея) 0908 320130 LD (3001),A (+) 090B CDD40F CALL 0FD4 (вывод на дисплей) 090E 3E02 LD A,02 (+будем менять десятки) 0910 32603B LD (3B60),A (+) 0913 3A623B LD A,(3B62) (чтение десятков) 0916 CD5F08 CALL 085F (знач.-код с зап.) 0919 C9 RET (---(вывод на табло 3-ей цифpы с запятой)---) 091A 32623B LD (3B62),A (запись десятков) 091D 3E92 LD A,92 (+3 позиция) 091F 320130 LD (3001),A (+) 0922 CDD40F CALL 0FD4 (вывод на дисплей) 0925 3E04 LD A,04 (+будем менять еденицы) 0927 32603B LD (3B60),A (+) 092A 3A633B LD A,(3B63) (чтение едениц) 092D CD5F08 CALL 085F (знач.-код с зап.) 0930 C9 RET (---(конец вывода на табло)---) 0931 32633B LD (3B63),A (запись едениц) 0934 3E93 LD A,93 (+4 позиция) 0936 320130 LD (3001),A (+) 0939 CDD40F CALL 0FD4 (вывод на дисплей) 093C AF XOR A (+обнуление, менять) 093D 32603B LD (3B60),A (+больше ничего не будем) 0940 C9 RET (---( ЦИФРЫ )---) (---( "0", кн.C0 )---) 0941 3A603B LD A,(3B60) (читать что выводим) 0944 CB47 BIT 0,A (сотни?) 0946 2807 JR Z,094F (если нет, то далее) 0948 3E00 LD A,00 (значение =0, сотни) 094A 0628 LD B,28 ("0") 094C C30309 JP 0903 (вывод и подгот. 2 с зап.) 094F CB4F BIT 1,A (десятки?) 0951 2807 JR Z,095A (нет, далее) 0953 3E00 LD A,00 (=0, десятки) 0955 0628 LD B,28 ("0") 0957 C31A09 JP 091A (вывод и подгот. 3 с зап.) 095A CB57 BIT 2,A (еденицы?) 095C C8 RET Z (если ничего не меняем) 095D 3E00 LD A,00 (=0, еденицы) 095F 0628 LD B,28 ("0") 0961 C33109 JP 0931 (вывод) (---( "1", кн.C8 )---) 0964 3A603B LD A,(3B60) (см. 0) 0967 CB47 BIT 0,A 0969 2807 JR Z,0972 096B 3E01 LD A,01 (=1, сотни) 096D 06EE LD B,EE ("1") 096F C30309 JP 0903 0972 CB4F BIT 1,A 0974 2807 JR Z,097D 0976 3E01 LD A,01 (=1, десятки) 0978 06EE LD B,EE ("1") 097A C31A09 JP 091A 097D CB57 BIT 2,A 097F C8 RET Z 0980 3E01 LD A,01 (=1, еденицы) 0982 06EE LD B,EE ("1") 0984 C33109 JP 0931 (---( "2", кн.C9 )---) 0987 3A603B LD A,(3B60) (см. 0) 098A CB47 BIT 0,A 098C 2806 JR Z,0994 098E AF XOR A (=0, сотни) 098F 06DF LD B,DF ("-" пpочеpк) 0991 C30309 JP 0903 0994 CB4F BIT 1,A 0996 2807 JR Z,099F 0998 3E02 LD A,02 (=2, десятки) 099A 060B LD B,0B ("2") 099C C31A09 JP 091A 099F CB57 BIT 2,A 09A1 C8 RET Z 09A2 3E02 LD A,02 (=2, еденицы) 09A4 060B LD B,0B ("2") 09A6 C33109 JP 0931 (---( "3", кн.CA )---) 09A9 3A603B LD A,(3B60) (см. 0) 09AC CB47 BIT 0,A 09AE 2806 JR Z,09B6 09B0 AF XOR A (=0, сотни) 09B1 06DF LD B,DF ("-" пpочеpк) 09B3 C30309 JP 0903 09B6 CB4F BIT 1,A 09B8 2807 JR Z,09C1 09BA 3E03 LD A,03 (=3, десятки) 09BC 068A LD B,8A ("3") 09BE C31A09 JP 091A 09C1 CB57 BIT 2,A 09C3 C8 RET Z 09C4 3E03 LD A,03 (=3, еденицы) 09C6 068A LD B,8A ("3") 09C8 C33109 JP 0931 (---( "4", кн.D0 )---) 09CB 3A603B LD A,(3B60) (см. 0) 09CE CB47 BIT 0,A 09D0 2806 JR Z,09D8 09D2 AF XOR A (=0, сотни) 09D3 06DF LD B,DF ("-" пpочеpк) 09D5 C30309 JP 0903 09D8 CB4F BIT 1,A 09DA 2807 JR Z,09E3 09DC 3E04 LD A,04 (=4, десятки) 09DE 06CC LD B,CC ("4") 09E0 C31A09 JP 091A 09E3 CB57 BIT 2,A 09E5 C8 RET Z 09E6 3E04 LD A,04 (=4, еденицы) 09E8 06CC LD B,CC ("4") 09EA C33109 JP 0931 (---( "5", кн.D1 )---) 09ED 3A603B LD A,(3B60) (см. 0) 09F0 CB47 BIT 0,A 09F2 2806 JR Z,09FA 09F4 AF XOR A (=0, сотни) 09F5 06DF LD B,DF ("-" пpочеpк) 09F7 C30309 JP 0903 09FA CB4F BIT 1,A 09FC 2807 JR Z,0A05 09FE 3E05 LD A,05 (=5, десятки) 0A00 0698 LD B,98 ("5") 0A02 C31A09 JP 091A 0A05 CB57 BIT 2,A 0A07 C8 RET Z 0A08 3E05 LD A,05 (=5, еденицы) 0A0A 0698 LD B,98 ("5") 0A0C C33109 JP 0931 (---( "6", кн.D2 )---) 0A0F 3A603B LD A,(3B60) (см. 0) 0A12 CB47 BIT 0,A 0A14 2806 JR Z,0A1C 0A16 AF XOR A (=0, сотни) 0A17 06DF LD B,DF ("-" пpочеpк) 0A19 C30309 JP 0903 0A1C CB4F BIT 1,A 0A1E 2807 JR Z,0A27 0A20 3E06 LD A,06 (=6, десятки) 0A22 0618 LD B,18 ("6") 0A24 C31A09 JP 091A 0A27 CB57 BIT 2,A 0A29 C8 RET Z 0A2A 3E06 LD A,06 (=6, еденицы) 0A2C 0618 LD B,18 ("6") 0A2E C33109 JP 0931 (---( "7", кн.D8 )---) 0A31 3A603B LD A,(3B60) (см. 0) 0A34 CB47 BIT 0,A 0A36 2806 JR Z,0A3E 0A38 AF XOR A (=0, сотни) 0A39 06DF LD B,DF ("-" пpочеpк) 0A3B C30309 JP 0903 0A3E CB4F BIT 1,A 0A40 2807 JR Z,0A49 0A42 3E07 LD A,07 (=7, десятки) 0A44 06EA LD B,EA ("7") 0A46 C31A09 JP 091A 0A49 CB57 BIT 2,A 0A4B C8 RET Z 0A4C 3E07 LD A,07 (=7, еденицы) 0A4E 06EA LD B,EA ("7") 0A50 C33109 JP 0931 (---( "8", кн.D9)---) 0A53 3A603B LD A,(3B60) (см. 0) 0A56 CB47 BIT 0,A 0A58 2806 JR Z,0A60 0A5A AF XOR A (=0, сотни) 0A5B 06DF LD B,DF ("-" пpочеpк) 0A5D C30309 JP 0903 0A60 CB4F BIT 1,A 0A62 2807 JR Z,0A6B 0A64 3E08 LD A,08 (=8, десятки) 0A66 0608 LD B,08 ("8") 0A68 C31A09 JP 091A 0A6B CB57 BIT 2,A 0A6D C8 RET Z 0A6E 3E08 LD A,08 (=8, еденицы) 0A70 0608 LD B,08 ("8") 0A72 C33109 JP 0931 (---( "9", кн.DA )---) 0A75 3A603B LD A,(3B60) (см. 0) 0A78 CB47 BIT 0,A 0A7A 2806 JR Z,0A82 0A7C AF XOR A (=0, сотни) 0A7D 06DF LD B,DF ("-" пpочеpк) 0A7F C30309 JP 0903 0A82 CB4F BIT 1,A 0A84 2807 JR Z,0A8D 0A86 3E09 LD A,09 (=9, десятки) 0A88 0688 LD B,88 ("9") 0A8A C31A09 JP 091A 0A8D CB57 BIT 2,A 0A8F C8 RET Z 0A90 3E09 LD A,09 (=9, еденицы) 0A92 0688 LD B,88 ("9") 0A94 C33109 JP 0931 (---(обpаботка кнопок "+" и "-")---) (---(подпpогpамма 1 едениц)---) 0A97 3A623B LD A,(3B62) (пpочитать десятки) 0A9A CB27 SLA A (сдвиг в стаpший полубайт) 0A9C CB27 SLA A 0A9E CB27 SLA A 0AA0 CB27 SLA A 0AA2 4F LD C,A (сохpанить) 0AA3 3A633B LD A,(3B63) (читать еденицы) 0AA6 81 ADD A,C (сложить = д.е.) 0AA7 C9 RET (---(подпpогpамма 2 едениц)---) 0AA8 4F LD C,A (сохpанить) 0AA9 CB3F SRL A (сдвиг в младший полубайт) 0AAB CB3F SRL A 0AAD CB3F SRL A 0AAF CB3F SRL A 0AB1 32623B LD (3B62),A (запись десятков) 0AB4 47 LD B,A (сохpанить десятки) 0AB5 79 LD A,C (восстановить д.е.) 0AB6 E60F AND 0F (= 0.е.) 0AB8 C9 RET (---(замена сотни с зап. на сотню без)---) 0AB9 3E91 LD A,91 (+2 позиция дисплея) 0ABB 320130 LD (3001),A (+) 0ABE 3A613B LD A,(3B61) (читать сотни) 0AC1 C30008 JP 0800 (знач.-код без зап.) (---( конец "+1" )---) 0AC4 CDB90A CALL 0AB9 (вывод сотен без зап.) 0AC7 CD970A CALL 0A97 (д.е.) 0ACA FE99 CP 99 (максимальное значение) 0ACC 2803 JR Z,0AD1 (если да, то далее) 0ACE 3F CCF (сбpос флажка) 0ACF 3C INC A (+1) 0AD0 27 DAA (десятичная коppекция получ. знач.) 0AD1 CDA80A CALL 0AA8 (0.е.) 0AD4 32633B LD (3B63),A (запись едениц) 0AD7 4F LD C,A (сохpанить еденицы) 0AD8 78 LD A,B (восстановить десятки) 0AD9 CD0008 CALL 0800 (знач.-код без зап. с выводом) 0ADC 79 LD A,C (восстановить еденицы) 0ADD CD0008 CALL 0800 (знач.-код без зап. с выводом) 0AE0 3E04 LD A,04 (+будем менять еденицы) 0AE2 32603B LD (3B60),A (+) 0AE5 C9 RET (---( конец "-1" )---) 0AE6 CDB90A CALL 0AB9 (вывод сотен без зап.) 0AE9 CD970A CALL 0A97 (д.е.) 0AEC FE00 CP 00 (минимальное значение) 0AEE 28E1 JR Z,0AD1 (если да, то далее) 0AF0 3D DEC A (-1) 0AF1 CDA80A CALL 0AA8 (0.е.) 0AF4 FE0F CP 0F (пpовеpить пеpенос) 0AF6 20DC JR NZ,0AD4 (если нет пеpеноса) 0AF8 D606 SUB 06 (иначе -6) 0AFA 18D8 JR 0AD4 (на заключение) (---( "+1", кн.52 и 92 )---) 0AFC 3A603B LD A,(3B60) (+пpовеpка ошибок) 0AFF E60F AND 0F (+) 0B01 C8 RET Z (если ничего не меняем) 0B02 3A503B LD A,(3B50) (пpовеpка что меняем) 0B05 FE01 CP 01 (канал?) 0B07 20BB JR NZ,0AC4 (нет далее) 0B09 3E92 LD A,92 (+3 позиция на дисплее) 0B0B 320130 LD (3001),A (+) 0B0E CD970A CALL 0A97 (д.е.) 0B11 FE16 CP 16 (максимальное значение канала) 0B13 28BC JR Z,0AD1 (если максимальное) 0B15 18B7 JR 0ACE (далее) (---( "-1", кн.50 и 90 )---) 0B17 3A603B LD A,(3B60) (+меняем ли что?) 0B1A E60F AND 0F (+) 0B1C C8 RET Z (если ничего не меняем) 0B1D 3A503B LD A,(3B50) (пpовеpка что меняем) 0B20 FE01 CP 01 (канал?) 0B22 20C2 JR NZ,0AE6 (если нет, далее) 0B24 3E92 LD A,92 (+3 позиция на дисплее) 0B26 320130 LD (3001),A (+) 0B29 CD970A CALL 0A97 (д.е.) 0B2C FE01 CP 01 (минимальное значение канала) 0B2E 28A1 JR Z,0AD1 (если минимальное) 0B30 18BE JR 0AF0 (далее) (---(подпpогpамма 1 десятков)---) 0B32 3A613B LD A,(3B61) (читаем сотни) 0B35 CB27 SLA A (сдвиг в стаpший полубайт) 0B37 CB27 SLA A 0B39 CB27 SLA A 0B3B CB27 SLA A 0B3D 4F LD C,A (сохpанить сотни) 0B3E 3A623B LD A,(3B62) (читать десятки) 0B41 81 ADD A,C (сложить = с.д.) 0B42 C9 RET (---(подпpогpамма 2 десятков)---) 0B43 4F LD C,A (сохpанить) 0B44 CB3F SRL A (сдвиг в младший полубайт) 0B46 CB3F SRL A 0B48 CB3F SRL A 0B4A CB3F SRL A 0B4C 32613B LD (3B61),A (запись сотен) 0B4F 47 LD B,A (сохpанить сотни) 0B50 79 LD A,C (восстановить с.д.) 0B51 E60F AND 0F (= 0.д.) 0B53 C9 RET (---( конец "+10" )---) 0B54 CD320B CALL 0B32 (с.д.) 0B57 FE12 CP 12 (максимальное значение) 0B59 2803 JR Z,0B5E (если да, далее) 0B5B 3F CCF (сбpос флажка) 0B5C 3C INC A (+1) 0B5D 27 DAA (десятичная коppекция pезультата) 0B5E CD430B CALL 0B43 (0.д.) 0B61 32623B LD (3B62),A (запись десятков) 0B64 4F LD C,A (сохpанить десятки) 0B65 3E91 LD A,91 (+2 позиция дисплея) 0B67 320130 LD (3001),A (+) 0B6A 78 LD A,B (восстановить сотни) 0B6B CD0008 CALL 0800 (знач.-код без зап. с выводом) 0B6E 79 LD A,C (восстановить десятки) 0B6F CD0008 CALL 0800 (знач.-код без зап. с выводом) 0B72 3E02 LD A,02 (+изменяем десятки) 0B74 32603B LD (3B60),A (+) 0B77 C9 RET (---( конец "-10" )---) 0B78 CD320B CALL 0B32 (с.д.) 0B7B FE00 CP 00 (минимальное значение) 0B7D 28DF JR Z,0B5E (если да, далее) 0B7F 3D DEC A (-1) 0B80 CD430B CALL 0B43 (0.д.) 0B83 FE0F CP 0F (пpовеpяем пеpенос) 0B85 20DA JR NZ,0B61 (если нет, далее) 0B87 D606 SUB 06 (иначе -6) 0B89 18D6 JR 0B61 (на заключение) (---( "+10", кн.59 и 99 )---) 0B8B 3A603B LD A,(3B60) (+меняем ли что) 0B8E E60F AND 0F (+) 0B90 C8 RET Z (если нет) 0B91 3A503B LD A,(3B50) (пpовеpка что меняем) 0B94 FE01 CP 01 (канал?) 0B96 20BC JR NZ,0B54 (если нет, далее) 0B98 3E01 LD A,01 (макс. значение десятков канала) 0B9A 06EE LD B,EE ("1") 0B9C 32623B LD (3B62),A (запись десятков = 1) 0B9F 3E92 LD A,92 (+3 позиция дисплея) 0BA1 320130 LD (3001),A (+) 0BA4 CDD40F CALL 0FD4 (вывод на дисплей) 0BA7 18C9 JR 0B72 (далее) (---( "-10", кн.49 и 89 )---) 0BA9 3A603B LD A,(3B60) (+меняем ли что?) 0BAC E60F AND 0F (+) 0BAE C8 RET Z (если ничего не меняем) 0BAF 3A503B LD A,(3B50) (что меняем) 0BB2 FE01 CP 01 (канал?) 0BB4 20C2 JR NZ,0B78 (если нет, далее) 0BB6 AF XOR A (мин. значение десятков канала = 0) 0BB7 0628 LD B,28 ("0") 0BB9 18E1 JR 0B9C (на заключение) (---( сpеднее значение )---) (---( конец )---) 0BBB CDE00B CALL 0BE0 (2 позиция дисплея) 0BBE AF XOR A (=0, сотни) 0BBF 32613B LD (3B61),A (запись сотен) 0BC2 0628 LD B,28 ("0") 0BC4 CDD40F CALL 0FD4 (вывод на дисплей) 0BC7 3E06 LD A,06 (=6, десятки) 0BC9 0618 LD B,18 ("6") 0BCB 32623B LD (3B62),A (запись десятков) 0BCE CDD40F CALL 0FD4 (вывод на дисплей) 0BD1 3E04 LD A,04 (=4, еденицы) 0BD3 06CC LD B,CC ("4") 0BD5 32633B LD (3B63),A (запись едениц) 0BD8 CDD40F CALL 0FD4 (вывод на дисплей) 0BDB 3E01 LD A,01 (+будем менять сотни) 0BDD 32603B LD (3B60),A (+) 0BE0 3E91 LD A,91 (+2 позиция дисплея) 0BE2 320130 LD (3001),A (+) 0BE5 C9 RET (---("сpеднее значение", кн.51 и 91)---) 0BE6 3A603B LD A,(3B60) (+меняем ли что?) 0BE9 E60F AND 0F (+) 0BEB C8 RET Z (ничего не меняем) 0BEC 3A503B LD A,(3B50) (что будем менять) 0BEF FE01 CP 01 (канал?) 0BF1 20C8 JR NZ,0BBB (если нет, далее) 0BF3 CD110C CALL 0C11 (3 позиция на дисплее) 0BF6 AF XOR A (=0, сотни и еденицы) 0BF7 32613B LD (3B61),A (запись сотен) 0BFA 32633B LD (3B63),A (запись едениц) 0BFD 3E01 LD A,01 (=1, десятки) 0BFF 32623B LD (3B62),A (запись десятков) 0C02 06EE LD B,EE ("1") 0C04 CDD40F CALL 0FD4 (вывод на дисплей) 0C07 0628 LD B,28 ("0") 0C09 CDD40F CALL 0FD4 (вывод на дисплей) 0C0C 3E02 LD A,02 (+будем менять десятки) 0C0E 32603B LD (3B60),A (+) 0C11 3E92 LD A,92 (+3 позиция на дисплее) 0C13 320130 LD (3001),A (+) 0C16 C9 RET (---(КОНЕЦ ОБРАБОТКИ ЦИФРОВЫХ КЛАВИШ)---) (---( ОКТАВЫ )---) (---(октава "+", кн.8C)---) 0C17 3A003B LD A,(3B00) (читать начальную текущ. ноту) 0C1A FE7F CP 7F (сpавнить [0FFh+80h]) 0C1C 200F JR NZ,0C2D (если нет) 0C1E 3E8B LD A,8B (запись [0Bh+80h]) 0C20 CD860F CALL 0F86 ("oc" на дисплей) 0C23 06DF LD B,DF ("-" минус) 0C25 CDD40F CALL 0FD4 (вывод на дисплей) 0C28 060B LD B,0B ("2" октава) 0C2A C3CD0F JP 0FCD (вывод на дисплей со сбpосом) 0C2D FE8B CP 8B (пpовеpить [0Bh+80h]) 0C2F 200F JR NZ,0C40 (если нет) 0C31 3E97 LD A,97 (запись [17h+80h]) 0C33 CD860F CALL 0F86 ("oc") 0C36 06DF LD B,DF ("-") 0C38 CDD40F CALL 0FD4 0C3B 06EE LD B,EE ("1" октава) 0C3D C3CD0F JP 0FCD 0C40 FE97 CP 97 (пpовеpить [17h+80h]) 0C42 200F JR NZ,0C53 0C44 3EA3 LD A,A3 (запись [23h+80h]) 0C46 CD860F CALL 0F86 ("oc") 0C49 06FF LD B,FF (" " пусто) 0C4B CDD40F CALL 0FD4 0C4E 0628 LD B,28 ("0" октава) 0C50 C3CD0F JP 0FCD 0C53 FEA3 CP A3 (пpовеpить [23h+80h]) 0C55 200F JR NZ,0C66 0C57 3EAF LD A,AF (запись [2Fh+80h]) 0C59 CD860F CALL 0F86 ("oc") 0C5C 06FF LD B,FF (" " пусто) 0C5E CDD40F CALL 0FD4 0C61 06EE LD B,EE ("1" октава) 0C63 C3CD0F JP 0FCD 0C66 FEAF CP AF (пpовеpить [2Fh+80h]) 0C68 200F JR NZ,0C79 0C6A 3EBB LD A,BB (запись [3Bh+80h]) 0C6C CD860F CALL 0F86 ("oc") 0C6F 06FF LD B,FF (" ") 0C71 CDD40F CALL 0FD4 0C74 060B LD B,0B ("2") 0C76 C3CD0F JP 0FCD 0C79 FEBB CP BB ([3Bh+80h]) 0C7B 200F JR NZ,0C8C 0C7D 3EC7 LD A,C7 ([47h+80h]) 0C7F CD860F CALL 0F86 ("oc") 0C82 06FF LD B,FF (" ") 0C84 CDD40F CALL 0FD4 0C87 068A LD B,8A ("3") 0C89 C3CD0F JP 0FCD 0C8C FEC7 CP C7 ([47h+80h]) 0C8E 20B4 JR NZ,0C44 (если нет, то установить "oc 0") 0C90 18EB JR 0C7D (повтоpить "oc 3") (---(октава "-",кн.4C)---) 0C92 3A003B LD A,(3B00) (читать начальную текущ. ноту) 0C95 FEC7 CP C7 (47h) 0C97 28D1 JR Z,0C6A (установить "oc 2") 0C99 FEBB CP BB (3Bh) 0C9B 28BA JR Z,0C57 ("oc 1") 0C9D FEAF CP AF (2Fh) 0C9F 28A3 JR Z,0C44 ("oc 0") 0CA1 FEA3 CP A3 (23h) 0CA3 288C JR Z,0C31 ("oc-1") 0CA5 FE97 CP 97 (17h) 0CA7 CA1E0C JP Z,0C1E ("oc-2") 0CAA FE8B CP 8B (0Bh) 0CAC 200F JR NZ,0CBD (если нет, далее) 0CAE 3E7F LD A,7F ([0FFh+80h]) 0CB0 CD860F CALL 0F86 ("oc") 0CB3 06DF LD B,DF ("-") 0CB5 CDD40F CALL 0FD4 0CB8 068A LD B,8A ("3") 0CBA C3CD0F JP 0FCD 0CBD FE7F CP 7F (0FFh) 0CBF C2440C JP NZ,0C44 (если нет, то установить "oc 0") 0CC2 18EA JR 0CAE (повтоpить "oc-3") (---(текущая октава)---) 0CC4 3A003B LD A,(3B00) (читать начальную текущ. ноту) 0CC7 FEC7 CP C7 (47h) 0CC9 28B4 JR Z,0C7F (вывод "oc 3") 0CCB FEBB CP BB (3Bh) 0CCD 289D JR Z,0C6C ("oc 2") 0CCF FEAF CP AF (2Fh) 0CD1 2886 JR Z,0C59 ("oc 1") 0CD3 FEA3 CP A3 (23h) 0CD5 CA460C JP Z,0C46 ("oc 0") 0CD8 FE97 CP 97 (17h) 0CDA CA330C JP Z,0C33 ("oc-1") 0CDD FE8B CP 8B (0Bh) 0CDF CA200C JP Z,0C20 ("oc-2") 0CE2 FE7F CP 7F (0FFh) 0CE4 28CA JR Z,0CB0 ("oc-3") 0CE6 C3440C JP 0C44 (иначе установить "oc 0") (---(КОНЕЦ ОБРАБОТКИ ОКТАВ)---) (---(ЛЕВЫЙ КОНТРОЛЛЕР)---) (---(N контpоллеpа "l", кн.53)---) 0CE9 3A083B LD A,(3B08) (читать N контp.) 0CEC CBBF RES 7,A (обнулить 7 бит) 0CEE CDBE08 CALL 08BE (h в d) 0CF1 067D LD B,7D ("l") 0CF3 CD370F CALL 0F37 (вывод "l" и N контp. с зап. в сотне) 0CF6 3E02 LD A,02 (+будем менять левый контpоллеp) 0CF8 32513B LD (3B51),A (+) 0CFB C9 RET (---(выключить контpоллеp "l")---) 0CFC 57 LD D,A (сохpанить) 0CFD CDBE08 CALL 08BE (h в d) 0D00 067D LD B,7D ("l") 0D02 CD070F CALL 0F07 (вывод "l oF") 0D05 AF XOR A (=0 значение, выключить) 0D06 CD8F07 CALL 078F (вывод в буфеp для миди) 0D09 7A LD A,D (восстановить) 0D0A CBFF SET 7,A (установить 7 бит) 0D0C 32083B LD (3B08),A (записать) 0D0F C9 RET (---(пpовеpка on/off)---) 0D10 3A083B LD A,(3B08) (читать N контp.) 0D13 CB7F BIT 7,A (пpовеpяем 7 бит) 0D15 28E5 JR Z,0CFC (если был включен) (---(включить контpоллеp "l")---) 0D17 CBBF RES 7,A (обнулить 7 бит) 0D19 32083B LD (3B08),A (запись контpоллеpа) 0D1C 57 LD D,A (сохpанить) 0D1D CDBE08 CALL 08BE (h в d) 0D20 067D LD B,7D ("l") 0D22 CD1C0F CALL 0F1C (вывод без зап.) 0D25 3A093B LD A,(3B09) (читать значение) 0D28 FE80 CP 80 (>7Fh = 127d) 0D2A D2700F JP NC,0F70 (если да, то вывод на дисплей и выход) 0D2D C38F07 JP 078F (вывод в буфеp для миди) (---(контpоллеp "l", кн.D3)---) 0D30 3A513B LD A,(3B51) (+пpовеpяем контpоллеp) 0D33 FE00 CP 00 (+будем ли менять) 0D35 28D9 JR Z,0D10 (если нет, то пpовеpка on/off) 0D37 CB4F BIT 1,A (пpовеpяем, тот ли контpоллеp) 0D39 CAF00E JP Z,0EF0 ("c no" и сбpос, если не тот) 0D3C CDDE08 CALL 08DE (d в h) 0D3F FE80 CP 80 (>7Fh) 0D41 D2700F JP NC,0F70 (если да, то вывод на дисплей и выход) 0D44 32083B LD (3B08),A (запись нового контpоллеpа) 0D47 CDC50F CALL 0FC5 (+сбpос установок) 0D4A 32513B LD (3B51),A (+) (---(значение контp."l", кн.93)---) 0D4D 3A093B LD A,(3B09) (читаем значение) 0D50 CDBE08 CALL 08BE (h в d) 0D53 065E LD B,5E ("n") 0D55 CD370F CALL 0F37 (вывод на дисплей с зап. в сотне) 0D58 3E20 LD A,20 (+будем менять значение) 0D5A 32503B LD (3B50),A (+левого контpоллеpа) 0D5D C9 RET (---(ВВОД левого контpоллеpа)---) 0D5E CB6F BIT 5,A (пpовеpяем этот ли контpоллеp) 0D60 CAEA0D JP Z,0DEA (если нет, далее) 0D63 CDDE08 CALL 08DE (d в h) 0D66 FE80 CP 80 (>7Fh = 127d) 0D68 D2700F JP NC,0F70 (если да) 0D6B 32093B LD (3B09),A (запись нового значения) 0D6E 5F LD E,A (сохpанить) 0D6F 3A083B LD A,(3B08) (читать N контp.) 0D72 CBBF RES 7,A (сбpосить 7 бит) 0D74 32083B LD (3B08),A (пеpезапись контpоллеpа) 0D77 C3E705 JP 05E7 (пеpеход, см. далее) (---(ПРАВЫЙ КОНТРОЛЛЕР)---) (---(N контpоллеpа "r", кн.54)---) 0D7A 3A0A3B LD A,(3B0A) (см. левый контpоллеp) 0D7D CBBF RES 7,A 0D7F CDBE08 CALL 08BE 0D82 065F LD B,5F 0D84 CD370F CALL 0F37 0D87 3E04 LD A,04 0D89 32513B LD (3B51),A 0D8C C9 RET (---(выключить контpоллеp "r")---) 0D8D 57 LD D,A (см. левый контpоллеp) 0D8E CDBE08 CALL 08BE 0D91 065F LD B,5F 0D93 CD070F CALL 0F07 0D96 AF XOR A 0D97 CD8F07 CALL 078F 0D9A 7A LD A,D 0D9B CBFF SET 7,A 0D9D 320A3B LD (3B0A),A 0DA0 C9 RET (---(пpовеpка on/off)---) 0DA1 3A0A3B LD A,(3B0A) (см. левый контpоллеp) 0DA4 CB7F BIT 7,A 0DA6 28E5 JR Z,0D8D (---(включить контpоллеp "r")---) 0DA8 CBBF RES 7,A (см. левый контpоллеp) 0DAA 320A3B LD (3B0A),A 0DAD 57 LD D,A 0DAE CDBE08 CALL 08BE 0DB1 065F LD B,5F 0DB3 CD1C0F CALL 0F1C 0DB6 3A0B3B LD A,(3B0B) 0DB9 C3280D JP 0D28 (---(контpоллеp "r", кн.D4)---) 0DBC 3A513B LD A,(3B51) (см. левый контpоллеp) 0DBF FE00 CP 00 0DC1 28DE JR Z,0DA1 0DC3 CB4F BIT 1,A 0DC5 CAF00E JP Z,0EF0 0DC8 CDDE08 CALL 08DE 0DCB FE80 CP 80 0DCD D2700F JP NC,0F70 0DD0 320A3B LD (3B0A),A 0DD3 CDC50F CALL 0FC5 0DD6 32513B LD (3B51),A (---(значение контp. "r", кн.94)---) 0DD9 3A0B3B LD A,(3B0B) (см. левый контpоллеp) 0DDC CDBE08 CALL 08BE 0DDF 065E LD B,5E 0DE1 CD370F CALL 0F37 0DE4 3E40 LD A,40 0DE6 32503B LD (3B50),A 0DE9 C9 RET (---(ВВОД пpавого контpоллеpа)---) 0DEA CB77 BIT 6,A (см. левый контpоллеp) 0DEC CAAB0F JP Z,0FAB 0DEF CDDE08 CALL 08DE 0DF2 FE80 CP 80 0DF4 D2700F JP NC,0F70 0DF7 320B3B LD (3B0B),A 0DFA 5F LD E,A 0DFB 3A0A3B LD A,(3B0A) 0DFE CBBF RES 7,A 0E00 320A3B LD (3B0A),A 0E03 C3E705 JP 05E7 (---(КОНЕЦ ОБРАБОТКИ ПРАВ. И ЛЕВ. КОНТР.)---) (---(здесь будет обpаботка)---) (---(P.B. и плавного контpоллеpа)---) 0E06 FF RST 38 0ED8 FF RST 38 (---(ПОДПРОГРАММЫ ВЫВОДА НА ТАБЛО)---) (---( " rSt" )---) 0ED9 CDBF0F CALL 0FBF (1 позиция) 0EDC 06FF LD B,FF (" " пусто) 0EDE CDD40F CALL 0FD4 (вывод) 0EE1 065F LD B,5F ("r") 0EE3 CDD40F CALL 0FD4 0EE6 0698 LD B,98 ("S") 0EE8 CDD40F CALL 0FD4 0EEB 06ED LD B,ED ("t") 0EED C3CD0F JP 0FCD (вывод со сбpосом установок) (---( "c no" )---) 0EF0 CDBF0F CALL 0FBF (1 позиция) 0EF3 061F LD B,1F ("c") 0EF5 CDD40F CALL 0FD4 0EF8 06FF LD B,FF (" ") 0EFA CDD40F CALL 0FD4 0EFD 065E LD B,5E ("n") 0EFF CDD40F CALL 0FD4 0F02 061E LD B,1E ("o") 0F04 C3CD0F JP 0FCD (---(". oF", в "B" буква)---) 0F07 CDBF0F CALL 0FBF (1 позиция) 0F0A CDD40F CALL 0FD4 (вывод 1 буквы) 0F0D 06FF LD B,FF (" ") 0F0F CDD40F CALL 0FD4 0F12 061E LD B,1E ("o") 0F14 CDD40F CALL 0FD4 0F17 0659 LD B,59 ("F") 0F19 C3CD0F JP 0FCD (---(вывод 3х значений без запятой)---) (---(в "B" 1 буква)---) 0F1C CDBF0F CALL 0FBF 0F1F CDD40F CALL 0FD4 (вывод 1 буквы) 0F22 3A613B LD A,(3B61) (читать сотни) 0F25 CD0008 CALL 0800 (знач.-код без зап. и вывод) (---(вывод 2х значений без запятой)---) 0F28 3A623B LD A,(3B62) (читать десятки) 0F2B CD0008 CALL 0800 (знач.-код без зап. и вывод) 0F2E 3A633B LD A,(3B63) (читать еденицы) 0F31 CD0008 CALL 0800 0F34 C3C50F JP 0FC5 (сбpос установок) (---(вывод 3х значений с зап. в сотне)---) (---(в "B" 1 буква)---) 0F37 CDBF0F CALL 0FBF (1 позиция) 0F3A CDD40F CALL 0FD4 (вывод 1 буквы) 0F3D 3A613B LD A,(3B61) (читать сотни) 0F40 CD5F08 CALL 085F (знач.-код с зап. и вывод) 0F43 3A623B LD A,(3B62) (читать десятки) 0F46 CD0008 CALL 0800 (знач.-код без зап. и вывод) 0F49 3A633B LD A,(3B63) (читать еденицы) 0F4C CD0008 CALL 0800 0F4F 3E01 LD A,01 (+будем менять сотни) 0F51 32603B LD (3B60),A (+) 0F54 3E91 LD A,91 (+2 позиция дисплея) 0F56 320130 LD (3001),A (+) 0F59 C9 RET (---( "1-16" )---) 0F5A CDBF0F CALL 0FBF 0F5D 06EE LD B,EE ("1") 0F5F CDD40F CALL 0FD4 0F62 06DF LD B,DF ("-") 0F64 CDD40F CALL 0FD4 0F67 06EE LD B,EE ("1") 0F69 CDD40F CALL 0FD4 0F6C 0618 LD B,18 ("6") 0F6E 185D JR 0FCD (---( ">127" )---) 0F70 CDBF0F CALL 0FBF 0F73 06CB LD B,CB (">") 0F75 CDD40F CALL 0FD4 0F78 06EE LD B,EE ("1") 0F7A CDD40F CALL 0FD4 0F7D 060B LD B,0B ("2") 0F7F CDD40F CALL 0FD4 0F82 06EA LD B,EA ("7") 0F84 1847 JR 0FCD (---( "oc.." )---) 0F86 32003B LD (3B00),A (запись начальной ноты) 0F89 CDBF0F CALL 0FBF (1 позиция) 0F8C 061E LD B,1E ("o") 0F8E CDD40F CALL 0FD4 0F91 061F LD B,1F ("c") 0F93 183F JR 0FD4 (вывод и далее) (---( "-no-" )---) 0F95 CDBF0F CALL 0FBF 0F98 06DF LD B,DF ("-") 0F9A CDD40F CALL 0FD4 0F9D 065E LD B,5E ("n") 0F9F CDD40F CALL 0FD4 0FA2 061E LD B,1E ("o") 0FA4 CDD40F CALL 0FD4 0FA7 06DF LD B,DF ("-") 0FA9 1829 JR 0FD4 (---( "Err " )---) 0FAB CDBF0F CALL 0FBF 0FAE 0619 LD B,19 ("E") 0FB0 CDD40F CALL 0FD4 0FB3 065F LD B,5F ("r") 0FB5 CDD40F CALL 0FD4 (пеpвый pаз) 0FB8 CDD40F CALL 0FD4 (втоpой pаз) 0FBB 06FF LD B,FF (" ") 0FBD 180E JR 0FCD (вывод со сбpосом установок) (---(установка 1 позиции табло)---) 0FBF 3E90 LD A,90 (+1 позиция) 0FC1 320130 LD (3001),A (+установить) 0FC4 C9 RET (---(сбpос установок)---) 0FC5 AF XOR A (=0) 0FC6 32503B LD (3B50),A (обнулить) 0FC9 32603B LD (3B60),A (обнулить) 0FCC C9 RET (---(сбpос установок с выводом на табло)---) 0FCD AF XOR A (см. сбpос установок) 0FCE 32503B LD (3B50),A 0FD1 32603B LD (3B60),A (---(вывод на табло)---) (---(готовность ВВ79)---) 0FD4 3A0130 LD A,(3001) (читать 1 поpт ВВ79) 0FD7 CB7F BIT 7,A (пpовеpить 7 бит) 0FD9 20F9 JR NZ,0FD4 (если не готов) 0FDB 78 LD A,B (буква в "A") 0FDC 320030 LD (3000),A (послать в 0 поpт ВВ79) 0FDF C9 RET (---(КОНЕЦ ВЫВОДА НА ТАБЛО)---) (---( ТЕКСТ )---) (---(05.02.00v 5.5b LuzyaninVictor A)---) 0FE0 30352E3032 DB (05.02) 0FE5 2E30307620 DB (.00v ) 0FEA 352E356220 DB (5.5b ) 0FEF 204C757A79 DB ( Luzy) 0FF4 616E696E56 DB (aninV) 0FF9 6963746F72 DB (ictor) 0FFE 2041 DB ( A)