home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1998 July
/
Chip_1998-07_cd.bin
/
ctenari
/
Soban
/
HEX
/
HEX1.ASM
< prev
next >
Wrap
Assembly Source File
|
1994-12-05
|
11KB
|
656 lines
b_ho equ 01110000b
b_lo equ 00100000b
b_po equ 01010000b
b_na equ 00010011b
org 100h
jmp start
db 'PROGRAM NAPROGRAMOVAL PETR µOB╡╒ (c) 1994 ; Ostrava'
program:
db 'Program H E X v1.01 napsal Petr µobáσ (c) 10.11.1994$'
error1:
mov ah,09h
mov dx,napoveda_error
int 21h
mov al,01h
jmp konec
start:
mov ax,0003h
int 10h
mov ax,0500h
int 10h
mov ah,01h
mov ch,00111111b
int 10h
mov al,[80h]
cmp al,00h
jz error1
mov ah,00h
mov bx,0081h
add bx,ax
xor ax,ax
mov [bx],ax
call cls
;otevri soubor
mov bx,0081h
call preskoc_mezery
mov ah,3dh
mov al,10100000b
mov dx,bx
int 21h
jnc pokracuj1
call error_dos
jmp error1
pokracuj1:
mov bx,handle
mov [bx],ax
mov bx,ax
mov ax,4200h
mov cx,0000h
mov dx,0000h
int 21h
jnc loopa
call error_dos
jmp error1
loopa:
mov cx,dx
mov dx,ax
loopb:
push cx
push dx
call cls1
pop dx
pop cx
push cx
push dx
call tisk
loop1:
call cti_znak
pop dx
pop cx
cmp al,1bh
jz esc
cmp al,44h
jz f10
cmp al,48h
jz nahoru
cmp al,50h
jz dolu
push cx
push dx
jmp loop1
nahoru:
push cx
push dx
sub dx,0010h
jnc nahoru1
dec cx
and cx,0111111111111111b
nahoru1:
jmp pokracuj2
dolu:
push cx
push dx
add dx,0010h
jnc pokracuj2
inc cx
and cx,0111111111111111b
pokracuj2:
mov bx,handle
mov bx,[bx]
mov ax,4200h
int 21h
jc pokracuj3
pop cx
pop cx
jmp loopa
pokracuj3:
pop dx
pop cx
jmp loopb
esc:
f10:
mov ax,0003h
int 10h
mov al,00h
konec:
mov ah,01h
mov cx,0d0eh
int 10h
mov ah,4ch
int 21h
hlt
;v cx|dx odkud se ma tisknout
tisk:
push dx
mov ah,02h
mov bh,00h
mov dx,0401h
int 10h
pop dx
mov al,10h
tisk1:
call tisk_radku
add dx,0010h
jnc pokracuj_tisk
inc cx
and cx,0111111111111111b
pokracuj_tisk:
dec al
cmp al,00h
jnz tisk1
ret
tisk_radku:
push ax
push cx
push dx
call tisk_cx_dx
mov ah,3fh
mov bx,handle
mov bx,[bx]
mov cx,0010h
mov dx,bufer
int 21h
jc tisk_radku1
mov bx,0000h
push ax
tisk_radku2:
cmp ax,0000h
jz tisk_radku1
push ax
push bx
add bx,bufer
mov al,[bx]
call tisk_al
mov ah,02h
mov dl,' '
int 21h
pop bx
pop ax
inc bx
dec ax
jmp tisk_radku2
tisk_radku1:
mov ah,09h
mov dx,mezery
int 21h
pop ax
mov bx,0000h
tisk_znaku2:
cmp ax,0000h
jz tisk_znaku1
push ax
push bx
add bx,bufer
mov al,[bx]
cmp al,20h
mov ah,02h
jnc preskoc_tisk_znaku
mov al,01h
preskoc_tisk_znaku:
mov dl,al
int 21h
pop bx
pop ax
inc bx
dec ax
jmp tisk_znaku2
tisk_znaku1:
mov ah,09h
mov dx,cr_lf
int 21h
pop dx
pop cx
pop ax
ret
mezery:
db ' $'
cr_lf:
db 0dh,0ah,' $'
bufer:
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
tisk_cx_dx:
mov al,ch
call tisk_al
mov al,cl
call tisk_al
mov al,dh
call tisk_al
mov al,dl
call tisk_al
mov al,':'
call tisk_preskoc
mov al,' '
call tisk_preskoc
ret
tisk_al:
push ax
shr al,04h
call tisk_al1
pop ax
tisk_al1:
and al,0fh
add al,30h
cmp al,3ah
jc tisk_preskoc
add al,07h
tisk_preskoc:
push dx
mov dl,al
mov ah,02h
int 21h
pop dx
ret
cls:
mov ax,0600h
mov bh,b_ho
mov ch,al
mov cl,al
mov dx,024fh
int 10h
mov ah,02h
mov bh,00h
mov dx,0104h
int 10h
mov ah,09h
mov dx,program
int 21h
call cls1
mov bh,b_na
mov cx,1800h
mov dx,184fh
int 10h
mov ah,02h
mov bh,00h
mov dx,1804h
int 10h
mov ah,09h
mov dx,napoveda
int 21h
ret
cls1:
mov ax,0600h
mov bh,b_lo
mov cx,0300h
mov dx,173ch
int 10h
mov bh,b_po
mov cx,033dh
mov dx,174fh
int 10h
ret
napoveda:
db 'Ovládání klávesami ',18h,' ',19h,' Konec = Esc$'
cti_znak:
mov ah,08h
int 21h
cmp al,00h
jz cti_znak1
ret
cti_znak1:
mov ah,08h
int 21h
ret
napoveda_error:
db 0ah,0dh
db ' Program HEX (c) 1994 S&S'
db 0ah,0dh
db ' HEX soubor kter∞ chceme prohlíºet'
db 0ah,0dh
db ' HEX c:\tools\pokusny.bin'
db 0ah,0dh,'$'
handle:
dw 0
;*******************************************************************
;* PROGRAM VYP╓µE CHYBOVÉ HL╡µEN╓ DOSU DO KAN╡LU ƒ.2 ERROR *
;* *
;* chybov∞ kod v registru AL *
;* CALL ERROR_DOS *
;* *
;*******************************************************************
;* uchovává registry AX,BX,CX,DX,SI,DI,BP,F *
;*******************************************************************
POS_ERROR EQU 59H
ERROR_DOS:
PUSHA
PUSHF
PUSH AX
push ax ;nastaveni modu cinosti graf. adapteru
mov ax,0003h
int 10h
pop ax
MOV DX,NOV_RADKA
MOV CX,2
MOV BX,CX
MOV AH,40H
INT 21H
POP AX
MOV BL,POS_ERROR
CMP AL,BL
JC ERROR_PR1
MOV AL,BL
ERROR_PR1:
XOR AH,AH
SHL AX,1
ADD AX,TAB_ERROR
MOV BX,AX
MOV AX,[BX]
MOV DX,AX
INC BX
INC BX
MOV AX,[BX]
SUB AX,DX
MOV CX,AX
MOV BX,2
MOV AH,40H
INT 21H
MOV DX,NOV_RADKA
MOV CX,3
MOV AH,40H
INT 21H
POPF
POPA
RET
NOV_RADKA:
DB 0AH,0DH,07H
TAB_ERROR:
DW ERROR_OK
DW ERROR_01
DW ERROR_02
DW ERROR_03
DW ERROR_04
DW ERROR_05
DW ERROR_06
DW ERROR_07
DW ERROR_08
DW ERROR_09
DW ERROR_0A
DW ERROR_0B
DW ERROR_0C
DW ERROR_0D
DW ERROR_0E
DW ERROR_0F
DW ERROR_10
DW ERROR_11
DW ERROR_12
DW ERROR_13
DW ERROR_14
DW ERROR_15
DW ERROR_16
DW ERROR_17
DW ERROR_18
DW ERROR_19
DW ERROR_1A
DW ERROR_1B
DW ERROR_1C
DW ERROR_1D
DW ERROR_1E
DW ERROR_1F
DW ERROR_20
DW ERROR_21
DW ERROR_22
DW ERROR_23
DW ERROR_24
DW ERROR_25
DW ERROR_26
DW ERROR_27
DW ERROR_28
DW ERROR_29
DW ERROR_2A
DW ERROR_2B
DW ERROR_2C
DW ERROR_2D
DW ERROR_2E
DW ERROR_2F
DW ERROR_30
DW ERROR_31
DW ERROR_32
DW ERROR_33
DW ERROR_34
DW ERROR_35
DW ERROR_36
DW ERROR_37
DW ERROR_38
DW ERROR_39
DW ERROR_3A
DW ERROR_3B
DW ERROR_3C
DW ERROR_3D
DW ERROR_3E
DW ERROR_3F
DW ERROR_40
DW ERROR_41
DW ERROR_42
DW ERROR_43
DW ERROR_44
DW ERROR_45
DW ERROR_46
DW ERROR_47
DW ERROR_48
DW ERROR_49
DW ERROR_4A
DW ERROR_4B
DW ERROR_4C
DW ERROR_4D
DW ERROR_4E
DW ERROR_4F
DW ERROR_50
DW ERROR_51
DW ERROR_52
DW ERROR_53
DW ERROR_54
DW ERROR_55
DW ERROR_56
DW ERROR_57
DW ERROR_58
DW ERROR_NEDEF
DW ERROR_KONEC
ERROR_OK:
DB 'funkce bylasprávn╪ ukonƒená'
ERROR_01:
DB 'chybn∞ kód funkce'
ERROR_02:
DB 'soubor nebyl nalezen'
ERROR_03:
DB 'cesta nebyla nalezena'
ERROR_04:
DB 'p²íliτ mnoho otev²en∞ch souborà'
ERROR_05:
DB 'nedovolen∞ p²ístup'
ERROR_06:
db 'chybné handle'
ERROR_07:
db 'zniƒen MCB'
ERROR_08:
db 'nedostaƒující pam╪£'
ERROR_09:
db 'chybná adresa bloku pam╪ti'
ERROR_0A:
db 'chybné prost²edí'
ERROR_0B:
db 'chybn∞ formát'
ERROR_0C:
db 'chybn∞ kód p²ístupu'
ERROR_0D:
db 'chybná data'
ERROR_0E:
db 'ERROR'
ERROR_0F:
db 'chybná specifikace jednotky'
ERROR_10:
db 'nelze zruτit aktuální adresá²'
ERROR_11:
db 'nejde o stejné za²ízení'
ERROR_12:
db 'není dalτí odpovídající soubor'
ERROR_13:
db 'pokus o zápis na disk chrán╪n∞ proti zápisu'
ERROR_14:
db 'neznám∞ identifikátor ID diskové jednotky'
ERROR_15:
db 'jednotka není p²ipravena k obsluze poºadavku'
ERROR_16:
db 'neznám∞ p²íkaz (diskov∞)'
ERROR_17:
db 'chyba dat ƒten∞ch z disku, neopravitelná CRC'
ERROR_18:
db 'chybná délka struktury poºadavku p²i diskov∞ch operacích'
ERROR_19:
db 'chyba p²esunu hlav disku'
ERROR_1A:
db 'neznám∞ typ diskového média'
ERROR_1B:
db 'nenalezen sektor na disku'
ERROR_1C:
db 'konec papíru v tiskárn╪'
ERROR_1D:
db 'chyba zápisu dat'
ERROR_1E:
db 'chyba ƒtení dat'
ERROR_1F:
db 'základní chyba (general failure)'
ERROR_20:
db 'pokus o p²ístup k souboru, kter∞ nelze sdílet'
ERROR_21:
db 'pokus o p²ístup k zamƒenému souboru'
ERROR_22:
db 'neoƒekávaná v∞m╪na disku'
ERROR_23:
db 'nelze vytvo²it dalτí FCB'
ERROR_24:
db 'ERROR'
ERROR_25:
db 'ERROR'
ERROR_26:
db 'ERROR'
ERROR_27:
db 'ERROR'
ERROR_28:
db 'ERROR'
ERROR_29:
db 'ERROR'
ERROR_2A:
db 'ERROR'
ERROR_2B:
db 'ERROR'
ERROR_2C:
db 'ERROR'
ERROR_2D:
db 'ERROR'
ERROR_2E:
db 'ERROR'
ERROR_2F:
db 'ERROR'
ERROR_30:
db 'ERROR'
ERROR_31:
db 'ERROR'
ERROR_32:
db 'poºadavek sít╪ není podporován'
ERROR_33:
db 'vzdálen∞ poƒítaƒ není p²ipojen'
ERROR_34:
db 'duplikace jmen v síti'
ERROR_35:
db 'nenalezeno ºádné jméno sí£ového stroje'
ERROR_36:
db 'sí£ není p²ipravena na obsluhu poºadavku'
ERROR_37:
db 'specifikované za²ízení sít╪ jiº neexistuje'
ERROR_38:
db 'p²ekroƒen limit p²íkazà sít╪ BIOSu'
ERROR_39:
db 'hardwarová chyba adaptéru sít╪'
ERROR_3A:
db 'nekorektní odezva sít╪'
ERROR_3B:
db 'nespecifikovaná chyba sít╪'
ERROR_3C:
db 'nekompatibilní vzdálen∞ adaptér sít╪'
ERROR_3D:
db 'tisková fronta tiskárny sít╪ je plná'
ERROR_3E:
db 'tisková fronta tiskárny sít╪ je BUSY'
ERROR_3F:
db 'není dostatek místa pro tiskov∞ soubor'
ERROR_40:
db 'specifikované sí£ové jméno bylo zruτeno'
ERROR_41:
db 'nedovolen∞ p²ístup k prost²edkàm sít╪'
ERROR_42:
db 'nekorektní typ za²ízení sít╪'
ERROR_43:
db 'sí£ové jméno nenalezeno'
ERROR_44:
db 'p²ekroƒen limit poƒtu sí£ov∞ch jmen'
ERROR_45:
db 'p²ekroƒen limit selhání (spojení) BIOSu sít╪'
ERROR_46:
db 'doƒasné zablokování ƒinnosti sít╪'
ERROR_47:
db 'poºadavek sí£ové ƒinnosti nebyl akceptován'
ERROR_48:
db 'tisk nebo p²esm╪rování disku je zablokován'
ERROR_49:
db 'ERROR'
ERROR_4A:
db 'ERROR'
ERROR_4B:
db 'ERROR'
ERROR_4C:
db 'ERROR'
ERROR_4D:
db 'ERROR'
ERROR_4E:
db 'ERROR'
ERROR_4F:
db 'ERROR'
ERROR_50:
db 'soubor jiº existuje'
ERROR_51:
db 'ERROR'
ERROR_52:
db 'nelze provést poºadovanou ƒinnost'
ERROR_53:
db 'chyba obsluhy kritické chyby (p²eruτení 24h)'
ERROR_54:
db 'mimo poºadovanou strukturu'
ERROR_55:
db 'poºadované za²ízení jiº bylo p²id╪leno'
ERROR_56:
db 'chybné heslo'
ERROR_57:
db 'chybn∞ parametr'
ERROR_58:
db 'chyba p²enosu dat v síti'
ERROR_NEDEF:
db 'ERROR'
ERROR_KONEC:
;*************************************************************************
; KONEC
;*************************************************************************
preskoc_mezery:
mov al,[bx]
cmp al,' '
jz mezera
ret
mezera:
inc bx
jmp preskoc_mezery