Introduction
Plus4IDE is a Commdore Plus/4 Integrated Development Environment (IDE) for PC. A fast and convenient way to create and debug Plus4 software using the assembly language.

Currently it works with AS65 by Frank Vorstenbosch as the assembler and a number of emulators (YAPE, Minus4w or WinEMU). This project was written because nothing like it was published before. It is now in a good, pretty much bug-free shape. Any modifications should be easy to implement since the source code is provided. I will be glad to add anything to it if I can, just ask. If you have questions/suggestions/feedback, contact the author by email: plus4@rogers.com.

Features:
- Fully featured text editor (copy/paste/undo, etc.)
- Syntax highlighting
- Built in help for mnemonics and TED registers
- Edit multiple files
- Remembers last file and last cursor position within all files
- Fully customizable AutoCode feature let's you insert commonly used code segments
- Quickly Compile and Run with one key! (F5)

Shortcuts
Plus4IDE's shortcuts are now user-definable. Edit shortcut.ini with any text editor (requires restart).
For example, if you're used to "running" your code by pressing F9 (instead of F5), you can do it as such:

F9 = CompileRunCurrent

The following commands can be used (case insensitive):
- AddComment: Add comment marks to the current line or selection
- RemoveComment: Remove comment marks from the current line or selection
- CompileCurrent: Compile the currently open file
- CompileRunCurrent: Compile and run the currently open file
- CompileRunFirst: Compile and run the first opened file (useful if you're editing a file which is included by a main program)
- CloseCurrent: Close the currently opened file. It will ask for confirmation to save if the file has been modified.
- NewFile: Create a new file.
- GenerateSineTable: Generate a sine table based on the parameters in the current line (see below).
- GotoNextTab: Go to the next tab.
- GotoPrevTab: Go to the previous tab.
- GotoLine: Ask the user for a line number and go to that line.
- Help: Show context sensitive help.
- ConvertToPETSCII: Convert the current line to PETSCII codes (see below).
- Exit: Close Plus4IDE. It will ask for confirmation to save if the file has been modified.

The special keys that can be used should be referenced in the shortcut definition as follows:
- Function keys 1 to 16: F1..F16
- Numpad numbers: NUMPAD_0..NUMPAD_9
- Numpad /: NUMPAD_DIVIDE or NUMPAD_DIV
- Numpad *: NUMPAD_MULTIPLY or NUMPAD_MUL
- Numpad -: NUMPAD_SUBTRACT or NUMPAD_SUB
- Numpad +: NUMPAD_ADD
- Numpad .: NUMPAD_DECIMAL or NUMPAD_DEC
- Numpad Enter: NUMPAD_ENTER
- Space, Esc, Enter, Tab, Up, Down, Left, Right, Home, End, Delete, Insert, PageUp, PageDown and Backspace: with their own designation

Autocode
This menu gives access to some commonly used code segments. Feel free to add your own by editing autocode.ini with any text editor.

To declare a new code segment, give it a name and put that name in square brackets.

Example:

[My Favourite Code Segment]
LDA #$00
STA $FF15

Versioning
When this option is turned on, Plus4IDE will save your source code as a new file every time. Each file will have a unique filename generated (e.g. code_v1.asm, code_v2.asm, etc.)

Convert To PETSCII
This function will convert the current line of text to PETSCII codes.
The first character of the line should be a semicolon, to make the line a comment. That character will be ignored.
Example: Using this function on the line below will generate the next line.

;Game Over - Press space
DB $47,$1,$D,$5,$20,$4F,$16,$5,$12,$20,$2D,$20,$50,$12,$5,$13,$13,$20,$13,$10,$1,$3,$5

Generate Sine
Generates a sine table based on the parameters from the current line. The current line should be a comment, with up to five values:
; wavelength, amplitude, amplitude shift, wave shift, repeat
Example:

; 256,10
DB $0A,$0A,$0A,$0B,$0B,$0B,$0B,$0C,$0C,$0C,$0C,$0D,$0D,$0D,$0D,$0E
DB $0E,$0E,$0E,$0E,$0F,$0F,$0F,$0F,$10,$10,$10,$10,$10,$11,$11,$11
DB $11,$11,$11,$12,$12,$12,$12,$12,$12,$12,$13,$13,$13,$13,$13,$13
DB $13,$13,$13,$13,$14,$14,$14,$14,$14,$14,$14,$14,$14,$14,$14,$14
DB $14,$14,$14,$14,$14,$14,$14,$14,$14,$14,$14,$14,$14,$13,$13,$13
DB $13,$13,$13,$13,$13,$13,$13,$12,$12,$12,$12,$12,$12,$12,$11,$11
DB $11,$11,$11,$11,$10,$10,$10,$10,$10,$0F,$0F,$0F,$0F,$0E,$0E,$0E
DB $0E,$0E,$0D,$0D,$0D,$0D,$0C,$0C,$0C,$0C,$0B,$0B,$0B,$0B,$0A,$0A
DB $0A,$0A,$0A,$09,$09,$09,$09,$08,$08,$08,$08,$07,$07,$07,$07,$06
DB $06,$06,$06,$06,$05,$05,$05,$05,$04,$04,$04,$04,$04,$03,$03,$03
DB $03,$03,$03,$02,$02,$02,$02,$02,$02,$02,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$02,$02,$02,$02,$02,$02,$02,$03,$03
DB $03,$03,$03,$03,$04,$04,$04,$04,$04,$05,$05,$05,$05,$06,$06,$06
DB $06,$06,$07,$07,$07,$07,$08,$08,$08,$08,$09,$09,$09,$09,$0A,$0A