home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 July / Chip_1998-07_cd.bin / ctenari / Soban / HEX / HEX1.ASM < prev    next >
Assembly Source File  |  1994-12-05  |  11KB  |  656 lines

  1. b_ho        equ 01110000b
  2. b_lo        equ 00100000b
  3. b_po        equ 01010000b
  4. b_na        equ 00010011b
  5.  
  6.         org 100h
  7.  
  8.         jmp start
  9.         db 'PROGRAM NAPROGRAMOVAL PETR µOB╡╒ (c) 1994 ; Ostrava'
  10. program:
  11.         db 'Program  H E X  v1.01  napsal Petr µobáσ  (c) 10.11.1994$'
  12.  
  13. error1:
  14.         mov ah,09h
  15.         mov dx,napoveda_error
  16.         int 21h
  17.         mov al,01h
  18.         jmp konec
  19. start:
  20.         mov ax,0003h
  21.         int 10h
  22.         mov ax,0500h
  23.         int 10h
  24.         mov ah,01h
  25.         mov ch,00111111b
  26.         int 10h
  27.         mov al,[80h]
  28.         cmp al,00h
  29.         jz error1
  30.         mov ah,00h
  31.         mov bx,0081h
  32.         add bx,ax
  33.         xor ax,ax
  34.         mov [bx],ax
  35.         call cls
  36. ;otevri soubor
  37.         mov bx,0081h
  38.         call preskoc_mezery
  39.         mov ah,3dh
  40.         mov al,10100000b
  41.         mov dx,bx
  42.         int 21h       
  43.         jnc pokracuj1
  44.         call error_dos
  45.         jmp error1
  46. pokracuj1:
  47.         mov bx,handle
  48.         mov [bx],ax
  49.         mov bx,ax
  50.         mov ax,4200h
  51.         mov cx,0000h
  52.         mov dx,0000h
  53.         int 21h
  54.         jnc loopa
  55.         call error_dos
  56.         jmp error1
  57. loopa:
  58.         mov cx,dx
  59.         mov dx,ax
  60. loopb:
  61.         push cx
  62.         push dx
  63.         call cls1
  64.         pop dx
  65.         pop cx
  66.         push cx
  67.         push dx
  68.         call tisk
  69. loop1:
  70.         call cti_znak
  71.         pop dx
  72.         pop cx
  73.         cmp al,1bh
  74.         jz esc
  75.         cmp al,44h
  76.         jz f10
  77.         cmp al,48h
  78.         jz nahoru
  79.         cmp al,50h
  80.         jz dolu
  81.         push cx
  82.         push dx
  83.         jmp loop1
  84. nahoru:
  85.         push cx
  86.         push dx
  87.         sub dx,0010h
  88.         jnc nahoru1
  89.         dec cx
  90.         and cx,0111111111111111b
  91. nahoru1:
  92.         jmp pokracuj2
  93. dolu:
  94.         push cx
  95.         push dx
  96.         add dx,0010h
  97.         jnc pokracuj2
  98.         inc cx
  99.         and cx,0111111111111111b
  100. pokracuj2:
  101.         mov bx,handle
  102.         mov bx,[bx]
  103.         mov ax,4200h
  104.         int 21h
  105.         jc pokracuj3
  106.         pop cx
  107.         pop cx
  108.         jmp loopa
  109. pokracuj3:
  110.         pop dx
  111.         pop cx
  112.         jmp loopb
  113.  
  114. esc:
  115. f10:
  116.         mov ax,0003h
  117.         int 10h
  118.         mov al,00h
  119. konec:
  120.         mov ah,01h
  121.         mov cx,0d0eh
  122.         int 10h
  123.         mov ah,4ch
  124.         int 21h
  125.         hlt
  126.  
  127.  
  128. ;v cx|dx odkud se ma tisknout
  129. tisk:
  130.         push dx
  131.         mov ah,02h
  132.         mov bh,00h
  133.         mov dx,0401h
  134.         int 10h
  135.         pop dx
  136.         mov al,10h
  137. tisk1:
  138.         call tisk_radku
  139.         add dx,0010h
  140.         jnc pokracuj_tisk
  141.         inc cx
  142.         and cx,0111111111111111b
  143. pokracuj_tisk:
  144.         dec al
  145.         cmp al,00h
  146.         jnz tisk1
  147.         ret
  148. tisk_radku:
  149.         push ax
  150.         push cx
  151.         push dx
  152.         call tisk_cx_dx
  153.         mov ah,3fh
  154.         mov bx,handle
  155.         mov bx,[bx]
  156.         mov cx,0010h
  157.         mov dx,bufer
  158.         int 21h
  159.         jc tisk_radku1
  160.         mov bx,0000h
  161.         push ax
  162. tisk_radku2:
  163.         cmp ax,0000h
  164.         jz tisk_radku1
  165.         push ax
  166.         push bx
  167.         add bx,bufer
  168.         mov al,[bx]
  169.         call tisk_al
  170.         mov ah,02h
  171.         mov dl,' '
  172.         int 21h
  173.         pop bx
  174.         pop ax
  175.         inc bx
  176.         dec ax
  177.         jmp tisk_radku2        
  178. tisk_radku1:
  179.         mov ah,09h
  180.         mov dx,mezery
  181.         int 21h
  182.         pop ax
  183.         mov bx,0000h
  184. tisk_znaku2:
  185.         cmp ax,0000h
  186.         jz tisk_znaku1
  187.         push ax
  188.         push bx
  189.         add bx,bufer
  190.         mov al,[bx]
  191.         cmp al,20h
  192.         mov ah,02h
  193.         jnc preskoc_tisk_znaku
  194.         mov al,01h
  195. preskoc_tisk_znaku:
  196.         mov dl,al
  197.         int 21h
  198.         pop bx
  199.         pop ax
  200.         inc bx
  201.         dec ax
  202.         jmp tisk_znaku2        
  203. tisk_znaku1:
  204.         mov ah,09h
  205.         mov dx,cr_lf
  206.         int 21h
  207.         pop dx
  208.         pop cx
  209.         pop ax
  210.         ret
  211. mezery:
  212.         db '   $'
  213. cr_lf:
  214.         db 0dh,0ah,' $'
  215. bufer:
  216.         db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  217. tisk_cx_dx:
  218.         mov al,ch
  219.         call tisk_al
  220.         mov al,cl
  221.         call tisk_al
  222.         mov al,dh
  223.         call tisk_al
  224.         mov al,dl
  225.         call tisk_al
  226.         mov al,':'
  227.         call tisk_preskoc
  228.         mov al,' '
  229.         call tisk_preskoc
  230.         ret
  231. tisk_al:
  232.         push ax
  233.         shr al,04h
  234.         call tisk_al1
  235.         pop ax
  236. tisk_al1:
  237.         and al,0fh
  238.         add al,30h
  239.         cmp al,3ah
  240.         jc tisk_preskoc
  241.         add al,07h
  242. tisk_preskoc:
  243.         push dx
  244.         mov dl,al
  245.         mov ah,02h
  246.         int 21h
  247.         pop dx
  248.         ret        
  249. cls:
  250.         mov ax,0600h
  251.         mov bh,b_ho
  252.         mov ch,al
  253.         mov cl,al
  254.         mov dx,024fh
  255.         int 10h
  256.         mov ah,02h
  257.         mov bh,00h
  258.         mov dx,0104h
  259.         int 10h
  260.         mov ah,09h
  261.         mov dx,program
  262.         int 21h
  263.         call cls1
  264.         mov bh,b_na
  265.         mov cx,1800h
  266.         mov dx,184fh
  267.         int 10h
  268.         mov ah,02h
  269.         mov bh,00h
  270.         mov dx,1804h
  271.         int 10h
  272.         mov ah,09h
  273.         mov dx,napoveda
  274.         int 21h
  275.         ret
  276. cls1:
  277.         mov ax,0600h
  278.         mov bh,b_lo
  279.         mov cx,0300h
  280.         mov dx,173ch
  281.         int 10h
  282.         mov bh,b_po
  283.         mov cx,033dh
  284.         mov dx,174fh
  285.         int 10h
  286.         ret
  287. napoveda:
  288.         db 'Ovládání klávesami ',18h,' ',19h,'                                     Konec = Esc$'
  289.  
  290. cti_znak:
  291.         mov ah,08h
  292.         int 21h
  293.         cmp al,00h
  294.         jz cti_znak1
  295.         ret
  296. cti_znak1:
  297.         mov ah,08h
  298.         int 21h
  299.         ret
  300. napoveda_error:
  301.         db 0ah,0dh
  302.         db '  Program HEX  (c) 1994 S&S'
  303.         db 0ah,0dh
  304.         db '    HEX soubor kter∞ chceme prohlíºet'
  305.         db 0ah,0dh
  306.         db '    HEX c:\tools\pokusny.bin'
  307.         db 0ah,0dh,'$'
  308. handle:
  309.         dw 0
  310.  
  311. ;*******************************************************************
  312. ;*  PROGRAM VYP╓µE CHYBOVÉ HL╡µEN╓ DOSU DO KAN╡LU ƒ.2 ERROR       *
  313. ;*                                   *
  314. ;*         chybov∞ kod v registru AL                   *
  315. ;*         CALL ERROR_DOS                       *
  316. ;*                                   *
  317. ;*******************************************************************
  318. ;*      uchovává registry AX,BX,CX,DX,SI,DI,BP,F           *
  319. ;*******************************************************************
  320.  
  321.  
  322. POS_ERROR EQU 59H
  323.  
  324. ERROR_DOS:
  325.       PUSHA
  326.       PUSHF
  327.       PUSH AX
  328.  
  329.         push ax  ;nastaveni modu cinosti graf. adapteru
  330.         mov ax,0003h
  331.         int 10h
  332.         pop ax
  333.  
  334.       MOV DX,NOV_RADKA
  335.       MOV CX,2
  336.       MOV BX,CX
  337.       MOV AH,40H
  338.       INT 21H
  339.       POP AX
  340.       MOV BL,POS_ERROR
  341.       CMP AL,BL
  342.       JC ERROR_PR1
  343.       MOV AL,BL
  344. ERROR_PR1:
  345.       XOR AH,AH
  346.       SHL AX,1
  347.       ADD AX,TAB_ERROR
  348.       MOV BX,AX
  349.       MOV AX,[BX]
  350.       MOV DX,AX
  351.       INC BX
  352.       INC BX
  353.       MOV AX,[BX]
  354.       SUB AX,DX
  355.       MOV CX,AX
  356.       MOV BX,2
  357.       MOV AH,40H
  358.       INT 21H
  359.       MOV DX,NOV_RADKA
  360.       MOV CX,3
  361.       MOV AH,40H
  362.       INT 21H
  363.       POPF
  364.       POPA
  365.       RET
  366.  
  367. NOV_RADKA:
  368.       DB 0AH,0DH,07H
  369.  
  370. TAB_ERROR:
  371.       DW ERROR_OK
  372.       DW ERROR_01
  373.       DW ERROR_02
  374.       DW ERROR_03
  375.       DW ERROR_04
  376.       DW ERROR_05
  377.       DW ERROR_06
  378.       DW ERROR_07
  379.       DW ERROR_08
  380.       DW ERROR_09
  381.       DW ERROR_0A
  382.       DW ERROR_0B
  383.       DW ERROR_0C
  384.       DW ERROR_0D
  385.       DW ERROR_0E
  386.       DW ERROR_0F
  387.       DW ERROR_10
  388.       DW ERROR_11
  389.       DW ERROR_12
  390.       DW ERROR_13
  391.       DW ERROR_14
  392.       DW ERROR_15
  393.       DW ERROR_16
  394.       DW ERROR_17
  395.       DW ERROR_18
  396.       DW ERROR_19
  397.       DW ERROR_1A
  398.       DW ERROR_1B
  399.       DW ERROR_1C
  400.       DW ERROR_1D
  401.       DW ERROR_1E
  402.       DW ERROR_1F
  403.       DW ERROR_20
  404.       DW ERROR_21
  405.       DW ERROR_22
  406.       DW ERROR_23
  407.       DW ERROR_24
  408.       DW ERROR_25
  409.       DW ERROR_26
  410.       DW ERROR_27
  411.       DW ERROR_28
  412.       DW ERROR_29
  413.       DW ERROR_2A
  414.       DW ERROR_2B
  415.       DW ERROR_2C
  416.       DW ERROR_2D
  417.       DW ERROR_2E
  418.       DW ERROR_2F
  419.       DW ERROR_30
  420.       DW ERROR_31
  421.       DW ERROR_32
  422.       DW ERROR_33
  423.       DW ERROR_34
  424.       DW ERROR_35
  425.       DW ERROR_36
  426.       DW ERROR_37
  427.       DW ERROR_38
  428.       DW ERROR_39
  429.       DW ERROR_3A
  430.       DW ERROR_3B
  431.       DW ERROR_3C
  432.       DW ERROR_3D
  433.       DW ERROR_3E
  434.       DW ERROR_3F
  435.       DW ERROR_40
  436.       DW ERROR_41
  437.       DW ERROR_42
  438.       DW ERROR_43
  439.       DW ERROR_44
  440.       DW ERROR_45
  441.       DW ERROR_46
  442.       DW ERROR_47
  443.       DW ERROR_48
  444.       DW ERROR_49
  445.       DW ERROR_4A
  446.       DW ERROR_4B
  447.       DW ERROR_4C
  448.       DW ERROR_4D
  449.       DW ERROR_4E
  450.       DW ERROR_4F
  451.       DW ERROR_50
  452.       DW ERROR_51
  453.       DW ERROR_52
  454.       DW ERROR_53
  455.       DW ERROR_54
  456.       DW ERROR_55
  457.       DW ERROR_56
  458.       DW ERROR_57
  459.       DW ERROR_58
  460.       DW ERROR_NEDEF
  461.       DW ERROR_KONEC
  462.  
  463. ERROR_OK:
  464.       DB 'funkce bylasprávn╪ ukonƒená'
  465. ERROR_01:
  466.       DB 'chybn∞ kód funkce'
  467. ERROR_02:
  468.           DB 'soubor nebyl nalezen'
  469. ERROR_03:
  470.       DB 'cesta nebyla nalezena'
  471. ERROR_04:
  472.       DB 'p²íliτ mnoho otev²en∞ch souborà'
  473. ERROR_05:
  474.       DB 'nedovolen∞ p²ístup'
  475. ERROR_06:
  476.       db 'chybné handle'
  477. ERROR_07:
  478.       db 'zniƒen MCB'
  479. ERROR_08:
  480.       db 'nedostaƒující pam╪£'
  481. ERROR_09:
  482.       db 'chybná adresa bloku pam╪ti'
  483. ERROR_0A:
  484.       db 'chybné prost²edí'
  485. ERROR_0B:
  486.       db 'chybn∞ formát'
  487. ERROR_0C:
  488.       db 'chybn∞ kód p²ístupu'
  489. ERROR_0D:
  490.       db 'chybná data'
  491. ERROR_0E:
  492.       db 'ERROR'
  493. ERROR_0F:
  494.       db 'chybná specifikace jednotky'
  495. ERROR_10:
  496.       db 'nelze zruτit aktuální adresá²'
  497. ERROR_11:
  498.       db 'nejde o stejné za²ízení'
  499. ERROR_12:
  500.       db 'není dalτí odpovídající soubor'
  501. ERROR_13:
  502.       db 'pokus o zápis na disk chrán╪n∞ proti zápisu'
  503. ERROR_14:
  504.       db 'neznám∞ identifikátor ID diskové jednotky'
  505. ERROR_15:
  506.       db 'jednotka není p²ipravena k obsluze poºadavku'
  507. ERROR_16:
  508.       db 'neznám∞ p²íkaz (diskov∞)'
  509. ERROR_17:
  510.       db 'chyba dat ƒten∞ch z disku, neopravitelná CRC'
  511. ERROR_18:
  512.       db 'chybná délka struktury poºadavku p²i diskov∞ch operacích'
  513. ERROR_19:
  514.       db 'chyba p²esunu hlav disku'
  515. ERROR_1A:
  516.       db 'neznám∞ typ diskového média'
  517. ERROR_1B:
  518.       db 'nenalezen sektor na disku'
  519. ERROR_1C:
  520.       db 'konec papíru v tiskárn╪'
  521. ERROR_1D:
  522.       db 'chyba zápisu dat'
  523. ERROR_1E:
  524.       db 'chyba ƒtení dat'
  525. ERROR_1F:
  526.       db 'základní chyba (general failure)'
  527. ERROR_20:
  528.       db 'pokus o p²ístup k souboru, kter∞ nelze sdílet'
  529. ERROR_21:
  530.       db 'pokus o p²ístup k zamƒenému souboru'
  531. ERROR_22:
  532.       db 'neoƒekávaná v∞m╪na disku'
  533. ERROR_23:
  534.       db 'nelze vytvo²it dalτí FCB'
  535. ERROR_24:
  536.       db 'ERROR'
  537. ERROR_25:
  538.       db 'ERROR'
  539. ERROR_26:
  540.       db 'ERROR'
  541. ERROR_27:
  542.       db 'ERROR'
  543. ERROR_28:
  544.       db 'ERROR'
  545. ERROR_29:
  546.       db 'ERROR'
  547. ERROR_2A:
  548.       db 'ERROR'
  549. ERROR_2B:
  550.       db 'ERROR'
  551. ERROR_2C:
  552.       db 'ERROR'
  553. ERROR_2D:
  554.       db 'ERROR'
  555. ERROR_2E:
  556.       db 'ERROR'
  557. ERROR_2F:
  558.       db 'ERROR'
  559. ERROR_30:
  560.       db 'ERROR'
  561. ERROR_31:
  562.       db 'ERROR'
  563. ERROR_32:
  564.       db 'poºadavek sít╪ není podporován'
  565. ERROR_33:
  566.       db 'vzdálen∞ poƒítaƒ není p²ipojen'
  567. ERROR_34:
  568.       db 'duplikace jmen v síti'
  569. ERROR_35:
  570.       db 'nenalezeno ºádné jméno sí£ového stroje'
  571. ERROR_36:
  572.       db 'sí£ není p²ipravena na obsluhu poºadavku'
  573. ERROR_37:
  574.       db 'specifikované za²ízení sít╪ jiº neexistuje'
  575. ERROR_38:
  576.       db 'p²ekroƒen limit p²íkazà sít╪ BIOSu'
  577. ERROR_39:
  578.       db 'hardwarová chyba adaptéru sít╪'
  579. ERROR_3A:
  580.       db 'nekorektní odezva sít╪'
  581. ERROR_3B:
  582.       db 'nespecifikovaná chyba sít╪'
  583. ERROR_3C:
  584.       db 'nekompatibilní vzdálen∞ adaptér sít╪'
  585. ERROR_3D:
  586.       db 'tisková fronta tiskárny sít╪ je plná'
  587. ERROR_3E:
  588.       db 'tisková fronta tiskárny sít╪ je BUSY'
  589. ERROR_3F:
  590.       db 'není dostatek místa pro tiskov∞ soubor'
  591. ERROR_40:
  592.       db 'specifikované sí£ové jméno bylo zruτeno'
  593. ERROR_41:
  594.       db 'nedovolen∞ p²ístup k prost²edkàm sít╪'
  595. ERROR_42:
  596.       db 'nekorektní typ za²ízení sít╪'
  597. ERROR_43:
  598.       db 'sí£ové jméno nenalezeno'
  599. ERROR_44:
  600.       db 'p²ekroƒen limit poƒtu sí£ov∞ch jmen'
  601. ERROR_45:
  602.       db 'p²ekroƒen limit selhání (spojení) BIOSu sít╪'
  603. ERROR_46:
  604.       db 'doƒasné zablokování ƒinnosti sít╪'
  605. ERROR_47:
  606.       db 'poºadavek sí£ové ƒinnosti nebyl akceptován'
  607. ERROR_48:
  608.       db 'tisk nebo p²esm╪rování disku je  zablokován'
  609. ERROR_49:
  610.       db 'ERROR'
  611. ERROR_4A:
  612.       db 'ERROR'
  613. ERROR_4B:
  614.       db 'ERROR'
  615. ERROR_4C:
  616.       db 'ERROR'
  617. ERROR_4D:
  618.       db 'ERROR'
  619. ERROR_4E:
  620.       db 'ERROR'
  621. ERROR_4F:
  622.       db 'ERROR'
  623. ERROR_50:
  624.       db 'soubor jiº existuje'
  625. ERROR_51:
  626.       db 'ERROR'
  627. ERROR_52:
  628.       db 'nelze provést poºadovanou ƒinnost'
  629. ERROR_53:
  630.       db 'chyba obsluhy kritické chyby (p²eruτení 24h)'
  631. ERROR_54:
  632.       db 'mimo poºadovanou strukturu'
  633. ERROR_55:
  634.       db 'poºadované za²ízení jiº bylo p²id╪leno'
  635. ERROR_56:
  636.       db 'chybné heslo'
  637. ERROR_57:
  638.       db 'chybn∞ parametr'
  639. ERROR_58:
  640.       db 'chyba p²enosu dat v síti'
  641. ERROR_NEDEF:
  642.       db 'ERROR'
  643. ERROR_KONEC:
  644. ;*************************************************************************
  645. ;     KONEC
  646. ;*************************************************************************
  647.  
  648. preskoc_mezery:
  649.         mov al,[bx]
  650.         cmp al,' '
  651.         jz mezera
  652.         ret
  653. mezera:
  654.         inc bx
  655.         jmp preskoc_mezery
  656.