O tal CAPS-LOCK do HOTBIT

HB8000_capslock

A tecla CAPS-LOCK sempre foi um ponto de discórdia entre usuários brasileiros de MSX, não pela tecla em si mas pelo fato do HOTBIT, com seu jeito de brinquedo, ter um led que indicava seu estado enquanto que o Expert, com seu teclado destacado, não! 😀

Talvez para enfatizar a existência do led o pessoal da Sharp EPCOM resolveu QUE O CAPS-LOCK DEVERIA SER TRAVADO APÓS O BOOT! Algo que eu, como usuário de HOTBIT, sempre detestei mas sempre relevei pois bastava apertar «CAPS» para resolver.

Mas como estou velho e (cada vez mais) preguiçoso e meu HOTBIT ainda não usa uma versão corrigida (ainda) eu resolvi “quebrar o galho” fazendo um programinha para colocar no “AUTOEXEC.BAT” — ou “REBOOT.BAT” no caso do MSX-DOS 2.

Isto aqui foi o que fiz, o “capsoff”:


;
; "caps off"
; – Destrava o CAPS-LOCK do teclado do MSX
;
; (C)2015 Giovanni dos Reis Nunes <giovanni@athena>
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
; MA 02110-1301, USA.
;
BOOT: equ 0x00
CALSLT: equ 0x001C
CAPST: equ 0xFCAB
CHGCAP: equ 0x0132
MSXDOS: equ 0x0005
PUTSTR: equ 0x09
SLTROM: equ 0xFCC1
;
; Macro para chamar as rotinas da BIOS a partir da BDOS
;
MACRO __bios,BIOS
ld iy,(SLTROM1)
ld ix,BIOS
call CALSLT
ENDM
;
; Início do programa
;
org 0x100 ; endereço inicial dos executáveis
;
; Altera o estado do CAPS-LOCK no teclado e também do seu led.
;
xor a ; A=0
ld (CAPST),a ; altero o status do CAPS-LOCK
inc a ; A=A+1
__bios CHGCAP ; chamo a rotina que altera o estado
; do led de CAPS-LOCK, isto é se o seu
; MSX tiver um led. Né Expert? ^_^
;
; Notifica a liberação do CAPS-LOCK na tela
;
ld c,PUTSTR ; seleciono a rotina para escrever
ld de,MESG0 ; strings na tela e aponto o endereço
; da mesma.
call MSXDOS ; chamo a rotina da BDOS
ld c,BOOT ; retorno de forma educada para o
call MSXDOS ; MSX-DOS, i.e., uma "graceful dead")
MESG0:
db "CAPS-LOCK released!" ; mensagem de liberação do CAPS-LOCK
db 13,10,"$" ; com sua quebra de linha, o $ indica o
; fim da string.
;
; Fim do programa (MSX Rulez)
;

view raw

capsoff.asm

hosted with ❤ by GitHub

O programa pode ser facilmente montado com o PASMO, mas acredito que funciona com qualquer outro baseado na sintaxe do M80.

$ pasmo -v -d --bin capsoff.asm capsoff.com

No final será produzido um arquivo com 51 bytes:

$ hexdump  -v -e '/1 "%02X "' capsoff.com 
AF 32 AB FC 3C FD 2A C0 FC DD 21 32 01 CD 1C 00 0E 09 11 1D 01 CD 05 00 0E 00 CD 05 00 43 41 50 53 2D 4C 4F 43 4B 20 72 65 6C 65 61 73 65 64 21 0D 0A 24

E se quiser você pode até “digitar” esta sequência em hexadecimal para produzir o executável. 🙂

1 pensou em “O tal CAPS-LOCK do HOTBIT

Os comentários estão fechados.