-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDISKSIMUL.4TH
41 lines (35 loc) · 979 Bytes
/
DISKSIMUL.4TH
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
( **** RAM DISC SIMULATION **** )
( fig-Forth installation guide )
( Tuned for Atari 8-bit APX Forth )
( by BartGo, 2024 )
( VIRTUAL SCREENS FROM ZERO TO [HI-LO]/1024 )
( CONSIDER TO CREATE SEPARATE VIRTUAL BLOCK, )
( BUFFER AND OTHER WORDS TO ALLOW PARALLEL )
( ACTUAL DRIVE ACCESS, DEPENDING ON SCREEN #. )
FORTH DEFINITIONS DECIMAL
16368 CONSTANT LO ( START OF BUFFER AREA )
LO 2048 + CONSTANT HI ( END OF BUFFER AREA )
: VSS CR HI LO - 1024 / CR . ." VSCREEN(S)" CR ;
: VR/W
>R B/BUF * LO + DUP HI > 6 ?ERROR
R> IF SWAP ENDIF B/BUF CMOVE ;
: VR/W-ON
' VR/W CFA DUP
' BLOCK 48 + !
' BUFFER 44 + ! ;
: VR/W-OFF
' R/W CFA DUP
' BLOCK 48 + !
' BUFFER 44 + ! ;
;S
( FIXME )
: VIRTUAL
1 IF ' (VR/W) CR HI LO - 1024 / CR .
ELSE ' R/W CR CR ." DISABLING" THEN
CFA DUP
' BLOCK 48 + !
' BUFFER 44 + !
EMPTY-BUFFERS CR ." VSCREEN(S)"
' (VR/W) @ ' 0 CFA = IF ' 1
ELSE ' 0 THEN
CFA ' (VR/W) ! ;