initial commit

This commit is contained in:
2026-07-18 20:34:55 +02:00
commit 59ad004c96
474 changed files with 226635 additions and 0 deletions
+161
View File
@@ -0,0 +1,161 @@
#include "setjmp.h"
int setjmpsp(jmp_buf env, void * sp)
{
__asm
{
ldy #0
lda sp + 0
sta (env), y
iny
lda sp + 1
sta (env), y
iny
lda __ip + 0
sta (env), y
iny
lda __ip + 1
sta (env), y
iny
lda __fp + 0
sta (env), y
iny
lda __fp + 1
sta (env), y
iny
ldx #0
l1:
lda __sregs, x
sta (env), y
iny
inx
cpx #32
bne l1
tsx
txa
sta (env), y
inx
l2:
iny
lda $0100, x
sta (env), y
inx
bne l2
}
return 0;
}
int setjmp(jmp_buf env)
{
__asm
{
ldy #0
lda __sp + 0
sta (env), y
iny
lda __sp + 1
sta (env), y
iny
lda __ip + 0
sta (env), y
iny
lda __ip + 1
sta (env), y
iny
lda __fp + 0
sta (env), y
iny
lda __fp + 1
sta (env), y
iny
ldx #0
l1:
lda __sregs, x
sta (env), y
iny
inx
cpx #32
bne l1
tsx
txa
sta (env), y
inx
l2:
iny
lda $0100, x
sta (env), y
inx
bne l2
}
return 0;
}
#pragma native(setjmp)
void longjmp(jmp_buf env, int value)
{
__asm
{
ldy #0
lda (env), y
sta __sp + 0
iny
lda (env), y
sta __sp + 1
iny
lda (env), y
sta __ip + 0
iny
lda (env), y
sta __ip + 1
iny
lda (env), y
sta __fp + 0
iny
lda (env), y
sta __fp + 1
iny
ldx #0
l1:
lda (env), y
sta __sregs, x
iny
inx
cpx #32
bne l1
lda (env), y
tax
txs
inx
l2:
iny
lda (env), y
sta $0100, x
inx
bne l2
lda value
sta __accu
lda value + 1
sta __accu + 1
}
}
#pragma native(longjmp)