Pop!Dev – Concurso de desenvolvimento de software para MSX (MegaRAM edition) – Cancelado

Há alguns meses atrás fiz um anúncio aqui no blog, sobre o primeiro concurso de desenvolvimento de software para MSX, patrocinado pelo site PopolonY2k Rulezz, o Pop!Dev.

Conforme anunciado em outubro do ano passado, o objetivo era fomentar o desenvolvimento de software para MSX utilizando a MegaRAM, sendo o prêmio uma MegaRAM de 2MB da ACVS (limited edition).

MSX Basic Screen
MSX Basic Screen

A data limite para entrega dos trabalhos foi no 25 de abril e infelizmente não houve inscrições no concurso, o que o cancelou automaticamente.

Infelizmente não consegui notificar o cancelamento do concurso na época, devido a um momento bastante corrido pelo qual eu estava passando (de fato ainda estou, mas em escala menor hoje).

Em breve vou reeditar o concurso, talvez abrindo também para a comunidade internacional, mas no momento não tenho previsão de quando fazê-lo.

[]’s
PopolonY2k

Game review – Mr.Bree+

No final de 2012, participei de uma pequena palestra do pessoal da Taw Studio, um pequeno estúdio localizado na cidade de Pindamonhangaba no interior de São Paulo, promovida nas instalações do Acrópolis estudio de Arte e escola de mangá, a respeito de seu principal game na época, o Mr. Bree+.

Mr.Bree+ Wallpaper
Mr.Bree+ Wallpaper

Desde então, fiquei bastante interessado em adquirir o game, uma vez que os autores disseram que em breve o mesmo estaria disponível em algumas game stores nacionais. Pouco tempo depois me tornei parceiro para reviews de jogos da SplitPlay desde o inicio de suas operações, mas naquela época a SplitPlay ainda estava se organizando e fechando parcerias com diversos estúdios indies nacionais e o Mr. Bree+ ainda não estava em sua loja, entretanto em menos de 2 meses, felizmente o mesmo foi adicionado à sua lista de jogos. Lembrando que hoje a SplitPlay lança jogos indies nacionais instantaneamente a seu lançamento no mercado, tendo alguns lançados primeiramente lá.

O Jogo

O jogo começa com uma excelente apresentação do porquinho (Mr.Bree) caindo ferido na floresta, visivelmente perdido e sem memória. Após a apresentação o jogo inicia em um pequeno labirinto, onde Mr. Bree deve avançar, passando por obstáculos que vão dificultando a cada novo estágio. Além de passar pelos obstáculos, Mr.Bree deve coletar umas peças vermelhas no formato de um quebra-cabeças, que de fato são as “suas memórias”.

Ao coletar uma “memória”, Mr. Bree vai relembrando as suas habilidades, que lhe serão essenciais para a finalização do jogo.

Mr.Bree+ Promo
Mr.Bree+ Promo

Foi impossível não comparar o Mr.Bree+ com alguns jogos de MSX, como o The Goonies e principalmente o jogo onde Popolon (e Aphrodite) são protagonistas da saga Knightmare, The Maze Of Galious, pois em minha opinião esses jogos estão na mesma categoria (platform puzzle games).

The Goonies.
The Goonies (MSX)
Kinghtmare - The Maze of Galious
Kinghtmare – The Maze of Galious (MSX)

O porquinho Mr.Bree, de fato é um porquinho fazendeiro que repentinamente é aprisionado e separado de sua família. A partir daí a sua saga se inicia em busca de suas lembranças e de seus familiares.

Análise técnica

A arte do jogo é excepcional, sendo cada detalhe gráfico muito bem desenhado e cuidadosamente detalhado. As animações que ocorrem no decorrer do jogo também são muito bem feitas, seguindo o mesmo padrão gráfico do jogo.

A partir da segunda fase é possível perceber que os desenvolvedores utilizaram pelo menos 3 layers de fundo, o que proporcionou um ótimo efeito no scroll parallax a medida que o Mr.Bree se movimenta.

Apesar de todas as 45 fases e das 15 secretas que o jogo possui, o diferencial do Mr.Bree+, em minha opinião, ficou por conta da excelente música e como todo bom jogo, Mr.Bree+ tem em suas músicas o  essencial para manter o interesse dos fans no jogo durante todas as fases.

