quinta-feira, julho 18, 2019

Turbo Pascal MSX

Reune dicas e downloads de Pascal para MSX, principalmente Turbo Pascal 3.3f
Neste ponto estou usando o PC para editar e o openMSX para compilar e testar.

Compilando um arquivo


O Turbo Pascal do MSX Clube, versão 3.3f, não tem o ambiente integrado, apenas o compilador, porém libera mais memória para a compilação.
A compilação não podia ser mais trivial, edite um arquivo .PAS no seu editor preferido e compile com:
    A:>TPC arquivo.pas

Compilando pelo BOXER via User Tools

No BOXER crie uma "User Tool" para com uma combinação de teclas, abrir o openMSX e compilar o programa.

O openMSX permite criar scripts TCL e neste script podemos passar alguns comandos, o emulador também permite passagem de parâmetros por linha de comando, o que facilita a tarefa.

Por exemplo, montar automaticamente o diretório onde estamos gravando os arquivos fontes e executar um .BAT que já compila em modo acelerado.

        #   Pascal Compiler Copyright (C) since 1972 by Satanico, Inc.

        variable scriptPath [file dirname [info script]] ;

        set hdFile $scriptPath/pascal.img
        set fdFile $scriptPath/wMDL-LIB

        bind F6,release "set throttle on"
        bind F6 "set throttle off"
        bind F7 type "dir\r"

        set power off
        # ext ide
        # ext ram512k
        # hda $hdFile
        diska $fdFile
        set power on
        set fullspeedwhenloading on
        set throttle off
na primeira parte algumas funções não estão sendo usadas, como o HD e os comandos TYPE.

Colocar este script no mesmo diretório do programas .PAS, no meu caso C:\MSX\PASCAL\wMDL-LIB, o script inicia o MSX, monta o diretório como disk A:, seta a aceleração no máximo.

Para completar, criar um AUTOEXEC.BAT que compila, colocar o MSX-DOS 1 e o Turbo Pascal 3.3f, asism o openMSX vai dar boot como se fosse um diskete real, e iniciar o AUTOEXEC:

        TPC wdldemo.pas
        wdldemo
No BOXER criar uma "User Tools" chamada openMSX ("Configure", "User Tools")
  • Name: openMSX
  • Description: Calls openMSX to compile
  • Program: c:\msx\openmsx.exe
  • Working Directory: C:\msx\pascal\wMDL-LIB
  • Command: -machine Boosted_MSX2_EN -script $Path\pascal.tcl

Em "Configure", "Keyboard", marcar para que esta "User Tool" tenha o atalho [CTRL]+[ALT]+[P]
Agora ao pressionar a combinação de teclas, o BOXER vai executar o openMSX, passando o script pascal.tcl que monta o diretório do projeto e inicia o BOOT do MSX-DOS, compilando o programa conforme o AUTOEXEC.BAT, na velocidade máxima.

Macro para Compilacao no BOXER

Criar Macro em "Tools", "Macros", "New"

        // compila o programa .PAS corrente
        // usando o openMSX e um script TCL
        // (c) Satanico, Inc.
          
        macro compila()
        {
          string path,fname,name,output,compiler,exeparam;
          Filename(fname);
          path=fname;
          name=fname;
          ExtractFilePath(path);
          ExtractFileNameAndExt(fname);
          ExtractFileNameOnly(name);
          strcpy(output,"");
          strcat(output,path);
          strcat(output,name);
          strcat(output,".tcl");
          strcpy(compiler,"c:\\retro\\msx\\openmsx.exe");
          strcpy(exeparam," -machine Boosted_MSX2_EN");
          strcat(exeparam," -script ");
          strcat(exeparam,output);

          Save;
          New;
          PutString("#   Pascal Compiler Copyright (C) since 1972 by Satanico, Inc.\r");
          PutString("variable scriptPath [file dirname [info script]] ;\r");
          PutString("\r");
          PutString("set hdFile $scriptPath/pascal.img ;\r");
          PutString("set fdFile $scriptPath/ ;\r");
          PutString("\r");
          PutString("proc compila {} {\r");
          PutString("  type \"tpc ");
          PutString(fname);
          PutString("\\r\\r\"\r");
          PutString("}\r");
          PutString("\r");
          PutString("\r");
          PutString("bind F6,release \"set throttle on\"\r");
          PutString("bind F6 \"set throttle off\"\r");
          PutString("bind F7 type \"dir\r\"\r");
          PutString("set power off\r");
          PutString("# ext ide\r");
          PutString("# ext ram512k\r");
          PutString("# hda $hdFile\r");
          PutString("diska $fdFile\r");
          PutString("set power on\r");
          PutString("set fullspeedwhenloading on\r");
          PutString("set throttle off\r");
          PutString("after 3000 compila\r");
          SaveAs(output);
          close;
          RunProgram(compiler,exeparam,"",0);
}

Salvar como compilaPascal1. O 1 é importante pois vai ser usado para ligar um atalho de teclado a esta macro, no caso a Macro 1.

"Configure", "Keyboard". Escolher "Run Macro 1" em "Commands" e em "Assigned keys" colocar [CTRL]+[ALT]+[M] e "Change"

Visual Studio Code

Exite uma opção para compilar usando o Visual Studio Code. O usuario MRC SdC criou um template para programação Turbo Pascal. Dá para editar o texto no VSC, e compilar usando o vDOS/TP 3 para PC, ele mesmo cria o DSK com o pacote compilado. Eu estou implementando funções novas neste pacote, então a versão para Download TPascal-MDL contém as minhas atualizações e usa a LIB MDL com meus updates e traduções como base para programação.


Basta descompactar o arquivo em uma pasta (se usar a original, so precisa da pasta TemplateV1), no VSC basta abrir um "Folder" e apontar para esta TemplateV1 e o ambiente está quaser pronto.

