PC-3000 Power Control

Oct 10, 2008 11:35

Закрывая тему TASM, приведу прогу для управления питанием в PC-3000
Был такой программно-аппаратный комплекс для ремонта винтов.. оочень старый.
Делают вот эти ребата ACE Laboratory Точнее, делали.. сейчас уже более новые версии в продаже.
А тогда ещё был под ISA.. Тогда я и познакомился с Эдуардом, и даже пытался копать винты ;)
Кстати, я очень рекомендую его как специалиста..
Если вам нужно отремонтировать винт или поднять инфу, то во всей Уфе не найти лучше!
Я кое-что писал для ремонта и исследования. И это первая прога.
Чтобы по горячим клавишам включать-выключать питание ремонтируемого винта.
Работает только со старой никому не нужной платой.. потому и привожу :)

Это резидент, если кто не понял..
Сначала запускаем прогу, она повисает в памяти и отрабатывает нажатия клавиш.
Если ловит свои клавиши, то подаёт команды на плату - включить/выключить.
Если теперь запустить её же с ключом "-", то действие прекратится,
Память освободится.. и комп вернётся в исходное состояние.



;Coding by Sergaev Andrey aka SAVC 11.11.2002
;
cseg segment
assume cs:cseg,ds:cseg,es:cseg,ss:cseg

org 100h

free_sp equ (offset begin - offset start + 15)/16+16

start:
jmp begin

db 'Power Control For PC-3000 by SAVC',24h
ofs_l dw 0
seg_l dw 0

;Собственно обработчик
int9:
push ax
push dx
pushf
db 2eh,0ffh,1eh ; call far cs:[ofs_l]
dw offset ofs_l
mov ah,1
int 16h
jz int91
or al,al
jnz int91
mov dx,010ah
cmp ah,66h ;Ctrl-F9
jnz int92
mov al,2
out dx,al
xor ah,ah
int 16h
jmp short int91
int92: cmp ah,67h ;Ctrl-F10
jnz int91
mov al,0
out dx,al
xor ah,ah
int 16h
int91: pop dx
pop ax
iret

begin:
cld
xor bx,bx
mov es,bx
mov ax,es:[26h]
mov es,ax
mov di,100h
mov si,di
mov cx,offset ofs_l-100h
repz cmpsb
jnz begin1
mov si,80h
mov ah,[si]
inc si
begin2: or ah,ah
jz begin3
lodsb
cmp al,'-'
jnz begin2
begin4: cli
mov ds,bx
mov ax,es:[di]
mov ds:[24h],ax
mov ax,es:[di+2]
mov ds:[26h],ax
sti
mov ah,49h
int 21h
mov ax,cs
mov ds,ax
mov ah,9
mov dx,offset mes2
int 21h
begin3: mov ax,4c00h
int 21h
begin1: cli
mov es,bx
mov ax,offset int9
xchg es:[24h],ax
mov ofs_l,ax
mov ax,cs
xchg es:[26h],ax
mov seg_l,ax
sti
mov dx,offset mes1
mov ah,9
int 21h
mov dx,free_sp
mov ah,31h
int 21h

mes1 db 10,13,9,'Press Ctrl-F9 for Power On.',10,13,9
db 'Press Ctrl-F10 for Power Off.',10,13,9
db 'Use',9,'power.com -',9,' for uninstall.',10,13,24h
mes2 db 10,13,9,'Programm uninstalled.',10,13,24h

cseg ends
end start

Утиль для DOS
Код для Intel 8086
Компилятор TASM
Архив всего здесь

прога, asm, x86, dos

Previous post Next post
Up