Infelizmente o jogo não está disponível para todos os principais sistemas operacionais e só é compatível com Windows e MacOSX.

Notas finais

  1. Gráficos  10
  2. Efeitos sonoros 10
  3. Trilha sonora 10
  4. Jogabilidade 10
  5. Portabilidade 6.5
  6. Nota final 9.3

Um ótimo jogo nacional, e ainda por um ótimo preço na SplitPlay.

[]’s
PopolonY2k

Referência na internet

Taw Studio
http://tawstudio.com/

SplitPlay (PopolonY2k rulezz)
http://www.popolony2k.com.br/?p=2331

The Goonies (Wikipedia – MSX)
http://en.wikipedia.org/wiki/The_Goonies_%28MSX%29

Maze of Galious (Wikipedia)
http://en.wikipedia.org/wiki/The_Maze_of_Galious

Platform games (Wikipedia)
http://en.wikipedia.org/wiki/Platform_game

Parallax Scrolling (Wikipedia)
http://en.wikipedia.org/wiki/Parallax_scrolling

Pop!Dev – Primeiro concurso de desenvolvimento de software para MSX (MegaRAM edition)

Memória de computador, um recurso tão infinito atualmente que a maioria das pessoas mais novas e mesmo os mais antigos não sabem ou se esqueceram que no passado esse recurso era algo precioso ou até mesmo inexistente devido a tecnologia pouco desenvolvida da época. Me lembro que em meados dos anos 80 os micros pessoais ou tinham 64Kb de RAM, exatamente o caso dos micros de 8Bits como o MSX, ou tinham de 512Kb a 640Kb por default, sendo esse o caso dos micros da linha IBM-PC.

Para piorar um pouco mais as coisas, aqui no Brasil vivíamos a famigerada reserva de mercado que nos impedia de ter acesso às mesmas tecnologias top de mercado existentes em outros países na época. Independente disso eu particularmente acredito que quando o ser humano enfrenta adversidades devido a alguma limitação física ou técnica, ele termina desenvolvendo soluções criativas para burlar tais limitações.

Enquanto isso no Japão.

O MSX ia de vento em popa no Japão e em diversos países da Europa e até por conta disso o consórcio MSX, capitaneado pela ASCII japonesa, decidiu aperfeiçoar o padrão a partir dos MSX2, o que possibilitou softwares mais complexos e que exploravam melhor a capacidade do padrão através do uso de mais memória nessas máquinas. Foi assim que nasceu a expansão de memória padrão do MSX, denominada Memory Mapper, solução essa que envolve padronização da camada física e lógica para ser ter acesso a mais memória nos micros do padrão.

MSX Memory Mapper
MSX Memory Mapper cartridge

Enquanto isso no Brasil

No Brasil estávamos muito distantes do resto do mundo em todos os quesitos tecnológicos não importando se o padrão era o IBM-PC, Amiga ou MSX. O fato é que precisávamos manter o mercado nacional aquecido de alguma forma, mesmo que acompanhando o mercado internacional utilizando soluções independentes e desenvolvendo assim um “padrão próprio”.

Nesse cenário em meados dos anos 80 um famoso projetista de periféricos de MSX, na época, desenvolveu um dispositivo de memória denominado MegaRAM e que poderia estender os míseros 64Kb do MSX para 256Kb, 512Kb e 768Kb, sendo esses os modelos mais comuns de MegaRAM naquela época. O nome desse projetista é Ademir Carchano, que é membro ativo da comunidade MSX nacional até os dias de hoje, onde lança constantemente diversos produtos relacionados ao universo MSX, sob o selo ACVS.

MegaRAM ACVS
MegaRAM ACVS

A criação da MegaRAM possibilitou que diversos usuários brasileiros tivessem acesso a jogos incríveis, lançados no Japão, que utilizavam mais do que 64Kb, só que armazenados em ROM e conhecidos lá fora como MegaROM.

Aleste é um dos games MegaROM, portados para MegaRAM.
Aleste é um dos games MegaROM, portados para MegaRAM.

MSX Today

Hoje o cenário de desenvolvimento de novos hardwares e softwares para MSX no Brasil está bem aquecido, como há anos não se via. Atualmente contamos com a fabricação de dispositivos IDE, incluindo a IDE com Memory Mapper, novos kits que convertem um MSX comum para MSX2+, como é o caso do M5X e também novos games como o Flappy Bird para MSX e music players como o Pop!Art.

Flappy Bird for MSX
Flappy Bird for MSX

Mas independente dos novos lançamentos, sempre há quem busque alguns antigos e consolidados dispositivos como é o caso da MegaRAM. Ainda mais depois do anuncio da nova MegaRAM de 2MB feito pelo próprio Ademir Carchano, na comunidade MSX Brasil no FaceBook.

Incentivo aos produtores nacionais.

Logo que recebi a notícia da nova MegaRAM de 2MB fiquei entusiasmado principalmente pelo fato de contarmos com um espaço de 2MB para futuras aplicações que assim desejarem usar essa área “infinita”  de memória. O meu primeiro impulso foi adquirir a minha MegaRAM de 2MB, mas como eu já estava com a mão na massa e também como já havia citado no grupo GDMSX do FaceBook e G+ sobre um possível concurso de desenvolvimento de software para retro-máquinas, decidi então patrocinar o primeiro concurso do grupo GDMSX e do meu blog, adquirindo uma MegaRAM 2MB que será entregue ao futuro vencedor da competição.

O concurso

Bom, definido o prêmio vamos ao nome do concurso e às regras do mesmo, e entrando na onda Pop!*, nomeei o concurso como Pop!Dev :). Quanto às regras, elas serão breves, simples, diretas e sem muita burocracia 🙂

Objetivo

Primeiro, o grande objetivo desse concurso é fomentar o desenvolvimento de software para a plataforma MSX, sendo assim só serão válidos softwares desenvolvidos para essa plataforma, não importando o modelo utilizado, seja MSX1, MSX2, MSX2+ ou MSX TurboR.

Outra questão principal é referente ao uso da MegaRAM, sendo que os softwares inscritos na competição deverão ser compatíveis com a MegaRAM, independente do modelo (256Kb, 512Kb, 768Kb ou 2MB) e fabricante, pois o intuito dessa competição é justamente fomentar o desenvolvimento e a troca de conhecimento sobre a MegaRAM, lembrando apenas que se alguém fizer algo que utilize uma MegaRAM de maior capacidade, esse terá uma vantagem sobre os demais competidores, pois quanto maior a capacidade de memória utilizado por um software, geralmente mais complexo ele tende a ser.

Com base nessas premissas, vamos às regras.

As regras

  1. O software participante deverá ser compatível com MSX, independente do modelo escolhido (MSX1, MSX2, MSX2+ ou TurboR).
  2. O software participante deverá ser compatível com a tecnologia MegaRAM, sendo independente de fabricante e modelo (256Kb,512Kb, 768Kb ou 2MB).
  3. Apenas participantes do grupo GDMSX, tanto do FaceBook quanto do G+ poderão participar da competição, portanto, se você quiser participar da competição entre em uma das comunidades do GDMSX (FaceBook ou G+) para que possa apresentar seu projeto e estar apto a participar da competição.
  4. Seu projeto deverá ser original, ou seja, ser de sua autoria. Não serão aceitos ports com base no código fonte ou binários de programas ou jogos feitos para outras plataformas, por outras pessoas/empresas, tendo sido apenas modificados por você. O software deve ser desenvolvido e concebido inteiramente por você. Claro que você pode utilizar técnicas concebidas por outras pessoas, mas o código deve ser implementado por você.
  5. O software poderá ser feito por um grupo de mais de uma pessoa, entretanto se os desenvolvedores optarem por fazer dessa forma, deverão marcar seus nomes no momento da apresentação do projeto no post em uma das comunidades do GDMSX.
  6. O código fonte deverá ser aberto e liberado por alguma licença open source, seja alguma GNU (como GPL), Creative Commons ou BSD, afinal o intuito do concurso é a troca de informações e experiências.
  7. O participante poderá inscrever mais de um software na competição.
  8. Os membros da comissão julgadora não poderão participar da competição.

 Votação

Vou escolher alguns membros do GDMSX que não estiverem participando da competição para formar a comissão julgadora e essa comissão será apresentada no decorrer do desenvolvimento do concurso. Quanto a parte técnica, o que mais contará pontos nesse concurso está relacionado a melhor arquitetura de software e solução desenvolvida. Mas o que isso quer dizer ?

Bem vou enumerar abaixo os itens mais relevantes.

  1. Software mais bem modularizado. Isso é importantíssimo para reuso futuro por outros membros da comunidade em outros projetos.
  2. Software mais bem documentado. Importante pelo mesmo motivo acima citado.
  3. Software que utilize MegaRAM de maior capacidade terá pontuação maior, ou seja, um software que utilize 512Kb terá maior peso sobre um feito para rodar com uma MegaRAM de 256Kb, no caso de um empate técnico.
  4. Qualidade “profissional” do software. Isso envolve interface com o usuário e usabilidade. Softwares com aparência mais profissional serão mais bem avaliados e pontuados. Isso não quer dizer que softwares gráficos serão mais bem avaliados do que softwares em texto, uma vez que existem softwares em modo texto que tem um visual “estupidamente” profissional, as vezes mais profissionais do que softwares em modo gráfico. Mas não adianta ser bonito e tecnicamente pobre pois em nosso concurso o “tecnicamente bom/ótimo” supera um que tenha apenas a interface com o usuário bonita, entretanto se o software for ótimo nos dois quesitos, teremos um campeão. 🙂

Duração do concurso.

A duração do concurso será de 6 meses a partir da publicação desse post, ou seja, 25 de Abril de 2015 o concurso será finalizado e entrará em fase de avaliação dos projetos participantes. No mês seguinte deverá ser anunciado o vencedor, tanto aqui no blog quanto nas comunidades do GDMSX no FaceBook e G+.

O que poderá ser desenvolvido

Tudo o que você quiser, desde jogos, utilitários de disco, editores gráficos, editores musicais, music players, demos, enfim, a sua imaginação é o limite. 🙂

Em que linguagem posso desenvolver.

Qualquer uma, desde ASM, C, Turbo Pascal, MUMPS, ADA, Prolog, ou seja, qualquer uma que você domine.

Premiação

O vencedor do concurso será premiado com uma MegaRAM 2MB da ACVS.

Conclusão

Esse é o primeiro de muitos concursos que estarei organizando, via blog e GDMSX e espero que consigamos desenvolver muita coisa legal para a plataforma MSX. Futuramente vou buscar patrocínios de fabricantes nacionais e talvez até internacionais que atuam no cenário MSX, mas esse primeiro é 100% patrocinado pelo Blog PopolonY2k e comunidades GDMSX.

Divirtam-se.

[]’s
PopolonY2k

Referências na internet

Memória RAM (Wikipedia)
http://en.wikipedia.org/wiki/Random-access_memory

Default (Wikipedia)
http://en.wikipedia.org/wiki/Default_%28computer_science%29

Reserva de Mercado (Wikipedia)
http://pt.wikipedia.org/wiki/Reserva_de_mercado

ASCII Entertainment
http://www.ign.com/companies/ascii-entertainment

Memory Mapper (Blog MSX All)
http://blog.msxall.com/2011/01/memory-mapper.html

ACVS (Ademir Carchano)
http://www.carchano.com.br/loja/

MegaRAM (Marcelo Eiras blog)
http://www.marceloeiras.com.br/msxsite/msxmega.htm

MegaROM (BiFi website)
http://bifi.msxnet.org/msxnet/tech/megaroms.html

M5X (OptoTech)
http://optotech.net.br/fzanoto/m5x.htm

Dissecando o Flappy Bird (Retrocomputaria blog)
http://www.retrocomputaria.com.br/plus/?p=8843

Pop!Art – Music Player (Retrocomputaria blog)
http://www.retrocomputaria.com.br/plus/?p=8015

MegaRAM 2MB (ACVS website)
http://www.carchano.com.br/loja/produtos_descricao.asp?lang=pt_BR&codigo_produto=43

MSX Brasil (FaceBook)
https://www.facebook.com/groups/182223775136806/

GDMSX (FaceBook)
https://www.facebook.com/groups/gdmsx/

GDMSX (G+)
https://plus.google.com/u/0/communities/105926991534247611226

GPL (Wikipedia)
http://en.wikipedia.org/wiki/GNU_General_Public_License

Creative Commons (Wikipedia)
http://en.wikipedia.org/wiki/Creative_Commons

BSD Licenses (Wikipedia)
http://en.wikipedia.org/wiki/BSD_licenses

ASM language (Wikipedia)
http://en.wikipedia.org/wiki/Assembly_language

C language (Wikipedia)
http://en.wikipedia.org/wiki/C_%28programming_language%29

Turbo Pascal (Wikipedia)
http://en.wikipedia.org/wiki/Turbo_Pascal

MUMPS (Wikipedia)
http://en.wikipedia.org/wiki/MUMPS

ADA language (Wikipedia)
http://en.wikipedia.org/wiki/Ada_%28programming_language%29

Prolog language (Wikipedia)
http://en.wikipedia.org/wiki/Prolog

COVOX Speech Thing

Apesar do blog estar silencioso nos últimos meses, isso não é sinal de que não estou trabalhando em algo novo. Na verdade tenho trabalhado nos últimos 2 meses em diversos projetos paralelos, sendo alguns relacionados ao MSX e outros nem tanto.

É de conhecimento de grande parte da comunidade MSXzeira que estou desenvolvendo um Player de música, chamado Pop!Art e que no atual estágio de desenvolvimento o mesmo já é compatível com todos, ou a maioria, dos chips existentes para a plataforma MSX, conforme noticiado aqui no blog do Retrocomputaria.

Pois bem, após diversos feedbacks da comunidade brasileira, um comentário em especial do meu amigo Eliazer Kosciuk me fez iniciar um outro projeto paralelo cujo o resultado final certamente será adicionado ao desenvolvimento do Pop!Art.

Estou me referindo ao suporte a COVOX Speech Thing, que é um dispositivo muito antigo e que fez algum sucesso nos EUA, na década de 80 até o inicio dos anos 90, mas que eu realmente não conhecia até então.

De fato o COVOX é um DAC de 8Bits bem primitivo mas capaz de mostrar excelentes resultados, tornando-o bem atrativo na época, considerando custo/benefício, uma vez que as placas de som eram itens estupidamente caros.

Pois bem, seguindo o tutorial do projeto GR8Bit para a construção de um COVOX, decidi construir esse dispositivo que é bem simples e fácil de ser construído, bastando ter alguma destreza com ferro de solda apenas. Abaixo segue as fotos da construção do COVOX, que no final de tudo coube no próprio invólucro do plugue DB25 da impressora.

My COVOX device (based on GR8Bit project's page)
My COVOX device (based on GR8Bit project’s page)
COVOX Speech Thing
COVOX Speech Thing
COVOX device finished.
COVOX device finished.
Female plug in the back of COVOX device.
Female plug in the back of COVOX device.

FastTracker 2.9

Infelizmente não houve tempo para concluir todas as fases de construção do projeto, que é o meu objetivo. E sobre projeto inteiro, quero dizer construir o dispositivo COVOX e também o software que a utiliza. A parte do hardware posso dizer que está 100% pronto mas o software sequer consegui desenvolver uma linha de código. Entretanto eu procurei na internet e descobri um software que é nada mais nada menos do que um dos music trackers mais famosos, senão for o mais famoso, uma vez que influenciou diversos outros que vieram depois.

Estou me referindo ao FastTracker 2 MOD player, que de fato é um MOD player compatível com as principais placas de som da época e também com dispositivos COVOX.

O FastTracker 2 e os dispositivos COVOX são tão conceituados, que ainda hoje são amplamente utilizados pelo movimento demoscene.


FastTracker 2 playing XENON2 (Bomb the Bass)

FastTracker 2 using my homemade COVOX device (Playing Turrican 2)

Nada mau para um software feito em Turbo Pascal 7 de meados da década de 90. 🙂

[]’s
PopolonY2k

Referências

Pop!Art no Retrocomputaria Plus
http://www.retrocomputaria.com.br/plus/?p=8015

COVOX Speech Thing (Wikipedia)
http://en.wikipedia.org/wiki/Covox_Speech_Thing

DAC (Wikipedia)
http://en.wikipedia.org/wiki/Digital-to-analog_converter

COVOX device by GR8Bit
http://kb.gr8bit.ru/KB0010/GR8BIT-KB0010-Adding-multimedia-capability-covox-device.html

Conectores DB (Wikipedia)
http://pt.wikipedia.org/wiki/Conector_DB

Music Tracker (Wikipedia)
http://en.wikipedia.org/wiki/Music_tracker

MOD Music File (Wikipedia)
http://en.wikipedia.org/wiki/Module_file

DemoScene (Wikipedia)
http://en.wikipedia.org/wiki/Demoscene

Turbo Pascal (Wikipedia)
http://en.wikipedia.org/wiki/Turbo_Pascal

MSX Sunrise-like IDE devices programming

Since I wrote my first post about IDE devices (Sunrise-like) on MSX computers, I’ve been thinking to write a new post about this subject.

Well, the MSX community already knows about my last efforts to develop disk tools for MSX computers and how I’m spending some energy to build a framework that will help the development of new software compatible with IDE (Sunrise-Like) devices.

In the last year I finished my first project using MSX IDE standard. The result was the creation of a disk editor known as MSXDUMP.

In conjunction with MSXDUMP, an important part of the framework has been developed. It is responsible to perform the access between the high level software layer and the low level hardware layer.

Of course this piece of my framework was possible thanks to the work done by Sunrise team, long time ago when they wrote the IDE BIOS containing all low level calls available to the software programmer.

Also it is possible to write software for Sunrise-like IDE devices using direct access through I/O ports dedicated to this device, but in this case the work would be very hard and unnecessary because the IDE BIOS routines cover everything needed by the device.

For this reason, this article won’t cover direct access.

A world without standard

In the 80’s the software industry was very primitive and the software developers seemed to be living in a wild jungle with several kinds of hardware to program and control. With different hardware standards those days were very hard for developers, considering the lack of software standardization in this primitive industry.

Everything was focused on hardware for the most part of existing standards found in the 80’s. The MSX was the first attempt, in the 8 bit world, to join the hardware with the software to act like the operating systems do today.

Then the concept of BIOS functions, generally introduced through a cartridge, was born with MSX computers and with it came the almost infinite expansibility of the MSX standard.

The Sunrise IDE BIOS

When I got my first Tecnobytes ATA/IDE interface, that was a Sunrise compatible interface manufactured in Brazil by Tecnobytes Classic Computers, for the first time I could understand the workings and limitations of this device.

Tecnobytes ATA IDE Sunrise-like interface

The big part of the device’s limitation is related to the software’s inherent lack for this device. This was the reason why I started to study Sunrise compatible device internals.

Fortunately the current Brazilian MSX community has been the best since MSX was introduced here in the 80’s and thanks to the internet we can find all the information needed to know most details about this device.

I want to cite and thank Ricardo Oazem of Tecnobytes Classic Computers who provided me all technical details including documents and source code about I/O ports and BIOS functions of Sunrise IDE.

All technical information found in this article is compatible with any Sunrise-like IDE devices, like, Sunrise, Tecnobytes and Carchano IDE.

IDE Sunrise-like interface by Carchano.
IDE Sunrise-like interface by Carchano.

Inside the BIOS

After a long period studying the source code of the Sunrise BIOS and the documents found on the Sunrise website, I finally understood how it works in details.

Functions versioning

Internally the IDE has some addresses dedicated to versioning and a IDE signature, like described below.

Const
      ctDefaultWrkspcPage     = 3;     { Default workspace slot page }
      ctIDENotFound           = 255;   { IDE not found }
      ctBIOSMajorVerAddr      = $7FB6; { BIOS major version address }
      ctBIOSMinorVerAddr      = $7FB7; { BIOS minor version address }
      ctBIOSRevisionAddr      = $7FB8; { BIOS revision version address }
      ctIDESignatureAddr      = $7F80; { IDE signature address }

(* Workspace BIOS Call Routines *)
      ctBIOSGetDriveFieldAddr = $7FBF; { Get drive field address }

The first operation to do is to discover what slot the IDE is connected to. This can be done using the address &H7F80 (IDE signature address) for each slot/sub-slot of MSX, looking for the bytes ‘I’ followed by ‘D’ and ‘#’, until you find it.

After discovering the slot that the IDE is connected to, you can get the BIOS version used by the interface. This is easily found at following addresses.

Const
      ctBIOSMajorVerAddr      = $7FB6; { BIOS major version address }
      ctBIOSMinorVerAddr      = $7FB7; { BIOS minor version address }
      ctBIOSRevisionAddr      = $7FB8; { BIOS revision version address }

Retrieving the BIOS version isn’t a mandatory step but is a good idea to check it. If you’re not sure about the existence of a feature provided by the BIOS of your device so this checking will be useful.

The Drive Field structure.

MSX computers are limited devices with low resources capacity, for this reason the MSX-DOS can handle just 8 simultaneous logical drives. The Sunrise IDE allocates 6 of these 8 logical drives, so the maximum capacity of simultaneous connected IDE devices is 6.

This allocated area for these 6 drives is a structure known as Drive Field. Each drive field contains the following structure below.

(*
 * Drive field definition. The size of drive fields is variable
 * and can change according BIOS version. The current rule is written
 * like below:
 * 8 for BIOS 1.9x and 2.xx;
 * > 8 for BIOS 3.xx and higher;
 * See idesys.txt for details
 *)
Type TDriveField = Record
  nDeviceCodeByte     : Byte;
  n24PartitionStart,                        { 24Bit absolute sector number }
  n24PartitionLenght  : TInt24;             { 24Bit sector (count - 1) }
  nAdditionalPartInfo,                      { Addition partition info }
  (* The two bytes below is reserved to BIOS 3.xx or higher *)
  nPartitionStart,                          { Partition start bit 24 to 31 }
  nPartitionLength    : Byte;               { Partition (lenght - 1) 24 to 31 }
End;

As you can see there are two bytes at the end of the structure above and in the “official” documentation of IDE, it says “RESERVED TO BIOS 3.xx OR HIGHER”. I suppose that these two bytes was put there for future use in FAT16 and FAT32 native support in the Sunrise IDE devices.

The WorkSpace

The Sunrise specification defines  an area that contains all the 6 DriveFields structures managed by the interface, plus another structure known as the DeviceInfoBytes, followed by an unused free space of 18 bytes.

This structure formed by 6 DriveFields + DeviceInfoBytes + Free space (18 bytes) is known as the IDE WorkSpace.

The IDE WorkSpace is filled at the machine start up and loads the first 6 partitions available to the IDE connected interface.

Const
(*
 * IDE interface Workspace allocate at boot process.
 * More details check idesys.txt file at this library
 * directory.
 *)
Type TIDEWorkspace = Record
  ptrDriveField      : Array[0..ctDriveFieldSize] Of PDriveField;
  ptrDeviceInfoBytes : PDeviceInfoBytes;
  ptrFreeSpace       : PFreeSpace;
End;

NOTE: It is possible to exchange the partition content pointed to a different DriveField just using the IDEPAR command line utility.
In a hypothetical situation where your drive letter B: points to the second partition in the disk, you could point this drive B: to another formatted partition higher than 6 crossing the limits imposed by the Sunrise interface.
This could be done using the IDEPAR utility, but it use is not covered by this article.

The DeviceInfoBytes structure

The DeviceInfoBytes structure is an important and useful area of the IDE WorkSpace because it contains some information about the physical device that is connected in the interface, like the number of heads from device master and slave, maximum of cylinders by sector on both, master and slave connected disks.

The structure is defined as shown below:

(*
 * Device info bytes definition.
 * 6 bytes for BIOS 1.9x and 2.xx.
 *)
Type TDeviceInfoBytes = Record
  nNumOfHeadsMaster,             { For ATA Devices }
  nNumOfHeadsSlave,              { For ATA Devices }
  nNumSectorsCylMaster,          { For ATA Devices }
  nNumSectorsCylSlave,           { For ATA Devices }
  nDeviceTypeMaster,
  nDeviceTypeSlave,
  nUndefined           : Byte;   { Undefined yet - don`t use them }
End;

Type PDeviceInfoBytes = ^TDeviceInfoBytes;  { TDeviceInfoBytes pointer type }

The new BIOS functions

The Sunrise interface introduces at least 4 new BIOS function calls that can be used by applications compatible with Sunrise devices.

ATAPI BIOS calls

The two first functions are listed below:

(* Sunrise-like IDE BIOS calls *)

Const     ctBIOSSelectATAPIDevice = $7FB9; { Select master or slave device }
          ctBIOSSendATAPIPacket   = $7FBC; { Send ATAPI to selected device }

These two functions are related to control ATA devices, like a CDROM, using the ATAPI command packets. An example is an application that commands the CDROM device to open the tray.

Sector I/O BIOS calls.

It is known that IDE devices can handle a mass storage with higher capacity than the old disk drives. In fact, old disk drives just can manage sectors from 0 (zero) to 65535 (the maximum value accepted by a 16 bit unsigned number).

Fortunately today we have some storage devices supporting megabytes, gigabytes and recently terabytes.

The Sunrise IDE interface brought the possibility of connecting with these higher capacity devices, but unfortunately the MSX-DOS BDOS functions and old softwares cannot handle the full capacity of these new devices.

Fortunately Sunrise already developed alternative I/O sector functions capable of managing devices that can handle a big amount of data.

Two new I/O functions were introduced into the IDE BIOS to do the sector’s handling using 24 bit unsigned numbers (0 to 16.777.215). These functions are listed below:

(* Sunrise-like IDE BIOS calls *)

Const     ctBIOSAbsSectorRead  = $7F89;  { Absolute sector read function  }
          ctBIOSAbsSectorWrite = $7F8C;  { Absolute sector write function }

These two functions should be used by applications that handle sector management instead the MSX-DOS BDOS functions ABSREAD (&H2F) and ABSWRIT (&H30), because the new functions support unsigned 24 bit sector’s handling instead the MSX-DOS old functions that support only 16 bit setor’s handling.

The Big Number library

The MSX computers can perform 16 bit operations directly and to use the new I/O functions provided by the BIOS, the programmers should provide a way for MSX perform 24 bit operations.

Fortunately I created a library (BigNumber) that can handle numbers of any size, since 8 bit, 16 bit, 24 bit, 32 bit to infinite bits.

This library can be found at OldSkoolTech and is fully written and compatible with Turbo Pascal 3 and has been used in my own softwares like the MSXDUMP 0.2, compatibles with Sunrise devices.

Well, I believe that this article could be an useful article to technicians and developers that are interested in creating new softwares to use the full capacity of Sunrise devices, so enjoy it !!

PopolonY2k

References

Análise da interface ATA IDE – Tecnobytes
http://www.popolony2k.com.br/?p=409

MSXDUMP v0.2 (final) liberado no SourceForge.net
http://www.popolony2k.com.br/?p=2125

Memory-mapped I/O ports
http://en.wikipedia.org/wiki/I/O_port

Tecnobytes Classic Computers
http://www.tecnobytes.com.br/

Sunrise for MSX home page
http://www.msx.ch/sunformsx/

MSX-DOS Wikipedia
http://en.wikipedia.org/wiki/MSX-DOS

Carchano MSX IDE interface
http://www.carchano.com.br/loja/

ATAPI packets (Wikipedia)
http://en.wikipedia.org/wiki/ATA_Packet_Interface

CP/M-BDOS (Wikipedia)
http://en.wikipedia.org/wiki/BDOS#BDOS

PopolonY2k’s BigNumber library at SourceForge.net
http://sourceforge.net/p/oldskooltech/code/HEAD/tree/msx/trunk/msxdos/pascal/bigint.pas

OldSkoolTech project (SourceForge.net)
http://sourceforge.net/projects/oldskooltech/

Turbo Pascal (Wikipedia)
http://en.wikipedia.org/wiki/Turbo_Pascal