For development I always like to have a couple of different options for editing, so let’s continue our installation. Like the C compiler if you do not have the AmigaShell used previously open it and use “cd t:” to enter the Amiga temp file area. We’ll extract/install both in one list of commands. You will notice below the “lha” commands reference our “transfer drive” by volume name rather than the “dh1:” drive name we’ve used before. If you remember from the “info” command in an earlier article these are effectively equivalent in this situation and given here by way of an example.

Lha x xfer:vim60bin
Copy vim/vim60/Vim c:
Delete #? all
Lha x xfer:redit
Copy Redit2.0/Redit c:
Delete #? all

We have installed two additional text editors (the Amiga system includes a couple of very basic editors itself, but I would not recommend them for extended use). Vim is most known in Unix and Linux circles, perhaps less in recent years than before, but will be familiar to users of those system. Redit is a fairly simple text editor that is easier to use for most people.

We need a reasonable text editor because we need to make some additions to that “User-Startup” file we looked at while installing the C compiler. By having a transfer disk we can potentially use the “host” software to edit code, or we could be “authentic” and use native text editor for code too.

Method 1 – Vim, which needs a little setup to use

assign vim: t:
vim s:user-startup

Method 2 – Redit, graphical editor

Redit s:user-startup

With user-startup open, add the following three lines exactly at the end.

assign >NIL: vim: t:
assign >NIL: mkinclude: t:
setenv PhxAss/PHXASSINC Work:NDK39/Include/include_i

Save and exit your chosen editor.

The first line is similar to the command given slightly earlier and prevents Vim popping up lots of “requestors” when trying to use it. This is enough setup for basic usage of the Vim editor without too many fancy features. The last line is used to tell the PhxAss assembler where the required NDK files are located. You will have noticed a line in the User-Startup file for the C include files. The line in the middle we’ll come back to shortly.

The last thing we will want to install is a “make” tool. There are a lot of different versions on Aminet but the previously mentioned “make_bin.lha” from “dev/c” suits our needs. After performing the “Lha” command check the numbers (file size) for “make-3.76.1/make” to make sure you have a well tested version. The size we’re looking for is “106648”.

Cd t:
Lha x xfer:make_bin
Copy make-3.76.1/make C:
Copy make-3.76.1/make.guide hd0:toolsdocs
Delete #? all

The make tool tries to access “mkinclude:” in the same way that Vim tries to access “vim:” hence the second assign added to the User-Startup file above.

This completes the setup, but we should test. We could tell the (emulated) Amiga to “execute” the user-startup file, but it is quick and easy to just reset. On a PC keyboard do this with Ctrl-Windows-PageDn. It should only take five seconds or so.

The simplest test is of the most complex tool, the C compiler. Create a file ctest.c (we can work in the T: temp area) containing the following. You might end up playing “hunt the symbol” a bit without me mentioning that on the Amiga the double quote is two keys left of the ‘L’ key and shifted, at least on the “American” Amiga layout…

#include <stdio.h>
int main (int argc, char *argv[])
{
  puts ("Hello Amiga!");
  return 0;
}

Save then compile and execute with the following commands.

vc ctest.c -o ctest
ctest

We should test the assembler though too, right? Well if you insist, make a file asmtest.s as follows.

; required for exec_lib.i to generate LVOs
FUNCDEF         MACRO
_LVO\1          EQU     FUNC_CNT
FUNC_CNT        SET     FUNC_CNT-6
                ENDM
FUNC_CNT        SET     5*-6

; some CALL macros
CALLEXEC        MACRO
                move.l  4.w,a6
                jsr     _LVO\1(a6)
                ENDM
CALLDOS         MACRO
                move.l  _DOSBase,a6
                jsr     _LVO\1(a6)
                ENDM

; includes, just exec and dos
                include "exec/exec.i"
                include "exec/exec_lib.i"
                include "dos/dos.i"
                include "dos/dos_lib.i"

; our code
                section TestCode,code

                ; open any version of dos.library
                lea     DosName,a1
                moveq.l #0,d0
                CALLEXEC OpenLibrary
                move.l  d0,_DOSBase
                beq     NoDOS

                ; get output handle
                CALLDOS Output
                move.l  d0,_stdout

                ; test message
                lea     TestMsg,a0
                ; find end
                move.l  a0,a1
msgloop         tst.b   (a1)+
                bne.s   msgloop
                ; calculate length
                sub.l   #1,a1
                sub.l   a0,a1
                ; write the message
                move.l  _stdout,d1
                move.l  a0,d2
                move.l  a1,d3
                CALLDOS Write

                ; close dos.library
CloseDOS        move.l  _DOSBase,a1
                CALLEXEC CloseLibrary
NoDOS           rts

; data
                section TestData,data

DosName         DOSNAME
TestMsg         dc.b    "Hello Amiga!",10,0

; variables
                section TestMem,bss

_DOSBase        ds.l    1
_stdout         ds.l    1

                end

You can assemble and test this with the following commands. PhxAss is the simpler tool here.

phxass asmtest.s
asmtest

If you got the “Hello Amiga” message back and no errors when building then you’re “good to go”.

As and when we start building assembly code we would likely use vasm from the vbcc package. The test assembly file can be built using the following.

vasmm68k_mot -devpac -Fhunkexe -IWork:NDK39/Include/include_i asmtest.s -o asmtest

This is easier in a “makefile” than manually entered. Now you know why we tested with PhxAss.

#8: Installing developer tools (3) – almost done