diff options
author | sadbeast <sadbeast@sadbeast.com> | 2024-02-01 16:11:53 -0800 |
---|---|---|
committer | sadbeast <sadbeast@sadbeast.com> | 2025-01-11 17:58:17 -0800 |
commit | 6637ef371082d88c45952f1094df709ea988b7b4 (patch) | |
tree | 99a8de3d0402a0dc7d6b972a6c47258871cfab57 /mos_api.inc | |
download | anxiety-main.tar.gz anxiety-main.tar.bz2 |
Diffstat (limited to 'mos_api.inc')
-rw-r--r-- | mos_api.inc | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/mos_api.inc b/mos_api.inc new file mode 100644 index 0000000..cf645b0 --- /dev/null +++ b/mos_api.inc @@ -0,0 +1,197 @@ +;
+; Title: AGON MOS - API for user projects
+; Author: Dean Belfield
+; Created: 03/08/2022
+; Last Updated: 11/11/2023
+;
+; Modinfo:
+; 05/08/2022: Added mos_feof
+; 09/08/2022: Added system variables: cursorX, cursorY
+; 18/08/2022: Added system variables: scrchar, scrpixel, audioChannel, audioSuccess, vpd_pflags
+; 05/09/2022: Added mos_ren, vdp_pflag_mode
+; 24/09/2022: Added mos_getError, mos_mkdir
+; 13/10/2022: Added mos_oscli
+; 23/02/2023: Added more sysvars, fixed typo in sysvar_audioSuccess, offsets for sysvar_scrCols, sysvar_scrRows
+; 04/03/2023: Added sysvar_scrpixelIndex
+; 08/03/2023: Renamed sysvar_keycode to sysvar_keyascii, added sysvar_vkeycode
+; 15/03/2023: Added mos_copy, mos_getrtc, mos_setrtc, rtc, vdp_pflag_rtc
+; 21/03/2023: Added mos_setintvector, sysvars for keyboard status, vdu codes for vdp
+; 22/03/2023: The VDP commands are now indexed from 0x80
+; 29/03/2023: Added mos_uopen, mos_uclose, mos_ugetc, mos_uputc
+; 13/04/2023: Added FatFS file structures (FFOBJID, FIL, DIR, FILINFO)
+; 15/04/2023: Added mos_getfil, mos_fread, mos_fwrite and mos_flseek
+; 19/05/2023: Added sysvar_scrMode
+; 05/06/2023: Added sysvar_rtcEnable
+; 03/08/2023: Added mos_setkbvector
+; 10/08/2023: Added mos_getkbmap
+; 11/11/2023: Added mos_i2c_open, mos_i2c_close, mos_i2c_write and mos_i2c_read
+
+; VDP control (VDU 23, 0, n)
+;
+vdp_gp: equ 80h
+vdp_keycode: equ 81h
+vdp_cursor: equ 82h
+vdp_scrchar: equ 83h
+vdp_scrpixel: equ 84h
+vdp_audio: equ 85h
+vdp_mode: equ 86h
+vdp_rtc: equ 87h
+vdp_keystate: equ 88h
+vdp_logicalcoords: equ C0h
+vdp_terminalmode: equ FFh
+
+; MOS high level functions
+;
+mos_getkey: equ 00h
+mos_load: equ 01h
+mos_save: equ 02h
+mos_cd: equ 03h
+mos_dir: equ 04h
+mos_del: equ 05h
+mos_ren: equ 06h
+mos_mkdir: equ 07h
+mos_sysvars: equ 08h
+mos_editline: equ 09h
+mos_fopen: equ 0Ah
+mos_fclose: equ 0Bh
+mos_fgetc: equ 0Ch
+mos_fputc: equ 0Dh
+mos_feof: equ 0Eh
+mos_getError: equ 0Fh
+mos_oscli: equ 10h
+mos_copy: equ 11h
+mos_getrtc: equ 12h
+mos_setrtc: equ 13h
+mos_setintvector: equ 14h
+mos_uopen: equ 15h
+mos_uclose: equ 16h
+mos_ugetc: equ 17h
+mos_uputc: equ 18h
+mos_getfil: equ 19h
+mos_fread: equ 1Ah
+mos_fwrite: equ 1Bh
+mos_flseek: equ 1Ch
+mos_setkbvector: equ 1Dh
+mos_getkbmap: equ 1Eh
+mos_i2c_open: equ 1Fh
+mos_i2c_close: equ 20h
+mos_i2c_write: equ 21h
+mos_i2c_read: equ 22h
+
+
+; FatFS file access functions
+;
+ffs_fopen: equ 80h
+ffs_fclose: equ 81h
+ffs_fread: equ 82h
+ffs_fwrite: equ 83h
+ffs_flseek: equ 84h
+ffs_ftruncate: equ 85h
+ffs_fsync: equ 86h
+ffs_fforward: equ 87h
+ffs_fexpand: equ 88h
+ffs_fgets: equ 89h
+ffs_fputc: equ 8Ah
+ffs_fputs: equ 8Bh
+ffs_fprintf: equ 8Ch
+ffs_ftell: equ 8Dh
+ffs_feof: equ 8Eh
+ffs_fsize: equ 8Fh
+ffs_ferror: equ 90h
+
+; FatFS directory access functions
+;
+ffs_dopen: equ 91h
+ffs_dclose: equ 92h
+ffs_dread: equ 93h
+ffs_dfindfirst: equ 94h
+ffs_dfindnext: equ 95h
+
+; FatFS file and directory management functions
+;
+ffs_stat: equ 96h
+ffs_unlink: equ 97h
+ffs_rename: equ 98h
+ffs_chmod: equ 99h
+ffs_utime: equ 9Ah
+ffs_mkdir: equ 9Bh
+ffs_chdir: equ 9Ch
+ffs_chdrive: equ 9Dh
+ffs_getcwd: equ 9Eh
+
+; FatFS volume management and system configuration functions
+;
+ffs_mount: equ 9Fh
+ffs_mkfs: equ A0h
+ffs_fdisk: equ A1h
+ffs_getfree: equ A2h
+ffs_getlabel: equ A3h
+ffs_setlabel: equ A4h
+ffs_setcp: equ A5h
+
+; File access modes
+;
+fa_read: equ 01h
+fa_write: equ 02h
+fa_open_existing: equ 00h
+fa_create_new: equ 04h
+fa_create_always: equ 08h
+fa_open_always: equ 10h
+fa_open_append: equ 30h
+
+; System variable indexes for api_sysvars
+; Index into _sysvars in globals.asm
+;
+sysvar_time: equ 00h ; 4: Clock timer in centiseconds (incremented by 2 every VBLANK)
+sysvar_vpd_pflags: equ 04h ; 1: Flags to indicate completion of VDP commands
+sysvar_keyascii: equ 05h ; 1: ASCII keycode, or 0 if no key is pressed
+sysvar_keymods: equ 06h ; 1: Keycode modifiers
+sysvar_cursorX: equ 07h ; 1: Cursor X position
+sysvar_cursorY: equ 08h ; 1: Cursor Y position
+sysvar_scrchar: equ 09h ; 1: Character read from screen
+sysvar_scrpixel: equ 0Ah ; 3: Pixel data read from screen (R,B,G)
+sysvar_audioChannel: equ 0Dh ; 1: Audio channel
+sysvar_audioSuccess: equ 0Eh ; 1: Audio channel note queued (0 = no, 1 = yes)
+sysvar_scrWidth: equ 0Fh ; 2: Screen width in pixels
+sysvar_scrHeight: equ 11h ; 2: Screen height in pixels
+sysvar_scrCols: equ 13h ; 1: Screen columns in characters
+sysvar_scrRows: equ 14h ; 1: Screen rows in characters
+sysvar_scrColours: equ 15h ; 1: Number of colours displayed
+sysvar_scrpixelIndex: equ 16h ; 1: Index of pixel data read from screen
+sysvar_vkeycode: equ 17h ; 1: Virtual key code from FabGL
+sysvar_vkeydown: equ 18h ; 1: Virtual key state from FabGL (0=up, 1=down)
+sysvar_vkeycount: equ 19h ; 1: Incremented every time a key packet is received
+sysvar_rtc: equ 1Ah ; 6: Real time clock data
+sysvar_spare: equ 20h ; 2: Spare, previously used by rtc
+sysvar_keydelay: equ 22h ; 2: Keyboard repeat delay
+sysvar_keyrate: equ 24h ; 2: Keyboard repeat reat
+sysvar_keyled: equ 26h ; 1: Keyboard LED status
+sysvar_scrMode: equ 27h ; 1: Screen mode
+sysvar_rtcEnable: equ 28h ; 1: RTC enable flag (0: disabled, 1: use ESP32 RTC)
+sysvar_mouseX: equ 29h ; 2: Mouse X position
+sysvar_mouseY: equ 2Bh ; 2: Mouse Y position
+sysvar_mouseButtons: equ 2Dh ; 1: Mouse button state
+sysvar_mouseWheel: equ 2Eh ; 1: Mouse wheel delta
+sysvar_mouseXDelta: equ 2Fh ; 2: Mouse X delta
+sysvar_mouseYDelta: equ 31h ; 2: Mouse Y delta
+
+; Flags for the VPD protocol
+;
+vdp_pflag_cursor: equ 00000001b
+vdp_pflag_scrchar: equ 00000010b
+vdp_pflag_point: equ 00000100b
+vdp_pflag_audio: equ 00001000b
+vdp_pflag_mode: equ 00010000b
+vdp_pflag_rtc: equ 00100000b
+vdp_pflag_mouse: equ 01000000b
+; vdp_pflag_buffered: equ 10000000b
+
+;
+; Macro for calling the API
+; Parameters:
+; - function: One of the function numbers listed above
+;
+ macro mos function
+ ld a,function
+ rst.lis $08
+ endmacro
|