Advertisement
utroz

DiskPatch Alpha 0.1

Jul 6th, 2011
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; ------------------------
  2. ; DiskPatch Alpha 0.1
  3. ; @author #Utroz(RSC)#
  4. ; Visit: www.Gcoders.info
  5. ; ------------------------
  6. ; File: MAIN.ASM
  7.  
  8. CGROUP  GROUP   CODE__SEG   ;Group of two segments.
  9.     ASSUME  CS: CGROUP 
  10.  
  11. CODE__SEG   SEGMENT PUBLIC
  12.     ORG 100h   
  13.  
  14.     EXTRN @DEC__PRINT:NEAR
  15.  
  16. PUBLIC @MAIN
  17. @MAIN   PROC NEAR
  18.         MOV DX,12345    ;Hex:3039h
  19.     CALL @DEC__PRINT
  20.     INT 20h     ;Return to DOS(Exit System).
  21.  
  22. @MAIN   ENDP
  23.  
  24. CODE__SEG   ENDS
  25.     END @MAIN
  26.  
  27. ; ------------------------
  28. ; DiskPatch Alpha 0.1
  29. ; @author #Utroz(RSC)#
  30. ; Visit: www.Gcoders.info
  31. ; ------------------------
  32. ; File: DISP__SET.ASM
  33.  
  34. CGROUP  GROUP   CODE__SEG, DATA__SEG    ;Group of two segments.
  35.     ASSUME  CS: CGROUP, DS:CGROUP  
  36.  
  37. CODE__SEG   SEGMENT PUBLIC
  38.     ORG 100h   
  39.  
  40.     EXTERN  @HEX__PRINT: NEAR
  41.     EXTERN  @PRINT: NEAR   
  42.     EXTERN  @BEEP__SOUND: NEAR
  43.  
  44. @DISP__LINE PROC NEAR
  45.     XOR BX,BX   ;BX is zero.
  46.     MOV CX,16   ;Copy 16 bytes 
  47.  
  48. LOOP_HEX:
  49.  
  50.     MOV DL,SETOR[BX]    ;Catch 1 byte.
  51.     CALL @HEX__PRINT    ;Copy a byte in hex.
  52.     MOV DL,' '      ;Space in prints.
  53.     CALL @PRINT
  54.     INC BX
  55.     LOOP    LOOP_HEX
  56.     CALL    @BEEP_SOUND
  57.     INT 20h
  58.  
  59. @DISP__LINE ENDP   
  60.  
  61. CODE__SEG   ENDS
  62.  
  63. DATA__SEG   SEGMENT PUBLIC
  64.     PUBLIC SETOR
  65. SETOR   DB  10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h  ;Define bytes on memory.
  66.     DB  18h, 19h, 1Ah, 1Bh, 1Ch, 1Dh, 1Eh, 1Fh
  67.  
  68. DATA__SEG   ENDS
  69.     END @DISP__LINE
  70.  
  71. ; ------------------------
  72. ; DiskPatch Alpha 0.1
  73. ; @author #Utroz(RSC)#
  74. ; Visit: www.Gcoders.info
  75. ; ------------------------
  76. ; File: IOVIDEO.ASM
  77.  
  78. CGROUP  GROUP   CODE__SEG   ;Group of two segments.
  79.     ASSUME  CS: CGROUP 
  80.  
  81. CODE__SEG        SEGMENT PUBLIC
  82.  
  83. @SIGNAL PROC NEAR
  84.     PUSH DX
  85.     CMP DX,8000h    ;IF(DX <=  7FFFh)
  86.     JA NEGATIVE ;GOTO NEGATIVE
  87.     MOV DL,2Bh  ;POSITIVE
  88.     JMP Short PRINT
  89.  
  90. NEGATIVE:
  91.     MOV DL,2Dh
  92.  
  93. PRINT: 
  94.     CALL @PRINT
  95.     POP DX
  96.     RET
  97.  
  98. @SIGNAL ENDP
  99.  
  100. ;------ DECIMAL ----
  101. PUBLIC @DEC__PRINT
  102.  
  103. @DEC__PRINT PROC NEAR   ;(IMP__DECIMAL)
  104.     PUSH AX     ;Save used registers.
  105.     PUSH CX
  106.     PUSH DX
  107.     PUSH SI
  108.  
  109.     CALL @SIGNAL    ;Call signal function.
  110.     MOV AX,DX   ;Move hex to AX.
  111.     MOV SI,10   ;Divisor by 10 using SI.
  112.     XOR CX,CX   ;Stack digits count.   
  113.  
  114. NOT__ZERO:
  115.     XOR DX,DX   ;N word start on zero.
  116.     DIV SI      ;Div value on AX for SI: n/10 / DX = mod.
  117.     PUSH DX     ;Put DX in stack.
  118.     INC CX      ;Increments a CX.
  119.  
  120.     OR AX,AX    ;IF(AX != 0)
  121.     JNZ NOT__ZERO   ;GOTO NOT__ZERO
  122.  
  123. PRINT__LOOP:
  124.     POP DX      ;Take digits in reverse.
  125.     CALL @HEX__CONVERT ;Send to print.
  126.     LOOP PRINT__LOOP   
  127.  
  128. END__DEC:
  129.     POP SI
  130.     POP DX
  131.     POP CX
  132.     POP AX
  133.     RET
  134.  
  135. @DEC__PRINT ENDP
  136.  
  137. ;------ HEXDECIMAL --
  138. PUBLIC @HEX__PRINT
  139.  
  140. @HEX__PRINT PROC NEAR   ;(IMP__HEXA)
  141.     PUSH CX     ;Save registers
  142.     PUSH DX    
  143.     MOV DH, DL  ;Copy low byte to high byte.
  144.     MOV CL,04h
  145.  
  146.     SHR DL,CL
  147.     CALL @HEX__CONVERT ;First digit.
  148.  
  149.     MOV DL, DH
  150.     AND DL, 0Fh
  151.  
  152.     CALL @HEX__CONVERT ;Second digit.
  153.     POP DX     
  154.     POP CX
  155.     RET
  156.  
  157. @HEX__PRINT ENDP
  158.  
  159.  
  160. PUBLIC @HEX__CONVERT
  161. @HEX__CONVERT   PROC NEAR   ;(IMP__DIG__HEXA)
  162.     PUSH DX
  163.     CMP DL,10   ; !(DL > 10d)
  164.     JAE HEX     ;IF no
  165.     ADD DL,"0"  ;ADD DL,30 - IF yes(DEC)
  166.     JMP Short PRINT_CHAR
  167.  
  168.     HEX:    ;(LETRA__HEXA)
  169.         ADD DL,"A"-10 ;ADD DL,37
  170.  
  171.     PRINT_CHAR: ;(IMP__DIGITO)
  172.         CALL @PRINT
  173.         POP DX
  174.         RET    
  175.  
  176. @HEX__CONVERT   ENDP
  177.  
  178.  
  179. PUBLIC @PRINT  
  180. @PRINT  PROC NEAR   ;(IMP__CAR)
  181.     PUSH AX
  182.     MOV AH, 02h ;Function 02 a INT 21h.
  183.     INT 21h
  184.     POP AX
  185.     RET
  186.  
  187. @PRINT  ENDP
  188.  
  189. PUBLIC @BEEP_SOUND
  190. @BEEP_SOUND PROC NEAR
  191.     PUSH DX
  192.     PUSH AX
  193.     MOV AH, 02h
  194.     MOV DL,7    ;Play a Beep Sound on print char.
  195.     INT 21h
  196.     POP AX
  197.     POP DX
  198.     RET
  199.  
  200. @BEEP_SOUND ENDP   
  201.  
  202. CODE__SEG   ENDS
  203. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement