# loader.tal -rw-r--r-- 999 bytes View raw
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
(
    uxnasm etc/loader.tal bin/loader.rom && uxnemu bin/loader.rom
    uxncli ~/roms/hexdump.rom bin/loader.rom

	8000 8000 0711 0106 20ff f702 a001 00af
	80ac 37a0 ffd5 80a2 36ef 38af 8000 6f15
	21aa 20ff f622 226f 2c00
)

|a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2

|0100

    ( calculate position )
    ;b ;a SUB2 DUP2 ;print JSR2 #2018 DEO
    #ffff SWP2 SUB2 ;print JSR2 #0a18 DEO

    ( prelude )
    ;name .File/name DEO2
    #fe00 .File/length DEO2
    #ffd6 JMP2

BRK

@name "etc/nasu.rom $1

@print ( short* -- )

	SWP ,&byte JSR
	&byte ( byte -- ) DUP #04 SFT ,&char JSR
	&char ( char -- ) #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO

JMP2r

|ffd6

    @a
    ( blank zero-page )
    #00 &w #00 OVR STZ INC DUP ?&w POP
    ( load rom )
    #0100 STH2k .File/read DEO2
    ( blank memory )
    #ffd5 .File/success DEI2 STH2kr ADD2
    &l STH2k #00 STH2r STA INC2 GTH2k ?&l POP2 POP2
    ( begin )
    STH2r JMP2
    @b

BRK