Para configurar, edite o arquivo global_var.bat

  • set SourceFile, DiskName e COMname, voce pode alterar para um nome apropriado ao seu projeto. o padrão e PROGRAM, PROGRAM.DSK e PROGRAM, na minha versão é: mdl, mdl.dsk e mdl.
  • O vDOS já está no template, mas caso queira usar sua própria versão, mude o set vDOS (originalmente ele fica na pasta TemplateV1/bin)
  • Em seguida emulPath aponta para o executável do openmsx, uma versão fica na pasta TemplateV1/bin, mas eu uso minha própria versão e aponto para, por exemplo c:\msx\openmsx.exe. Pode-se usar outros emuladores, por exemplo o fMSX
  • em emulArgs, colocamos os parâmetros de chamada do emulador, a opcao -diska já é definida e não precisa/pode ser alterada, sempre leva o nome definido em DiskName. Por exemplo: set emulArgs=-machine Boosted_MSX2_EN -scipt pascal.tcl
  • Source, Tools e Build referem aos diretórios usados para edição, compilação e geração de executável.
  • Por fim, preauto e posauto são comandos que você pode definir para executar antes do seu programa e após o seu programa

make.bat contém todos os comandos para efetuar a compilação, pode-se adicionar outros comandos aqui, por exemplo eu alterei para copiar além do .COM, os .0?? referentes aos overlays (originalmente não manda estes caras), inclui tambem cópia de arquivos .x?? que é a extensão que defini para arquivos de dados dos meus programas. Ele usa o dsktool do RicBit, mas pode ser trocado por outros programas, por exemplo, no Linux/Unix eu uso o Disk Management Tools do fMSX.

Minha versão adicionalmente copia mais arquivos auxiliares para o disco de destino, e também criei um segundo disco (diskb) que contém ferramentas úteis para testar o programa, como editores e compilador Pascal para ajustes rápidos e testes.

A compilação é espartana, mas eficiente, usa o VDOS para chamar o compilador 3.0 do MS-DOS, compila no formato CHN, e depois junta o RUNTIME do MSX com o CHN em um .COM, querendo alterar algo, mude a parte que gera o AUTOEXEC.TXT no vDOS.

Após abrir a pasta TemplateV1, basta editar o arquivo PROGRAM.PAS e começar a programar, para compilar basta pressionar [CTRL]+[SHIFT]+[B], em caso de erro o compilador para e os erros são apontados pelo VSC, clicando no erro ele abre o arquivo na linha do erro.

Todos os includes podem ser colocados na pasta SOURCE, na minha versão a pasta SOURCE já tem a MDL-LIB 3, no meu template também tem uma pasta chamada libs, onde coloquei outras bibliotecas conhecidas, como a do Kari e a do OldSkolTech.

Optando pela minha versão, tenha em mente que e um trabalho em progresso, pode acontecer de alguns recursos não estarem 100% ok e as versões são alteradas com frequência, as vezes mais de uma vez por dia.

Na minha versão tambem tenho o script pascal.tcl, é um script para ser carregado com o openMSX, nele incluo algumas funções e macros para auxiliar na compilação, como por exemplo a tecla [F6] para tootle momentâneo enquanto pressionada.

Outra coisa legal e incluir uma extensão para destacar palavras chaves do pascal, como o PASCAL do Fragnani

MDL-LIB 3.0

Para me acostumar com o Pascal, qeria uma LIB que não fosse muito complexa, ai lembrei da MDL-LIB criada pelo MDL-Soft em 1990, e atualizada em 2004, além de se tornar domínio público. Eu peguei a versão 2.2 e traduzi para português, adicionalmente estou incluindo novas funções.

A vantagem dela é a simplicidade e paridade com o MSX-BASIC, a desvantagem é falta de alguns recursos mais avançados e velocidade, que é no máximo igual ao MSX-BASIC, até porque usa o famoso método CALBAS.

Uma coisa bacana é ela ter suporte para MSX 2.0. A primeira função que incluí foi a PLAY, ausente na versão original, ela por sua vez foi adaptada da versão da Revista MCM.

Para usar a MDL, o mínimo necessário é incluir o arquivo MDLLIB.PAS ($I MDLLIB.PAS} logo no começo do seu programa, os outros arquivos devem ser incluídos conforme necessidade e versão do MSX (1 ou 2).

Os arquivos MDLINTRO.PAS e MDLDEMO.PAS são boas opções para tentar entender a bibilioteca, se trata de um DEMO que mostra praticamente todas as funções.

Downloads

  • pascal-msx-pad.zip: MSX Pad e MSX Pad Reviewed, instala em Windows mais novos e serve como um ambiente basico para programacao Pascal, tem algumas libs interessantes.
  • TurboPascal.pdf: Manual Consolidado e indexado do Turbo Pascal 3.0, adicionais: Turbo Tutor 2.0, Pascal para Programadores BASIC e MCCM Turbo Pascal.
  • msx-pascal: Template do Pascal 3 para Editar e Compilar no PC, via Visual Studio Code, versão original para Windows.
  • wMDL-LIB.zip: MDL Lib 3.0, fork da MDL-LIB 2.2, com tradução para Português e adição de outras funções.
  • Visual Studio Code: Downloads das versões Windows/Linux do VSC.
  • TPascalFull.zip: Versão do template para VSC. 1Gb+ pois contém alguns livros e muitas bibliotecas.
  • TPascalLite.zip: Versão capada da FULL, não tem a documentação e tem menos LIBs, apenas as mais importantes
  • TPascalMDL.zip: Versão LITE porém adaptada para ja trabalhar com a MDL-LIB











    Nenhum comentário:

    Postar um comentário