Важная информация

User Tag List

Показано с 1 по 9 из 9

Тема: Дизассемблер монитора РК ищу

  1. #1
    Member
    Регистрация
    18.10.2018
    Адрес
    г. Москва
    Сообщений
    43
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Дизассемблер монитора РК ищу

    Приветствую уважаемое собрание!

    Подскажите, нет ли у кого дизассемблированного монитора. М.б. даже с комментариями. Мне нужно покопаться в кое-каких подпрограммах и может быть, ваши наработки помогут мне выиграть время.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Member
    Регистрация
    01.06.2005
    Адрес
    Москва
    Сообщений
    191
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    30
    Поблагодарили
    25 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    чтож такого сложного, получить исходники.
    вот -- rk32-std.rar, без комментов, но разобраться не сложно.
    получено моим дизассемблером.
    комменты вида "X TIMES" -- это сколько раз ссылаются на данную метку

  4. Этот пользователь поблагодарил Vital72 за это полезное сообщение:

    Дмитрий77 (01.06.2020)

  5. #3
    Veteran Аватар для zebest
    Регистрация
    11.01.2008
    Адрес
    Ладошкино
    Сообщений
    1,673
    Записей в дневнике
    4
    Спасибо Благодарностей отдано 
    323
    Спасибо Благодарностей получено 
    221
    Поблагодарили
    174 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vital72 Посмотреть сообщение
    чтож такого сложного, получить исходники.
    Увлажним задачу, для искателей.
    Мой вариант, с камментаме, но в мнемониках Z80
    Собирается и работает, еси чО.
    Два исходника то лучше, чем ни одного?
    Последний раз редактировалось zebest; 01.06.2020 в 12:28.
    Profi v3.2 -=- Speccy2010,r2

  6. Эти 4 пользователя(ей) поблагодарили zebest за это полезное сообщение:

    NEO SPECTRUMAN (01.06.2020), tnt23 (03.06.2020), unclerus (20.06.2020), Дмитрий77 (01.06.2020)

  7. #4
    Guru Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,220
    Спасибо Благодарностей отдано 
    475
    Спасибо Благодарностей получено 
    900
    Поблагодарили
    592 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    Arrow

    Мой вариант, дизассемблировал на Орион-128 самописным дизассемблером

    Код:
    Orion-128 file
    RK.AS   
    ; дИЗАССЕМБЛИРОВАЛ DENN
    ; 13.02.2017
    
    ; пОРТ КЛАВИАТУРЫ
    
    PT_KB1:EQU 8001H
    PT_KB0:EQU 8000H
    PT_KB2:EQU 8002H
    PT_KB3:EQU 8003H
    
    ; пОРТ ROM-ДИСКА
    
    PT_RD0:EQU 0A000H
    PT_RD1:EQU 0A001H
    PT_RD2:EQU 0A002H
    PT_RD3:EQU 0A003H
    
    ; рЕГИСТРЫ вг75
    
    VG_R0:EQU 0C000H
    VG_R1:EQU 0C001H
    
    ; рЕГИСТРЫ вт57 (ТОЛЬКО ЗАПИСЬ)
    
    VT_R4:EQU 0E004H
    VT_R8:EQU 0E008H
    
    
    STACK:EQU  76CFH; СТЕК мОНИТОРА
    STACK2:EQU 7618H
    RAMTOP:EQU 75FFH
    ExtPRG:EQU 0F000H; АДРЕС ПЕРЕХОДА ПО 'U'
    
    VidBEG:EQU 77C2H; НАЧАЛО ВИДИМОЙ ОБЛАСТИ
    VidEND:EQU 765FH; КОНЕЦ ВИДИМОЙ ОБЛАСТИ
    ScrEND:EQU 7FF4H; КОНЕЦ ЭКРАННОЙ ОБЛАСТИ
    
    
    ; сИСТЕМНЫЕ ПЕРЕМЕННЫЕ
    
    M_eVID:EQU 7600H; РАЗРЕШЕНИЕ ОТОБРАЖЕНИЯ ВИДЕО
    M_cPOS:EQU 7602H; ТЕКУЩАЯ ПОЗИЦИЯ КУРСОРА
    
    M_PCHR:EQU 7604H; ПЕРЕМЕННАЯ П/П PRC
    M_PKEY:EQU 7605H; ПЕРЕМЕННАЯ П/П KEY
    M_RULA:EQU 7606H; рус/LAT
    M_KEY1:EQU 7609H
    M_KEY2:EQU 760BH
    M_SFST:EQU 760DH
    M_RRST:EQU 7614H
    
    M_ADDR:EQU 7616H; СОХР-Е [HL] (АДРЕСА)
    M_STAK:EQU 761CH; СОХР-Е СТЕКА
    M_RST2:EQU 761EH
    M_SvDE:EQU 7623H; СОХР-Е [DE] (GOTO)
    M_SvOC:EQU 7625H; СОХР-Е КОМАНДЫ (GOTO)
    M_GOTO:EQU 7626H; ВЕКТОР ПЕРЕХОДА (GOTO)
    
    ; === НАЧАЛО ОБНУЛЯЕМОЙ ОБЛАСТИ ПЕРМЕННЫХ ===
    M_[HL]:EQU 7627H; СОХР-Е [HL]
    M_[DE]:EQU 7629H; СОХР-Е [DE]
    M_[BC]:EQU 762BH; СОХР-Е [BC]
    M_MGLD:EQU 762DH; ПЕРЕМЕННАЯ П/П ЧТЕНИЯ мг
    ; === КОНЕЦ ОБНУЛЯЕМОЙ ОБЛАСТИ ПЕРМЕННЫХ ===
    
    M_LDBT:EQU 762EH; ПЕРЕМЕННАЯ П/П ЧТЕНИЯ БАЙТА
    M_C\LD:EQU 762FH; КОНСТАНТА ЧТЕНИЯ С мг
    M_C\SV:EQU 7630H; КОНСТАНТА ЗАПИСИ НА мг
    M_RTOP:EQU 7631H; ЗНАЧЕНИЕ RamTOP
    
    B_CMD:EQU 7633H; БУФЕР ВВОДА СТРОКИ
    
    
    ORG 0F800H
    
    ; кЕРНАЛЬ ПЕРЕХОДОВ СТАНДАРТНЫХ п/п
    JMP RESET;  0F800h
    JMP KEY;    0F803h
    JMP LdBYTE; 0F806h
    JMP PRC;    0F809h
    JMP SvBYTE; 0F80Ch
    JMP PRC;    0F80Fh
    JMP TstKEY; 0F812h
    JMP PRH;    0F815h
    JMP MSG;    0F818h
    JMP SCN;    0F81Bh
    JMP AskPOS; 0F81Eh
    JMP GetSCR; 0F821h
    JMP LdBLOK; 0F824h
    JMP SvBLOK; 0F827h
    JMP GetK\S; 0F82Ah
    JMP EnVID;  0F82Dh
    JMP GetTOP; 0F830h
    JMP SetTOP; 0F833h
    
    
    RESET:
    ; "хОЛОДНЫЙ" СБРОС (0F800h)
    
    ; НАСТРОКА ПОРТА КЛАВИАТУРЫ
    MVI A,8AH
    STA PT_KB3
    
    ; НАСТРОКА СТЕКА
    LXI SP,STACK
    
    ; НАСТРОЙКА/ВКЛЮЧЕНИЕ ОТОБРАЖЕНИЯ
    CALL EnVID
    LXI H,M_eVID
    LXI D,VidEND
    MVI C,0
    CALL FILL
    
    ; ЗН-Е СТЕКА В СИСТЕМНУЮ ПЕРМЕННУЮ
    LXI H,STACK
    SHLD M_STAK
    
    ; ВЫВОД ЗАСТАВКИ "радио-86рк"
    LXI H,T_MAIN
    CALL MSG
    
    ; ОТОБРАЖЕНИЕ...
    CALL EnVID
    
    ; УСТАНОВКА RamTOP В 75FFh
    LXI H,RAMTOP
    SHLD M_RTOP
    
    ; ИНИЦИАЛИЗАЦИЯ КОНСТАНТ мг
    LXI H,1D2AH
    SHLD M_C\LD
    
    ; ИНИЦИАЛИЗАЦИЯ ПЕРЕХОДА (GOTO)
    MVI A,0C3H
    STA M_GOTO
    
    HotRES:
    ; "гОРЯЧИЙ СБРОС" (F86Ch)
    LXI SP,STACK
    
    ; ВЫВОд ПРОМПТА
    LXI H,T_PMPT
    CALL MSG
    
    ; ГАШЕНИЕ С/Д "рус/LAT"
    ; [A]=00h
    STA PT_KB2
    DCR A; [A]=FFh
    STA PT_RD2
    
    ; ВВОД КОМАНДНОЙ СТРОКИ
    CALL InBUF
    
    ; АДРЕС ВОЗВРАТА В F86Ch В СТЕК
    LXI H,HotRES
    PUSH H
    
    ; АНАЛИЗ КОМАНДНОЙ СТРОКИ
    LXI H,B_CMD
    MOV A,M
    CPI 'X'
    JZ PrREGS
    CPI 'U'
    JZ ExtPRG
    
    ; ОБНУЛЕНИЕ ПЕРЕМЕННЫХ
    ; ВЗЯТИЕ ПАРАМЕТРОВ
    ; СОХРАНЕНИЕ РЕГИСТРОВ
    PUSH PSW
    CALL GetPRM
    LHLD M_[BC]
    MOV C,L
    MOV B,H
    LHLD M_[DE]
    XCHG
    LHLD M_[HL]
    POP PSW
    
    ; АНАЛИЗ ДЕРИКТИВ
    CPI 'D'
    JZ PrDUMP
    CPI 'C'
    JZ COMPR
    CPI 'F'
    JZ FILL
    CPI 'S'
    JZ SEARCH
    CPI 'T'
    JZ TRANSF
    CPI 'M'
    JZ MODIFY
    CPI 'G'
    JZ GOTO
    CPI 'I'
    JZ MGLOAD
    CPI 'O'
    JZ MGSAVE
    CPI 'L'
    JZ PrSIMB
    CPI 'R'
    JZ LdROMD
    JMP ExtPRG
    
    
    InBKSP:
    ; УДАЛЕНИЕ СИМВОЛА КОМАНДНОЙ СТРОКИ
    MVI A,B_CMD; 33H
    CMP L
    JZ InBUF0
    PUSH H
    LXI H,T_DEL
    CALL MSG
    POP H
    DCX H
    JMP InBUF1
    
    InBUF:
    ; вВОД КОМАНДНОЙ СТРОКИ
    LXI H,B_CMD
    
    InBUF0:
    MVI B,0
    
    InBUF1:
    CALL KEY
    CPI 8
    JZ InBKSP
    CPI 7FH
    JZ InBKSP
    CNZ PRA
    MOV M,A
    CPI 13
    JZ InENTR
    CPI '.'
    JZ HotRES
    MVI B,0FFH
    MVI A,B_CMD+31; 52H
    CMP L
    JZ ErEXIT
    INX H
    JMP InBUF1
    
    InENTR:
    MOV A,B
    RAL
    LXI D,B_CMD
    MVI B,0
    RET
    
    
    MSG:
    ; вЫВОД СООБЩЕНИЯ
    MOV A,M
    ANA A
    RZ
    CALL PRA
    INX H
    JMP MSG
    
    
    GetPRM:
    ; вЗЯТИЕ ПАРАМЕТРОВ ИЗ КОМАНДНОЙ СТРОКИ
    LXI H,M_[HL]
    LXI D,M_MGLD
    MVI C,0
    CALL FILL
    LXI D,B_CMD+1; 7634h
    CALL GetVAL
    SHLD M_[HL]
    SHLD M_[DE]
    RC
    MVI A,0FFH
    STA M_MGLD
    CALL GetVAL
    SHLD M_[DE]
    RC
    CALL GetVAL
    SHLD M_[BC]
    RC
    JMP ErEXIT
    
    
    GetVAL:
    ; вЗЯТИЕ ЗНАЧЕНИЯ АДРЕСА В [HL]
    LXI H,0
    
    AddVAL:
    LDAX D
    INX D
    CPI 13
    JZ StcRET
    CPI ','
    RZ
    CPI ' '
    JZ AddVAL
    SUI '0'
    JM ErEXIT
    CPI 10
    JM GtVAL1
    CPI 17
    JM ErEXIT
    CPI 23
    JP ErEXIT
    SUI 7
    
    GtVAL1:
    MOV C,A
    DAD H
    DAD H
    DAD H
    DAD H
    JC ErEXIT
    DAD B
    JMP AddVAL
    
    StcRET:
    STC
    RET
    
    
    TSTHD:
    MOV A,H
    CMP D
    RNZ
    MOV A,L
    CMP E
    RET
    
    
    IfENDF:
    ; пРОВЕРКА НА [F4] И НА КОНЕЦ АДРЕСА
    CALL TstF4
    
    TstEND:
    ; пРОВЕРКА НА КОНЕЦ АДРЕСА
    CALL TSTHD
    JNZ HppRET
    
    SP2RET:
    INX SP
    INX SP
    RET
    
    HppRET:
    INX H
    RET
    
    
    TstF4:
    ; пРОВЕРКА НА [F4]
    CALL SCN
    CPI 3
    RNZ
    CALL EnVID
    JMP ErEXIT
    
    
    PrUPUP:
    ; вЫВОД [╨] + ЧЕТЫРЕ [╡]
    PUSH H
    LXI H,T_GoUP
    CALL MSG
    POP H
    RET
    
    
    PRM:
    ; вЫВОД ЗН-Я ЯЧЕЙКИ ПО [HL] В HEX-ВИДЕ
    MOV A,M
    
    PRH_SP:
    PUSH B
    CALL PRH
    MVI A,' '
    CALL PRA
    POP B
    RET
    
    
    PrDUMP:
    ; вЫВОД ДАМПА
    CALL Pr[HL]
    
    PrDMP1:
    CALL PRM
    CALL IfENDF
    MOV A,L
    ANI 0FH
    JZ PrDUMP
    JMP PrDMP1
    
    
    COMPR:
    LDAX B
    CMP M
    JZ COMPR1
    CALL Pr[HL]
    CALL PRM
    LDAX B
    CALL PRH_SP
    
    COMPR1:
    INX B
    CALL IfENDF
    JMP COMPR
    
    
    FILL:
    MOV M,C
    CALL TstEND
    JMP FILL
    
    
    SEARCH:
    MOV A,C
    CMP M
    CZ Pr[HL]
    CALL IfENDF
    JMP SEARCH
    
    
    TRANSF:
    MOV A,M
    STAX B
    INX B
    CALL TstEND
    JMP TRANSF
    
    
    PrSIMB:
    ; вВОД ДАМПА В СИМВОЛЬНОМ ВИДЕ
    CALL Pr[HL]
    
    PrSIM1:
    MOV A,M
    ORA A
    JM PrSIM2
    CPI 20H
    JNC PrSIM3
    
    PrSIM2:
    MVI A,2EH
    
    PrSIM3:
    CALL PRA
    CALL IfENDF
    MOV A,L
    ANI 0FH
    JZ PrSIMB
    JMP PrSIM1
    
    
    MODIFY:
    ; мОДИФИКАЦИЯ ЯЧЕЕК озу
    CALL Pr[HL]
    CALL PRM
    PUSH H
    CALL InBUF
    POP H
    JNC MODIF1
    PUSH H
    CALL GetVAL
    MOV A,L
    POP H
    MOV M,A
    
    MODIF1:
    INX H
    JMP MODIFY
    
    
    GOTO:
    ; пЕРЕХОД ПО АДРЕСУ
    CALL TSTHD
    JZ GOTO1
    XCHG
    SHLD M_SvDE
    MOV A,M
    STA M_SvOC
    MVI M,0F7H; ЗАПИСЬ КОМАНДЫ "RST 6" (CALL 0030h)
    
    ; ПО АДРЕСУ 0030h ЗАПИСЫВАЕМ "JMP RtRST6"
    MVI A,0C3H
    STA 0030H
    LXI H,RtRST6
    SHLD 0031H
    
    GOTO1:
    LXI SP,STACK2
    POP B
    POP D
    POP H
    POP PSW
    SPHL
    LHLD M_ADDR
    JMP M_GOTO
    
    
    LdROMD:
    ; чТЕНИЕ ROM-ДИСКА
    
    ; ПРОГРАММИРОВАНИЕ ПОРТА
    MVI A,90H
    STA PT_RD3
    
    LdROM0:
    SHLD PT_RD1
    LDA PT_RD0
    STAX B
    INX B
    CALL TstEND
    JMP LdROM0
    
    
    AskPOS:
    ; зАПРОС ТЕКУЩЕЙ ПОЗИЦИИ КУРСОРА
    LHLD M_cPOS
    RET
    
    
    GetSCR:
    ; зАПРОС БАЙТА ИЗ ЭКРАННОГО БУФЕРА
    PUSH H
    LHLD M_eVID
    MOV A,M
    POP H
    RET
    
    
    MGLOAD:
    ; чТЕНИЕ БЛОКА С МАГНИТОФОНА
    LDA M_MGLD
    ORA A
    JZ MG_LD1
    MOV A,E
    STA M_C\LD
    
    MG_LD1:
    CALL LdBLOK
    CALL Pr[HL]
    XCHG
    CALL Pr[HL]
    XCHG
    PUSH B
    CALL GetK\S
    MOV H,B
    MOV L,C
    CALL Pr[HL]
    POP D
    CALL TSTHD
    RZ
    XCHG
    CALL Pr[HL]
    
    ErEXIT:
    ; вЫХОД ПРИ ОШИБКЕ
    MVI A,'?'
    CALL PRA
    JMP HotRES
    
    
    LdBLOK:
    ; чТЕНИЕ БЛОКА С мг
    MVI A,0FFH
    CALL LdSYNC
    PUSH H
    DAD B
    XCHG
    CALL Ld0808
    POP H
    DAD B
    XCHG
    PUSH H
    CALL LdBODY
    MVI A,0FFH
    CALL LdSYNC
    POP H
    
    EnVID:
    ; вКЛЮЧИТЬ ОТОБРАЖЕНИЕ ИЗОБРАЖЕНИЯ
    PUSH H
    LXI H,VG_R1
    MVI M,0
    DCX H
    MVI M,4DH
    MVI M,1DH
    MVI M,99H
    MVI M,93H
    INX H
    MVI M,27H
    MOV A,M
    
    EnVID1:
    MOV A,M
    ANI 20H
    JZ EnVID1
    LXI H,VT_R8
    MVI M,80H
    MVI L,4
    MVI M,0D0H
    MVI M,76H
    INR L
    MVI M,23H
    MVI M,49H
    MVI L,8
    MVI M,0A4H
    POP H
    RET
    
    
    Ld0808:
    MVI A,8
    
    LdSYNC:
    CALL LdBYTE
    MOV B,A
    MVI A,8
    CALL LdBYTE
    MOV C,A
    RET
    
    LdBODY:
    MVI A,8
    CALL LdBYTE
    MOV M,A
    CALL TstEND
    JMP LdBODY
    
    
    GetK\S:
    ; пОДСЧЕТ КОНТРОЛЬНОЙ СУММЫ БЛОКА
    LXI B,0
    
    GetKS1:
    MOV A,M
    ADD C
    MOV C,A
    PUSH PSW
    CALL TSTHD
    JZ SP2RET
    POP PSW
    MOV A,B
    ADC M
    MOV B,A
    CALL TstEND
    JMP GetKS1
    
    
    MGSAVE:
    ; зАПИСЬ БЛОКА НА мг
    MOV A,C
    ORA A
    JZ MG_SV1
    STA M_C\SV
    
    MG_SV1:
    PUSH H
    CALL GetK\S
    POP H
    CALL Pr[HL]
    XCHG
    CALL Pr[HL]
    XCHG
    PUSH H
    MOV H,B
    MOV L,C
    CALL Pr[HL]
    POP H
    
    SvBLOK:
    ; зАПИСЬ БЛОКА НА мг
    PUSH B
    LXI B,0
    
    SvBLK1:
    CALL SvBYTE
    DCR B
    XTHL
    XTHL
    JNZ SvBLK1
    MVI C,0E6H
    CALL SvBYTE
    CALL SvWORD
    XCHG
    CALL SvWORD
    XCHG
    CALL Sv[HL]
    LXI H,0
    CALL SvWORD
    MVI C,0E6H
    CALL SvBYTE
    POP H
    CALL SvWORD
    JMP EnVID
    
    
    Pr[HL]:
    PUSH B
    CALL PrUPUP
    MOV A,H
    CALL PRH
    MOV A,L
    CALL PRH_SP
    POP B
    RET
    
    
    Sv[HL]:
    MOV C,M
    CALL SvBYTE
    CALL TstEND
    JMP Sv[HL]
    
    
    SvWORD:
    ; зАПИСЬ РЕГ. ПАРЫ [HL] НА мг
    MOV C,H
    CALL SvBYTE
    MOV C,L
    JMP SvBYTE
    
    
    LdBYTE:
    ; чТЕНИЕ БАЙТА С мг
    PUSH H
    PUSH B
    PUSH D
    MOV D,A
    
    LdBYT1:
    MVI A,80H
    STA VT_R8
    LXI H,0
    DAD SP
    LXI SP,0
    SHLD M_SFST
    MVI C,0
    LDA PT_KB2
    RRC
    RRC
    RRC
    RRC
    ANI 1
    MOV E,A
    
    LdBYT2:
    POP PSW
    MOV A,C
    ANI 7FH
    RLC
    MOV C,A
    MVI H,0
    
    LdBYT3:
    DCR H
    JZ LdBYT9
    POP PSW
    LDA PT_KB2
    RRC
    RRC
    RRC
    RRC
    ANI 1
    CMP E
    JZ LdBYT3
    ORA C
    MOV C,A
    DCR D
    LDA M_C\LD
    JNZ LdBYT4
    SUI 12H
    
    LdBYT4:
    MOV B,A
    
    LdBYT5:
    POP PSW
    DCR B
    JNZ LdBYT5
    INR D
    LDA PT_KB2
    RRC
    RRC
    RRC
    RRC
    ANI 1
    MOV E,A
    MOV A,D
    ORA A
    JP LdBYT8
    MOV A,C
    CPI 0E6H
    JNZ LdBYT6
    XRA A
    STA M_LDBT
    JMP LdBYT7
    
    LdBYT6:
    CPI 19H
    JNZ LdBYT2
    MVI A,0FFH
    STA M_LDBT
    
    LdBYT7:
    MVI D,9
    
    LdBYT8:
    DCR D
    JNZ LdBYT2
    
    ; НАСТРОЙКА вг75/вт57
    LXI H,VT_R4
    MVI M,0D0H
    MVI M,76H
    INX H
    MVI M,23H
    MVI M,49H
    MVI A,27H
    STA VG_R1
    MVI A,0E0H
    STA VG_R1
    MVI L,8
    MVI M,0A4H
    LHLD M_SFST
    SPHL
    LDA M_LDBT
    XRA C
    JMP AllRET
    
    LdBYT9:
    LHLD M_SFST
    SPHL
    CALL EnVID
    MOV A,D
    ORA A
    JP ErEXIT
    CALL TstF4
    JMP LdBYT1
    
    
    SvBYTE:
    ; зАПИСЬ БАЙТА НА мг
    PUSH H
    PUSH B
    PUSH D
    PUSH PSW
    MVI A,80H
    STA VT_R8
    LXI H,0
    DAD SP
    LXI SP,0
    MVI D,8
    
    SvBYT1:
    POP PSW
    MOV A,C
    RLC
    MOV C,A
    MVI A,1
    XRA C
    STA PT_KB2
    LDA M_C\SV
    MOV B,A
    
    SvBYT2:
    POP PSW
    DCR B
    JNZ SvBYT2
    MVI A,0
    XRA C
    STA PT_KB2
    DCR D
    LDA M_C\SV
    JNZ SvBYT3
    SUI 0EH
    
    SvBYT3:
    MOV B,A
    
    SvBYT4:
    POP PSW
    DCR B
    JNZ SvBYT4
    INR D
    DCR D
    JNZ SvBYT1
    SPHL
    LXI H,VT_R4
    MVI M,0D0H
    MVI M,76H
    INX H
    MVI M,23H
    MVI M,49H
    MVI A,27H
    STA VG_R1
    MVI A,0E0H
    STA VG_R1
    MVI L,8
    MVI M,0A4H
    POP PSW
    
    AllRET:
    POP D
    POP B
    POP H
    RET
    
    
    PRH:
    ; вВОД HEX-БАЙТА
    PUSH PSW
    RRC
    RRC
    RRC
    RRC
    CALL PrHEX1
    POP PSW
    
    PrHEX1:
    ANI 0FH
    CPI 0AH
    JM PrHEX2
    ADI 7
    
    PrHEX2:
    ADI 30H
    
    PRA:
    ; вВОД СИМВОЛА [A]
    MOV C,A
    
    PRC:
    ; вВОД СИМВОЛА [C]
    PUSH PSW
    PUSH B
    PUSH D
    PUSH H
    CALL TstKEY
    LXI H,PrCH11
    PUSH H
    LHLD M_cPOS
    XCHG
    LHLD M_eVID
    LDA M_PCHR
    DCR A
    JM PrCHR4
    JZ PrCHR8
    JPO PrCHR9
    MOV A,C
    SUI 20H
    MOV C,A
    
    PrCHR1:
    DCR C
    JM PrCHR2
    PUSH B
    CALL PrRIGT
    POP B
    JMP PrCHR1
    
    PrCHR2:
    XRA A
    
    PrCHR3:
    STA M_PCHR
    RET
    
    PrCHR4:
    MOV A,C
    ANI 7FH
    MOV C,A
    CPI 31
    JZ PrCLS
    CPI 12
    JZ PrHOME
    CPI 13
    JZ Pr0DH
    CPI 10
    JZ Pr0AH
    CPI 8
    JZ PrLEFT
    CPI 24
    JZ PrRIGT
    CPI 25
    JZ PrUP
    CPI 26
    JZ PrDOWN
    CPI 27
    JZ PrESC
    CPI 7
    JNZ PrCHR5
    
    ; ВЫВОД 07H (ЗВОНОК)
    LXI B,05F0H
    
    BEEP:
    ; вЫВОД ЗВУКА
    MOV A,B
    
    BEEP1:
    EI
    DCR A
    JNZ BEEP1
    MOV A,B
    
    BEEP2:
    DI
    DCR A
    JNZ BEEP2
    DCR C
    JNZ BEEP
    RET
    
    PrCHR5:
    MOV M,C
    CALL PrRIGT
    MOV A,D
    CPI 3
    RNZ
    MOV A,E
    CPI 8
    RNZ
    CALL PrUP
    
    Pr0AH:
    MOV A,D
    CPI 1BH
    JNZ PrDOWN
    PUSH H
    PUSH D
    LXI H,VidBEG
    LXI D,7810H
    LXI B,079EH
    
    PrCHR7:
    LDAX D
    MOV M,A
    INX H
    INX D
    DCX B
    MOV A,C
    ORA B
    JNZ PrCHR7
    POP D
    POP H
    RET
    
    PrCHR8:
    MOV A,C
    CPI 59H
    JNZ PrCHR2
    CALL PrHOME
    MVI A,2
    JMP PrCHR3
    
    PrCHR9:
    MOV A,C
    SUI 20H
    MOV C,A
    
    PrCH10:
    DCR C
    MVI A,4
    JM PrCHR3
    PUSH B
    CALL PrDOWN
    POP B
    JMP PrCH10
    
    PrCH11:
    SHLD M_eVID
    XCHG
    SHLD M_cPOS
    MVI A,80H
    STA VG_R1
    MOV A,L
    STA VG_R0
    MOV A,H
    STA VG_R0
    POP H
    POP D
    POP B
    POP PSW
    RET
    
    PrESC:
    MVI A,1
    JMP PrCHR3
    
    PrCLS:
    LXI H,ScrEND
    LXI D,0925H
    
    PrCLS1:
    XRA A
    MOV M,A
    DCX H
    DCX D
    MOV A,E
    ORA D
    JNZ PrCLS1
    
    PrHOME:
    LXI D,0308H
    LXI H,VidBEG
    RET
    
    PrRIGT:
    MOV A,E
    INX H
    INR E
    CPI 47H
    RNZ
    MVI E,8
    LXI B,0FFC0H
    DAD B
    
    PrDOWN:
    MOV A,D
    CPI 1BH
    LXI B,004EH
    JNZ MFDD3
    MVI D,2
    LXI B,0F8B0H
    
    MFDD3:
    INR D
    DAD B
    RET
    
    PrLEFT:
    MOV A,E
    DCX H
    DCR E
    CPI 8
    RNZ
    MVI E,47H
    LXI B,0040H
    DAD B
    
    PrUP:
    MOV A,D
    CPI 3
    LXI B,RtR6_1
    JNZ PrUP1
    MVI D,1CH
    LXI B,0750H
    
    PrUP1:
    DCR D
    DAD B
    RET
    
    Pr0DH:
    MOV A,L
    SUB E
    JNC $+4
    DCR H
    ;$+4
    MOV L,A
    MVI E,8
    LXI B,8
    DAD B
    RET
    
    
    TstKEY:
    LDA PT_KB2
    ANI 80H
    JZ TstKE1
    LDA M_PKEY
    ORA A
    RNZ
    
    TstKE1:
    PUSH H
    LHLD M_KEY1
    CALL SCN
    CMP L
    MOV L,A
    JZ TstKE5
    
    TstKE2:
    MVI A,1
    STA M_KEY2
    MVI H,15H
    
    TstKE3:
    XRA A
    
    TstKE4:
    SHLD M_KEY1
    POP H
    STA M_PKEY
    RET
    
    TstKE5:
    DCR H
    JNZ TstKE3
    INR A
    JZ TstKE4
    INR A
    JZ TstKE7
    PUSH B
    LXI B,5003H
    CALL BEEP
    POP B
    LDA M_KEY2
    MVI H,0E0H
    DCR A
    STA M_KEY2
    JZ TstKE6
    MVI H,40H
    
    TstKE6:
    MVI A,0FFH
    JMP TstKE4
    
    TstKE7:
    LDA PT_KB2
    ANI 80H
    JZ TstKE7
    LDA M_RULA
    CMA
    STA M_RULA
    JMP TstKE2
    
    
    KEY:
    CALL TstKEY
    ORA A
    JZ KEY
    XRA A
    STA M_PKEY
    LDA M_KEY1
    RET
    
    
    SCN:
    LDA PT_KB2
    ANI 80H
    JNZ KeySCN
    MVI A,0FEH
    RET
    
    KeySCN:
    XRA A
    STA PT_KB0
    STA PT_KB2
    LDA M_RULA
    ANI 1
    ORI 6
    STA PT_KB3
    LDA PT_KB1
    INR A
    JNZ KeySC1
    DCR A
    RET
    
    KeySC1:
    PUSH H
    MVI L,1
    MVI H,7
    
    KeySC2:
    MOV A,L
    RRC
    MOV L,A
    CMA
    STA PT_KB0
    LDA PT_KB1
    CMA
    ORA A
    JNZ KeySC4
    DCR H
    JP KeySC2
    
    KeySC3:
    MVI A,0FFH
    POP H
    RET
    
    KeySC4:
    MVI L,20H
    
    KeySC5:
    LDA PT_KB1
    CMA
    ORA A
    JZ KeySC3
    DCR L
    JNZ KeySC5
    MVI L,8
    
    KeySC6:
    DCR L
    RLC
    JNC KeySC6
    MOV A,H
    MOV H,L
    MOV L,A
    CPI 1
    JZ KeySC8
    JC KeySC7
    RLC
    RLC
    RLC
    ADI 20H
    ORA H
    CPI 5FH
    JNZ KeyS10
    MVI A,20H
    POP H
    RET
    
    KB_L0:
    DB 9
    DB 0AH
    DB 0DH
    DB 7FH
    DB 8
    DB 19H
    DB 18H
    DB 1AH
    
    KB_L1:
    DB 0CH
    DB 1FH
    DB 1BH
    DB 0
    DB 1
    DB 2
    DB 3
    DB 4
    DB 5
    
    KeySC7:
    MOV A,H
    LXI H,KB_L1
    JMP KeySC9
    
    KeySC8:
    MOV A,H
    LXI H,KB_L0
    
    KeySC9:
    ADD L
    MOV L,A
    MOV A,M
    CPI 40H
    POP H
    RC
    PUSH H
    
    KeyS10:
    MOV L,A
    LDA PT_KB2
    MOV H,A
    ANI 40H
    JNZ KeyS11
    MOV A,L
    CPI 40H
    JM KeyS14
    ANI 1FH
    POP H
    RET
    
    KeyS11:
    LDA M_RULA
    ORA A
    JZ KeyS12
    MOV A,L
    CPI 40H
    JM KeyS12
    ORI 20H
    MOV L,A
    
    KeyS12:
    MOV A,H
    ANI 20H
    JNZ KeyS14
    MOV A,L
    CPI 40H
    JM KeyS13
    MOV A,L
    XRI 20H
    POP H
    RET
    
    KeyS13:
    MOV A,L
    ANI 2FH
    MOV L,A
    
    KeyS14:
    MOV A,L
    CPI 40H
    POP H
    RP
    PUSH H
    MOV L,A
    ANI 0FH
    CPI 0CH
    MOV A,L
    JM HRET
    XRI 10H
    
    HRET:
    POP H
    RET
    
    
    GetTOP:LHLD M_RTOP
    RET
    
    SetTOP:SHLD M_RTOP
    RET
    
    
    T_MAIN:DB 1FH
    DB 'radio-86rk',0
    
    T_PMPT:DB 13,10,'-->',0
    
    T_GoUP:DB 13,10,24,24,24,24,0
    
    T_REGS:
    DB 13,10,' PC-'
    DB 13,10,' HL-'
    DB 13,10,' BC-'
    DB 13,10,' DE-'
    DB 13,10,' SP-'
    DB 13,10,' AF-'
    DB 25,25,25,25,25,25,0
    
    T_DEL:DB 8,32,8,0
    
    
    RtRST6:
    ; ВЫХОД ПО КОМАНДЕ RST6
    SHLD M_ADDR
    PUSH PSW
    POP H
    SHLD M_RST2
    POP H
    DCX H
    SHLD M_RRST
    LXI H,0
    
    RtR6_1:
    DAD SP
    LXI SP,M_RST2
    PUSH H
    PUSH D
    PUSH B
    LHLD M_RRST
    LXI SP,STACK
    CALL Pr[HL]
    
    RtR6_2:
    XCHG
    LHLD M_SvDE
    CALL TSTHD
    JNZ HotRES
    LDA M_SvOC
    MOV M,A
    JMP HotRES
    
    
    PrREGS:
    LXI H,T_REGS
    CALL MSG
    LXI H,M_RRST
    MVI B,6
    
    PrREG1:
    MOV E,M
    INX H
    MOV D,M
    PUSH B
    PUSH H
    XCHG
    CALL Pr[HL]
    CALL InBUF
    JNC PrREG2
    CALL GetVAL
    POP D
    PUSH D
    XCHG
    MOV M,D
    DCX H
    MOV M,E
    
    PrREG2:
    POP H
    POP B
    DCR B
    INX H
    JNZ PrREG1
    RET
    
    DB 0FFH,0FFH
    
    END
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  8. Эти 3 пользователя(ей) поблагодарили Denn за это полезное сообщение:

    SegaBoy (14.06.2020), unclerus (20.06.2020), Дмитрий77 (01.06.2020)

  9. #5
    Member
    Регистрация
    18.10.2018
    Адрес
    г. Москва
    Сообщений
    43
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо за отклики

  10. #6
    Member Аватар для kovdry
    Регистрация
    11.10.2010
    Адрес
    Запорожье
    Сообщений
    165
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот еще:
    Вложения Вложения

  11. Эти 6 пользователя(ей) поблагодарили kovdry за это полезное сообщение:

    begoon (29.06.2021), RD3AY (14.12.2021), RN6HI (12.07.2020), SegaBoy (05.07.2021), shapipovo (01.06.2020), Дмитрий77 (14.06.2020)

  12. #7
    Veteran Аватар для zebest
    Регистрация
    11.01.2008
    Адрес
    Ладошкино
    Сообщений
    1,673
    Записей в дневнике
    4
    Спасибо Благодарностей отдано 
    323
    Спасибо Благодарностей получено 
    221
    Поблагодарили
    174 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну и раз пошла такая п. - то вот еще парочка asm-ов, от ушельцев.
    Модификации, но пусть будут, в одном месте для истории.
    Profi v3.2 -=- Speccy2010,r2

  13. Эти 3 пользователя(ей) поблагодарили zebest за это полезное сообщение:

    RN6HI (12.07.2020), unclerus (20.06.2020), Дмитрий77 (14.06.2020)

  14. #8
    Member
    Регистрация
    18.10.2018
    Адрес
    г. Москва
    Сообщений
    43
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Текст от Denn меня заинтересовал и я решил использовать его. Правда пришлось писать перекодировщик, чтобы можно было загнать в MICRON. Не понял лишь код &DA т.к. в тексте он не встречался. Вот бы всё таки увидеть кодовую таблицу Ориона.
    Последний раз редактировалось Дмитрий77; 14.06.2020 в 13:04.

  15. #9
    Junior
    Регистрация
    07.10.2012
    Адрес
    г. Лондон, Великобритания
    Сообщений
    16
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    4 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

  16. Эти 2 пользователя(ей) поблагодарили begoon за это полезное сообщение:

    Oleg N. Cher (30.06.2021), SegaBoy (29.06.2021)

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ищу схему монитора Taxan 640
    от SaintTurnip в разделе Изображение
    Ответов: 3
    Последнее: 28.11.2018, 15:26
  2. Ответов: 20
    Последнее: 01.11.2012, 12:30
  3. Дизассемблер BASIC-48
    от Prusak в разделе Пресса
    Ответов: 4
    Последнее: 22.06.2010, 22:52
  4. Новый дизассемблер для ZX
    от Strunov в разделе Программирование
    Ответов: 32
    Последнее: 01.08.2007, 12:39
  5. Дизассемблер TR-DOS
    от Sonic в разделе Оси
    Ответов: 5
    Последнее: 23.10.2006, 09:42

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •