I mean, using uppercase in the source file (everywhere possible... :P). Btw, the Upper Case feature from Qeditor (from the 64 package) works just fine Hutch :icon14:!
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; THIS FILE WAS STARTED BY FELIPE AT 2018-05-17.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;===============================================
OPTION CASEMAP:NONE
INCLUDE \MASM32\INCLUDE64\WIN64.INC
INCLUDE \MASM32\INCLUDE64\KERNEL32.INC
INCLUDELIB \MASM32\LIB64\KERNEL32.LIB
;===============================================
;=====================================================
_DATA SEGMENT PARA 'DATA'
CONSOLE_TITLE BYTE 'USING THE CONSOLE CAN BE FUN!',0
THE_MSG BYTE 'YES! IS TRUE!'
INBUFF BYTE 256 DUP(' ')
CHRSWRIT DWORD ?
CHRSREAD DWORD ?
_DATA ENDS
;=====================================================
;================================================================================
_TEXT SEGMENT PARA 'CODE'
START PROC
SUB RSP,28H
CALL AllocConsole
MOV RCX,GENERIC_READ OR GENERIC_WRITE
MOV RDX,FILE_SHARE_READ OR FILE_SHARE_WRITE
MOV R8,NULL
MOV R9,CONSOLE_TEXTMODE_BUFFER
MOV DWORD PTR[RSP+20H],NULL
CALL CreateConsoleScreenBuffer
MOV R15,RAX ; STDOUT.
LEA RCX,CONSOLE_TITLE
CALL SetConsoleTitle
MOV RCX,0000000000500019H ; 80 COLUMNS AND 25 ROWS.
MOV RDX,R15 ; STDOUT.
CALL SetConsoleScreenBufferSize
MOV RCX,R15 ; STDOUT.
MOV RDX,FOREGROUND_BLUE OR FOREGROUND_GREEN OR BACKGROUND_BLUE
CALL SetConsoleTextAttribute
MOV RCX,R15 ; STDOUT.
LEA RDX,THE_MSG
MOV R8,SIZEOF THE_MSG
LEA R9,CHRSWRIT
MOV DWORD PTR[RSP+20H],NULL
CALL WriteConsole
MOV RCX,R15 ; STDOUT.
CALL SetConsoleActiveScreenBuffer
MOV RCX,STD_INPUT_HANDLE
CALL GetStdHandle
MOV RCX,RAX ; STDIN.
LEA RDX,INBUFF
MOV R8,SIZEOF INBUFF
LEA R9,CHRSREAD
MOV DWORD PTR[RSP+20H],NULL
CALL ReadConsole
MOV RCX,R15 ; STDOUT.
CALL CloseHandle ; THE END OF THE CONSOLE SCREEN BUFFER.
CALL FreeConsole
XOR RCX,RCX
CALL ExitProcess
START ENDP
_TEXT ENDS
;=====================================================================================
END
.exe attached.
What is funny (i didn't knew that :redface:) is that you can write, then press esc key, then write again, then press esc key, etc...Esc key here deletes what you type... :shock:
Program terminates closing the window or by pressing enter key :idea:.
Quote from: felipe on May 28, 2018, 10:32:28 AM
MOV RCX,0000000000500019H ; 80 COLUMNS AND 25 ROWS.
::) There's an error here...I forgotten the little endianness... This screen buffer size is actually 25 columns x 80 rows... :redface:
:idea: As you can see here:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; THIS FILE WAS STARTED BY FELIPE AT 2018-05-17.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;===============================================
OPTION CASEMAP:NONE
INCLUDE \MASM32\INCLUDE64\WIN64.INC
INCLUDE \MASM32\INCLUDE64\KERNEL32.INC
INCLUDELIB \MASM32\LIB64\KERNEL32.LIB
;===============================================
;=====================================================
_DATA SEGMENT PARA 'DATA'
CONSOLE_TITLE BYTE 'USING THE CONSOLE CAN BE FUN!',0
THE_MSG BYTE 'YES! IS TRUE!'
INBUFF BYTE 256 DUP(' ')
CHRSWRIT DWORD ?
CHRSREAD DWORD ?
_DATA ENDS
;=====================================================
;================================================================================
_TEXT SEGMENT PARA 'CODE'
START PROC
SUB RSP,28H
CALL AllocConsole
MOV RCX,GENERIC_READ OR GENERIC_WRITE
MOV RDX,FILE_SHARE_READ OR FILE_SHARE_WRITE
MOV R8,NULL
MOV R9,CONSOLE_TEXTMODE_BUFFER
MOV DWORD PTR[RSP+20H],NULL
CALL CreateConsoleScreenBuffer
MOV R15,RAX ; STDOUT.
LEA RCX,CONSOLE_TITLE
CALL SetConsoleTitle
MOV RCX,0000000000500019H ; 80 COLUMNS AND 25 ROWS. (**WRONG, MUST BE 00190050H**)
MOV RDX,R15 ; STDOUT.
CALL SetConsoleScreenBufferSize
MOV RCX,R15 ; STDOUT.
MOV RDX,FOREGROUND_BLUE OR FOREGROUND_GREEN OR BACKGROUND_BLUE
CALL SetConsoleTextAttribute
MOV RCX,R15 ; STDOUT.
LEA RDX,THE_MSG
MOV R8,SIZEOF THE_MSG
LEA R9,CHRSWRIT
MOV DWORD PTR[RSP+20H],NULL
CALL WriteConsole
MOV RCX,R15 ; STDOUT.
CALL SetConsoleActiveScreenBuffer
MOV RCX,STD_INPUT_HANDLE
CALL GetStdHandle
MOV R14,RAX
MOV RCX,RAX ; STDIN.
LEA RDX,INBUFF
MOV R8,SIZEOF INBUFF
LEA R9,CHRSREAD
MOV DWORD PTR[RSP+20H],NULL
CALL ReadConsole
MOV RCX,R15 ; STDOUT.
MOV RDX,000000000000000AH ; GO TO COLUMN 10 IN ROW 0 (THIS IS CORRECT).
CALL SetConsoleCursorPosition
MOV RCX,R15 ; STDOUT.
LEA RDX,THE_MSG
MOV R8,SIZEOF THE_MSG
LEA R9,CHRSWRIT
MOV DWORD PTR[RSP+20H],NULL
CALL WriteConsole
MOV RCX,R14 ; STDIN.
LEA RDX,INBUFF
MOV R8,SIZEOF INBUFF
LEA R9,CHRSREAD
MOV DWORD PTR[RSP+20H],NULL
CALL ReadConsole
MOV RCX,R15 ; STDOUT.
CALL CloseHandle ; THE END OF THE CONSOLE SCREEN BUFFER.
CALL FreeConsole
XOR RCX,RCX
CALL ExitProcess
START ENDP
_TEXT ENDS
;=====================================================================================
END