2 DEF FN l(a,s)= USR VAL "23906" 3 REM (зарезервировать 23 байта) Теперь коды: 10 RESTORE: LET s=0 20 FOR i=23906 TO 23906+22 30 READ d: POKE i,d: LET s=s+d: NEXT i 40 IF s<>2501 THEN PRINT "ERROR in DATA!" 50 DATA 221,042,011,092,221, 110,004,221,102,005, 221,070,012,014,005, 237,091,244,092,205 60 DATA 019,061,201 Параметры загрузчика: - а - адрес эагрузки кодов в память; - s - количество секторов для загрузки. Загрузка начинается с текущего сектора, т.е. со следующего за тем, на котором осталась головка дисковода после загрузки Бейсика. В работе все это будет выглядеть примерно так. Предположим, у вас на кассете есть игра "MONOPOLY", имеющая следующую структуру: MONOPOLY (Бейсик) monopol1 (коды) 53814,94 (1 сектор); monopol2 (коды) 50000,2492 (10 секторов); monopol3 (коды) 50000,2064 (9 секторов); monopol4 (коды) 50000,3243 (13 секторов); monopol5 (коды) 25662,39237 (154 сектора). Загрузчик игры выглядит примерно так (показаны, в основном, те операторы, от которых непосредственно зависит загрузка и запуск программы): 10 CLEAR 25661: LOAD "monopol1" CODE: LOAD "monopol2" CODE: RANDONIZE USR 50000: LOAD "monopol3" CODE: CLS: RANDOMIZE USR 50000: RANDOMIZE USR 53814: LOAD "monopol4" CODE: CLS: RANDOMIZE USR 50000: LOAD "monopol5" CODE: RANDOMIZE USR 3457 Тогда дисковый Бейсик-загрузчик на основе процедуры "monoloader" может выглядеть следующим образом: 2 DEF FN l(a,s)= USR VAL "23906" 3 REM ... 10 CLEAR 25661: RANDOMIZE FN l(53814,1) 20 RANDOMIZE FN l(50000,10): RANDOMIZE USR 50000 30 RANDOMIZE FN l(50000,9): CLS: RANDOMIZE USR 50000: RANDOMIZE USR 53814 40 RANDOMIZE FN l(50000,13): CLS: RANDOMIZE USR 50000 50 RANDOMIZE FN l(25662,154): RANDOMIZE USR 43457