Eletrônica
Autoboot na Beta
Tenho dedicado meu tempo livre no disassembly da ROM da interface da Cheyenne (CAS) e percebi uma coisa.
Não chega a ser um ovo de páscoa (Easter egg), mas uma simplificação no programa. A interface da CAS é muito semelhante à Beta 48, que usa uma ROM de 8 KB ao invés de 16 KB da CBI. Por causa disto, percebe-se uma certa otimização para economia de espaço de memória.
A Beta 48 possui o recurso autoboot que roda automaticamente um programa BASIC gravado com nome "boot" no disco, se este estiver no
drive A quando o DOS é inicializado. Também é sabido que os comandos LOAD e RUN do DOS, quando são digitados sem argumento (
string com nome de arquivo), tenta rodar o programa "boot". A surpresa é que os comandos MERGE, PEEK e POKE também tem o mesmo efeito: digitado sem nenhum parâmetro, tenta carregar o "boot".
;---------------------------------------------------------------------
; Subroutine: LOAD ARGuments
; Address: #29A9/10665
; Fetch arguments for LOAD, PEEK, POKE, RUN and MERGE statements.
; Called by: FILELOAD, DS_MERGE.
;---------------------------------------------------------------------
LOADARG
;sub_29a9h
call NOARG ; Check argument and if none is found, execute
jp z,RUNBOOT ;{l220dh} 'RUN "boot"' statement.
Isto ocorre porque estes cinco comandos usam a mesma sub-rotina para analisar os argumentos e, não encontrando nenhum, pula para a rotina RUNBOOT:
;-----------------------------------------------------------------------
; Routine: RUN BOOT (#220D/8717)
; Put 'RUN "boot"' statement into line editor and execute it.
; Entry point used by LOADARG.
;-----------------------------------------------------------------------RUNBOOT
;l220dh
ld hl,(E_LINE) ; HL is pointer for line editor memory.
ld a,#FE ; Set #FE flag to supress any error message
ld (CLR_WSP),a ;
being
printed on screen.
ld (hl),#F7 ; 'RUN', a BASIC token.
inc hl
ld (hl),#22 ; '"'.
inc hl
ld (hl),#62 ; 'b'.
inc hl
ld (hl),#6F ; 'o'.
inc hl
ld (hl),#6F ; 'o'.
inc hl
ld (hl),#74 ; 't'.
inc hl
ld (hl),#22 ; '"'.
inc hl
ld (K_CUR),hl ; Place editor cursor after last quotation
;mark.
ld (hl),#0D ; Place 'Enter' there.
inc hl
ld (hl),#80 ; Place end separator in the next position.
inc hl
ld (WORKSP),hl ; Adjust memory separator system variables
ld (STKBOT),hl ;
to the end
of line editor.
ld (STKEND),hl
set 3,(iy+1) ; Set bit 3 of FLAGS to select L type cursor.
jr DOS_CLI04 ;{l227eh} Jump to interpret and execute command
;line.
Pode-se dizer que a checagem de sintaxe da Beta/CAS não é tão estrita e restritiva como da Sinclair BASIC.
loading...
-
Dica Tv Electronia 20nt Chassis 11ak30
Defeito--Não liga. Led vermelho aceso. Ao tentar ligar, o led passa a verde mas, no mesmo instante, o led volta para vermelho e a fonte da tv não arma.Valores ...
-
Dica Tvs Panasonic Tx-32pk25f Chassis Euro-4h
Defeito--Imagem a preto e branco ou com as cores alteradas com manchas como se o TRC estivesse magnetizado. Foi regravada a eeprom mas não resultou. Em ...
-
Dica Tvs Panasonic Tx-25xd3e Chassis Euro 2m
Defeito--Este tv estava em protecção, trazia o transístor de saída de linhas (2SD1577- LB) em curto. Depois de o substituir, o tv arrancou apresentando o seguinte ...
-
Outra Rotina De Detecção De Ram 48/128k
Eu publiquei nesta postagem, uma rotina que faz a detecção no TK90X da configuração com ou sem a TKMEM-128 (128 ou 48K de RAM). Modifiquei-a e consegui fazer com que ficasse menor ainda (25 bytes). Esta rotina testa se ocorre chaveamento entre...
-
Thundercats V. 2 Para Basic 128
Mal acabei de lançar uma adaptação do Thundercats para Beta e TKMEM-128 e estou com a versão 2. A versão anterior tinha um problema: não consegue carregar a partir do BASIC 128, portanto tinha que dar um 'USR 0' antes. Na versão 2 não...
Eletrônica