=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Remitente: Steve Nickolas <usots...@buric.co>
Destinatario: "Bitácora de Javier Gutiérrez Chamorro (Gu\\" <"Bitácora de
Javier Gutiérrez Chamorro (Gu\\">
Fecha: miércoles, 14 de septiembre de 2022, 14:42:02
Asunto: [Freedos-devel] CLS reimplementation (Re: VERIFY reimplementation)
Archivos: <none>
--====----====----====----====----====----====----====----====----====----===--
On Wed, 14 Sep 2022, Bitácora de Javier Gutiérrez Chamorro (Guti) wrote:
> Dear Jim, There is no practical purpose on my mind, just the challenge > of
> rapidly and efficiently convert it. As you said, both CLS and VERIFY > are
> internal commands.
> What surprised me about your ANSI fallback is that DOSBox, MS-DOS and >
> DR-DOS already work it that way, but not the command console in Windows > 11.
> It seems that with time we are losing capabilities instead of > gaining.
> In fact any argument passed to CLS will trigger the help screen no > matter
> if it is -h, /? or whatever. It was simply silly to check for it, > since CLS
> should not expect any argument. BTW, your implementation does > the same,
> checking argc > 1 which is smart too.
> At least in your 2.01 and 2.1 versions there is no possibility of > changing
> colors, maybe they were lost in previous versions. But as you > said, this
> does not matter, just a curiosity. Kind regards.
I myself only implemented cls at the same level as MS-DOS, and the most basic
cls looks something like this (NASM):
; Copyright 2001, 2002, 2003, 2022 S. V. Nickolas.
;
; Redistribution in whole or in part, with or without modification, is
; hereby permitted without restriction. This software is provided "as is"
; and all warranties, express or implied, are hereby disclaimed.
cpu 8086
org 0x0100
entry: mov ax, 0x4400
mov bx, 1 ; stdout
int 0x21
jc .2
test dx, 0x0010 ; is CON:
jz .2
mov byte [maxrow], 24
mov ah, 0x12 ; do we have an EGA?
mov bx, 0xFF10
mov cx, 0xFFFF
int 0x10
cmp cx, 0xFFFF ; unchanged = MDA or CGA
je .1 ; = always 25 lines
mov ax, 0x0040 ; otherwise, lines-1 is stored at
push es ; 0040:0084
mov es, ax
mov ah, [es:0x0084]
pop es
mov [maxrow], ah
.1: mov ah, 0x0F ; this, OTOH, works on anything
int 0x10
dec ah
mov [maxcol], ah
mov ax, 0x0600 ; method used by MS-DOS COMMAND.COM
mov bh, 0x07
xor cx, cx
mov dx, [maxcol] ; pulls in maxrow also
push bp ; BUG WORKAROUND
int 0x10
pop bp
xor dx, dx
mov ah, 0x02
xor bh, bh
int 0x10
jmp short .3
.2: mov dx, eansi
mov ah, 0x09
int 0x21
.3: mov ax, 0x4C00
int 0x21 ; EXIT CODE 0
maxcol: db 79 ; Must be in this order
maxrow: db 24
eansi: db 27, "[2J$"
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Like the idea of using the scroll zero lines instead of my method of changing
video mode.
_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel