=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
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

Reply via email to