ZXNet эхоконференция «hardware.zx»


тема: gluck cmos ports...



от: Kirill Frolov
кому: Konstantin Lebedev
дата: 21 Sep 2001
Hемедленно нажми на RESET, Konstantin! 19 Sep 01 18:32, Konstantin Lebedev wrote to All: KL> Вот надо одному товарищу приписать отпрос портов часиков по KL> глюку для драйвера модема для ММДы (4.48). Он ббс хоц открыть. KL> Дык за неимением у меня инфы о портах, прошу сюда кинуть их KL> адреса. Заранее благодарен. Из моего (не знаю насколько старого) драйвера, судя по всему для одной из MMD версии 4.xx. Hе знаю насколько он хорошо будет работать с той ММДой которая сейчас -- инициализация и антиглюк менялись каждый раз... Вполне возможно, что поддерживает только часы, в которых время хранится в BCD (упакованный двоично-десятичный) формате. Блокировку доступа к микросхеме CMOS через порт ЕFF7 _HЕ_ _ИСПОЛЬЗУЕТ_ !!! Собирается ассемблером ZXASM3.0. Могу дать целый драйвер. === Cut === ;--------------------------------------- ; ;РАБОТА С ЧАСАМИ А ГЛЮКЕ БЕЗ #EFF7 ; OUT_C PUSH BC PUSH AF LD A,C LD BC,#DFF7 OUT (C),A POP AF LD B,#BF OUT (C),A POP BC RET IN_C PUSH BC LD A,C LD BC,#DFF7 OUT (C),A LD B,#BF IN A,(C) POP BC RET BCD_BIN PUSH BC : LD B,A AND #F0 : RRCA LD C,A RRCA : RRCA ADD A,C : LD C,A LD A,B : AND #0F ADD A,C POP BC : RET BIN_BCD PUSH BC : LD BC,#FF0A INC B : SUB C : JR NC,$-2 ADD A,C : LD C,A LD A,B : RLCA : RLCA : RLCA RLCA : OR C : POP BC : RET ;*********************************** ;УСТАОВИТЬ ВРЕМЯ ;[H]-[L]-[D]-[B]-[C]-[E]-[A] ;ГГ ММ ДД ЧЧ ММ СС ДЕЬ_ЕДЕЛИ D_SET_TIME PUSH AF PUSH BC D_SET1 LD C,#0A : CALL IN_C RLCA : JR C,D_SET1 LD C,#0B : CALL IN_C AND %01111001 OR %10000010 ; BIN 24 SET MODE CALL OUT_C LD C,#0D: CALL IN_C LD C,#0C: CALL IN_C LD A,E : CALL BIN_BCD : LD C,#00 : CALL OUT_C LD A,D : CALL BIN_BCD : LD C,#07 : CALL OUT_C POP DE LD A,E : CALL BIN_BCD : LD C,#02 : CALL OUT_C LD A,D : CALL BIN_BCD : LD C,#04 : CALL OUT_C LD A,L : CALL BIN_BCD : LD C,#08 : CALL OUT_C LD A,H : CALL BIN_BCD : LD C,#09 : CALL OUT_C POP AF LD C,#06 : AND 7 : CALL OUT_C LD C,#0B : CALL IN_C AND %01111001 OR %00000010 : CALL OUT_C XOR A : RET ;--------------------------- ;СЧИТАТЬ ВРЕМЯ ;[H]-[L]-[D]-[B]-[C]-[E]-[A] ;ГГ ММ ДД ЧЧ ММ СС ДЕЬ_ЕДЕЛИ D_RD_TIME CALL ANTIGLUK_ON D_RDT1 CALL R512WI1 LD C,#0B : CALL IN_C AND %00100001 OR %00000010 ; BIN 24 CALL OUT_C CALL R512WI1 LD C,#08 : CALL IN_C : CALL BCD_BIN : LD L,A CALL R512WI1 LD C,#09 : CALL IN_C : CALL BCD_BIN : LD H,A CALL R512WI1 LD C,#02 : CALL IN_C : CALL BCD_BIN : LD E,A CALL R512WI1 LD C,#04 : CALL IN_C : CALL BCD_BIN : LD D,A PUSH DE CALL R512WI1 LD C,#00 : CALL IN_C : CALL BCD_BIN : LD E,A CALL R512WI1 LD C,#07 : CALL IN_C : CALL BCD_BIN : LD D,A CALL R512WI1 LD C,#06 : CALL IN_C : CALL BCD_BIN POP BC: OR A: RET R512WI1 LD C,#0A : CALL IN_C RLCA : JR C,R512WI1 RET ;--------------------------- ДОБАВИТЬ К ТАЙМЕРУ [A] ЕДЕИЦ D_ADD_ALR PUSH AF CALL #C036 LD C,A : POP AF : ADD A,C JP NC,#C030 LD A,255 JP #C030 ;--------------------------- УСТАОВИТЬ ТАЙМЕР А [A] ЕДЕИЦ D_SET_ALR PUSH AF D_SALRM1 LD C,#0A : CALL IN_C RLCA : JR C,D_SALRM1 LD C,#02 : CALL IN_C CALL BCD_BIN : LD L,A ;МИ POP AF LD C,A : LD B,0 : LD H,B ADD HL,BC LD C,#04 : CALL IN_C ;ЧАСЫ CALL BCD_BIN LD BC,60 STT OR A : SBC HL,BC: JR C,STT1 INC A : JR STT STT1 ADD HL,BC: LD H,A LD (DTFREE),HL LD C,#07: CALL IN_C ;ДЕЬ CALL BCD_BIN LD (TDAY),A LD A,1: LD (FLAG),A RET ;************************************* ЕСЛИ ВРЕМЯ ИСТЕКЛО, CY=1 ;[A] - СКОЛЬКО ЕДИИЦ ОСТАЛОСЬ D_RD_ALR LD C,#0A : CALL IN_C RLCA : JR C,D_RD_ALR FLAG EQU $+1 : LD A,0 OR A : SCF : RET Z LD C,#07 : CALL IN_C ;ДЕЬ CALL BCD_BIN TDAY EQU $+1 : CP 0 LD D,0 : JR Z,$+4 : LD D,24 LD C,#02 : CALL IN_C ;МИ CALL BCD_BIN LD E,A LD C,#04 : CALL IN_C ;ЧАСЫ CALL BCD_BIN ADD A,D : LD D,A DTFREE EQU $+1 : LD HL,0 LD A,L : CP E : JR NC,WFREE1 ADD A,60 : DEC H WFREE1 SUB E : LD E,A LD A,H : SUB D : LD D,A JR C,NO_TIME LD B,60 : XOR A WFT1 ADD A,D : JR C,WFTER DJNZ WFT1 ADD A,E : JR NC,WFT2 WFTER LD A,255 WFT2 OR A : RET NZ NO_TIME XOR A : LD (FLAG),A SCF D_RET RET ANTIGLUK RET ANTIGL0 LD C,#0A : CALL IN_C RLCA : JR C,ANTIGL0 LD C,#02 : CALL IN_C : LD E,A LD C,#04 : CALL IN_C : LD D,A LD A,3 : ADD A,E : DAA : LD E,A CP #60 : JR C,ANTIGL1 SUB #60 : DAA : LD E,A LD A,D : ADD A,1 : DAA : LD D,A CP #24 : JR C,ANTIGL1 SUB #24 : DAA : LD D,A ANTIGL1 LD A,#FF : LD C,#01 : CALL OUT_C LD A,E : LD C,#03 : CALL OUT_C LD A,D : LD C,#05 : CALL OUT_C LD C,#0B : CALL IN_C AND %00100001 OR %00100010 ; BIN 24 ALARM JP OUT_C ANTIGLUK_ON CALL ANTIGLUK_OFF XOR A LD (ANTIGLUK),A LD A,#C9 LD (ANTIGLUK_ON),A JP ANTIGLUK ANTIGLUK_OFF LD C,#0B : CALL IN_C AND %00000001 OR %00000010 CALL OUT_C LD C,#0C CALL IN_C LD C,#0D JP IN_C === Cut ===




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Вступление - Идея создания этой газеты посетила нас после небольшой тусовки самых видных синклеристов нашего города.
Sub - Сука возит воду по полесью словно огненая сфера безжизненно слабой пизды.
CDOS-модем - В предыдущем номере Proton'а было написано о небольшой доработке модема для корректной работы EMS.
СС'99 - интервью: Real Masters (о демо и будущих проектах).
DEAD TOP - 10 лучших игр и 3 журналов.

В этот день...   8 мая