home *** CD-ROM | disk | FTP | other *** search
- ;---------------------------------------------------------------
- ; RULER -- Displays a "1234567890"-style ruler on-screen
- ; Last update 11/25/91
- ;
- ; Caller must pass:
- ; In VidAddress: The address of the start of the video buffer
- ; In Length: The length of the ruler to be displayed
- ; In ScreenW: The width of the current screen (usually 80)
- ; In ScreenY: The line of the screen where the ruler is
- ; to be displayed (0-24)
- ; In ScreenX: The row of the screen where the ruler should
- ; start (0-79)
- ; Action: Displays an ASCII ruler at ScreenX,ScreenY.
- ;---------------------------------------------------------------
- Ruler MACRO VidAddress,Length,ScreenW,ScreenX,ScreenY
- les DI,DWORD PTR VidAddress
- add DI,(ScreenY*ScreenW) ; Calculate Y offset into vidbuf
- add DI,ScreenX ; Add X offset into vidbuf
- mov CX,Length ; CX monitors the ruler length
- mov AH,07 ; Attribute 7 is "normal" text
- mov AL,'1' ; Start with digit "1"
-
- DoChar: stosw ; Note that there's no REP prefix!
- add AL,'1' ; Bump the character value in AL up by 1
- aaa ; Adjust AX to make this a BCD addition
- add AL,'0' ; Basically, put binary 3 in AL's high nybble
- mov AH,07 ; Make sure our attribute is still 7
- loop DoChar ; Go back & do another char until BL goes to 0
-
- ENDM