PL65 Copyright (C) 1987 Noahsoft#
Here's a working disk image of PL65 for anyone who wants to try what must be the rarest of Atari 8-bit languages. To use it, boot with SpartaDOS (an X cart image in one of the emulators is a good development environment) then run PL65.COM and choose from the various menu options. SAMPLE.PRG is a useful example program to figure out some of the finer points of the language (there's no manual on the disk) and S.OBJ is the compiled source. Little or no third-party documentation exists and I don't have a manual. I have one in-depth magazine article (in 8:16, BaPAUG's magazine, written by Simon Trew).ATR Image#
- pl65.atr ; Thank you Fujix from AtariAge for giving us this very rare language! :-)))
Source Code#
- pl65src.zip ; Thank you DanBoris from AtariAge for giving us this partial commented disassembly of the PL65 sample program along with some plain ascii versions of the source file and libraries. We really appreciate your help! :-)))
Manual#
- PL65-Manual.pdf ; size: 6.8 MB ; Thank you so much spookt from AtariAge for your help in this case and MrFish for the post processing. :-)
Reference#
- PL65 at AtariAge
- PL65 'cracked' at AtariAge
- Complete manual of PL65 at AtariAge
- PL65 Problem - WRTSTR/WRTLN at AtariAge
- Software ad at AtariAge
Picture#
Movies#
Sample Code#
!====================================! ! KEYS.LIB ! PL65 Keys operations. !------------------------------------! CONST UPA=142,DNA=143,LTA=134,RTA=135 CONST ESC=28,SPC=33,TAB=44,RET=12 CONST none=255 BYTE CH=764 !------------------------------------! PROC AnyKey() BEGIN WHILE CH=none DO ENDWHILE CH=none END !------------------------------------! FUNC InKey() BYTE k BEGIN WHILE CH=none DO ENDWHILE k=CH CH=none END k !------------------------------------! ! Only Declarations for clear compiling! ! Definitions must be in MAIN() as BODY. PROC EscF() FORWARD PROC UpaF() FORWARD PROC DnaF() FORWARD PROC LtaF() FORWARD PROC RtaF() FORWARD PROC SpcF() FORWARD PROC TabF() FORWARD PROC RetF() FORWARD PROC DefF() FORWARD !------------------------------------! PROC ParsKey(BYTE Key) BEGIN CASE Key OF ESC DO EscF() ENDOF OF UPA DO UpaF() ENDOF OF DNA DO DnaF() ENDOF OF LTA DO LtaF() ENDOF OF RTA DO RtaF() ENDOF OF SPC DO SpcF() ENDOF OF TAB DO TabF() ENDOF OF RET DO RetF() ENDOF ELSE DefF() ENDCASE END !------------------------------------! ENDFILE
! Keyboard Parser INCLUDE TERMINAL.LIB INCLUDE KEYS.LIB PROC POS(INT COL=$55 BYTE ROW=$54) BEGIN END ! Gets data from stack !------------------------------------! PROC CLR() BEGIN PUT(0,125) END !------------------------------------! BODY EscF BEGIN POS(18,10) WRTSTR("ESC") END BODY UpaF BEGIN POS(18,10) WRTSTR("UPA") END BODY DnaF BEGIN POS(18,10) WRTSTR("DNA") END BODY LtaF BEGIN POS(18,10) WRTSTR("LTA") END BODY RtaF BEGIN POS(18,10) WRTSTR("RTA") END BODY SpcF BEGIN POS(18,10) WRTSTR("SPC") END BODY TabF BEGIN POS(18,10) WRTSTR("TAB") END BODY RetF BEGIN POS(18,10) WRTSTR("RET") END BODY DefF BEGIN POS(18,10) WRTSTR("BAD") END !------------------------------------! MAIN() BYTE k BEGIN CLR() WRTLN("Keys Parsing Sample") WRTLN("Waiting a KEY...") CR() REPEAT k=InKey() ParsKey(k) UNTIL k=ESC END