diff --git a/cos.rip b/cos.rip new file mode 100755 index 0000000..f9e2076 Binary files /dev/null and b/cos.rip differ 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