From 6637ef371082d88c45952f1094df709ea988b7b4 Mon Sep 17 00:00:00 2001 From: sadbeast Date: Thu, 1 Feb 2024 16:11:53 -0800 Subject: initial mistake --- mos_api.inc | 197 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100644 mos_api.inc (limited to 'mos_api.inc') 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 -- cgit v1.2.3