10 REM **************** 20 REM Fortune Cookie 30 REM By Chris Nixon 40 REM **************** 50 REM NC100 Version 60 REM Downloaded from Tim's Amstrad NC User's Site 70 REM http://www.ncus.org.uk 80 : 90 ON ERROR GOTO 1050 100 PROCsetup:REPEAT:PROCproverb:UNTIL 0 110 : 120 DEF PROCsetup 130 VDU 26:CLS:RESTORE:READ max%:DIM Z% &80:PROCassemble 140 DIM adj$(max%-1),obj$(max%-1),sub$(max%-1) 150 FOR w%=0 TO max%-1:READ adj$(w%):NEXT 160 FOR w%=0 TO max%-1:READ obj$(w%):NEXT 170 FOR w%=0 TO max%-1:READ sub$(w%):NEXT 180 PROCcard:VDU 28,24,3,68,3 190 ENDPROC 200 : 210 DEF PROCcard 220 CALL scrn_from_disk:IF ?flag=0 THEN CLS ELSE ENDPROC 230 MOVE 60,1:DRAW 419,1:DRAW 419,63:DRAW 60,63:DRAW 60,1 240 MOVE 61,0:DRAW 420,0:DRAW 420,62 250 FOR y%=0 TO 47:READ s$:FOR x%=0 TO 47:IF MID$(s$,x%+1,1)="1" PROCdot 260 NEXT:NEXT:PRINT TAB(32,1);"Ancient Chinese proverb say:" 270 PRINT TAB(27,6);"Press SPACE for further enlightenment..." 280 CALL scrn_to_disk:ENDPROC 290 : 300 DEF PROCdot 310 PLOT 69,x%+78,56-y%:ENDPROC 320 : 330 DEF PROCproverb 340 CLS:adj$=adj$(RND(max%-1)):obj$=obj$(RND(max%-1)):sub$=sub$(RND(max%-1)) 350 p$=CHR$(34)+adj$+" are the "+obj$+" of "+sub$+CHR$(34) 360 PRINT TAB(22-LEN(p$)/2,0);CHR$(17);p$;CHR$(18); 370 REPEAT:UNTIL GET=32:ENDPROC 380 : 390 DATA 30 400 : 410 DATA Subtle,Bold,Many,Rewarding,Brutal,Few,Bland,Blessed,Blind 420 DATA Cursed,Sinister,Wondrous,Vague,Deadly,Strange,Black,Golden 430 DATA Precious,Sweet,Bitter,Varied,Monstrous,Terrible,Simple,Cheap 440 DATA Tainted,Futile,Promising,Painful,Empty 450 : 460 DATA fires,pathways,penalties,temples,benefits,pleasures,sins,symbols 470 DATA revelations,seeds,treasures,ways,workings,perils,qualities,joys 480 DATA origins,follies,enigmas,dividends,rewards,deeds,evils,politics 490 DATA fruits,mysteries,methods,motives,crimes,desires 500 : 510 DATA the flesh,passion,hate,seduction,the soul,charity,knowledge 520 DATA the spirit,wisdom,heaven,hell,mercy,freedom,life,the heart,destiny 530 DATA love,death,truth,lust,greed,hope,delight,despair,disease,peace 540 DATA envy,religion,deceit,guilt 550 : 560 DATA "000000000000000000000001100000000000000000000000" 570 DATA "000000000000000000000010110000000000000000000000" 580 DATA "000000000000000000000100001000000000000000000000" 590 DATA "000000000000000000001001111100000000000000000000" 600 DATA "000000000000000000010000000010000000000000000000" 610 DATA "000000000000000000100011111111000000000000000000" 620 DATA "000000000000000001000000000000100000000000000000" 630 DATA "000000000000000010000111111111110000000000000000" 640 DATA "000000000000000100000000000000001000000000000000" 650 DATA "000000000000001000001111111111111100000000000000" 660 DATA "000000000000010000000000000000000010000000000000" 670 DATA "000000000000100000011111111111111111000000000000" 680 DATA "000000000001000000000000000000000000100000000000" 690 DATA "000000000010000000111111111111111111110000000000" 700 DATA "000000000100000000000000000000000000001000000000" 710 DATA "000000001000000001111111111111111111111100000000" 720 DATA "000000010000000000000000000000000000000010000000" 730 DATA "000000100000000011111111111111111111111111000000" 740 DATA "000001000000000000000000000000000000000000100000" 750 DATA "000010000000000111111111111111111111111111110000" 760 DATA "000100000000000000000000000000000000000000001000" 770 DATA "001000000000001111111111111111111111111111111100" 780 DATA "010000000000000000000000000000000000000000000010" 790 DATA "111111111111111111111111111111111111111111111111" 800 DATA "000000000100000000000000000000000000001000000000" 810 DATA "000000000100000111100000000001111000001000000000" 820 DATA "000000000100001000000000000000000100001000000000" 830 DATA "000000000100000010000000000000010000001000000000" 840 DATA "000000000100000001000000000000100000001000000000" 850 DATA "000000000100000001100000000001100000001000000000" 860 DATA "000000000010000001010000000010100000010000000000" 870 DATA "000000000010000000111000000111000000010000000000" 880 DATA "000000000010000000000000000000000000010000000000" 890 DATA "000000000010000000000000000000000000010000000000" 900 DATA "000000000001000000000000000000000000100000000000" 910 DATA "000000000001000000000010010000000000100000000000" 920 DATA "000000000001000001100001100001100000100000000000" 930 DATA "000000000000100110010000000010011001000000000000" 940 DATA "000000000000101000000000000000000101000000000000" 950 DATA "000000000000010001100000000001100010000000000000" 960 DATA "000000000000010000111111111111000010000000000000" 970 DATA "000000000000101000011000000110000101000000000000" 980 DATA "000000000000101000000111111000000101000000000000" 990 DATA "000000000000100100000000000000001001000000000000" 1000 DATA "000000000000100010000000000000010001000000000000" 1010 DATA "000000000000100001100000000001100001000000000000" 1020 DATA "000000000000100000011100001110000001000000000000" 1030 DATA "000000000000100000000011110000000001000000000000" 1040 : 1050 ON ERROR GOTO 1070 1060 VDU 26:CLS:IF ERR=17 THEN CHAIN "AUTO" 1070 REPORT:PRINT" at line ";ERL 1080 PRINT:PRINT"Press [Function][X] for Notepad Main Menu" 1090 END 1100 : 1110 DEF PROCassemble 1120 fopenout=&B8A5 1130 fopenin=&B8A2 1140 foutblock=&B8AB 1150 finblock=&B896 1160 fclose=&B890 1170 : 1180 FOR PASS = 0 TO 2 STEP 2 1190 P%=Z% 1200 [ 1210 OPT PASS 1220 : 1230 .scrn_to_disk 1240 : 1250 CALL map_scrn_in 1260 LD HL,&F000 1270 LD DE,&8000 1280 LD BC,&1000 1290 LDIR 1300 CALL map_scrn_out 1310 LD HL,filename 1320 CALL fopenout 1330 RET NC 1340 LD HL,&8000 1350 LD BC,&1000 1360 CALL foutblock 1370 JP fclose 1380 : 1390 .scrn_from_disk 1400 : 1410 LD HL,filename 1420 CALL fopenin 1430 JR C,from1 1440 LD HL,flag 1450 LD (HL),0 1460 RET 1470 : 1480 .from1 1490 : 1500 LD HL,&8000 1510 LD BC,&1000 1520 CALL finblock 1530 CALL fclose 1540 CALL map_scrn_in 1550 LD HL,&8000 1560 LD DE,&F000 1570 LD BC,&1000 1580 LDIR 1590 CALL map_scrn_out 1600 LD HL,flag 1610 LD (HL),1 1620 RET 1630 : 1640 .map_scrn_in 1650 : 1660 LD A,(&B003) 1670 LD (state),A 1680 LD A,67 1690 LD (&B003),A 1700 OUT (&13),A 1710 RET 1720 : 1730 .map_scrn_out 1740 : 1750 LD A,(state) 1760 LD (&B003),A 1770 OUT (&13),A 1780 RET 1790 : 1800 .filename 1810 : 1820 OPT FNequs("COOKIE.SCN"):OPT FNequb(0) 1830 : 1840 .flag 1850 : 1860 OPT FNequb(0) 1870 : 1880 .state 1890 : 1900 OPT FNequb(0) 1910 ] 1920 NEXT 1930 ENDPROC 1940 : 1950 DEF FNequs(string$) 1960 $P%=string$ 1970 P%=P%+LEN(string$) 1980 =PASS 1990 : 2000 DEF FNequb(byte) 2010 ?P%=byte 2020 P%=P%+1 2030 =PASS