;; kernel-defs.gc ;; everything defined in the C Kernel / runtime ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; kscheme - InitHeapAndSymbol ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; fixed symbols (define-extern #f symbol) (define-extern #t symbol) (define-extern function type) (define-extern basic type) (define-extern string type) (define-extern symbol type) (define-extern type type) (define-extern object type) (define-extern link-block type) (define-extern integer type) (define-extern sinteger type) (define-extern uinteger type) (define-extern binteger type) (define-extern int8 type) (define-extern int16 type) (define-extern int32 type) (define-extern int64 type) (define-extern int128 type) (define-extern uint8 type) (define-extern uint16 type) (define-extern uint32 type) (define-extern uint64 type) (define-extern uint128 type) (define-extern float type) (define-extern process-tree type) (define-extern process type) (define-extern thread type) (define-extern structure type) (define-extern pair type) (define-extern pointer type) (define-extern number type) (define-extern array type) (define-extern vu-function type) (define-extern connectable type) (define-extern stack-frame type) (define-extern file-stream type) (define-extern kheap type) (define-extern nothing (function none)) (define-extern delete-basic (function basic none)) (define-extern static symbol) (define-extern global kheap) (define-extern debug kheap) (define-extern loading-level kheap) ;; not a kheap at boot (define-extern loading-package kheap) ;; not a kheap at boot (define-extern process-level-heap kheap) ;; not a kheap at boot (define-extern stack symbol) (define-extern scratch symbol) (define-extern *stratch-top* pointer) (define-extern zero-func (function int)) ;; asize-of-basic-func - has a bug ;; copy-basic-func - has a bug ;; level - unknown type ;; art-group ;; texture-page-dir ;; texture-page ;; sound ;; dgo ;; top-level (defenum kmalloc-flags :bitfield #t (align-16 4) (align-64 6) (align-256 8) (memset 12) (top 13) ) (defenum link-flag :bitfield #t :type int32 (output-load-msg 0) (output-load-true-msg 1) (execute-login 2) (print-login 3) (force-debug 4) (fast-link 5) ) (define-extern string->symbol (function string symbol)) (define-extern print (function object object)) (define-extern inspect (function object object)) (define-extern load (function string kheap object)) (define-extern loado (function string kheap object)) (define-extern unload (function string none)) (define-extern _format (function _varargs_ object)) (define-extern malloc (function symbol int pointer)) (define-extern kmalloc (function kheap int kmalloc-flags string pointer)) (define-extern new-dynamic-structure (function symbol type int structure)) (define-extern method-set! (function type int object none)) ;; may actually return function. (define-extern link (function pointer pointer int kheap int pointer)) (define-extern dgo-load (function string kheap int int none)) (define-extern link-begin (function pointer (pointer uint8) int kheap link-flag int)) (define-extern link-resume (function int)) (defenum mc-status-code :type uint32 (busy 0) (ok 1) (bad-handle 2) (format-failed 3) (internal-error 4) (write-error 5) (read-error 6) (new-game 7) (no-memory 8) (no-card 9) (no-last 10) (no-format 11) (no-file 12) (no-save 13) (no-space 14) (bad-version 15) (no-process 16) (no-auto-save 17) ) (define-extern mc-run (function none)) (define-extern mc-format (function int mc-status-code)) (define-extern mc-unformat (function int mc-status-code)) (define-extern mc-create-file (function int uint mc-status-code)) (define-extern mc-save (function int int pointer int mc-status-code)) (define-extern mc-load (function int int pointer mc-status-code)) (declare-type mc-slot-info structure) (define-extern mc-sync (function int)) (define-extern mc-get-slot-info (function int mc-slot-info none)) (define-extern mc-check-result (function int)) ;; mc-makefile (define-extern kset-language (function int int)) (define-extern *debug-segment* symbol) (define-extern *enable-method-set* int) (define-extern *boot-video-mode* int) (define-extern *deci-count* int) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; klisten - InitListener ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; *listener-link-block* (define-extern *listener-function* (function object)) ;; kernel-dispatcher ;; kernel-packages (define-extern *print-column* binteger) ;; *print-column* ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; kmachine - InitMachineScheme ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-extern put-display-env (function object none)) (define-extern syncv (function int int)) (define-extern sync-path (function int int int)) (define-extern reset-path (function none)) (define-extern reset-graph (function int int int int none)) ;; dma-sync (define-extern dma-sync (function pointer int int int)) ;; gs-put-imr ;; gs-get-imr (define-extern gs-store-image (function object object object)) (define-extern flush-cache (function int none)) (declare-type cpad-info basic) (define-extern cpad-open (function cpad-info int cpad-info)) (define-extern cpad-get-data (function cpad-info cpad-info)) (define-extern install-handler (function int function int)) ;; check return val ;; install-debug-handler (define-extern file-stream-open (function file-stream basic basic file-stream)) (define-extern file-stream-close (function file-stream file-stream)) (define-extern file-stream-length (function file-stream int)) ;; file-stream-seek (define-extern file-stream-read (function file-stream pointer int int)) (define-extern file-stream-write (function file-stream pointer uint uint)) (define-extern scf-get-language (function uint)) (declare-type scf-time structure) (define-extern scf-get-time (function scf-time none)) (define-extern scf-get-aspect (function uint)) (define-extern scf-get-volume (function int)) (define-extern scf-get-territory (function int)) (define-extern scf-get-timeout (function int)) (define-extern scf-get-inactive-timeout (function int)) ;; dma-to-iop (define-extern kernel-shutdown (function none)) ;; aybabtu ;; *stack-top* ;; *stack-base* ;; *stack-size* (define-extern *kernel-boot-message* symbol) ;; *kernel-boot-mode* ;; *kernel-boot-level* ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; ksound - InitSoundScheme ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-extern rpc-call (function int uint uint uint int uint int uint)) (define-extern rpc-busy? (function int uint)) ;;;;;;;;;;;;;;;;;;;;;;;; ;;;; kernel types ;;;;;;;;;;;;;;;;;;;;;;;; ;; These are types that are both: ;; - set up in the kernel ;; - not set up in GOAL code ;; So these deftypes generate no code. (defenum process-mask :bitfield #t :type uint32 (execute 0) ;; 1 (draw 1) ;; 2 (pause 2) ;; 4 (menu 3) ;; 8 (progress 4) ;; 16 (actor-pause 5) ;; 32 (sleep 6) ;; 64 (sleep-code 7) ;; 128 (process-tree 8) ;; 256 not an actual process, just a "tree node" for organization (heap-shrunk 9) ;; 512 (going 10) ;; 1024 (movie 11) ;; 2048 (movie-subject 12) ;; 4096 (target 13) ;; 8192 (sidekick 14) ;; 16384 (crate 15) ;; 32768 (collectable 16) ;; 65536 (enemy 17) ;; 131072 (camera 18) ;; 262144 (platform 19) ;; 524288 (ambient 20) ;; 1048576 (entity 21) ;; 2097152 (projectile 22) ;; 4194304 (attackable 23) ;; 8388608 (death 24) ;; 16777216 ) (declare-type process basic) (declare-type res-lump basic) (deftype process-tree (basic) ((name basic :offset-assert 4) (mask process-mask :offset-assert 8) (parent (pointer process-tree) :offset-assert 12) (brother (pointer process-tree) :offset-assert 16) (child (pointer process-tree) :offset-assert 20) (ppointer (pointer process) :offset-assert 24) (self process-tree :offset-assert 28) ) (:methods (new (symbol type basic) _type_ 0) (activate (_type_ process-tree basic pointer) process-tree 9) (deactivate (_type_) none 10) (copy-defaults! (_type_ res-lump) none 11) (run-logic? (_type_) symbol 12) (dummy-method () none 13) ) :size-assert #x20 :method-count-assert 14 :no-runtime-type ;; already defined by kscheme. Don't do it again. ) (deftype stack-frame (basic) ((name basic :offset 4) (next stack-frame :offset 8) ;; which way does this point? ) :size-assert #xc :method-count-assert 9 :flag-assert #x90000000c :no-runtime-type ;; already constructed, don't do it again. ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; PC Port functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-extern __read-ee-timer (function uint)) (define-extern __mem-move (function pointer pointer uint none)) (define-extern __send-gfx-dma-chain (function object object none)) (define-extern __pc-texture-upload-now (function object object none)) (define-extern __pc-texture-relocate (function object object object none)) (define-extern pc-pad-input-mode-set (function symbol none)) (define-extern pc-pad-input-mode-get (function int)) (define-extern pc-pad-input-key-get (function int)) (define-extern pc-pad-input-index-get (function int)) (define-extern pc-pad-input-map-save! (function none)) (define-extern pc-pad-get-mapped-button (function int int int)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; vm functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; These are functions used by the OpenGOAL PS2 VM components ;; These were made by us. (define-extern vm-ptr (function int pointer))