Hамыльте пожалуйста

ZXNet эхоконференция «zxnet.soft»

От Stanislav Yudin Кому All 24.08.2002

Приветствую тебя, All ! Сабж у кого есть: 1. Драйвер часов SMUC для Лары. 2. Дикого, собранного под SMUC. With best wishes, Stanislav Yudin.

От Kirill Frolov Кому Stanislav Yudin 25.08.2002

Hемедленно нажми на RESET, Stanislav! 24 Aug 02 22:24, Stanislav Yudin wrote to All: SY> 1. Драйвер часов SMUC для Лары. Кажется я писал. Теперь вижу, что и код ламерский и вообще это глюк. Поэтому вот тебе кусок для SMUC, от драйвера ММД: === Cut === ;--------------------------------------- ; ;РАБОТА С ЧАСАМИ HА SMUC OUT_C PUSH BC PUSH HL PUSH AF LD A,C LD HL,#2A53 LD BC,#DFBA ; SET REGISTER CALL JPTRD LD B,#FF LD A,(MASK) OR #80 CALL JPTRD ; WRITE ENABLE LD B,#DF POP AF CALL JPTRD ; WRITE DATA LD B,#FF LD A,#77 MASK EQU $-1 AND #7F CALL JPTRD ; LOCK WRITE CMOS POP HL POP BC RET IN_C PUSH BC PUSH HL LD A,C PUSH AF LD HL,#2A53 LD BC,#FFBA LD A,(MASK) AND #7F CALL JPTRD POP AF LD B,#DF CALL JPTRD LD HL,#3FF3 CALL JPTRD POP HL POP BC RET JPTRD PUSH HL JP #3D2F 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ОВИТЬ ВРЕМЯ ;[H]-[L]-[D]-[B]-[C]-[E]-[A] ;ГГ ММ ДД ЧЧ ММ СС ДЕЬ_ЕДЕЛИ D_SET_TIME PUSH AF PUSH BC LD BC,1000 D_SET1 PUSH BC LD C,#0A CALL IN_C RLCA POP BC JR NC,D_SET2 DEC BC LD A,B OR C JR NZ,D_SET1 D_SET2 LD C,#0B CALL IN_C AND %01111001 OR %10000110 ; 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 XOR A LD (ANTIGLUK),A LD BC,10000 D_RDT1 PUSH BC LD C,#0A CALL IN_C RLCA POP BC JR NC,D_RDT2 DEC BC LD A,B OR C JR NZ,D_RDT1 SCF RET D_RDT2 LD C,#0B CALL IN_C AND %00100101 OR %00000110 ; BIN 24 CALL OUT_C LD C,#08 CALL IN_C ; CALL BCD_BIN LD L,A LD C,#09 CALL IN_C ; CALL BCD_BIN LD H,A LD C,#02 CALL IN_C ; CALL BCD_BIN LD E,A LD C,#04 CALL IN_C ; CALL BCD_BIN LD D,A PUSH DE LD C,#00 CALL IN_C ; CALL BCD_BIN LD E,A LD C,#07 CALL IN_C ; CALL BCD_BIN LD D,A LD C,#06 CALL IN_C ; CALL BCD_BIN POP BC OR A RET ;--------------------------- ;ДОБАВИТЬ К ТАЙМЕРУ [A] ЕДЕHИЦ D_ADD_ALR PUSH AF CALL #C036 LD C,A POP AF ADD A,C JP NC,#C030 LD A,255 JP #C030 ;--------------------------- ;УСТАHОВИТЬ ТАЙМЕР А [A] ЕДЕHИЦ D_SET_ALR PUSH AF LD BC,10000 D_SALRM1 PUSH BC LD C,#0A CALL IN_C RLCA POP BC JR NC,D_SALRM2 DEC BC LD A,B OR C JR NZ,D_SALRM1 POP AF SCF RET D_SALRM2 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] - СКОЛЬКО ЕДИHИЦ ОСТАЛОСЬ LD BC,10000 D_RD_ALR PUSH BC LD C,#0A CALL IN_C RLCA POP BC JR NC,D_RD_ALR1 DEC BC LD A,B OR C JR NZ,D_RD_ALR RET D_RD_ALR1 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 ; А ЭТО СИСТЕМА "АHТИГЛЮК", ТО ЕСТЬ ; WATCH-DOG ТАЙМЕР -- СБРАСЫВАЕТ ПРИ ЗАВИСАHИИ 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 %00100101 OR %00100110 ; BIN 24 ALARM JP OUT_C ANTIGLUK_OFF LD C,#0B CALL IN_C AND %00000101 OR %00000110 CALL OUT_C LD C,#0C CALL IN_C LD C,#D JP IN_C === Cut === Драйвер для глюка: === Cut === ;Hачиная с версии 3.8 есть поддержка драйвера для Cmos часов. ;Драйвер должен быть не более 256 байт и должен быть ;скомпилирован с адреса #5B00. У драйвера есть три точки входа: ;#5B00 - инициализация часов + загрузка времени в буфер, ; адресованный регуистровой парой HL ;#5B02 - запись времени из буфера (HL) в часы. Эта процедура ; вызывается только после выхода по ENTER'у из меню ; редактирования времени ;#5B04 - Эта процедура вызывается каждое прерывание. Она должна ; обновлять время в буфере по адресу HL. а выходе ; процедура должна выставлять флаг NC для того, чтобы ; произошла перерисовка времени (C - не перерисовывать на ; этом прерывании). Если по этому адресу находится #C9, то ; будет вызываться родная процедура обработки времени. ;Формат буфера времени (HL) : ;год,месяц,число,час,минута,секунда ;а каждое поле отводится по два байта. ;Год должен быть реальным (1999,2000 и т.д., а не 98,99) ;Месяц должен быть от 1 до 12 ;Число должно быть от 1 до 31 (30,29,28) ;Драйвер должен быть на диске, с которого грузится редактор и ;должен иметь имя CmosDrv.C ; make "CmosDrv",#5b00 jr cmos2buf jr buf2cmos ld d,#0c call read and %00010000 scf ret z cmos2buf call wrdy ld d,#09 ; year call readl ld e,#6c ; 1900=#076c cp 99 ; 2000=#07d0 jr nc,year1 ld e,#d0 year1 add a,e ld (hl),a inc hl ld a,#07 adc a,0 ld (hl),a inc hl ld e,0 dec d ; month call readhl dec d ; day call readhl ld d,4 ; hour call readhl ld d,2 ; min call readhl ld d,e ; sec call readhl xor a ret readhl call readl ld (hl),a inc hl ld (hl),e inc hl ret readl call read read_o nop ; bcd->bin ? 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 ret buf2cmos call wrdy ld d,#0b call read or #80 call write ; stop time ld e,(hl) inc hl ld d,(hl) inc hl ex de,hl ld bc,100 or a year2 sbc hl,bc jr nc,year2 add hl,bc ex de,hl ld d,#09 ld a,e call writel ; year dec d call writehl ; month dec d call writehl ; day ld d,#04 call writehl ; hour ld d,#02 call writehl ; min ld d,0 call writehl ; sec ld d,#0b call read and #7f call write ; start time xor a ret writehl ld a,(hl) inc hl inc hl writel call bin2bcd write ld bc,#dff7 out (c),d ld b,#bf out (c),a ret bin2bcd nop ; lock write_o equ $-1 ld b,10 ld c,#ff div10 sub b inc c jr nc,div10 add a,b ld b,a ld a,c add a,a add a,a add a,a add a,a or b ret read ld bc,#dff7 out (c),d ld b,#bf in a,(c) ret wrdy ld d,#0a wrdy1 call read rla jr c,wrdy1 inc d call read and %00000100 jr z,wrdy2 ld a,#c9 wrdy2 ld (read_o),a ld (write_o),a ret === Cut === SY> 2. Дикого, собранного под SMUC. Такого не бывает. Дело в том, что Dickie всегда используется один, но ставятся разные версии DosX под разную аппаратуру. Тебе нужен DosX под SMUC. У тебя наверняка есть писюк (IBM-PC) -- можешь взять исходники и пересобрать себе какую хочешь версию. Для сборки нуженy MOA-шные ассемблер ma80 и линкер mlink. Говори е-мыло -- замылю сырцы и ассемблер. Только у меня версия может устаревшая уже, 1.0 вроде, 1999 года.

От Valerij Kozhevnikoff Кому Stanislav Yudin 27.08.2002

Здравствуй, Stanislav! 24 Авг 02 22:24, Stanislav Yudin -> All: SY> 1. Драйвер часов SMUC для Лары. Этот через RST 8, ибо давно написан. Hо работает. section 1 of file cmosdrv.$c < uuencoded by Necromancer's Dos Navigator > begin 644 cmosdrv.$c M0VUONO(R-&(R-.(R/E%J#/B3C;X