From 4c3f72e0ce293815fcaee96aea0f5628e171718f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Hord=C3=A9?= Date: Sun, 25 Feb 2001 21:48:09 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20compression=20au=20format=20RIP=20du=20?= =?UTF-8?q?logo=20BMP.=20Ajout=20d'un=20logiciel=20de=20v=C3=A9rification?= =?UTF-8?q?=20de=20la=20disquette.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cos.rip | Bin 0 -> 15201 bytes disk.asm | 9 +- editor.asm | 9 +- keyboard.asm | 84 ++++++++++++++++ logo.asm | 61 ++++++++++-- rip.asm | 108 ++++++++++++++++++++ setup.asm | 27 ++++- system.asm | 1 + test.asm | 274 +++++++++++++++++++++++++++++++++++++++++++++++++++ unrip.asm | 88 +++++++++++++++++ verif.asm | 262 ++++++++++++++++++++++++++++++++++++++++++++++++ video.asm | 66 ++++++++----- 12 files changed, 951 insertions(+), 38 deletions(-) create mode 100755 cos.rip create mode 100755 keyboard.asm create mode 100755 rip.asm create mode 100755 test.asm create mode 100755 unrip.asm create mode 100755 verif.asm diff --git a/cos.rip b/cos.rip new file mode 100755 index 0000000000000000000000000000000000000000..f9e20763567ed1a2853b8ba1911db6e0c48d55a9 GIT binary patch literal 15201 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 KkABg&QvWxvt|p=Y literal 0 HcmV?d00001 diff --git a/disk.asm b/disk.asm index 2a55d8b..370c46f 100755 --- a/disk.asm +++ b/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 diff --git a/editor.asm b/editor.asm index 7ac89ce..aac1b83 100755 --- a/editor.asm +++ b/editor.asm @@ -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 diff --git a/keyboard.asm b/keyboard.asm new file mode 100755 index 0000000..0fd52f0 --- /dev/null +++ b/keyboard.asm @@ -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 diff --git a/logo.asm b/logo.asm index 1f2a506..53b4fce 100755 --- a/logo.asm +++ b/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 diff --git a/rip.asm b/rip.asm new file mode 100755 index 0000000..acefad7 --- /dev/null +++ b/rip.asm @@ -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 \ No newline at end of file diff --git a/setup.asm b/setup.asm index 0fb317c..fc65f35 100755 --- a/setup.asm +++ b/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: diff --git a/system.asm b/system.asm index f058a8a..ef6c91e 100755 --- a/system.asm +++ b/system.asm @@ -17,6 +17,7 @@ call loadfatway mov di,bx mov bx,47h call setint +ret mov bx,9 call getint mov cs:int9seg,ds diff --git a/test.asm b/test.asm new file mode 100755 index 0000000..b102754 --- /dev/null +++ b/test.asm @@ -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 diff --git a/unrip.asm b/unrip.asm new file mode 100755 index 0000000..02d1f64 --- /dev/null +++ b/unrip.asm @@ -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 \ No newline at end of file diff --git a/verif.asm b/verif.asm new file mode 100755 index 0000000..c418726 --- /dev/null +++ b/verif.asm @@ -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 '',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 diff --git a/video.asm b/video.asm index 52bb781..96d17c4 100755 --- a/video.asm +++ b/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