2020-09-13 10:40:21 -04:00
|
|
|
;; 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
|
|
|
|
|
2021-05-03 08:54:49 -04:00
|
|
|
(defenum kmalloc-flags
|
|
|
|
:bitfield #t
|
|
|
|
(align-16 4)
|
|
|
|
(align-64 6)
|
|
|
|
(align-256 8)
|
|
|
|
(memset 12)
|
|
|
|
(top 13)
|
|
|
|
)
|
|
|
|
|
2021-05-16 21:07:22 -04:00
|
|
|
(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)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
2020-09-13 10:40:21 -04:00
|
|
|
(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))
|
2020-09-24 17:19:23 -04:00
|
|
|
(define-extern _format (function _varargs_ object))
|
2020-10-14 13:42:14 -04:00
|
|
|
(define-extern malloc (function symbol int pointer))
|
2021-05-03 08:54:49 -04:00
|
|
|
(define-extern kmalloc (function kheap int kmalloc-flags string pointer))
|
2021-05-16 21:07:22 -04:00
|
|
|
(define-extern new-dynamic-structure (function symbol type int structure))
|
2020-09-13 10:40:21 -04:00
|
|
|
(define-extern method-set! (function type int function none)) ;; may actually return function.
|
2020-11-22 12:59:55 -05:00
|
|
|
(define-extern link (function pointer pointer int kheap int pointer))
|
2020-09-13 17:34:02 -04:00
|
|
|
(define-extern dgo-load (function string kheap int int none))
|
2021-05-16 21:07:22 -04:00
|
|
|
(define-extern link-begin (function pointer (pointer uint8) int kheap link-flag int))
|
2020-09-13 10:40:21 -04:00
|
|
|
(define-extern link-resume (function int))
|
2021-02-27 14:40:18 -05:00
|
|
|
(define-extern mc-run (function none))
|
2020-09-13 10:40:21 -04:00
|
|
|
;; mc-format
|
|
|
|
;; mc-unformat
|
|
|
|
;; mc-create-file
|
|
|
|
;; mc-save
|
|
|
|
;; mc-load
|
2021-05-16 21:07:22 -04:00
|
|
|
(declare-type mc-slot-info structure)
|
|
|
|
(define-extern mc-sync (function int))
|
|
|
|
(define-extern mc-get-slot-info (function int mc-slot-info))
|
|
|
|
|
2021-02-27 14:40:18 -05:00
|
|
|
(define-extern mc-check-result (function int))
|
2020-09-13 10:40:21 -04:00
|
|
|
;; mc-makefile
|
2021-06-12 10:48:38 -04:00
|
|
|
(define-extern kset-language (function int int))
|
2020-09-13 10:40:21 -04:00
|
|
|
|
|
|
|
(define-extern *debug-segment* symbol)
|
|
|
|
(define-extern *enable-method-set* int)
|
2021-07-11 16:35:25 -04:00
|
|
|
(define-extern *boot-video-mode* int)
|
2020-09-13 10:40:21 -04:00
|
|
|
(define-extern *deci-count* int)
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
;;;; klisten - InitListener
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
;; *listener-link-block*
|
2020-09-25 21:11:27 -04:00
|
|
|
(define-extern *listener-function* (function object))
|
2020-09-13 10:40:21 -04:00
|
|
|
;; kernel-dispatcher
|
|
|
|
;; kernel-packages
|
2020-12-05 17:09:46 -05:00
|
|
|
(define-extern *print-column* binteger)
|
2020-09-13 10:40:21 -04:00
|
|
|
;; *print-column*
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
;;;; kmachine - InitMachineScheme
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
2021-07-11 16:35:25 -04:00
|
|
|
|
2020-09-13 10:40:21 -04:00
|
|
|
;; put-display-env
|
|
|
|
;; syncv
|
2021-05-05 17:38:16 -04:00
|
|
|
(define-extern sync-path (function int int none))
|
2021-02-21 11:02:28 -05:00
|
|
|
(define-extern reset-path (function none))
|
|
|
|
(define-extern reset-graph (function int int int int none))
|
2020-09-13 10:40:21 -04:00
|
|
|
;; dma-sync
|
2021-02-21 11:02:28 -05:00
|
|
|
(define-extern dma-sync (function pointer int int int))
|
2020-09-13 10:40:21 -04:00
|
|
|
;; gs-put-imr
|
|
|
|
;; gs-get-imr
|
2021-05-05 17:38:16 -04:00
|
|
|
(define-extern gs-store-image (function object object object))
|
2021-02-21 11:02:28 -05:00
|
|
|
(define-extern flush-cache (function int none))
|
2020-09-13 10:40:21 -04:00
|
|
|
;; cpad-open
|
2021-06-15 21:03:55 -04:00
|
|
|
(declare-type cpad-info basic)
|
2021-02-22 09:36:30 -05:00
|
|
|
(define-extern cpad-open (function cpad-info int cpad-info))
|
|
|
|
(define-extern cpad-get-data (function cpad-info cpad-info))
|
2021-04-17 18:35:50 -04:00
|
|
|
(define-extern install-handler (function int (function int) int)) ;; check return val
|
2020-09-13 10:40:21 -04:00
|
|
|
;; install-debug-handler
|
|
|
|
;; file-stream-open
|
2021-02-07 18:21:00 -05:00
|
|
|
(define-extern file-stream-open (function file-stream basic basic file-stream))
|
2021-05-05 17:38:16 -04:00
|
|
|
(define-extern file-stream-close (function file-stream file-stream))
|
2021-02-07 18:21:00 -05:00
|
|
|
(define-extern file-stream-length (function file-stream int))
|
2020-09-13 10:40:21 -04:00
|
|
|
;; file-stream-seek
|
2021-02-07 18:21:00 -05:00
|
|
|
(define-extern file-stream-read (function file-stream pointer int int))
|
2021-05-05 17:38:16 -04:00
|
|
|
(define-extern file-stream-write (function file-stream pointer uint uint))
|
2021-07-11 16:35:25 -04:00
|
|
|
(define-extern scf-get-language (function uint))
|
2020-09-13 10:40:21 -04:00
|
|
|
;; scf-get-time
|
2021-07-11 16:35:25 -04:00
|
|
|
(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))
|
2020-09-13 10:40:21 -04:00
|
|
|
;; dma-to-iop
|
2020-11-24 20:48:38 -05:00
|
|
|
(define-extern kernel-shutdown (function none))
|
2020-09-13 10:40:21 -04:00
|
|
|
;; aybabtu
|
|
|
|
;; *stack-top*
|
|
|
|
;; *stack-base*
|
|
|
|
;; *stack-size*
|
2021-06-29 20:30:52 -04:00
|
|
|
(define-extern *kernel-boot-message* symbol)
|
2020-09-13 10:40:21 -04:00
|
|
|
;; *kernel-boot-mode*
|
2020-11-22 12:59:55 -05:00
|
|
|
;; *kernel-boot-level*
|
|
|
|
|
2021-07-09 22:20:37 -04:00
|
|
|
;; PC Port functions
|
|
|
|
(define-extern __read-ee-timer (function uint))
|
|
|
|
(define-extern __mem-move (function pointer pointer uint none))
|
|
|
|
|
2020-11-22 12:59:55 -05:00
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
;;;; ksound - InitSoundScheme
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
(define-extern rpc-call (function int uint uint uint int uint int uint))
|
|
|
|
(define-extern rpc-busy? (function int uint))
|
2021-03-13 16:10:39 -05:00
|
|
|
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
;;;; 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.
|
|
|
|
|
2021-04-22 19:08:58 -04:00
|
|
|
(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
|
|
|
|
)
|
|
|
|
|
2021-07-17 18:07:21 -04:00
|
|
|
(declare-type process basic)
|
2021-08-07 18:29:44 -04:00
|
|
|
(declare-type res-lump basic)
|
2021-03-13 16:10:39 -05:00
|
|
|
(deftype process-tree (basic)
|
|
|
|
((name basic :offset-assert 4)
|
2021-04-22 19:08:58 -04:00
|
|
|
(mask process-mask :offset-assert 8)
|
2021-03-13 16:10:39 -05:00
|
|
|
(parent (pointer process-tree) :offset-assert 12)
|
|
|
|
(brother (pointer process-tree) :offset-assert 16)
|
|
|
|
(child (pointer process-tree) :offset-assert 20)
|
2021-07-17 18:07:21 -04:00
|
|
|
(ppointer (pointer process) :offset-assert 24)
|
2021-03-13 16:10:39 -05:00
|
|
|
(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)
|
2021-08-07 18:29:44 -04:00
|
|
|
(copy-defaults (_type_ res-lump) none 11)
|
2021-03-13 16:10:39 -05:00
|
|
|
(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.
|
|
|
|
)
|
|
|
|
|
2021-04-22 19:08:58 -04:00
|
|
|
|
2021-03-13 16:10:39 -05:00
|
|
|
(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.
|
2021-05-01 00:32:19 -04:00
|
|
|
)
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
;;;; vm functions
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
;; These are functions used by the OpenGOAL PS2 VM components
|
|
|
|
;; These were made by us.
|
|
|
|
|
|
|
|
(define-extern vm-ptr (function int pointer))
|