feat: compression au format RIP du logo BMP. Ajout d'un logiciel de vérification de la disquette.
This commit is contained in:
parent
f3db02caa1
commit
4c3f72e0ce
9
disk.asm
9
disk.asm
|
@ -44,6 +44,13 @@ Adres:
|
|||
mov di,offset infos
|
||||
mov ah,34
|
||||
int 47h
|
||||
mov al,[di+7]
|
||||
cmp al,oldmode
|
||||
je noinit
|
||||
mov ah,2
|
||||
int 47h
|
||||
mov oldmode,al
|
||||
noinit:
|
||||
dec infos
|
||||
mov bx,0
|
||||
mov ah,25
|
||||
|
@ -422,7 +429,7 @@ TryAgain2:
|
|||
Done2:
|
||||
pop si dx cx ax
|
||||
ret
|
||||
|
||||
oldmode db 0
|
||||
DiskSectorsPerTrack dw 18
|
||||
DiskTracksPerHead dw 80
|
||||
DiskHeads dw 2
|
||||
|
|
|
@ -22,6 +22,13 @@ Adres:
|
|||
mov ah,34
|
||||
int 47h
|
||||
dec infos
|
||||
mov al,[di+7]
|
||||
cmp al,oldmode
|
||||
je noinit
|
||||
mov ah,2
|
||||
int 47h
|
||||
mov oldmode,al
|
||||
noinit:
|
||||
mov bx,0
|
||||
mov ah,25
|
||||
int 47h
|
||||
|
@ -437,7 +444,7 @@ ret
|
|||
DiskSectorsPerTrack dw 18
|
||||
DiskTracksPerHead dw 80
|
||||
DiskHeads dw 2
|
||||
|
||||
oldmode db 0
|
||||
infos db 10 dup (0)
|
||||
end start
|
||||
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
.model tiny
|
||||
.486
|
||||
smart
|
||||
.code
|
||||
org 0100h
|
||||
|
||||
start:
|
||||
mov al,0D0h
|
||||
call keybcmd
|
||||
in al,60h
|
||||
ret
|
||||
|
||||
|
||||
;============= PPI port A (Programmable Peripheral interface) ================
|
||||
;8048 (old XT) 8042 (old AT) 8741 8742 (with PS2 mouse)
|
||||
; R/W
|
||||
;Port 60h : Scancode & keyboarddata
|
||||
overrun equ 000h ;Error too many keys pressed
|
||||
BATend equ 0AAh ;End of the test BAT (basic test assurance)
|
||||
MF2code equ 0ABh ;Code send by MF2 keyboard
|
||||
MF2code2 equ 041h ;Code send by MF2 keyboard
|
||||
echo equ 0EEh ;Send by echo command
|
||||
Ack equ 0FAh ;Send by every comman exept EEh et FEh (Aknoledge)
|
||||
BATerror equ 0FCh ;BAT failed
|
||||
Resend equ 0FEh ;Resend data please
|
||||
Error equ 0FFh ;Error of keyboard
|
||||
|
||||
;Port 60h : command data
|
||||
led equ 0EDh ;set the led like you want
|
||||
echo equ 0EEh ;Echo byte for diagnostic
|
||||
Set equ 0F0h ;Choose the Set of scancode
|
||||
Id equ 0F2h ;Identify the keyboard
|
||||
rate equ 0F3h ;Set the specified typematic rate
|
||||
enable equ 0F4h ;clear buffer and scan
|
||||
reset equ 0F5h ;Reset and no scan
|
||||
reset2 equ 0F6h ;Reset and scan
|
||||
|
||||
;============= PPI port A (Programmable Peripheral interface) ================
|
||||
;8048 (old XT) 8042 (old AT) 8741 8742 (with PS2 mouse)
|
||||
; R/W
|
||||
;Port 61h
|
||||
|
||||
;==================== Data and control keyboard registers ===================
|
||||
;8042 (old AT) 8741 8742 (with PS2 mouse)
|
||||
; R/W
|
||||
;Port 64h
|
||||
|
||||
|
||||
|
||||
;Envoie la commande AL aux clavier et si besoin est la donn‚e DL
|
||||
Keybcmd:
|
||||
push ax
|
||||
xchg al,ah
|
||||
xor cx,cx
|
||||
clearbuffer:
|
||||
in al,64h
|
||||
test al,02h
|
||||
loopnz clearbuffer
|
||||
jnz errorkb
|
||||
xchg al,ah
|
||||
out 64h,al
|
||||
clearbuffer2:
|
||||
in al,64h
|
||||
test al,02h
|
||||
loopnz clearbuffer2
|
||||
jnz errorkb
|
||||
cmp dl,0
|
||||
je endkeyb
|
||||
mov al,dl
|
||||
out 60h,al
|
||||
endkeyb:
|
||||
clc
|
||||
pop ax
|
||||
ret
|
||||
errorkb:
|
||||
stc
|
||||
pop ax
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
end start
|
61
logo.asm
61
logo.asm
|
@ -7,24 +7,31 @@ org 0100h
|
|||
start:
|
||||
mov si,offset logo
|
||||
call searchfile
|
||||
mov bx,7000h
|
||||
mov bx,6000h
|
||||
mov es,bx
|
||||
mov bx,0h
|
||||
call loadfatway
|
||||
push es
|
||||
pop ds
|
||||
mov bx,5000h
|
||||
mov es,bx
|
||||
xor si,si
|
||||
xor di,di
|
||||
xor bx,bx
|
||||
call DecompressRle
|
||||
push es
|
||||
pop ds
|
||||
call loadbmp
|
||||
xor ax,ax
|
||||
xor bx,bx
|
||||
call showbmp
|
||||
mov ax,0
|
||||
int 16h
|
||||
ret
|
||||
db 0CBH
|
||||
|
||||
loadbmp:
|
||||
push ax bx cx dx bp ds
|
||||
mov ax,4
|
||||
mov ax,6
|
||||
int 47h
|
||||
mov ax,ds:[18]
|
||||
mov si,ax
|
||||
|
@ -309,11 +316,50 @@ Done:
|
|||
pop si dx cx ax
|
||||
ret
|
||||
|
||||
DecompressRle:
|
||||
push cx dx si di
|
||||
mov dx,cx
|
||||
mov bp,di
|
||||
decompression:
|
||||
mov eax,[si]
|
||||
cmp al,'/'
|
||||
jne nocomp
|
||||
cmp si,07FFFh-6
|
||||
jae thenen
|
||||
mov ecx,eax
|
||||
ror ecx,16
|
||||
cmp cl,'*'
|
||||
jne nocomp
|
||||
cmp byte ptr [si+4],'/'
|
||||
jne nocomp
|
||||
mov al,ch
|
||||
mov cl,ah
|
||||
xor ah,ah
|
||||
xor ch,ch
|
||||
rep stosb
|
||||
add si,5
|
||||
sub dx,5
|
||||
jnz decompression
|
||||
jmp thenen
|
||||
nocomp:
|
||||
mov es:[di],al
|
||||
inc si
|
||||
inc di
|
||||
dec dx
|
||||
jnz decompression
|
||||
thenen:
|
||||
mov ax,dx
|
||||
sub bp,di
|
||||
neg bp
|
||||
pop di si dx cx
|
||||
ret
|
||||
|
||||
|
||||
|
||||
dot db '.',0
|
||||
|
||||
loadfatway:
|
||||
push bx cx di
|
||||
push bx di
|
||||
call getfatway
|
||||
jc endload
|
||||
mov di,offset fatway
|
||||
|
@ -330,7 +376,8 @@ int 47h
|
|||
add bx,cs:sizec
|
||||
jmp loadagain
|
||||
endload:
|
||||
pop di cx bx
|
||||
mov cx,bx
|
||||
pop di bx
|
||||
ret
|
||||
|
||||
sizec dw 512
|
||||
|
@ -356,7 +403,7 @@ errorgetfat:
|
|||
pop dx bx ax es
|
||||
ret
|
||||
|
||||
logo db 'cos.bmp',0
|
||||
logo db 'cos.rip',0
|
||||
temp db 12+5+1 dup (0)
|
||||
|
||||
DiskSectorsPerTrack dw 18
|
||||
|
@ -365,5 +412,5 @@ DiskHeads dw 2
|
|||
|
||||
fatway equ $
|
||||
|
||||
buffer equ $+1000
|
||||
buffer equ $+5000
|
||||
end start
|
||||
|
|
|
@ -0,0 +1,108 @@
|
|||
net segment
|
||||
|
||||
org 0100h
|
||||
assume cs:net,ds:net
|
||||
|
||||
start:
|
||||
jmp deb
|
||||
taille dw 0
|
||||
signe db 'rip'
|
||||
signe2 db 64 dup (0)
|
||||
p1 db '@'
|
||||
p2 db '@'
|
||||
min db 4
|
||||
deb:
|
||||
mov BL,DS:[0080h]
|
||||
xor BH,BH
|
||||
or BX,BX
|
||||
mov byte ptr [0081h+BX],00h
|
||||
mov AX,3D02h
|
||||
mov DX,0082H
|
||||
int 21h
|
||||
mov bx,ax
|
||||
mov ah,3fh
|
||||
mov cx,0ffffh
|
||||
mov dx,offset data
|
||||
int 21h
|
||||
mov taille,ax
|
||||
mov ah,3eh
|
||||
int 21h
|
||||
mov si,82h
|
||||
mov di,offset signe2
|
||||
mov cx,64
|
||||
rep movsb
|
||||
mov di,offset signe2
|
||||
mov cx,64
|
||||
mov al,2eh
|
||||
repne scasb
|
||||
push di
|
||||
mov si,di
|
||||
mov di,offset data
|
||||
add di,taille
|
||||
mov cx,3
|
||||
rep movsb
|
||||
mov ax,di
|
||||
pop di
|
||||
mov cx,3
|
||||
mov si,offset signe
|
||||
rep movsb
|
||||
mov di,ax
|
||||
mov cx,taille
|
||||
mov si,offset data
|
||||
mov dx,1
|
||||
boucle:
|
||||
lodsb
|
||||
cmp al,[si]
|
||||
jne pas
|
||||
inc dl
|
||||
loop boucle
|
||||
jmp fin
|
||||
pas:
|
||||
cmp dl,min
|
||||
jb suite
|
||||
cmp dl,1
|
||||
jne go
|
||||
suite:
|
||||
mov bx,cx
|
||||
mov cx,dx
|
||||
rep stosb
|
||||
mov cx,bx
|
||||
mov dl,1
|
||||
loop boucle
|
||||
jmp fin
|
||||
go:
|
||||
mov ah,al
|
||||
mov al,p1
|
||||
stosb
|
||||
mov al,dl
|
||||
stosb
|
||||
mov al,ah
|
||||
stosb
|
||||
mov al,p2
|
||||
stosb
|
||||
mov dl,1
|
||||
loop boucle
|
||||
fin:
|
||||
mov ah,3ch
|
||||
mov cx,0
|
||||
mov dx,offset signe2
|
||||
int 21h
|
||||
mov bx,ax
|
||||
mov ah,40h
|
||||
mov cx,di
|
||||
sub cx,offset data
|
||||
sub cx,taille
|
||||
mov dx,offset data
|
||||
add dx,taille
|
||||
int 21h
|
||||
mov ah,3eh
|
||||
int 21h
|
||||
mov ah,41h
|
||||
mov dx,82h
|
||||
int 21h
|
||||
ret
|
||||
data db 0
|
||||
net ends
|
||||
end start
|
||||
|
||||
net
|
27
setup.asm
27
setup.asm
|
@ -32,6 +32,15 @@ dat2 db '..',0
|
|||
dta db 43 dup (0)
|
||||
|
||||
copycos:
|
||||
mov ah,4ah
|
||||
mov bx,1000h
|
||||
int 21h
|
||||
jc error
|
||||
mov ah,48h
|
||||
mov bx,65536/16
|
||||
int 21h
|
||||
jc error
|
||||
mov fs,ax
|
||||
mov ah,3Bh
|
||||
mov dx,offset dat
|
||||
int 21h
|
||||
|
@ -139,7 +148,7 @@ int 21h
|
|||
ret
|
||||
|
||||
addfile:
|
||||
push ax bx dx si di bp
|
||||
push ax bx dx si di bp ds es
|
||||
mov cx,1
|
||||
mov bx,offset fat
|
||||
call readsector
|
||||
|
@ -166,14 +175,20 @@ xor cx,cx
|
|||
xor dx,dx
|
||||
int 21h
|
||||
jc error2
|
||||
push fs
|
||||
pop ds
|
||||
push fs
|
||||
pop es
|
||||
mov ah,3fh
|
||||
mov cx,07FFFh
|
||||
mov dx,offset buffer
|
||||
mov cx,0FFFFh
|
||||
xor dx,dx
|
||||
int 21h
|
||||
push cs
|
||||
pop ds
|
||||
jc error2
|
||||
mov si,-2
|
||||
mov di,0
|
||||
mov bx,offset buffer
|
||||
xor bx,bx
|
||||
fats:
|
||||
add si,2
|
||||
cmp si,512
|
||||
|
@ -199,10 +214,12 @@ jnz fats
|
|||
mov word ptr [offset fat+di],0FFFFh
|
||||
mov bx,offset fat
|
||||
mov cx,1
|
||||
push cs
|
||||
pop es
|
||||
call writesector
|
||||
mov cx,entrie
|
||||
end1:
|
||||
pop bp di si dx bx ax
|
||||
pop es ds bp di si dx bx ax
|
||||
ret
|
||||
entrie dw 0
|
||||
error2:
|
||||
|
|
|
@ -17,6 +17,7 @@ call loadfatway
|
|||
mov di,bx
|
||||
mov bx,47h
|
||||
call setint
|
||||
ret
|
||||
mov bx,9
|
||||
call getint
|
||||
mov cs:int9seg,ds
|
||||
|
|
|
@ -0,0 +1,274 @@
|
|||
.model tiny
|
||||
.486
|
||||
smart
|
||||
.code
|
||||
|
||||
org 0100h
|
||||
|
||||
start:
|
||||
go:
|
||||
call calc
|
||||
jmp go
|
||||
ret
|
||||
|
||||
calc:
|
||||
pusha
|
||||
mov ah,2Ch
|
||||
int 21h
|
||||
mov bh,dh
|
||||
xor ebp,ebp
|
||||
wait2:
|
||||
xor bl,bl
|
||||
waits:
|
||||
mov dx,3dah
|
||||
in al,dx
|
||||
and al,1000b
|
||||
jz wait2
|
||||
cmp bl,1
|
||||
je waits
|
||||
inc ebp
|
||||
inc bl
|
||||
cmp ebp,300
|
||||
jne waits
|
||||
mov ah,2Ch
|
||||
int 21h
|
||||
sub dh,bh
|
||||
mov bl,dh
|
||||
xor bh,bh
|
||||
mov ax,bp
|
||||
shr ebp,16
|
||||
mov dx,bp
|
||||
div bx
|
||||
xor edx,edx
|
||||
mov dx,ax
|
||||
call showint
|
||||
popa
|
||||
ret
|
||||
|
||||
;===================================Afficher un int EDX a l'‚cran en ah,al================
|
||||
ShowInt:
|
||||
push eax bx cx edx esi di es ds
|
||||
mov di,0
|
||||
mov cx,0B800h
|
||||
mov es,cx
|
||||
xor cx,cx
|
||||
mov eax,edx
|
||||
mov esi,10
|
||||
mov bx,offset showbuffer+27
|
||||
decint3:
|
||||
xor edx,edx
|
||||
div esi
|
||||
add dl,'0'
|
||||
mov dh,cs:colors
|
||||
sub bx,2
|
||||
add cx,2
|
||||
mov cs:[bx],dx
|
||||
cmp ax,0
|
||||
jne decint3
|
||||
mov si,bx
|
||||
push cs
|
||||
pop ds
|
||||
cld
|
||||
rep movsb
|
||||
pop ds es di esi edx cx bx eax
|
||||
ret
|
||||
showbuffer db 35 dup (0FFh)
|
||||
|
||||
colors equ 1
|
||||
|
||||
|
||||
;40*25 16 couleurs
|
||||
mode0 DB 67H,00H, 03H,08H,03H,00H,02H
|
||||
DB 2DH,27H,28H,90H,2BH,0A0H,0BFH,01FH,00H,4FH,0DH,0EH,00H,00H,00H,00H
|
||||
DB 9CH,8EH,8FH,14H,1FH,96H,0B9H,0A3H,0FFH
|
||||
DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH
|
||||
DB 00H,01H,02H,03H,04H,05H,14H,01H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH
|
||||
DB 0CH,00H,0FH,08H,00H
|
||||
db 40,25
|
||||
|
||||
;80*25 16 couleurs
|
||||
mode1 DB 67H,00H, 03H,00H,03H,00H,02H
|
||||
DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,4FH,0DH,0EH,00H,00H,00H,00H
|
||||
DB 9CH,0EH,8FH,28H,1FH,96H,0B9H,0A3h,0FFH
|
||||
DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH
|
||||
DB 00H,01H,02H,03H,04H,05H,6H,7H,8H,9H,0AH,0BH,0CH,0DH,0EH,0FH
|
||||
DB 0CH,00H,0FH,08H,00H
|
||||
db 80,25
|
||||
|
||||
;80*50 16 couleurs
|
||||
mode2 DB 67H, 00H, 03H,00H,03H,00H,02H
|
||||
DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H
|
||||
DB 00H,9CH,8EH,8FH,28H,1FH,96H,0B9H,0A3H,0FFH
|
||||
DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH
|
||||
DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH
|
||||
DB 0CH,00H,0FH,00H,00H
|
||||
db 80,50
|
||||
|
||||
;100*50 16 couleurs
|
||||
mode3 DB 067H , 00H, 03H,01H,03H,00H,02H
|
||||
DB 70H, 63H , 64H ,85H,68H,84H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H
|
||||
DB 00H,9Ch, 08EH ,8FH, 32H ,1FH,96H,0B9H,0A3H,0FFH
|
||||
DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH
|
||||
DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH
|
||||
DB 0CH,00H,0FH,00H,00H
|
||||
db 100,50
|
||||
|
||||
|
||||
;100*60 16 couleurs
|
||||
mode22 DB 067H , 00H, 03H,01H,03H,00H,02H
|
||||
DB 70H, 63H , 64H ,85H,68H,84H,0FFH,1FH,00H,47H,06H,07H,00H,00H,00H
|
||||
DB 00H,0E7H,8EH,0DFH,32H,1FH,0DFH,0E5H,0A3H,0FFH
|
||||
DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH
|
||||
DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH
|
||||
DB 0CH,00H,0FH,00H,00H
|
||||
db 100,60
|
||||
|
||||
|
||||
Sequencer equ 03C4h
|
||||
misc equ 03C2h
|
||||
misc2 equ 03CCh
|
||||
CCRT equ 03D4h
|
||||
Attribs equ 03C0h
|
||||
graphic equ 03CEh
|
||||
statut equ 3DAh
|
||||
|
||||
;====Met les cl registres cons‚cutif … ds:si du port dx
|
||||
Setregs:
|
||||
push ax
|
||||
xor ax,ax
|
||||
initreg:
|
||||
mov ah,[si]
|
||||
out dx,ax
|
||||
inc al
|
||||
inc si
|
||||
cmp al,cl
|
||||
jb initreg
|
||||
pop ax
|
||||
ret
|
||||
|
||||
;met une serie de registres Cl a partir du port dx
|
||||
Setlowregs:
|
||||
push ax bx
|
||||
xor bx,bx
|
||||
cmp cl,0
|
||||
je only
|
||||
initreg2:
|
||||
mov al,bl
|
||||
out dx,al
|
||||
only:
|
||||
mov al,[si]
|
||||
out dx,al
|
||||
inc bl
|
||||
inc si
|
||||
cmp bl,cl
|
||||
jb initreg2
|
||||
pop bx ax
|
||||
ret
|
||||
|
||||
Setvideomode:
|
||||
push ax cx dx si
|
||||
xor ah,ah
|
||||
mov si,ax
|
||||
shl si,6
|
||||
add si,offset mode0
|
||||
xor cx,cx
|
||||
mov dx,misc
|
||||
call setlowregs
|
||||
mov dx,statut
|
||||
call setlowregs
|
||||
mov dx,sequencer
|
||||
mov cl,5
|
||||
call setregs
|
||||
mov ax,0E11h
|
||||
mov dx,ccrt
|
||||
out dx,ax
|
||||
mov cl,25
|
||||
call setregs
|
||||
mov dx,graphic
|
||||
mov cl,9
|
||||
call setregs
|
||||
mov dx,attribs
|
||||
mov cl,20
|
||||
call setlowregs
|
||||
mov al,20h
|
||||
out dx,al
|
||||
pop dx cx ax si
|
||||
ret
|
||||
|
||||
;====Met les cl registres cons‚cutif … en es:DI du port dx TOUT REGISTRES
|
||||
getregs:
|
||||
push ax bx dx
|
||||
xor bx,bx
|
||||
cmp cl,0
|
||||
je only2
|
||||
initreg4:
|
||||
mov al,bl
|
||||
out dx,al
|
||||
cmp dx,3C1h
|
||||
je only2
|
||||
inc dx
|
||||
only2:
|
||||
in al,dx
|
||||
mov es:[di],al
|
||||
dec dx
|
||||
inc bl
|
||||
inc di
|
||||
cmp bl,cl
|
||||
jb initreg4
|
||||
pop dx bx ax
|
||||
ret
|
||||
|
||||
;====Met le mode video present dans Es:di
|
||||
getvideomode:
|
||||
push ax cx dx di
|
||||
xor cx,cx
|
||||
mov dx,misc2
|
||||
call getregs
|
||||
mov dx,statut
|
||||
call getregs
|
||||
mov dx,sequencer
|
||||
mov cl,5
|
||||
call getregs
|
||||
mov dx,ccrt
|
||||
mov cl,25
|
||||
call getregs
|
||||
mov dx,graphic
|
||||
mov cl,9
|
||||
call getregs
|
||||
mov dx,attribs
|
||||
mov cl,20
|
||||
call getregs
|
||||
mov al,20h
|
||||
out dx,al
|
||||
pop di dx cx ax
|
||||
ret
|
||||
|
||||
;mode s‚curis‚ al
|
||||
Safemode:
|
||||
push cx si di ds es
|
||||
call setvideomode
|
||||
mov di,offset buffer
|
||||
push cs
|
||||
pop es
|
||||
push cs
|
||||
pop ds
|
||||
call getvideomode
|
||||
mov byte ptr es:[di+1],0
|
||||
mov si,offset mode1
|
||||
mov di,offset buffer
|
||||
mov cx,62
|
||||
rep cmpsb
|
||||
jne errormode
|
||||
clc
|
||||
endsafe:
|
||||
pop ds es di si cx
|
||||
ret
|
||||
errormode:
|
||||
stc
|
||||
jmp endsafe
|
||||
|
||||
|
||||
|
||||
buffer db 0
|
||||
|
||||
end start
|
|
@ -0,0 +1,88 @@
|
|||
net segment
|
||||
|
||||
org 0100h
|
||||
assume cs:net,ds:net
|
||||
|
||||
start:
|
||||
jmp deb
|
||||
taille dw 0
|
||||
signe2 db 64 dup (0)
|
||||
p1 db '@'
|
||||
p2 db '@'
|
||||
deb:
|
||||
mov BL,DS:[0080h]
|
||||
xor BH,BH
|
||||
or BX,BX
|
||||
mov byte ptr [0081h+BX],00h
|
||||
mov AX,3D02h
|
||||
mov DX,0082H
|
||||
int 21h
|
||||
mov bx,ax
|
||||
mov ah,3fh
|
||||
mov cx,0ffffh
|
||||
mov dx,offset data
|
||||
int 21h
|
||||
mov taille,ax
|
||||
mov ah,3eh
|
||||
int 21h
|
||||
mov si,82h
|
||||
mov di,offset signe2
|
||||
mov cx,64
|
||||
rep movsb
|
||||
mov di,offset signe2
|
||||
mov cx,64
|
||||
mov al,2eh
|
||||
repne scasb
|
||||
mov si,offset data
|
||||
mov cx,3
|
||||
rep movsb
|
||||
mov cx,taille
|
||||
mov di,offset data
|
||||
add di,taille
|
||||
mov dx,1
|
||||
boucle:
|
||||
lodsb
|
||||
cmp al,p1
|
||||
je pas
|
||||
suite:
|
||||
stosb
|
||||
loop boucle
|
||||
jmp fin
|
||||
pas:
|
||||
mov al,p2
|
||||
cmp [si+2],al
|
||||
jne suite
|
||||
lodsb
|
||||
mov bx,cx
|
||||
mov cl,al
|
||||
xor ch,ch
|
||||
lodsb
|
||||
rep stosb
|
||||
mov cx,bx
|
||||
sub cx,3
|
||||
inc si
|
||||
loop boucle
|
||||
fin:
|
||||
mov ah,3ch
|
||||
mov cx,0
|
||||
mov dx,offset signe2
|
||||
int 21h
|
||||
mov bx,ax
|
||||
mov ah,40h
|
||||
mov cx,di
|
||||
sub cx,offset data
|
||||
sub cx,taille
|
||||
mov dx,offset data
|
||||
add dx,taille
|
||||
int 21h
|
||||
mov ah,3eh
|
||||
int 21h
|
||||
mov ah,41h
|
||||
mov dx,82h
|
||||
int 21h
|
||||
ret
|
||||
data db 0
|
||||
net ends
|
||||
end start
|
||||
|
||||
net
|
|
@ -0,0 +1,262 @@
|
|||
.model tiny
|
||||
.386c
|
||||
.code
|
||||
org 0100h
|
||||
|
||||
|
||||
start:
|
||||
mov ax,0002
|
||||
int 47H
|
||||
mov ah,26
|
||||
int 47H
|
||||
replay:
|
||||
mov ah,2
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,7
|
||||
int 47h
|
||||
xor di,di
|
||||
xor cx,cx
|
||||
mov ah,20
|
||||
mov bx,1D00h
|
||||
mov si,offset Msg
|
||||
int 47h
|
||||
mov ah,20
|
||||
mov bx,0231h
|
||||
mov si,offset msgapp
|
||||
int 47h
|
||||
VerifAll:
|
||||
mov ah,1
|
||||
int 16h
|
||||
cmp al,32
|
||||
je enend
|
||||
mov ax,cx
|
||||
mov si,100
|
||||
mul si
|
||||
mov si,2880
|
||||
div si
|
||||
xor edx,edx
|
||||
mov dx,ax
|
||||
mov ah,15
|
||||
mov bx,0A14h
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset po
|
||||
int 47h
|
||||
mov ah,15
|
||||
mov dx,cx
|
||||
mov bx,0A10h
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset Msg2
|
||||
int 47h
|
||||
mov ah,8
|
||||
mov edx,0
|
||||
mov dx,di
|
||||
int 47h
|
||||
mov ah,13
|
||||
mov si,offset Msg3
|
||||
int 47h
|
||||
call gauge
|
||||
call verifysector
|
||||
jc errors
|
||||
je noprob
|
||||
inc di
|
||||
noprob:
|
||||
inc cx
|
||||
cmp cx,2880
|
||||
jnz verifall
|
||||
enend:
|
||||
cmp di,0
|
||||
je noatall
|
||||
mov bx,0E09h
|
||||
mov ah,20
|
||||
mov si,offset error2
|
||||
int 47h
|
||||
jmp someof
|
||||
noatall:
|
||||
mov bx,0E09h
|
||||
mov ah,20
|
||||
mov si,offset noerror
|
||||
int 47h
|
||||
someof:
|
||||
mov ah,0
|
||||
int 16h
|
||||
mov ah,27
|
||||
int 47h
|
||||
db 0CBH
|
||||
errors:
|
||||
mov ah,21
|
||||
mov cl,4
|
||||
int 47h
|
||||
mov bx,0D09h
|
||||
mov ah,20
|
||||
mov si,offset errore
|
||||
int 47h
|
||||
mov ah,0
|
||||
int 16h
|
||||
jmp replay
|
||||
|
||||
|
||||
|
||||
errore db 'Error IO with floppy drive, insert a disk and Press a key',0
|
||||
noerror db 'No defectuous Cluster, Press a key to Quit',0
|
||||
error2 db 'This disk is bad, Press a key to Quit',0
|
||||
po db ' %',0
|
||||
msgapp db '<Press Space to quit>',0
|
||||
msg db '- Disk Surface Test -',0
|
||||
msg2 db ' cluster tested. ',0
|
||||
msg3 db ' defectuous cluster.',0
|
||||
;->Increment CX
|
||||
gauge:
|
||||
push ax bx cx dx si ds
|
||||
push cs
|
||||
pop ds
|
||||
mov ax,cx
|
||||
mul sizes
|
||||
div max
|
||||
mov dx,ax
|
||||
mov bl,oldvalue
|
||||
xor bh,bh
|
||||
mov byte ptr [offset gaugetxt+bx],'Û'
|
||||
cmp bx,0
|
||||
jnz nono2
|
||||
mov ah,21
|
||||
mov cl,8
|
||||
int 47h
|
||||
mov bx,xy
|
||||
mov ah,20
|
||||
mov si,offset gaugetxt
|
||||
int 47h
|
||||
mov ah,21
|
||||
mov cl,7
|
||||
int 47h
|
||||
nono2:
|
||||
mov bx,dx
|
||||
xor bh,bh
|
||||
mov byte ptr [offset gaugetxt+bx],0
|
||||
mov oldvalue,bl
|
||||
mov bx,xy
|
||||
mov ah,20
|
||||
mov si,offset gaugetxt
|
||||
int 47h
|
||||
pop ds si dx cx bx ax
|
||||
ret
|
||||
oldvalue db 0
|
||||
max dw 2880
|
||||
sizes dw 50
|
||||
xy dw 0A12h
|
||||
gaugetxt db 'ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ',0
|
||||
|
||||
Inverse:
|
||||
mov si,512/4
|
||||
invert:
|
||||
shl si,2
|
||||
not dword ptr [bx+si-4]
|
||||
shr si,2
|
||||
dec si
|
||||
jnz invert
|
||||
ret
|
||||
|
||||
VerifySector:
|
||||
push bx cx si di ds es
|
||||
push cs
|
||||
pop es
|
||||
push cs
|
||||
pop ds
|
||||
mov bx,offset buffer
|
||||
call ReadSector
|
||||
jc errorverify
|
||||
call inverse
|
||||
call WriteSector
|
||||
jc errorverify
|
||||
mov bx,offset buffer2
|
||||
call ReadSector
|
||||
call inverse
|
||||
jc errorverify
|
||||
mov bx,offset buffer
|
||||
call inverse
|
||||
call WriteSector
|
||||
jc errorverify
|
||||
mov cx,512/4
|
||||
mov si,offset buffer
|
||||
mov di,offset buffer2
|
||||
cld
|
||||
rep cmpsd
|
||||
errorverify:
|
||||
pop es ds di si cx bx
|
||||
ret
|
||||
|
||||
ReadSector:
|
||||
push ax cx dx si
|
||||
mov AX, CX
|
||||
xor DX, DX
|
||||
div cs:DiskSectorsPerTrack
|
||||
mov CL, DL ;{ Set the sector }
|
||||
and CL, 63 ;{ Top two bits are bits 8&9 of the cylinder }
|
||||
xor DX, DX
|
||||
div cs:DiskTracksPerHead
|
||||
mov CH, DL ;{ Set the track bits 0-7 }
|
||||
mov AL, DH
|
||||
ror AL, 1
|
||||
ror AL, 1
|
||||
and AL, 11000000b
|
||||
or CL, AL ;{ Set bits 8&9 of track }
|
||||
xor dX, DX
|
||||
div cs:DiskHeads
|
||||
mov DH, DL ;{ Set the head }
|
||||
inc CL
|
||||
mov SI, 4
|
||||
TryAgain:
|
||||
mov AL, 1
|
||||
mov DL, 0
|
||||
mov AH, 2
|
||||
int 13h
|
||||
jnc Done
|
||||
dec SI
|
||||
jnz TryAgain
|
||||
Done:
|
||||
pop si dx cx ax
|
||||
ret
|
||||
|
||||
WriteSector:
|
||||
push ax cx dx si
|
||||
mov AX, CX
|
||||
xor DX, DX
|
||||
div cs:DiskSectorsPerTrack
|
||||
mov CL, DL ;{ Set the sector }
|
||||
and CL, 63 ;{ Top two bits are bits 8&9 of the cylinder }
|
||||
xor DX, DX
|
||||
div cs:DiskTracksPerHead
|
||||
mov CH, DL ;{ Set the track bits 0-7 }
|
||||
mov AL, DH
|
||||
ror AL, 1
|
||||
ror AL, 1
|
||||
and AL, 11000000b
|
||||
or CL, AL ;{ Set bits 8&9 of track }
|
||||
xor DX, DX
|
||||
div cs:DiskHeads
|
||||
mov DH, DL ;{ Set the head }
|
||||
inc CL
|
||||
mov SI, 4
|
||||
TryAgain2:
|
||||
mov AL, 1
|
||||
mov DL, 0
|
||||
mov AH, 3
|
||||
int 13h
|
||||
jnc Done2
|
||||
dec SI
|
||||
jnz TryAgain2
|
||||
Done2:
|
||||
pop si dx cx ax
|
||||
ret
|
||||
|
||||
DiskSectorsPerTrack dw 18
|
||||
DiskTracksPerHead dw 80
|
||||
DiskHeads dw 2
|
||||
|
||||
Buffer equ $
|
||||
Buffer2 equ $+512
|
||||
|
||||
|
||||
End Start
|
66
video.asm
66
video.asm
|
@ -167,7 +167,7 @@ reg1 dw 0100h, 0402h, 0704h, 0300h
|
|||
dw 0204h, 0005h, 0406h
|
||||
|
||||
;40*25 16 couleurs
|
||||
mode0 DB 63H,00H, 03H,09H,03H,00H,02H
|
||||
mode0 DB 67H,00H, 03H,08H,03H,00H,02H
|
||||
DB 2DH,27H,28H,90H,2BH,0A0H,0BFH,01FH,00H,4FH,0DH,0EH,00H,00H,00H,00H
|
||||
DB 9CH,8EH,8FH,14H,1FH,96H,0B9H,0A3H,0FFH
|
||||
DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH
|
||||
|
@ -178,14 +178,14 @@ mode0 DB 63H,00H, 03H,09H,03H,00H,02H
|
|||
;80*25 16 couleurs
|
||||
mode1 DB 67H,00H, 03H,00H,03H,00H,02H
|
||||
DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,4FH,0DH,0EH,00H,00H,00H,00H
|
||||
DB 9CH,0EH,8FH,28H,1FH,96H,0B9H,0A3H,0FFH
|
||||
DB 9CH,0EH,8FH,28H,1FH,96H,0B9H,0A3h,0FFH
|
||||
DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH
|
||||
DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH
|
||||
DB 0CH,00H,0FH,08H,00H
|
||||
db 80,25
|
||||
|
||||
;80*50 16 couleurs
|
||||
mode2 DB 63H, 00H, 03H,01H,03H,01H,02H
|
||||
mode2 DB 67H, 00H, 03H,00H,03H,01H,02H
|
||||
DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H
|
||||
DB 00H,9CH,8EH,8FH,28H,1FH,96H,0B9H,0A3H,0FFH
|
||||
DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH
|
||||
|
@ -193,8 +193,28 @@ mode2 DB 63H, 00H, 03H,01H,03H,01H,02H
|
|||
DB 0CH,00H,0FH,00H,00H
|
||||
db 80,50
|
||||
|
||||
;100*50 16 couleurs
|
||||
mode3 DB 067H,00H,03H,01H,03H,01H,02H
|
||||
DB 70H,63H,64H,85H,68H,84H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H
|
||||
DB 00H,9Ch,08EH,8FH,32H,1FH,96H,0B9H,0A3H,0FFH
|
||||
DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH
|
||||
DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH
|
||||
DB 0CH,00H,0FH,00H,00H
|
||||
db 100,50
|
||||
|
||||
|
||||
;100*60 16 couleurs
|
||||
mode4b DB 067H,00H,03H,01H,03H,01H,02H
|
||||
DB 70H,63H,64H,85H,68H,84H,0FFH,1FH,00H,47H,06H,07H,00H,00H,00H
|
||||
DB 00H,0E7H,8EH,0DFH,32H,1FH,0DFH,0E5H,0A3H,0FFH
|
||||
DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH
|
||||
DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH
|
||||
DB 0CH,00H,0FH,00H,00H
|
||||
db 100,60
|
||||
|
||||
|
||||
;320*200 16 couleurs
|
||||
mode3 DB 63H,00H, 03H,09H,0FH,00H,06H
|
||||
mode4 DB 63H,00H, 03H,09H,0FH,00H,06H
|
||||
DB 2DH,27H,28H,90H,2BH,080H,0BFH,01FH,00H,0C0H,00H,00H,00H,00H,00H,00H
|
||||
DB 9CH,8EH,8FH,14H,00H,96H,0B9H,0E3H,0FFH
|
||||
DB 00H,00H,00H,00H,00H,00H,05H,0FH,0FFH
|
||||
|
@ -203,7 +223,7 @@ mode3 DB 63H,00H, 03H,09H,0FH,00H,06H
|
|||
db 40,25
|
||||
|
||||
;320*200 256 couleurs
|
||||
mode4 DB 63H, 00H, 03H,01H,0FH,00H,0EH
|
||||
mode5 DB 63H, 00H, 03H,01H,0FH,00H,0EH
|
||||
DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,41H,00H,00H,00H,00H,00H,00H
|
||||
DB 9CH,0EH,8FH,28H,40H,96H,0B9H,0A3H,0FFH
|
||||
DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH
|
||||
|
@ -212,7 +232,7 @@ mode4 DB 63H, 00H, 03H,01H,0FH,00H,0EH
|
|||
db 00,00
|
||||
|
||||
;640*400 16 couleurs
|
||||
mode5 DB 63H, 00H, 03H,01H,0FH,00H,0EH
|
||||
mode6 DB 63H, 00H, 03H,01H,0FH,00H,0EH
|
||||
DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,41H,00H,00H,00H,00H,00H,00H
|
||||
DB 9CH,0EH,8FH,28H,40H,96H,0B9H,0A3H,0FFH
|
||||
DB 00H,00H,00H,00H,00H,10H,05H,0FH,0FFH
|
||||
|
@ -220,8 +240,8 @@ mode5 DB 63H, 00H, 03H,01H,0FH,00H,0EH
|
|||
DB 41H,00H,0FH,00H,00H
|
||||
db 00,00
|
||||
|
||||
;640*400 16 couleurs
|
||||
mode6 DB 63H, 00H, 03H,01H,0FH,00H,0EH
|
||||
;640*400 256 couleurs
|
||||
mode7 DB 63H, 00H, 03H,01H,0FH,00H,0EH
|
||||
DB 2DH,27H,27H,91H,2AH,9FH,0BFH,1FH,00H,0C0H,00H,00H,00H,00H,00H,00H
|
||||
DB 9CH,0EH,8FH,50H,00H,8FH,0C0H,0E3H,0FFH
|
||||
DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH
|
||||
|
@ -229,14 +249,8 @@ mode6 DB 63H, 00H, 03H,01H,0FH,00H,0EH
|
|||
DB 41H,00H,0FH,00H,00H
|
||||
db 00,00
|
||||
|
||||
;640*400 16 couleurs
|
||||
mode6 DB 63H, 00H, 03H,01H,0FH,00H,0EH
|
||||
DB 2DH,27H,27H,91H,2AH,9FH,0BFH,1FH,00H,0C0H,00H,00H,00H,00H,00H,00H
|
||||
DB 9CH,0EH,8FH,50H,00H,8FH,0C0H,0E3H,0FFH
|
||||
DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH
|
||||
DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH
|
||||
DB 41H,00H,0FH,00H,00H
|
||||
db 00,00
|
||||
|
||||
|
||||
|
||||
;
|
||||
;=============CLEAR=========
|
||||
|
@ -287,11 +301,14 @@ statut equ 3DAh
|
|||
|
||||
initmode:
|
||||
push bx cx si ds
|
||||
mov bl,1
|
||||
mov cl,8
|
||||
;xor bx,bx
|
||||
;mov ds,bx
|
||||
;lds si,ds:[43h*4]
|
||||
push cs
|
||||
pop ds
|
||||
mov si,offset special
|
||||
mov si,offset font
|
||||
mov cl,8
|
||||
mov bl,1
|
||||
call loadfont
|
||||
pop ds si cx bx
|
||||
ret
|
||||
|
@ -524,8 +541,8 @@ mov bl,bh
|
|||
xor bh,bh
|
||||
mov di,bx
|
||||
mul cs:columns
|
||||
shl ax,1
|
||||
add di,ax
|
||||
shl di,1
|
||||
mov cs:xy,di
|
||||
mov ax,0B800h
|
||||
mov es,ax
|
||||
|
@ -586,8 +603,6 @@ RestoreScreen:
|
|||
rep movsd
|
||||
pop es ds di si cx
|
||||
ret
|
||||
copy2 db 4000 dup (0)
|
||||
copy db 4000 dup (0)
|
||||
|
||||
;===============================Page2to1============================
|
||||
Page2to1:
|
||||
|
@ -905,7 +920,10 @@ xy dw 0
|
|||
colors db 7
|
||||
mode db 0FFh
|
||||
pagesize dw 0
|
||||
special equ $
|
||||
endofme equ $ +4096
|
||||
font equ $
|
||||
copy equ $+4000
|
||||
copy2 equ $+8000
|
||||
|
||||
endofme equ $ +12000
|
||||
|
||||
end start
|
||||
|
|
Loading…
Reference in New Issue