RELATÓRIO BETA (BetaDisc48 ZXSpectrum)
RELATÓRIO BETA (BetaDisc48 ZXSpectrum)
RELATÓRIO BETA (BetaDisc48 ZXSpectrum)
br)
I GENERALIDADES =================
1 - MAPA DE MEMRIA GENERALIZADO E AS MEMRIAS DA IDS2001 ne DD...DD NO IMPLEMENTADA NO TK90X DD...DD+1-16K DD...DD-16K DD...DD+1-32K HH...HH HH...HH+1-16K HH...HH HH...HH+1-32K
. . .
73.327 69.632 69.631 65.536 65.535
. . .
BLOCO 5 16 KBytes RAM BLOCO 4 16 KBytes RAM BLOCO 3 16 KBytes RAM BLOCO 2 16 KBytes RAM BLOCO 1 16 KBytes RAM
. . .
11FFF 11000 10FFF 10000 FFFF C000 BFFF 8000 7FFF
4000 MEMRIAS DA IDS2001ne 3FFF 16.383d 3FFF BLOCO 0.1 BLOCO 0 16 KBytes 16 KBytes (ROM-DOS na ROM-BASIC BETA) 00000 0000 00000d 0000 Figura 1 - Mapa de memria generalizado e as memrias da IDS2001ne. Os quatro primeiros blocos existem
fisicamente no TK90X e seus endereos tm uma correspondncia biunvoca com os endereos das pginas de memria do Z80. O Bloco 0.1 acrescentado com a incluso da IDS2001ne e o circuito chaveia a pgina 0 do Z80 entre os Blocos 0 e 0.1. Os Blocos de 4 a Bn representam genericamente possveis ampliaes de memria fsica, como por exemplo os Spectrum 128 e Spectrum +3, nos quais se implementou circuitos para que as quatros pginas do Z80 sejam chaveadas em 12 blocos de memria fsica.
2 DEFINIES E CONVENES: mbito deste relatrio: Em princpio, as definies e terminologias usadas a seguir so aplicveis somente aos relatrios e outros documentos elaborados pela Snchron. O sentido dos termos podem estar de acordo com o uso corrente ou no, mas todo esforo foi feito para que refletissem exatamente o sentido j consagrado no meio tcnico. Bases numricas: Todos os nmeros neste relatrio esto na base dez exceto quando especificado ao contrrio. Ex: 123o (octal), 123d (decimal), 0101b (binrio), 1234h (hexadecimal). Os nmeros representados em decimal no tero indicador. Ex: 1234 um decimal. Memria fsica: Toda memria contida em circuitos integrados. Memria primria: Memria fsica instalada na motherboard do TK90X. Os 64 K bytes do TK90X so uma memria primria. Bloco: 16 K bytes contnuos e lineares de memria fsica. Vrios blocos podem ser concatenados para formar um banco de memria fsica, por exemplo, no Spectrum 128K existem 12 blocos, perfazendo um total de 192 KB de memrias RAM e ROM. Pgina: Faixa de 16 K bytes contnuos e lineares dentro da qual o microprocessador pode gerar endereos. O Z80 pode enderear numa faixa de endereos lineares de 0 a 65.535. Diz-se, ento, para efeitos desse relatrio, que sua capacidade de endereamento de 4 pginas. J o 8088 tem capacidade para enderear 64 pginas. Paginar um bloco: No TK90X, um modo comum do sistema operacional (SO) vencer os limites de endereamento do seu microprocessador fazendo paginao em um conjunto de blocos com mais de 64 KB de memria. Para isso o SO manipula um circuito eletrnico do hardware para desviar a pgina endereada pelo microprocessador para um dos n blocos de modo que o processamento no sofra descontinuidade nem perdas de informaes. No caso objeto desse relatrio, no qual se considera a IDS 2001ne nectada, temos normalmente o TK90X operando sobre cinco blocos de memrias, quatro do prprio micro e um da interface, totalizando 5 x 16K = 80K total de memria fsica. Portanto, um circuito eletrnico ter a incumbncia de chavear ou paginar a ROM BETA no lugar da ROM BASIC, e vice-versa, conforme seja adequado em cada momento. obvio que as memrias fsicas esto presas na placa e, portanto, no iro se mover para ocupar uma o lugar da outra. Na verdade a pgina 0 (veja figura 1) do Z80 que desviada pelo circuito, a comando do SO, para ser acessada no bloco fsico correto. Neste caso a ROM BETA no interior da interface. Banco de memrias: Toda a memria de um sistema, por exemplo, o banco de memria do TK90X de 64 K bytes (16 K bytes de ROM e 48 K bytes de RAM) e da IDS2001ne 16 K bytes de ROM. Banco de memria RAM: Toda a RAM de um sistema. Banco de memria ROM: Toda a ROM de um sistema. _ABCD: Sinal qualquer ativo em nvel lgico zero. ABCD: Sinal qualquer ativo em nvel lgico um. SODIS BETA: Sistema Operacional de Disco da BETA. PONTE: Faixa de endereos de memria na pgina 0 (no caso da IDS 2001ne, os endereos de 3C00h a 3CFFh) que, atravs de mecanismos de hardware de paginao de memrias fsicas, permite ao SODIS BETA acessar rotinas na ROM BASIC e at mesmo na RAM do micro. Quando o Z80 acessa a pgina 0 nesta faixa, estando o SODIS BETA no MODO PONTE e com a ponte no bloqueada, a ROM BETA que estar visvel ao Z80. Rotinas a contidas preparam o ambiente para o acesso ROM BASIC e posterior retorno ao ponto original do programa. Se o Z80 enderear fora dessa faixa, mesmo que seja na
pgina 0 e respeitadas as demais condies, a ROM BASIC ou a RAM que estar visvel. Neste caso isso ocorre nos acessos entre 0000h a 3BFFh, entre 3D00h a 3FFFh e de 4000h a FFFFh. JET SKI: Faixa de endereos de memria de 0000h a 3FFFh que, atravs de mecanismos de hardware de paginao de memrias fsicas, permite ao SODIS BETA acessar rotinas em toda a extenso de sua prpria memria. Neste caso est ativado o MODO JET SKI e somente ROM BETA estar visvel ao Z80 na pgina 0. O fluxograma da figura 2 detalha melhor o que foi considerado paras os modos JET SKI e PONTE. 3 FLUXOGRAMA DO FUNCIONAMENTO GERAL DA IDS2001ne
Trata apenas da lgica do circuito eltrico que compatibiliza os demais circuitos (impressora e FDC) s caractersticas do hardware do TK90X.
Figura 4 Circuito de paginao ao ligar e ao resetar o micro. A - NO POWER ON (AO LIGAR O MICRO): 1 Se a IDS2001ne estiver ligada a um TK90X/95, LCK17 = 1 invisvel para o circuito, ou seja, no produz qualquer alterao no funcionamento padro da IDS. Neste caso os itens 2 e 3 abaixo descrevem o comportamento inicial da interface. Porm o mesmo no verdadeiro se no POWER ON a IDS estiver conectada ao TK128. Neste caso o sinal LCK vai para nvel lgico 0 devido ao processo interno de inicializao do TK128 e, como conseqncia, a IDS fica adormecida enquanto o usurio no acessar o MODO 48 K do TK128. Quando isso ocorre LCK vai para nvel lgico 1 e a IDS acorda ocorrendo o processo descrito em 2 e 3. Para a IDS como se acabasse de ocorrer o POWER ON num TK90X/95 comum (Figura 4). 2 - O circuito dos monoestveis (veja Figura 4) produz o pulso negativo _CLR que limpa (configura para "0") os flip-flops do BLOQUEADOR DA PONTE, do BLOQUEADOR DO SELETOR e tambm todos os flip-flops do CONFIG CCT. 2.1 - A sada _BLOQPONTE do BLOQUEADOR DA PONTE vai para "1" deixando a PONTE (faixa de endereos de 3C00h a 3CFFh na ROM BETA) desbloqueada. 2.2 A sada BLOQSEL do BLOQUEADOR DO SELETOR vai para "0", desbloqueando o SELETOR.
2.3 Todas as sadas do 74LS273, no CONFIG CCT, vo para "0". Ento _JET SKI / PONTE = "0" implicando que o MUX seleciona as linhas de endereo A15 e A14 para acessarem a sada _TK90XROMCS. Com isso todo acesso do Z80 endereado para memria entre 0000h e 3FFFh ir colocar a ROM BETA visvel (paginada, chaveada) na PGINA 0 do microprocessador. Este o chamado MODO JET SKI de operao da IDS2001ne. Veja abaixo o mapa de endereos do MODO JET SKI no POWER ON.
/_BLOQPONTE
/_JET SKI / PONTE
0 0
0 0
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 1
0 0
BLOQSEL
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
Figura 5 - MODO JET SKI no POWER ON e RESET de hardware. 3 O SODIS BETA ser executado e far o papel do BASIC na configurao e inicializao do ambiente. Entre outras atividades, far o teste de RAM disponvel e incializar as variveis de sistema do BASIC, da BETA e da microdrive, se estiver presente. 3.1 Como _IOREQ' = "1" porque o flip-flop do BLOQUEADOR DO SELETOR foi resetado, no ser possvel o I/O com as interfaces plugadas no conector de expanso da IDS2001ne. Quando o SODIS BETA no necessitar de I/O com a IDS2001ne, deixar o SELETOR desbloqueado, permitindo que as interfaces sejam reconhecidas pelo TK90X, como veremos mais adiante. B - NO RESET DE HARDWARE DO Z80: 1 Idem acima para o POWER ON. C - OBSERVAES: 1 Como visto acima, no POWER ON ou no caso de RESET de hardware no caso do micro ser um TK90X/95 ou na entrada do MODO 48K se for um TK128, a IDS entra no modo JET SKI, no qual toda ROM BETA ficar visvel para a PGINA 0 do Z80. Pela Figura 5 observa-se que para manter-se neste modo basta que /_JET SKI / PONTE = "0", no influindo se o SELETOR est bloqueado ou no ou se a PONTE est bloqueada ou no. O SELETOR e a PONTE estaro desbloqueados obrigatoriamente na ocorrncia de POWER ON e RESET de hardware. Podemos ver, pela Figura 2, que no MODO JET SKI no relevante o bloqueio ou no da PONTE. 2 - Mas o desbloqueio do SELETOR implica na impossibilidade de I/O com outras interfaces (desde que conectadas no barramento de expanso da IDS). J o bloqueio do SELETOR impede que se troque o modo (no caso, de JET SKI para PONTE) porm no impede o funcionamento normal do MODO JET SKI que est ativado; impede tambm o I/O com a IDS (impressora e FDC) mas libera I/O com outras interfaces ligadas IDS. 2 CIRCUITO DE PAGINAO COM RAND USR 15360 E RAND USR 15363: A - COM RAND USR 15360:
1 O TK90X est no modo imediato (no est rodando programas do usurio). 2 O ambiente do SODIS BETA j foi inicializado, embora o TK90X esteja no modo BASIC (est com um dos cursores do BASIC na tela).
Figura 5 Circuito de paginao com RAND USR 15360 e RAND USR 15363. 3 Para que o RAND USR 15360 seja corretamente executado, em algum momento anterior o SODIS BETA fez o seguinte (acompanhe pela Figura 5): 3.1 Escreveu um dado na PORTA FCh, com a seguinte configurao para os bits D7 e D6: D7 = "0": leva BLOQSEL a "0", cujo efeito desbloquear o SELETOR. O I/O com perifricos do TK90X, plugados no conector de expanso da IDS2001ne, fica bloqueado. D6 = "0": leva /_BLOQPONTE a "1", cujo efeito desbloquear a PONTE. 3.2 Escreveu um dado na PORTA FFh, com o bit D7 = "1", alterando em CONFIG CCT somente a sada /_JET SKI / PONTE para nvel "1", cujo efeito fazer o MUX selecionar o MODO PONTE. 3.3 Escreveu um dado na PORTA FCh, com a seguinte configurao para os bits D7 e D6: D7 = "1": leva BLOQSEL a "1", cujo efeito bloquear o SELETOR. O I/O com perifricos do TK90X, plugados no conector de expanso da IDS2001ne, fica desbloqueado. D6 = "0": mantm /_BLOQPONTE em "1", cujo efeito manter desbloqueada a PONTE. 4 Aps a seqncia acima, o circuito da IDS2001ne termina no MODO PONTE com a PONTE desbloqueada. Todo acesso do Z80 sua PGINA 0 ter a seguinte visibilidade de memrias: ENDEREOS VISIBILIDADE De 0000h a 3BFFh ROM DO TK90X De 3C00h a 3CFFh ROM DA IDS2001ne De 3D00h a 3FFFh ROM DO TK90X 5 O usurio digita RAND USR 15360 no teclado do TK90X. Ao apertar a tecla ENTER, o fluxo do BASIC se desvia para o endereo solicitado, que est dentro da rea de endereos da PONTE. Quem est visvel a ROM BETA. Rotinas na PONTE vo dar o devido tratamento ao comando do usurio. O cursor muda para o cursor do SODIS BETA, A>, B>, C> ou D>, conforme o drive defaut.
Agora o TK90X s reconhecer os comandos do SODIS BETA. Um deles justamente o RETURN, que far o micro retornar ao ambiente nativo do BASIC. Veja abaixo o mapa de decodificao dos endereos de memria para o MODO PONTE.
BINRIO
A15
A14
A13
A12
A11
A10
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
HEX
DEC
3C00 15360 0 0 1 1 1 1 0 0 0 0 0 0 0 0 3CFF 15615 0 0 1 1 1 1 0 0 1 1 1 1 1 1 Figura 6 - MODO PONTE Decodificao dos endereos de memria. fisicamente no circuito: A15 a A8, _JET SKI / PONTE e _BLOQPONTE . B - COM RAND USR 15363:
0 1
0 1
1 1
1 1
1 O TK90X poder estar rodando um programa do usurio (modo programado) ou estar no modo imediato. A diferena que RAND USR 15363 retorna o controle para o BASIC no modo imediato ou no programado. Isto til para permitir o acesso dos programas do usurio aos comandos do SODIS BETA. 2 So vlidas todas as consideraes dos itens 3 e 4 anteriores. 3 No modo imediato, o usurio digita RAND USR 15363 no teclado do TK90X. Ao apertar a tecla ENTER, o fluxo do BASIC se desvia para o endereo solicitado, que est dentro da rea de endereos da PONTE. Quem est visvel a ROM BETA. Rotinas na PONTE vo dar o devido tratamento ao comando do usurio. Como no h um programa do usurio sendo executado, automaticamente o SODIS BETA faz um RETURN, o que trar o micro de volta ao ambiente nativo do BASIC. 4 - No modo programado, o BASIC executa RAND USR 15363, seguido de um REM para dar tempo ao chaveamento dos circuitos da IDS, o fluxo do BASIC se desvia para o endereo solicitado, que est dentro da rea de endereos da PONTE. Quem est visvel a ROM BETA. Rotinas na PONTE vo dar o devido tratamento ao comando de disco que se segue. Como h um programa do usurio sendo executado, o SODIS BETA faz um RETURN ao ponto seguinte no BASIC de onde se originou a chamada ao DOS. C - OBSERVAES: 1 Se no MODO PONTE (_JET SKI / PONTE = "1") esta for bloqueada (_BLOQPONTE = "0"), todo acesso do Z80 sua PGINA 0 ter visibilidade para a ROM do TK90X. Portanto, uma vez inicializado o SODIS BETA, a PONTE dever ficar sempre desbloqueada, de modo que tanto o usurio quanto seus programas possam acessar os recursos da BETA. 2 Quanto ao SELETOR, aqui tambm valem as observaes 2 para o MODO JET SKI, o desbloqueio do SELETOR implica na impossibilidade de I/O com outras interfaces (desde que conectadas no barramento de expanso da IDS). J o bloqueio do SELETOR impede que se troque o modo (no caso, de PONTE para JET SKI) porm no impede o funcionamento normal do MODO PONTE que est ativado; impede tambm o I/O com a IDS (impressora e FDC) mas libera I/O com outras interfaces ligadas IDS. 3 Na ROM BETA, os 256 bytes de 3C00h a 3CFFh que constituem a ponte entre o SODIS e o usurio e seus programas, contm programas de controle dos circuitos da IDS para
_BLOQPONTE
BLOQSEL
10
permitir o acesso de que trata o item anterior, sem que ocorram perdas de dados ou travamentos dos softwares. J na ROMBASIC, os bytes correspondentes na mesma rea de endereos so todos FFs parte de uma rea livre um pouco maior. 3 CIRCUITOS DE CONTROLE E DE CONFIGURAO A BLOQUEADOR DO SELETOR E DA PONTE A Figura 5 mostra os blocos que representam os circuitos do BLOQUEADOR do SELETOR e da PONTE. O BLOQUEADOR utiliza a porta de I/O FCh (SADA) da IDS conforme o seguinte mapa de decodificao do endereo:
_IOREQ
_WR
D7
0/1 0/1
Esta a nica porta de I/O da IDS2001ne que no pode ser bloqueada. Os sinais A1, A0, /_IOREQ, /_WR, D7 e D6 so decodificados fisicamente no circuito, enquanto para os sinais de A7 a A2 ocorre decodificao lgica, ou seja so decodificados fisicamente em outros circuitos, obrigando seus valores lgicos na porta FCh, mesmo no participando da decodificao fsica, para evitar conflitos com os referidos outros circuitos. OUT (FC) bloqueia e desbloqueia os circuitos do SELETOR conforme D7 e D6 sejam 0 ou 1 (veja FIGURA 7). e da PONTE
BITS DO DADO STATUS RESULTANTE D7 D6 SELETOR PONTE 0 0 DESBLOQUEADO DESBLOQUEADO 0 1 DESBLOQUEADO BLOQUEADO 1 0 BLOQUEADO DESBLOQUEADO 1 1 BLOQUEADO BLOQUEADO Figura 8 Como o BLOQ CCT bloqueia e desbloqueia os circuitos do SELETOR e PONTE. D7 usado no bloqueio do SELETOR e D6 no bloqueio da PONTE. Os estados de bloqueios so armazenados em dois flip-flops e permanecem atuando at que novos estado sejam estabelecidos mediante um outro OUT (FC). Como j visto, no POWER ON e no RESET de hardware, os flip-flops so limpos pelo circuito e assumem a condio inicial de desbloqueio tanto do SELETOR quanto da PONTE.
D6
11
Alm das funes acima, BLOQ CCT, por usar uma porta par, tambm aciona a ULA do TK90X/95 da seguinte forma: BITS DO DADO ENVIADO 0 1 2 3 4 5 6 7 EFEITO Cor da borda da tela Aciona a sada de som padro do TK90X/95 Aciona a sada MIC No usado Conforme Figura 8.
B SELETOR & CONFIG CCT: O SELETOR usa seis portas de I/O da IDS, que podem ser bloqueadas pelo circuito BLOQUEADOR. So as portas 1Fh, 3Fh, 5Fh, 7Fh, F7h e FFh. O SELETOR, como diz o prprio nome, seleciona qual circuito ser ativado para I/O na IDS. Sempre que o SELETOR for desbloqueado significa que o SODIS BETA ir acessar uma das portas de I/O da IDS, conseqentemente, e automaticamente, o sinal /_IOREQ do bus do Z80 bloqueado no circuito e, em seu lugar, vai para o conector de expanso da BETA o sinal /_IOREQ' igual a "1". Para as outras interfaces do TK plugadas na IDS tudo se passa como se no houvesse requisio de I/O. A Figura 8, abaixo, mostra o mapa dos endereos para as sete portas do SELETOR.
_IOREQ
BLOQSEL
A13
A12
A11
A10
A15
A14
A9
A8
A7
A6
A5
A4
A3
A2
A1
1F 3F 5F 7F F7 FF FB
0 0 0 0 1 1 1
0 0 1 1 1 1 1
0 1 0 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 0
1 1 1 1 1 1 1
1 1 1 1 1 1 1
A0
HEX DEC
0 0 0 0 0 0 0
0 0 0 0 0 0 0
Figura 9 Mapa de decodificao dos endereos das portas dos dispositivos de I/O da IDS2001ne selecionveis pelo SELETOR. Note que _WR participa fisicamente da decodificao, conforme detalhamento na Figura 9.
Os outros sinais que participam da decodificao fsica no circuito so A7, A2, A1, A0, BLOQSEL e _IOREQ. J A6, A5, A4, A3 e _RD tm atuao lgica para evitarem conflito com outros circuitos.
Os sinais A7, A2, A1, A0, BLOQSEL, _IOREQ, e _WR so decodificados fisicamente no circuito para o acesso s portas do SELETOR. Os sinais A6, A5, A4, A3 e _RD participam logicamente da decodificao para evitar conflitos com outros circuitos.
_WR
_RD
BINRIO
12
A tabela a seguir mostra quais so os dispositivos de I/O selecionveis pelo SELETOR, conforme seja feita uma leitura ou uma escrita de dado. CDIGO DE SELEO A7 _WR 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0 1 IN ou OUT ? OUT OUT OUT OUT IN IN IN IN OUT OUT IN
PORTA 1F 3F 5F 7F 1F 3F 5F 7F FF FB F7
DISPOSITIVO SELECIONADO Registro de COMANDO do FDC Registro de TRILHA do FDC Registro de SETOR do FDC Registro de DADOS do FDC Registro de COMANDO do FDC Registro de TRILHA do FDC Registro de SETOR do FDC Registro de DADOS do FDC Registrador do CONFIG CCT Buffer do dado para a impressora. Status do FDC e da impressora
Figura 10 Identificao dos dispositivos de I/O da IDS2001ne selecionveis pelo SELETOR . C O CONFIG CCT: O CONFIG CCT um dos dispositivos de I/O controlados pelo SELETOR. Portanto, qualquer acesso a esse dispositivo depende do prvio desbloqueio do SELETOR. Trata-se de um registro de 8 bits que armazena diversas configuraes para o FDC, o circuito de seleo de drives, o modo de operao para acesso as memrias da BETA e do TK90X (_JET SKI / PONTE) e o controle da impressora (STROBE). O registro do CONFIG CCT no pode ser lido, apenas escrito. Por isso o SODIS BETA armazena seu contedo em SAVE_FF_5D16h, uma das variveis de sistema da BETA.
13
A porta de acesso do SELETOR para o registro de configuraes, como vimos acima, a FFh, somente no modo escrita. A tabela a seguir demonstra para cada valor dos bits do dado enviado ao registro qual a configurao final resultante. BIT DO DADO CONFIGURAO = "0" Modo JET SKI _JET SKI / PONTE D7 = "1" Modo PONTE = "0" Dupla densidade (MFM) _DEDENS D6 = "1" Densidade simples (FM) = "0" Controla o envio de dados para a impressora atravs _STROBE D5 de um pulso negativo de durao adequada. = "1" = "0" Lado zero do disco SIDE D4 = "1" Lado 1 do disco = "0" A cabea do drive no est posicionada HLTFDC D3 = "1" A cabea do drive est posicionada = "0" Reseta o FDC _RESFDC D2 = "1" No reseta o FDC D1 D0 SELECIONA O DRIVE: 0 0 DRIVE A ADRV1 D1 0 1 DRIVE B 1 0 DRIVE C ADRV0 D0 1 1 DRIVE D Figura 11 Configurao do registro de CONFIG CCT. SINAL
14
A13
A12
A11
A10
A15
A14
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
HEX DEC
Na Figura 11 vemos que apenas os sinais A2, BLOQUESEL, /_IOREQ, e /_WR so fisicamente usados na decodificao do endereo da porta de sada da impressora. Os sinais /_RD, e A7 a A4 so usados logicamente para no causar interferncias em outros circuitos. O sinal BLOQSEL dever ser posto em "0" numa etapa anterior (desbloqueio do SELETOR), caso contrrio no ser possvel acessar a impressora. O circuito eltrico est representado na Figura 12 de forma simplificada. Na incializao do sistema o SODIS BETA identificou o padro de impressora (ABICOMP ou MSX 1.1) fazendo um acesso em IN F7h. Para escrever um dado na impressora, seja para controle ou para impresso, deve-se proceder como se segue: 1 Desbloquear o SELETOR (fazer um OUT FCh, dado, onde dado tem o bit D7 = "0"). 2 Verificar se a impressora est desocupada (fazer IN F7h e verificar se o bit D4 do dado "0"). Se a impressora estiver ocupada fazer pooling nesta porta at a liberao da impressora. 3 Escrever o dado no registrador da impressora (REG_IMP) acessando aporta FBh (OUT FBh, dado). 4 Escrever o dado na impressora da seguinte forma: a Ler a varivel de sistema SAVE_FF_5D16 (rea de variveis da BETA), cujo contedo representa a configurao do circuito presente em CONFIG CCT. b Alterar o bit D5 (/_STROB_IMP) do dado lido em SAVE_FF_5D16 de "1" para "0".
/_WR
/_RD
BINRIO
15
c - Escrever o dado na porta FFh, o registro de configurao do circuito. d - Aguardar o tempo de strobe previsto para a norma da porta paralela. e Alterar o bit D5 de "0" para "1" e escrev-lo novamente na porta FFh. O dado existente no registro da impressora ter sido transmitido para a impressora.
Figura 13 Diagrama em blocos do circuito da impressora . 2 FLOPPY DISK CONTROL (FDC) As portas de sada e entrada (registros do FDC) 1Fh, 3Fh, 5Fh e 7Fh so utilizadas para o controle do FDC. O SELETOR dever estar desbloqueado (BLOQSEL = "0"). Veja abaixo o mapa de decodificao dos endereos do FDC :
/_IOREQ
BLOQSEL
A13
A12
A11
A10
A15
A14
A9
A8
A7
A6
A5
A4
A3
A2
A1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
A0
HEX DEC
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
/_WR
/_RD
BINRIO
16
Figura 15 Diagrama em blocos do circuito do FDC (floppy disk control) . No esto sendo mostrados alguns circuitos auxiliares do FDC.
17
18
2. PRINCIPAIS ENTRADAS PARA O SODIS BETA: DEC 15360 15363 15484 15467 15511 15517 15605 16321 16342 HEX 3C00 3C03 3C7C 3C6B 3C97 3C9D 3CF5 3FC1 3FD6 DESCRIO Chamada ao SODIS BETA pelo usurio. Permite a execuo dos comandos em modo imediato Chamada ao SODIS BETA pelo BASIC-TK, permite o acesso ao drive pelo programa atravs do comando j visto. Ponto de entrada para despaginar a EPROM do SODIS BETA, preserva todos os registradores e reabilita as interrupes. Ponto de entrada para paginar o restante da EPROM do SODIS BETA, preserva todos os registradores, mas deixa as interrupes desabilitadas. Ponto de entrada para habilitar I/O com a IDS2001ne e desabilitar o conector de expanso. Podemos acessar o FDC diretamente. Executa a operao anterior de modo inverso. Ponto de entrada para enviar impressora paralela o caractere cujo cdigo esteja no registrador A. No preserva nenhum registrador e deixa as interrupes habilitadas. Incio da tabela que contm os 21 cdigos dos comandos do SODIS BETA, um byte por comando. Incio da tabela que contm os endereos de execuo dos 21 comandos do SODIS BETA, dois bytes para cada comando, na mesma ordem que a tabela anterior.
3.
Aps uma chamada a 15467 (3C6B), ponto de entrada para a rotina que pagina a EPROM do DOS no modo Jet Ski, todos os controles de acesso ao disco podero ser usados pelo SODIS BETA. Nome Funo Endereo HEX DEC Obs Dependendo do contedo da varivel em 5D17 (23831), salva, antes, o contedo do buffer da impressora no setor 9, da trilha 0. Na entrada: reg. B = 0 Chamar RDNRTRILHA antes desta rotina Na entrada: HL = endereo na RAM para onde sero lidos os setores D = trilha inicial de onde ser lido o setor E = nmero do setor inicial a ser lido. B = nmero de setores a serem lidos Chamar RDNRTRILHA antes desta rotina Na entrada: HL = endereo na RAM onde esto os setores a serem
RDCFIGDISK
RDNRTRILHA
L o setor de configurao do disco na rea do buffer da impressora (23296 a 2371 23551) e ajusta as variveis do sistema para o tipo de disco. Aciona o drive corrente e l o nmero da trilha sob a 2ECF cabea, guardando-o.
9073
11983
RDSET
L setores do disco
2ED6
11990
WRSET
2EFB
12027
19
escritos no disco D = trilha inicial de onde ser escrito o setor E = nmero do setor inicial a ser escrito. B = nmero de setores a serem escritos. SS0 SS1 Seleciona o lado 0 do disco Seleciona o lado 1 do disco 308D 3098 12429 12440 Usa as rotinas SS0 e SS1 Na entrada: E = nmero com o qual a trilha ser formatada, mesmo que a cabea no esteja posicionada nela. Variveis de sistema 23768 (5CD8) e 23769 (5CD9) devem conter 0.
FMTTRILHA
309F
12447
SELDRIVE
GODOS
CALLDOS
Seleciona o drive cujo nmero (0 a 3) estiver no registrador A. Se A = contedo da varivel de sistema 23833 (5D19) ser 3D70 selecionado o drive default, isto , o drive cuja letra aparece quando o DOS chamado. Entra no modo DOS cujo prompt (>) fica presente no canto inferior esquerdo da 3C00 tela. O controle do ambiente passa a ser compartilhado com o DOS Chamada ao DOS pelo BASIC dentro de um programa ou em modo 3C03 imediato. Neste caso o controle do ambiente volta integralmente para o BASIC Pagina a ROM BETA 3C6B
15728
15360
Estando no modo imediato do BASIC, o usurio digita: RAND USR 15360 <ENTER> RAND USR 15363:REM: (comando do DOS), na linha de um programa BASIC ou no modo imediato Na sada: Preserva todos os registradores e deixa as interrupes desabilitadas
15363
ROMBTIN
15467
ENTRAMDPT
I/OFF
Entra no MODO PONTE. Neste modo a faixa de endereos de 3C00h a 3CFFh (256 bytes), na PGINA 0 do Z80, denomina-se PONTE. Todo acesso do Z80 PGINA 0, 3C7C atravs da PONTE, recai fisicamente na ROM BETA, enquanto todo acesso do Z80 PGINA 0, que no seja pela PONTE, recai fisicamente na ROM BASIC. Desabilita I/O com 3C97 dispositivos plugados no
15484
15511
20
I/ON
conector de expanso da IDS. Habilita I/O com a IDS Habilita I/O com os dispositivos plugados no conector de expanso da IDS. Desabilita I/O com a IDS. Envia o byte que estiver no registrador A para a impressora paralela
3C9D
BYTE2PRINTER
3CF5
15605
4.
TABELA DOS COMANDOS DO SODIS BETA COMANDOS Nome do Endereos de coman execuo do 03F4 1012 0448 1096 04C7 1223 239F 9119 248E 9358 24A4 9380 2718 10008 27EC 10220 2939 10553 2A60 10848 2A64 10852 2A6C 10860 2B67 11111 2D81 11649 2DCC 11724 2F5B 12123 3214 12820 36C8 14024 3942 14658 3959 14681 3ACE 15054
CDIGOS Endereos na Valor tabela 3FD4 E0 3fd5 AB 3fd0 FF 3fc1 CF 3fc2 2A 3fc5 E6 3FC6 D2 3FC4 D1 3fc7 EF 3FCA BE 3fcb F4 3FCC D5 3fc8 F8 3fc9 FE 3FCB F7 3FC3 D0 3fce D3 3FCD D4 3fd1 34 3FD3 38 3fd2 EC 5. Tipo
Endereos na tabela 3ffc 3FFE 3ff4 3fd6 3fd8 3FDD 3fe0 3fdc 3fe2 3fe8 3FEA 3fec 3fe4 3fe6 3FEE 3fda 3ff0 3FF2 3ff6 3ffa 3ff8
Observaes
ALGUMAS MENSAGENS, IMAGENS E END. LIVRES DA ROM DA IDS2001ne Discriminao *BREAK* RAM Lotada Diretorio lot. S/Disco Stream Aberto Arq. Invalido Arq. existe Substituir ? (S/N) *ERRO* Sem Esp. Arq. Existe Livre Endereo Obs
Mensagens
37B1 a 3814
14257 a 14356
Mensagens
395E a 39E5
14686 a 14821
21
* PROTEGIDO Erro Disc O/F RegTitulo Tenta,Aborta,Ignora Trk set Apagado(s) S/Arquivo Mensagens Mensagens Endereos livres Endereos livres 6. Arquivo(s) Livre(s) 5646 bytes livres (5,5 KB) 67 bytes livres 59 a 64 89 a 94 A0B a 2018 398 a 3DA 89 a 9A 137 a 148 2571 a 8216 920 a 986
ALGUMAS VARIVEIS DE SISTEMA IMPLANTADAS PELO SODIS BETA DEC de 23734 a 23845 HEX de 5CB6 a 5D25
rea normal Extenso usa rea de da armaz pel ename a nto BE tempo TA rrio
112 bytes
de 23846 a 23903
de 5D26 a 5D60
58 bytes
TOTAL: 170 bytes VARIVEL DEC 23734 23735 23736 23737 23738 23739 23740 23741 23742 23743 23744 23745 23746-23755 23756 23757 HEX 5CB6 5CB7 5CB8 5CB9 5CC0 5CC1 5CC2 5CC3 5CC4 5CC5 5CC6 5CC7 5CC8 5CCB 5CCC 5CCD FDC STATUS NOME DESCRIO
DSK FLAGS
23758
5CCE
RDWR?
Flags de configurao dos tipos de discos, um byte para cada disco em cada drive. Uso geral. Armazena o bit 7 do registrador de status do FDC e comanda ou no um atraso de 450 ms antes da leitura de um setor do disco. Flag 00: Leitura FF: Escrita A rotina comum a ambas.
22
23759 23760 23761 23762 23763 23764 23765 23766 23767 23768 23769
NUMTRILHAS VERFMT?
5CDA 5CDB 5CDC 5CDD 5CE4 23781 23782 23783 23784 23785 23786 23787 23788 23789 23790 23791 23792 23794 23795 23796 - 23797 5CE5
FCSIM?
Nmero de trilhas do drive corrente Flag durante o comando FORMAT 00 = verifica FF = no verifica Usada pela rotina FMTTRILHA. Flag durante o comando FORMAT 00 = Face simples FF = Face dupla Armazena resultados de expresses calculadas pelo avaliador do DOS Espao de trabalho usado para nomes de arquivos ou de disco. (8 bytes)
5CF4 5CF5 5CF6 5CF7 5CF8 5CF9 5CFA 5CFD 5CFE 5CFF 5D00 5D01 5D02 5D03 5D04 5D05 5D06 5D07 5D08 5D09
SETRINIC
SAVE HL SAVE DE
Flags do tipo de drive e step rate para cada drive: A, B, C, D. Comando a ser enviado ao controlador Armazenamento temporrio do setor inicial Armazenamento temporrio do endereo de carga. Armazenamento temporrio do par HL em chamadas a ROM BASIC Armazenamento temporrio do par DE em chamadas a ROM BASIC
23
5D0A 5D0B 5D0C 5D0D 5D0E 5D0F 5D10 5D11 5D12 5D13 5D14 5D15 5D16 5D17 Endereo do incio do comando do DOS aps REM ou diretamente do editor BASIC. Armazena a varivel ERR_SP (23.613 23.614), ERRSPSV cujo valor alterado pelo DOS. Flag: 00 = DOS foi chamado por RAND USR 15.360 MODOSIN FF = DOS foi chamado por RAND USR 15.363 Impede a emisso de mensagens de erros. FFSALVO Cpia do dado enviado PORTA FF Flag: 00 = Buffer da impressora no deve ser salvo no SAVEBUFIMP? disco FF = O buffer deve ser salvo e recuperado aps o comando. Flag: 00 = A INTERFACE 1 no est presente I1PRESENT? FF = A INTERFACE 1 est presente e as variveis da microdrive devem ser salvas Nmero do drive default (cuja letra aparece DDEFNR seguida do sinal ">") Endereo de retorno quando termina a execuo RETDOSCMD de um comando do DOS. Antigo valor do SP do Z80, alterado em duas OLDSP posies pelo DOS. Indica que a forma de ponto flutuante, criada durante a anlise da sintaxe dos comandos, deve KILLPF ser eliminada antes da reapresentao do comando do usurio.
5D18 5D19 5D1A 5D1B 5D1C 5D1D 23839 23840 23841 23842 23843 23844 23845 23846 - 23903 7. 5D1F 5D20 5D21 5D22 5D23 5D24 5D25 5D26 - 5D60
MAPA PARCIAL DE MEMRIA DO TK90X/95 COM E SEM A IDS2001 ne SEM A IDS2001ne COM A IDS2001ne
(MEMAVLB) = ltimo byte fsico disponvel (RAMTOP) = ltimo byte da rea do sistema BASIC
(MEMAVLB) = ltimo byte fsico disponvel (RAMTOP) = ltimo byte da rea do sistema BASIC
MEMAVLB
RAMTOP
24
pilha de mquina
SP = Stack pointer do Z80 (ADSPFREE) = endereo do primeiro byte da rea livre
pilha de mquina
SP = Stack pointer do Z80
Pilha de clculo
Pilha de clculo
25
8.
FORMATO DO DISCO: 40 ou 80 trilhas 16 setores 256 bytes Uso exclusivo do sistema (contm o diretrio) TOTAL TIL Com 40 trilhas: 327.680 bytes 323.584 (40 x 16 x 256 x 2) (327.680 4096*) Com 80 trilhas 655.360 bytes 651.246 bytes (80 x 16 x 256 x 2) (655.360 4096) * A trilha 0 do lado zero o diretrio do sistema. So 16 setores de 256 bytes totalizando 4.096 bytes que no esto disponveis para armazenar dados do usurio. Trilha Lado setores
Nmero de trilhas Nmero de setores por trilha Nmero de bytes por setor Trilha 0 Capacidades dos discos
0 1 1 2 2 1 0 1 1 9 2 10 3 11 4 12 5 13 6 14 7 15 8 16 1 9 2 10 3 11 4 12 5 13 6 14 7 15 8 16 1 9 2 10 3 11 4 12 5 13 6 14 7 15 8 16
79 79 Seqncia de entrelaamento dos setores nas trilhas 0 1 1 9 2 10 3 11 4 12 5 13 6 14 7 15 8 16 1 9 2 10 3 11 4 12 5 13 6 14 7 15 8 16 1 9 2 10 3 11 4 12 5 13 6 14 7 15 8 16 O entrelaamento permite que o sistema tenha tempo de ler / escrever um setor enquanto o seguinte se aproxima da cabea do drive. 128 arquivos
26
9.
SETOR 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
DIRETRIO
Cada entrada de diretrio contm 16 bytes. Cada setor contm 16 entradas (256 bytes por setor dividido por 16). Os oito setores do diretrio podem ter at 128 entradas, da a limitao de 128 arquivos por disco. Informaes de configurao do disco Armazena temporariamente o buffer da impressora. O buffer da impressora pode ento ser usado pelo SODIS BETA para descarregar seqencialmente os setores do diretrio durante uma busca de arquivos. Usado pela rotina do Boto 48 K
27
10. BYTE 0 1 2 3 4 5 6 7
FORMATO DAS ENTRADAS DE DIRETRIO FUNO Nome do arquivo BYTE 0: VALOR 0 1 FUNO Indica o fim do diretrio O arquivo foi apagado pelo comando ERASE
Letra correspondente ao tipo de arquivo: LETRA B C D # TIPO DO ARQUIVO BASIC Cdigo de mquina Dados de matrizes Dados seqenciais e aleatrios
10 11
FUNO DOS BYTES 9 E 10 Tamanho do arquivo em bytes Endereo inicial do bloco de dados
12
TIPO DO ARQUIVO B C D #
13 14 15
Nmero de setores ocupados pelo arquivo Setor inicial do arquivo Trilha inicial do arquivo
28
11.
BYTE 0 a 224 Vazios (contm 0) 225 Prximo setor livre no fim dos arquivos 226 Trilha do prximo setor livre Contm o tipo de formatao do disco: VALOR 16h 17h 18h 19h
227
FORMATAO 80 trilhas face dupla 40 trilhas face dupla 80 trilhas face simples 40 trilhas face simples
228 229 e 230 231 232 e 233 234 a 242 243 244 245 a 252 253 a 255
Nmero total de arquivos no disco, incluindo os apagados. Nmero de setores livres no disco Contm o valor 16, indicando que o disco padro BETA. Este byte verificado pela rotina 2371h No usados, contm0 No usados, contm espaos No usado Nmero de arquivos apagados no disco Nome do disco conforme definido pelo comando FORMAT. Se o nome tiver menos de oito caracteres, os demais sero preenchidos com espaos. No usados, contm 0.
29
VAVISOS ============
A Synchron no autoriza terceiros a fabricarem e/ou comercializarem a IDS2001ne ou seus circuitos. Esperamos receber consultas, informaes, sugestes e crticas a respeito deste trabalho. Este relatrio dever passar por atualizaes conforme novas informaes ficarem disponveis.