Autoboot na Beta
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








.