Commodore-128 Comal 80 rev 2.02

From C64-Wiki
Jump to navigationJump to search
Comal 80 rev. 2.02
Developers Jens Erik Jensen, Mogens Kjær, Helge Lassen, Lars Laursen
Publisher Unicomal , Commodore Data
Release 1986
platform(s) C128
Genre Development system for language Comal
Control Keyboard
Media Cartridge
Language English
Information ...


Description[edit | edit source]

COMAL 80 v2.02 on Commodore 128 is Unicomal's ApS implementation of the COMAL80 standard for Commodore Data A/S on Cartridge.


Shipment[edit | edit source]

The developement system contains one cartridge with COMAL 80 and 5,25" floppy disks with demos and a manual.


Hardware Specifications[edit | edit source]

Minimum:

also:

Documentation[edit | edit source]


Cartridge Structure[edit | edit source]

The C128 Comal80 cartridge size is 96 KB (6 banks x 16KB) and it's using bankswitching, so that only 16 KB is visible at a time in the C128 memory map at address $C000 to $FFFF (Remark, it is using same addressarea as EDITOR and KERNAL). By write too and read from address $DE00 or call comal system routine, you can control which comal80 module routines you can call in our own mashinecodeprogram.


NEW in C128 Comal 80 rev. 2.02[edit | edit source]

  • Extended INPUT facilities
  • C-128 Font Pack now 80 characters can be userdefined
  • New editing options
  • RAM files
  • Communication is now easier

Commands changed/New[edit | edit source]

Command Package
PRINT core
ZONE core
option(l) system
INPUT core
inputpos system
termchars system
termpos system
termchar$ system
GETS core
ramfiles ramfiles
deleteallrf ramfiles
deleterf ramfiles
createrf ramfiles
eofrf ramfiles
posrf ramfiles
writenum ramfiles
readnum ramfiles
getnum ramfiles
writestr ramfiles
writerefstr ramfiles
readstr ramfiles
getstr$ ramfiles
writerec ramfiles
writerefrec ramfiles
readrec ramfiles
getrec$ ramfiles
inqrf ramfiles
saverf ramfiles
loadrf ramfiles
saveallrf ramfiles
loadallrf ramfiles
fieldtype$ ramfiles
freerf ramfiles
SIZE core
setmapping system
resetmapping system
char'in'buffer system
clearbuffer system
rs232status system
GETS core
IN core
option(2) system
setserialport system
bin$ system
hex$ system
discardfont font
selectfont font
textmode system
textwindow system
getscreen2 system
setscreen2 system
textcolor graphics
textborder graphics
textbackground graphics
textcolors system
plottext graphics
vdcpoke system
vdcpeek system
inqsys system
cursormode system
BASIC Expansion
monitor system
cpuspeed system
TRACE core
bell system
getshape$ sprites
hardcopymode system


Difference between v2.0 and rev. 00.14[edit | edit source]

rev. 00.14 is a diskloading system where Comal 80 is loaded from Diskdrive, it gives only 12 KB programming space, compared to v2.0 where there is 30 KB programming space and some other features.


Comal programs saved must be loaded with same version, a solution to overcome this, is to LIST the program to Diskdrive.


  • The variable used in FOR is not local in rev. 00.14 where it is local in v2.0.
  • CLOSED procecures or functions names is global in rev. 00.14 where in v2.0 it is local a must use IMPORT to be used.
  • SPRITES IDENTIFY must follow a SHOWSPRITE in v2.0.
  • Tranfering arrays in function calls in rev. 00.14 it only needs the name, in v2.0 the name must be followed by a (,).
  • Function calls with parameters can be used without () in rev. 00.14 where in v2.0 you must use ().
  • Direct access can be done in rev. 00.14, it is forbidden in v2.0.
  • UNIT was used in rev. 00.14 to specify device, in v2.0 only needs to type "0:" for use device 8.
  • CLOSE FILE 255 is deleted in program in v2.0.
  • In rev. 00.14 Packages GRAPHICS and SPRITES is included in program where in v2.0 it must use USE Package.
  • CLEAR in rev. 00.14 is now CLEARSCREEN in v2.0.
  • SETTEXT in rev. 00.14 is now TEXTSCREEN in v2.0.
  • SETGRAPHICS in rev. 00.14 is now GRAPHICSSCREEN in v2.0.
  • HOME in rev. 00.14 is center of the screen where in v.2.0 it is (0,0).
  • FRAME in rev. 00.14 is changed to WINDOW in v2.0.


ONLY in v2.0[edit | edit source]

  • FULL Comal Kernal
  • Defineable functionkeys
  • Graphicsscreen dumps
  • Better error messages
  • Modem communication
  • ASCII conversion
  • Batch files
  • External procedures
  • User Packages
  • Empty EPROM socket



Programming[edit | edit source]

Editor commands[edit | edit source]

Disk commands[edit | edit source]

Input & Output commands[edit | edit source]

File commands[edit | edit source]

Real Number functions[edit | edit source]

Integer functions[edit | edit source]

String functions[edit | edit source]


Structure[edit | edit source]

Variables[edit | edit source]

Type Declare Min value Max value
Real numbers variablename := 3.14 2.93873588e-39 1.70141183e38
Integer variablename# := 255 -32768 32767
Hexadecimals variablename := $ffff 0 65535
Binary numbers variablename := %1111111111111111 0 65535

Function[edit | edit source]

Procedure[edit | edit source]

Loops[edit | edit source]

Branches[edit | edit source]

Logical operators[edit | edit source]

Error handling[edit | edit source]

Others[edit | edit source]

Packages[edit | edit source]

Command: USE package

Expand COMAL 80[edit | edit source]

USE - LINK - DISCARD


Machinecode

Example of a package to expand Comal 80 with a function using Comal kernal functions, to subtract 2 real numbers for return a real number. Best methode is to assemble it with a assembler from Commodore Data or a assembler who can assamble to OBJ type file in SEQ fileformat.

;
.LIB   C128SYMB        ;FILE FROM COMAL DEMODISK
;
       *=$C000         ;BEGIN ADDRESS
;
       .BYTE 1         ;RAM 0 MEMORY MAP
       .WORD END       ;MODULE END LABEL
       .WORD DUMMY     ;NO SIGNAL-HANDLER
;
;  PACKAGETABEL:
;
       .BYTE 4,'TEST'  ;PACKAGES NAME IS TEST
       .WORD TESTP     ;PROCEDURE-TABEL
       .WORD DUMMY     ;INGEN INITIALISERING
       .BYTE 0         ;NO MORE PACKAGES
;
;  PROCEDURE-TABEL:
;
TESTP  .BYTE 3,'SUB'
       .WORD PSUB
       .BYTE 0         ;NO MORE PROCEDURES
;
;  FUNC SUB(A,B)
;
PSUB   .BYTE FUNC+REAL,<SUB,>SUB,2
       .BYTE VALUE+REAL
       .BYTE VALUE+REAL
       .BYTE ENDFNC
;
SUB    LDA #1
       JSR FNDPAR
       LDA COPY1
       LDY COPY1+1
       JSR LDAC2
       LDA #2
       JSR FNDPAR
       LDA COPY1
       LDY COPY1+1
       JSR LDAC1
       JSR FPSUB2
       JSR PUSHA1
       RTS
;
END    .END

Manual[edit | edit source]

Literature[edit | edit source]


Links[edit | edit source]