;--- CONSTANTS -----------------------------------------------; ;--- DATA ----------------------------------------------------; SEGMENT .data ;--- CODE ----------------------------------------------------; SEGMENT .text ;;--------------------------------------------; ;; Show an 8-bit unsigned value onscreen, as ;; an integer in hexadecimal. ;; ah: attributes -> GARBAGE ;; al: * -> GARBAGE ;; bl: number to display -> GARBAGE ;; di: location on screen -> INCREMENTED ;; cl: * -> GARBAGE DisplayByte: mov al, bl mov cl, 4 shr al, cl call NybbleToHex mov [es:di], ax inc di inc di mov al, bl call NybbleToHex mov [es:di], ax inc di inc di ret ;;--------------------------------------------; ;; Show a 16-bit unsigned value onscreen, as ;; an integer in hexadecimal. ;; ah: attributes -> GARBAGE ;; al: * -> GARBAGE ;; bx: number to display -> GARBAGE ;; di: location on screen -> INCREMENTED ;; cl: * -> GARBAGE ;; dx: * -> GARBAGE DisplayShort: mov dx, bx mov bl, bh call DisplayByte mov bx, dx jmp DisplayByte DebugIt: mov es, [vbase] xor di, di mov word [es:di], 00301h jmp DebugIt ;;--------------------------------------------; ;; Draw a solid bar on the screen. ;; ah: attributes -> GARBAGE ;; al: character -> GARBAGE ;; di: location on screen -> INCREMENTED ;; cx: length of bar -> GARBAGE DrawBar: mov [es:di], ax inc di inc di dec cx jnz DrawBar ret ;--- END -----------------------------------------------------;