Tandy CoCo EDTASM notes
From Wikistix
Disk EDTASM
DISK EDTASM+ 01.00.00
COPYRIGHT (C) 1983 BY MICROSOFT
- Load offset: $1600
- Exec address: $1600
- Length: $3480
Disk EDTASM+ Overlay
DISK EDTASM+ 01.00.00 (OVRLAY)
COPYRIGHT (C) 1983 BY MICROSOFT
- Load offset: $1600
- Exec address: $1600
- Length: $3b80
EDTASMD+
SUPER PATCHED EDTASM+ 1.0
BY MICROSOFT
- Load offset: $E00
- Exec address: $E00
- Length: $2A00
/BIN file format
Preamble/Postamble
To support overlays, multiple blocks are supported, with a final postamble.
Byte | Preamble | Postamble |
---|---|---|
0 | 00 preamble flag | $ff postamble flag |
1,2 | Length of data block | Two zero bytes |
3,4 | Load address | EXEC address |
There's also a pattern to follow for the assembly. Eg, the following puts the length of the code into the header:
00010 ORG $4000
00020 BEGIN JMP START
00030 FDB END-BEGIN
00040 START …
…
00070 JMP [$FFFE]
00080 END EQU *
00090 END BEGIN
JMP [$FFFE] calls the reset vector, which is just like pushing the reset button.
Hello World
00010 * PROGRAM ORIGIN
00020 ORG $4000
00030 * PREAMBLE FOR DISK LOADM
00040 BEGIN JMP START
00050 FDB END-BEGIN
00060 * CLEAR SCREEN AT $400
00070 * TWO BYTES AT A TIME
00080 START LDX #SCREEN
00090 LDD #$6060
00100 CLS1 STD ,X++
00110 CMPX #SCREEN+$200
00120 BNE CLS1
00130 * WRITE STRING TO SCREEN
00140 * SCREEN ISN'T QUITE ASCII
00150 * MAP NON-ALPHA CHARS
00160 LDX #SCREEN
00170 LDY #HELLO
00180 WRT1 LDA ,Y+
00190 BEQ EXIT
00200 CMPA #$40
00210 BHS WRT2
00220 ADDA #$40
00230 WRT2 STA ,X+
00240 BRA WRT1
00250 EXIT JMP [RESETV]
00260 HELLO FCC "HELLO WORLD!"
00270 FCB 0
00280 SCREEN EQU $400
00290 RESETV EQU $FFFE
00300 END *
00310 END BEGIN