GEOS functions from disk driver
ported to small C on 21.12.1999
- by Maciej 'YTM/Alliance' Witkowiak
+ by Maciej 'YTM/Elysium' Witkowiak
*/
#ifndef _GDISK_H
char __fastcall__ WriteBuff(struct tr_se *myTrSe);
char __fastcall__ GetBlock(struct tr_se *myTrSe, char *buffer);
-char __fastcall__ PutBlock(struct tr_se *myTrSe, char *buffer);
+char __fastcall__ PutBlock(struct tr_se *myTrSe, const char *buffer);
char __fastcall__ ReadBlock(struct tr_se *myTrSe, char *buffer);
-char __fastcall__ WriteBlock(struct tr_se *myTrSe, char *buffer);
-char __fastcall__ VerWriteBlock(struct tr_se *myTrSe, char *buffer);
+char __fastcall__ WriteBlock(struct tr_se *myTrSe, const char *buffer);
+char __fastcall__ VerWriteBlock(struct tr_se *myTrSe, const char *buffer);
int __fastcall__ CalcBlksFree(void);
char __fastcall__ ChkDkGEOS(void);
#ifndef _GDLGBOX_H
#define _GDLGBOX_H
-char __fastcall__ DoDlgBox(char *dboxstring);
+char __fastcall__ DoDlgBox(const char *dboxstring);
char __fastcall__ RstrFrmDialogue(void);
/* These are custom, predefined dialog boxes, I'm sure you'll find them usable
Most of them show 2 lines of text */
-char __fastcall__ DlgBoxYesNo(char *line1, char *line2);
-char __fastcall__ DlgBoxOkCancel(char *line1, char *line2);
-void __fastcall__ DlgBoxOk(char *line1, char *line2);
+char __fastcall__ DlgBoxYesNo(const char *line1, const char *line2);
+char __fastcall__ DlgBoxOkCancel(const char *line1, const char *line2);
+void __fastcall__ DlgBoxOk(const char *line1, const char *line2);
char __fastcall__ DlgBoxGetString(char *myString, char strLength,
- char *line1, char *line2);
-char __fastcall__ DlgBoxFileSelect(char *classtxt, char ftype,
+ const char *line1, const char *line2);
+char __fastcall__ DlgBoxFileSelect(const char *classtxt, char ftype,
char *fname);
/* Now the command string type */
struct filehandle *__fastcall__ Get1stDirEntry(void);
struct filehandle *__fastcall__ GetNxtDirEntry(void);
-char __fastcall__ FindFTypes(char *buffer, char ftype, char fmaxnum, char *classtxt);
+char __fastcall__ FindFTypes(char *buffer, char ftype, char fmaxnum, const char *classtxt);
-char __fastcall__ FindFile(char *fname);
+char __fastcall__ FindFile(const char *fname);
char __fastcall__ ReadFile(struct tr_se *myTrSe, char *buffer, int flength);
char __fastcall__ SaveFile(struct fileheader *myHeader);
char __fastcall__ FreeFile(struct tr_se myTable[]);
-char __fastcall__ DeleteFile(char *fname);
-char __fastcall__ RenameFile(char *source, char *target);
+char __fastcall__ DeleteFile(const char *fname);
+char __fastcall__ RenameFile(const char *source, const char *target);
char __fastcall__ ReadByte(void);
char __fastcall__ FollowChain(struct tr_se *startTrSe, char *buffer);
char __fastcall__ GetFHdrInfo(struct filehandle *myFile);
-char __fastcall__ OpenRecordFile(char *fname);
+char __fastcall__ OpenRecordFile(const char *fname);
char __fastcall__ CloseRecordFile(void);
char __fastcall__ NextRecord(void);
char __fastcall__ PreviousRecord(void);
char __fastcall__ InsertRecord(void);
char __fastcall__ AppendRecord(void);
char __fastcall__ ReadRecord(char *buffer, int flength);
-char __fastcall__ WriteRecord(char *buffer, int flength);
+char __fastcall__ WriteRecord(const char *buffer, int flength);
char __fastcall__ UpdateRecordFile(void);
/* GEOS filetypes */
#include <geos/gstruct.h>
#endif
-void __fastcall__ CopyString(char *dest, char *source);
-char __fastcall__ CmpString(char *dest, char *source);
-void __fastcall__ CopyFString(char len, char *dest, char *source);
-char __fastcall__ CmpFString(char len, char *dest, char *source);
+void __fastcall__ CopyString(char *dest, const char *source);
+char __fastcall__ CmpString(const char *dest, const char *source);
+void __fastcall__ CopyFString(char len, char *dest, const char *source);
+char __fastcall__ CmpFString(char len, char *dest, const char *source);
-int __fastcall__ CRC(char *buffer, int len);
+int __fastcall__ CRC(const char *buffer, int len);
void __fastcall__ ClearRam(char *dest, int len);
void __fastcall__ FillRam(char *dest, char what, int len);
-void __fastcall__ MoveData(char *dest, char *source, int len);
+void __fastcall__ MoveData(char *dest, const char *source, int len);
void __fastcall__ InitRam(char *myInitTab);
-void __fastcall__ StashRAM(char REUBank, int len, char *reuaddy, char *cpuaddy);
-void __fastcall__ FetchRAM(char REUBank, int len, char *reuaddy, char *cpuaddy);
+void __fastcall__ StashRAM(char REUBank, int len, char *reuaddy, const char *cpuaddy);
+void __fastcall__ FetchRAM(char REUBank, int len, const char *reuaddy, char *cpuaddy);
void __fastcall__ SwapRAM(char REUBank, int len, char *reuaddy, char *cpuaddy);
-char __fastcall__ VerifyRAM(char REUBank, int len, char *reuaddy, char *cpuaddy);
+char __fastcall__ VerifyRAM(char REUBank, int len, const char *reuaddy, const char *cpuaddy);
#endif
GEOS processes (~multitasking) functions
ported to small C on 27.10.1999
- by Maciej 'YTM/Alliance' Witkowiak
+ by Maciej 'YTM/Elysium' Witkowiak
*/
#ifndef _GPROCESS_H
void __fastcall__ Sleep(int jiffies);
-/* Process control variable
- these probably should be removed from here, as they are
- internal GEOS information which is updated by functions above
-*/
-
-/* bit numbers */
-#define RUNABLE_BIT 7
-#define BLOCKED_BIT 6
-#define FROZEN_BIT 5
-#define NOTIMER_BIT 4
-/* bit masks */
-#define SET_RUNABLE 0x80
-#define SET_BLOCKED 0x40
-#define SET_FROZEN 0x20
-#define SET_NOTIMER 0x10
-
#endif
GEOS mouse and sprite functions
ported to small C on 27.10.1999
- by Maciej 'YTM/Alliance' Witkowiak
+ by Maciej 'YTM/Elysium' Witkowiak
*/
#ifndef _GSPRITE_H
void __fastcall__ MouseOff(void);
char __fastcall__ IsMseInRegion(struct window *region);
-void __fastcall__ DrawSprite(char spritenum, char *spritepic);
+void __fastcall__ DrawSprite(char spritenum, const char *spritepic);
void __fastcall__ PosSprite(char spritenum, struct pixel *position);
void __fastcall__ EnablSprite(char spritenum);
void __fastcall__ DisablSprite(char spritenum);
#define r15 *(unsigned int*)0x20
#define r15L *(char*)0x20
#define r15H *(char*)0x21
-/* WARNING - these are used by C as temporary registers! */
-#define a0 *(unsigned int*)0xfb
-#define a0L *(char*)0xfb
-#define a0H *(char*)0xfc
-#define a1 *(unsigned int*)0xfd
-#define a1L *(char*)0xfd
-#define a1H *(char*)0xfe
-#define a2 *(unsigned int*)0x70
-#define a2L *(char*)0x70
-#define a2H *(char*)0x71
-#define a3 *(unsigned int*)0x72
-#define a3L *(char*)0x72
-#define a3H *(char*)0x73
-#define a4 *(unsigned int*)0x74
-#define a4L *(char*)0x74
-#define a4H *(char*)0x75
-#define a5 *(unsigned int*)0x76
-#define a5L *(char*)0x76
-#define a5H *(char*)0x77
-#define a6 *(unsigned int*)0x78
-#define a6L *(char*)0x78
-#define a6H *(char*)0x79
-#define a7 *(unsigned int*)0x7a
-#define a7L *(char*)0x7a
-#define a7H *(char*)0x7b
-#define a8 *(unsigned int*)0x7c
-#define a8L *(char*)0x7c
-#define a8H *(char*)0x7d
-#define a9 *(unsigned int*)0x7e
-#define a9L *(char*)0x7e
-#define a9H *(char*)0x7f
#define curPattern *(unsigned int*)0x22
#define string *(unsigned int*)0x24
#define currentMode *(char*)0x2e
#define dispBufferOn *(char*)0x2f
#define mouseOn *(char*)0x30
-#define RAM_64K *(char*)0x30
#define msePicPtr *(unsigned int*)0x31
#define curWindow (*(struct window*)0x33)
#define pressFlag *(char*)0x39
#define mousePos (*(struct pixel*)0x3a)
#define returnAddress *(unsigned int*)0x3d
#define graphMode *(char*)0x3f
-/*#define TURBO_DD00 *(char*)0x8e
- #define TURBO_DD00_CPY *(char*)0x8f*/
#define STATUS *(char*)0x90
#define curDevice *(char*)0xba
#define firstBoot *(char*)0x88c5
#define curType *(char*)0x88c6
#define ramBase *(char*)0x88c7
-/*Original:
- #define inputDevName *(char*)0x88cb
- #define memBase *(char*)0x88cf*/
#define inputDevName ((nameBuf)0x88cb)
#define DrCCurDkNm ((nameBuf)0x88dc)
#define DrDCurDkNm ((nameBuf)0x88ee)
# GEOS on the C64/128
geoslib:
- CC=$(CC) \
+ CC=../$(CC) \
AS=../$(AS) \
AR=../$(AR) \
CFLAGS="-Osir -g -t geos -I../../include" \
; Maciej 'YTM/Elysium' Witkowiak, 15.07.2001
;
- .export _memset
- .import _FillRam
+ .export _memset
+ .import popa, popax
-_memset = _FillRam
+ .include "../inc/jumptab.inc"
+ .include "../inc/geossym.inc"
+
+_memset:
+ sta r0L
+ stx r0H
+ jsr popax
+ sta r2L
+ jsr popax
+ sta r1L
+ stx r1H
+ jmp FillRam
;GeosConst - various system constans sorted by function
-;reassembled by Maciej 'YTM/Alliance' Witkowiak
+;reassembled by Maciej 'YTM/Elysium' Witkowiak
;4-2-99, 18-3-99
NULL = 0
O_GHINFO_TXT = $a0
; values for CPU_DATA - C64 memory config
+RAM_64K = $30 ;64K RAM
IO_IN = $35 ;60K RAM, 4K I/O space in
KRNL_IO_IN = $36 ;kernal and I/O mapped into memory
KRNL_BAS_IO_IN = $37 ;kernal, I/O and basic mapped into memory
;GEOS variable memory locations sorted by address
-;reassembled by Maciej 'YTM/Alliance' Witkowiak
+;reassembled by Maciej 'YTM/Elysium' Witkowiak
;4-2-99
zpage = $0000
currentMode = $2e
dispBufferOn = $2f
mouseOn = $30
-RAM_64K = $30
msePicPtr = $31
windowTop = $33
windowBottom = $34