!!!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
The manual is still missing! Any hint for it is very welcome at any time. The only traces we have is the cover picture below and the titles:\\
__- PL65 Programming Manual Copyright © 1987 Noahsoft. For Atari models 400 800 XL and XE Series. 48K RAM Required. Issue 1__\\
__- 'Programmer's Card' with usefull addresses, Antic modes, Equates etc.__\\
__- yellow card with 'SY6500 Instruction Set Summary'__\\
Further some other docs including a manual for "Assembler" from QS Quality Software and the Newell 256KXLE upgrade\\
\\
Thank you spookt from AtariAge for your help in this case. :-)

!!Reference
* [PL65 at AtariAge|http://atariage.com/forums/topic/106821-pl65-cracked/]
* [Complete manual of PL65 at AtariAge|http://atariage.com/forums/topic/137894-complete-pl65-manual/#entry1666731]

!!Picture
[{Image src='Startscreen.jpg' width=436 height=152 }]
PL65 startscreen\\
\\
[{Image src='Manual.jpg' width=357 height=499 }]
PL65 manual cover

!!Movies
* [Hello World in Noahsoft's PL65 for the Atari 400/800|https://www.youtube.com/watch?v=-LDOKIBdTH0]
* [Sample Toolchain for Atari PL65|https://www.youtube.com/watch?v=yHdbM4V81B0]

!!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
}}}