Исходники ПЗУ: Драйверный модуль БК-0010 |
Здравствуйте, гость ( Вход | Регистрация )
Исходники ПЗУ: Драйверный модуль БК-0010 |
SuperMax |
20.10.2009, 15:26
Сообщение
#1
|
Администратор Группа: Root Admin Сообщений: 6 295 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 |
Код ; ############################################################# ; # # ; # Д Р А Й В Е Р Н Ы Й М О Д У Л Ь Б К - 0 0 1 0 # ; # # ; ############################################################# ; РАЗРАБОТАЛ: ДЯБИН М.И. ; МОСКВА, 1983 Г. ; ; ПОСЛЕДНЯЯ РЕДАКЦИЯ: МАЙ 1984 Г. ; ==================================== ; **** АРГУМЕНТЫ КОМАНДЫ EMT DMBK **** ; ==================================== ; КЛАВИАТУРА ; ---------- INDKLW = 4 ;- ИНИЦИАЛИЗАЦИЯ ДРАЙВЕРА КЛАВИАТУРЫ CTKOD = 6 ;- ЧТЕНИЕ КОДА С КЛАВИАТУРЫ ; ВЫХОД: R0 - КОД В МЛ. БАЙТЕ CTSTR = 10 ;- ЧТЕНИЕ СТРОКИ С КЛАВИАТУРЫ ; ВХОД: R1 - АДРЕС БУФЕРА СТРОКИ ; R2 - ДЛИНА СТРОКИ (МЛ.Б.) ; - СИМВОЛ-ОГРАНИЧИТЕЛЬ (СТ.Б.) USTKLC = 12 ;- УСТАНОВКА КЛЮЧЕЙ КЛАВИАТУРЫ ; ВХОД: R0 - НОМЕР КЛЮЧА ; R1 - АДРЕС ТЕКСТА КЛЮЧА ; TV-МОНИТОР ; ---------- INDMBK = 14 ;- ИНИЦИАЛИЗАЦИЯ DMBK FSIM = 16 ;- ФОРМИРОВАНИЕ СИМВОЛА ; ВХОД: R0 - КОД СИМВОЛА В МЛ.Б. FSTR = 20 ;- ФОРМИРОВАНИЕ СТРОКИ ; ВХОД: R1 - АДРЕС СТРОКИ ; R2 - ДЛИНА СТРОКИ (МЛ.Б.) ; - СИМВОЛ-ОГРАНИЧИТЕЛЬ (СТ.Б.) ZSIMSS = 22 ;- ЗАПИСЬ СИМВОЛА В СЛУЖЕБНУЮ СТРОКУ ; ВХОД: R0 - КОД СИМВОЛА (0-СБРОС СТРОКИ) ; R1 - НОМЕР ПОЗИЦИИ В СС USTKK = 24 ;- УСТАНОВКА КУРСОРА ПО КООРДИНАТАМ ; ВХОД: R1 - КООРДИНАТА X ; R2 - КООРДИНАТА Y SEMKK = 26 ;- С'ЕМ КООРДИНАТ КУРСОРА ; ВЫХОД: R1 - КООРДИНАТА X ; R2 - КООРДИНАТА Y FTCK = 30 ;- ФОРМИРОВАНИЕ ТОЧКИ ; ВХОД: R0 - 1-ЗАПИСЬ, 0-СТИРАНИЕ ; R1 - КООРДИНАТА X ; R2 - КООРДИНАТА Y FWEKT = 32 ;- ФОРМИРОВАНИЕ ВЕКТОРА ; ВХОД: R0 - 1-ЗАПИСЬ, 0-СТИРАНИЕ ; R1 - КООРДИНАТА X ; R2 - КООРДИНАТА Y CTSSD = 34 ;- ЧТЕНИЕ СЛОВА СОСТОЯНИЯ ДИСПЛЕЯ ; ВЫХОД: R0 - СЛОВО СОСТ. ДИСПЛ. ; МАГНИТОФОН ; ---------- DMAG = 36 ;- ДРАЙВЕР МАГНИТОФОНА ; ВХОД: R1 - АДРЕС БЛОКА ПАРАМЕТРОВ ; TLG-КАНАЛ ; --------- INDTLG = 40 ;- ИНИЦИАЛИЗАЦИЯ ДРАЙВЕРА ТЛГ-КАНАЛА ; ВХОД: R0 - НОМЕР СКОРОСТИ PDBYT = 42 ;- ПЕРЕДАЧА БАЙТА ; ВХОД: R0 - МЛ.Б. НА ПЕРЕДАЧУ PRBYT = 44 ;- ПРИЕМ БАЙТА ; ВЫХОД: R0 - МЛ.Б. ПРИНЯТ PDMAS = 46 ;- ПЕРЕДАЧА МАССИВА ; ВХОД: R1 - АДРЕС МАССИВА ; R2 - ДЛИНА МАССИВА PRMAS = 50 ;- ПРИЕМ МАССИВА ; ВХОД: R1 - АДРЕС БУФЕРА МАССИВА ; R2 - ДЛИНА МАССИВА ; РЕЗЕРВ ; ------ RW1 = 52 RW2 = 54 RW3 = 56 RW4 = 60 RW5 = 62 RW6 = 64 RW7 = 66 RW8 = 70 RW9 = 72 RW10 = 74 RW11 = 76 RW12 = 100 RW13 = 102 RW14 = 104 RW15 = 106 RW16 = 110 ; ====================== ; *** КОНСТАНТЫ DMBK *** ; ====================== AWPZAW = 4 ;- АДР.ВЕКТ.ПРЕР. ПО ЗАВИСАНИЮ AWPEMT = 30 ;- АДР.ВЕКТ.ПРЕР. ПО КОМАНДЕ ЕМТ APORT = 177714 ;- АДРЕС ПОРТА ASPORT = 177716 ;- АДРЕС СИСТЕМНОГО ПОРТА ; ============================ ; **** ОБЛАСТЬ СВЯЗИ DMBK **** ; ============================ DMBK: JMP MNDMBK ;- ПЕРЕХОД НА МОНИТОР DMBK ; ------------------------------- ; ** ВХОДЫ ДРАЙВЕРА КЛАВИАТУРЫ ** ; ------------------------------- WIDKLW: .WORD MIDKLW ;- ВХОД ИНИЦИАЛИЗАЦИИ DKLAW WCTKOD: .WORD MCTKOD ;- ВХОД ЧТЕНИЯ КОДА WCTSTR: .WORD MCTSTR ;- ВХОД ЧТЕНИЯ СТРОКИ WUKLC: .WORD MUKLC ;- ВХОД УСТАНОВКИ КЛЮЧЕЙ ; -------------------------------- ; ** ВХОДЫ ДРАЙВЕРА TV-МОНИТОРА ** ; -------------------------------- WIDMBK: .WORD MIDMBK ;- ВХОД ИНИЦИАЛИЗАЦИИ DMBK WFSIM: .WORD MFSIM ;- ВХОД ФОРМИРОВАНИЯ СИМВОЛА WFSTR: .WORD MFSTR ;- ВХОД ФОРМИРОВАНИЯ СТРОКИ WZSSS: .WORD MZSSS ;- ВХОД ЗАПИСИ СИМВОЛА В СЛУЖ. СТРОКУ WUSTKK: .WORD MUSTKK ;- ВХОД УСТАНОВКИ КООРДИНАТ КУРСОРА WSKK: .WORD MSKK ;- ВХОД С'ЕМА КООРДИНАТ КУРСОРА WFTCK: .WORD MFTCK ;- ВХОД ФОРМИРОВАНИЯ ТОЧКИ WFWEKT: .WORD MFWEKT ;- ВХОД ФОРМИРОВАНИЯ ВЕКТОРА WCTSSD: .WORD MCTSSD ;- ВХОД ЧТЕНИЯ ССД ; -------------------------------- ; ** ВХОДЫ ДРАЙВЕРА МАГНИТОФОНА ** ; -------------------------------- WDMAG: .WORD MDMAG ;- ВХОД ЗАПИСИ/ЧТЕНИЯ МАССИВА ; ------------------------------- ; ** ВХОДЫ ДРАЙВЕРА ТЛГ-КАНАЛА ** ; ------------------------------- WIDTLG: .WORD MIDTLG ;- ВХОД ИНИЦИАЛИЗАЦИИ DTLG WPDBYT: .WORD MPDBYT ;- ВХОД ПЕРЕДАЧИ БАЙТА WPRBYT: .WORD MPRBYT ;- ВХОД ПРИЕМА БАЙТА WPDMAS: .WORD MPDMAS ;- ВХОД ПЕРЕДАЧИ МАССИВА WPRMAS: .WORD MPRMAS ;- ВХОД ПРИЕМА МАССИВА ; -------------------------- ; ** РЕЗЕРВНЫЕ ВХОДЫ DMBK ** ; -------------------------- RWDM1: .WORD 160000 RWDM2: .WORD 160004 RWDM3: .WORD 160010 RWDM4: .WORD 160014 RWDM5: .WORD 160020 RWDM6: .WORD 160024 RWDM7: .WORD 160030 RWDM8: .WORD 160034 RWDM9: .WORD 160040 RWDM10: .WORD 160044 RWDM11: .WORD 160050 RWDM12: .WORD 160054 RWDM13: .WORD 160060 RWDM14: .WORD 160064 RWDM15: .WORD 160070 RWDM16: .WORD 160074 ; ============================== ; ***** ДИСПЕТЧЕР Е М Т ***** ; ============================== DEMT: MOV R5,-(SP) MOV 2(SP),R5 ; АДРЕС МОДУЛЯ MOV -(R5),R5 BIC #177400,R5 MOV DMBK(R5),R5 JSR PC,(R5) ; ОБРАЩЕНИЕ К МОДУЛЮ MOV (SP)+,R5 RTI ; ===================================== ; ***** МОДУЛЬ ИНИЦИАЛИЗАЦИИ DMBK ***** ; ===================================== MIDMBK: CLR R1 ; УСТАНОВКА ВЕКТОРОВ MOV #20,R2 1$: MOV #100000,(R1)+ SOB R2,1$ MOV #MNZAW,@#AWPZAW MOV #DEMT,@#AWPEMT MOV #200,@#AWPEMT+2 MOV #120,R2 ; СБРОС ПРИЗНАКОВ 2$: CLR (R1)+ SOB R2,2$ EMT INDKLW ;- ИНИЦИАЛИЗАЦИЯ DKLAW INC DSIMB ;- ИНИЦИАЛИЗАЦИЯ DTVM INCB NMPGT COM MASCW COM MCWSS JSR PC,PPRP1 MOV #KDBIT0,DLBIT0 ;- ИНИЦИАЛИЗАЦИЯ DMAG MOV #KDBIT1,DLBIT1 CLR R0 EMT INDTLG ;- ИНИЦИАЛИЗАЦИЯ DTLG CLR @#APORT ;- СБРОС ПОРТА MOV #220,@#ASPORT ;- УСТАНОВКА СИСТЕМНОГО ПОРТА MTPS R0 ;- РАЗРЕШЕНИЕ ПРЕРЫВАНИЙ RTS PC ; ====================================== ; ***** М О Н И Т О Р D M B K ***** ; ====================================== MNDMBK: MOV #1000,SP ;- УСТАНОВКА СТЕКА JSR PC,MIDMBK JSR PC,@#120000 ;- ЗАПУСК ФОКАЛА JSR PC,MIDMBK ;- ВЫХОД ИЗ ФОКАЛА MNKOM: JSR R5,PPCT ;- "МОНИТОР БК-0010" .WORD TMON MNKOM1: JSR R5,PPCT ;- ">" .WORD TPRIGL MOV SP,R1 ; ПРИЕМ КОМАНДЫ SUB #100,R1 MOV R1,R5 2$: EMT CTKOD CMPB R0,#30 ;- АНС BNE 1$ CMP R5,R1 BEQ 2$ 3$: CLR (R5)+ 4$: EMT FSIM BR 2$ 1$: MOV R0,-(R5) ;- ЗАПИСЬ КОДА В БУФЕР TSTB R5 BEQ 3$ CMPB R0,#12 ;- "ПС" BNE 4$ EMT FSIM MOV -(R1),R4 ; ЧТЕНИЕ КОМАНДЫ CLR R5 ;- ЧИСЛО MOV R4,R3 7$: CMP R3,R0 ;- "ПС" BEQ 5$ CMP R3,#67 ;- ЦИФРА BHI 6$ SUB #60,R3 BMI 6$ ASL R5 ASL R5 ASL R5 ADD R3,R5 6$: MOV -(R1),R3 ;- ЧТЕНИЕ СЛЕД.СИМВ. BR 7$ 5$: BIC #240,R4 ; АНАЛИЗ КОМАНДЫ CMPB R4,#124 ;- "T" BHI 10$ SUB #114,R4 ;- "L" BMI 11$ ASL R4 MOV MNKOMT(R4),R1 ; ПЕРЕДАЧА УПРАВЛЕНИЯ JSR PC,(R1) BR MNKOM1 11$: ADD #13,R4 ;- A : K BPL MNDMBK BR MNKOM1 10$: JSR PC,@#160110 ;- > T BR MNKOM1 MNKOMT: .WORD PCTTLG ;- "L" .WORD PCTMAG ;- "M" .WORD 160110 ;- "N" .WORD 160110 ;- "O" .WORD 140000 ;- "P" .WORD 160110 ;- "Q" .WORD 160104 ;- "R" .WORD PSTART ;- "S" .WORD 160100 ;- "T" ; ----------------------------------- ; ** 0. ОБРАБОТКА ЗАВИСАНИЯ И СТОП ** ; ----------------------------------- MNZAW: MOV #1000,SP MOV #220,@#ASPORT EMT INDKLW BR MNKOM ; ----------------------------- ; ** 1. ЧТЕНИЕ ФАЙЛА С ЛИНИИ ** ; ----------------------------- PCTTLG: EMT PRBYT ; УСТАНОВКА СВЯЗИ EMT PDBYT MOV #BUFSTA,R1 ; ПРИЕМ АДРЕСА И ДЛИНЫ MOV #4,R2 EMT PRMAS TST R5 BEQ 1$ MOV R5,BUFSTA 1$: MOV BUFSTA,R1 ; ПРИЕМ МАССИВА MOV BUFDL,R2 EMT PRMAS JSR R5,PPCT ;- ПЕЧАТЬ СООБЩЕНИЯ .WORD TFZ RTS PC ; ----------------------------------- ; ** 2. ЧТЕНИЕ ФАЙЛА С МАГНИТОФОНА ** ; ----------------------------------- PCTMAG: MOV #BPDMAG,R1 ; ЗАГРУЗКА BPDMAG MOV #3,(R1)+ ;- КОМАНДА MOV R5,(R1)+ ;- АДРЕС CLR (R1)+ ;- ДЛИНА JSR R5,PPCT ;- "ИМЯ ФАЙЛА?" .WORD TIMF MOV #5020,R2 EMT CTSTR DEC R1 2$: MOVB #40,(R1)+ DEC R2 BPL 2$ 1$: MOV #BPDMAG,R1 ; ЧТЕНИЕ ФАЙЛА EMT DMAG MOVB 1(R1),R0 ; АНАЛИЗ ОТВЕТА BEQ 4$ DEC R0 BNE 3$ JSR PC,5$ ;- ПЕЧАТЬ ИМ. ТЕК. ФАЙЛА MOV #12,R0 EMT FSIM BR 1$ 3$: JSR R5,PPCT ;- "*ОШИБКА*" .WORD TOH BR KCTMAG 4$: JSR R5,PPCT ;- "ЗАГРУЖЕН ФАЙЛ " .WORD TZF 5$: ADD #32,R1 MOV #20,R2 EMT FSTR KCTMAG: RTS PC ; -------------- ; ** 3. СТАРТ ** ; -------------- PSTART: TST R5 BNE 1$ MOV BUFSTA,R5 ;- СТАРТОВЫЙ АДРЕС 1$: JSR PC,(R5) RTS PC ; ---------------------- ; ** 4. ПЕЧАТЬ ТЕКСТА ** ; ---------------------- PPCT: MOV (R5)+,R3 BR 1$ 2$: EMT FSIM 1$: MOVB (R3)+,R0 BNE 2$ RTS R5 ; ===================== ; *** ДАННЫЕ MNDMBK *** ; ===================== TMON: .BYTE 12,355,357,356,351,364,357,362,40 ; МОНИТОР БК-0010 .BYTE 342,353,55,60,60,61,60,0 TPRIGL: .BYTE 12,12,76,40,0 ; > TIMF: .BYTE 351,315,321,40,306,301,312,314,301,77,40,0; ИМЯ ФАЙЛА? TZF: .BYTE 12,372,301,307,322,325,326,305,316,40 ; ЗАГРУЖЕН ФАЙЛ .BYTE 306,301,312,314,40,0 TFZ: .BYTE 12,346,301,312,314,40 ; ФАЙЛ ЗАГРУЖЕН .BYTE 332,301,307,322,325,326,305,316,0 TOH: .BYTE 12,52,357,373,351,342,353,341,52,0 ; *ОШИБКА* .EVEN -------------------- Живы будем - Не помрем !
|
Текстовая версия | Сейчас: 27.9.2024, 11:01 |