Please soap me

ZXNet echo conference «zxnet.soft»

From Stanislav Yudin To All 24 August 2002

Greetings, All! Who has the subject: 1. SMUC clock driver for Lara. 2. Wild, collected under SMUC. With best wishes, Stanislav Yudin.

From Kirill Frolov To Stanislav Yudin 25 August 2002

Press RESET immediately, Stanislav! 24 Aug 02 22:24, Stanislav Yudin wrote to All: SY> 1. SMUC clock driver for Lara. I think I wrote. Now I see that the code is lame and in general it’s a glitch. Therefore, here is a piece for SMUC, from the MMD driver: === Cut === ;--------------------------------------- ; ;WORKING WITH THE CLOCK AT 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 B.C. 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 B.C. 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 B.C. RET BIN_BCD PUSH BC LD BC,#FF0A INC B SUB CJR 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 BCLD 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,0LD 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'у из меню; time editing ;#5B04 - This procedure is called every interrupt. She should ; update time in buffer at HL address. and exit ; the procedure must set the NC flag in order to ; time redraw occurred (C - do not redraw for ; this interrupt). If #C9 is located at this address, then ; The native time processing procedure will be called. ;Time buffer format (HL): ;year, month, date, hour, minute, second ;and each field is allocated two bytes. ;The year must be real (1999,2000, etc., not 98.99) ;Month must be from 1 to 12 ;The number must be from 1 to 31 (30,29,28) ;The driver must be on the disk from which the editor is loaded and ;must have the name 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 ldd,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. Wild, collected under SMUC. This doesn't happen. The thing is, Dickie is always used alone, but different versions of DosX are installed for different equipment. You need DosX under SMUC. You probably have a computer (IBM-PC) - you can take the source code and rebuild yourself whichever version you want. For assembly you need MOA-shoes ma80 assembler and mlink linker. Say e-soap - I’ll wash out the raw materials and assembler. Only my version may be outdated, 1.0, like, 1999.

From Valerij Kozhevnikoff To Stanislav Yudin 27 August 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