%%HP: T(0)A(R)F(.); DIR DEPART « CLLCD DEPTH LIST RCLMENU PATH 1 { } 0 1 1 6 4 0 1 stk m path p fich k cur idx n pg nt chg « IFERR DO IF chg THEN CLLCD 1 'cur' STO 1 'idx' STO 2 TVARS 15 TVARS + DUP SIZE 'nt' STO 'fich' STO 0 'chg' STO END p 'M1' 'M2' IFTE TMENU IF nt THEN idx idx 7 nt MIN 1 - DUP 'n' STO + FOR j j cur == "†" " " IFTE fich j GET + IF fich j GET VTYPE 15 == THEN ": dir" + END j idx - 1 + DISP NEXT ELSE "Catalogue vide" 4 DISP END -1 WAIT 'k' STO CASE k IP 26 == THEN p NOT 'p' STO END k 51.1 == THEN fich cur GET IF DUP VTYPE 2 == THEN DUP RCL SWAP " ______________________ " + SWAP + CLLCD VIEWER DROP 1 'chg' STO ELSE EVAL 1 'chg' STO END END k 11.1 == p AND THEN CLLCD "Nom du répertoire" { Œ } INPUT "'" SWAP + IFERR STR CRDIR THEN CLLCD "Impossible de créer ce répertoire" 1 DISP 0 WAIT DROP END 1 'chg' STO END k 12.1 == p AND THEN "Nom de la fiche" { Œ } INPUT "'" SWAP + STR "Contenu :" { Œ } INPUT SWAP STO 1 'chg' STO END k 13.1 == p AND THEN fich cur GET IF DUP VTYPE 2 == THEN DUP RCL "" SWAP { 1 Œ } + INPUT SWAP STO 1 'chg' STO END END k 16.1 == p AND THEN TROUVE 1 'chg' STO END k 11.1 == p NOT AND THEN fich cur GET 1 LIST ORDER 1 'chg' STO END k 12.1 == p NOT AND k 54.1 == OR THEN CLLCD fich cur GET "PURGE " OVER + " (O/N) ?" + 1 DISP 0 WAIT IP IF 33 == THEN PURGE ELSE DROP END 1 'chg' STO END k 31.2 == THEN XLIB 771 3 1 'chg' STO END k 31.3 == THEN XLIB 771 2 1 'chg' STO END k 55.1 == THEN 0 DOERR END k 25.1 == THEN CASE cur DUP 1 ‰ THEN nt DUP n - 'idx' STO END 1 - DUP idx < THEN DUP 'idx' STO END END 'cur' STO END k 35.1 == THEN CASE cur DUP nt Š THEN 1 DUP 'idx' STO END 1 + DUP idx n + > THEN DUP n - 'idx' STO END END 'cur' STO END k 25.2 == THEN CASE cur DUP pg ‰ THEN 1 DUP 'idx' STO END pg - DUP idx < THEN DUP 'idx' STO END END 'cur' STO END k 35.2 == THEN CASE cur pg + nt DUP2 > THEN SWAP DROP DUP n - 'idx' STO END DROP DUP idx n + > THEN DUP n - 'idx' STO END END 'cur' STO END k 25.3 == THEN 1 'cur' STO 1 'idx' STO END k 35.3 == THEN nt DUP 'cur' STO n - 'idx' STO END END UNTIL 0 END THEN CLEAR m MENU stk LIST DROP path EVAL END » » VIEWER « DEPTH ROLLD DEPTH 1 - LIST { 0 } 0 1 { 1 1 1 1 1 } S STK T C X M « IFERR CLLCD "Patientez SVP ..." 1 DISP S DUP 2 DISP WHILE DUP " " POS DUP REPEAT DUP 'C' STO+ 'T' C STO+ 1 + OVER SIZE SUB END DROP2 'T' S SIZE STO+ IF T SIZE 8 ‰ THEN T { 0 0 0 0 0 0 0 0 } + 1 8 SUB 'T' STO END CLLCD WHILE S T X GET 1 + 1000000 SUB 1 DISP 0 WAIT DUP IP 51 ‹ REPEAT CASE DUP 25.1 == THEN DROP X 1 - 1 MAX 'X' STO END DUP 35.1 == THEN DROP X 1 + T SIZE 7 - MIN 'X' STO END DUP 25.2 == THEN DROP X 6 - 1 MAX 'X' STO END DUP 35.2 == THEN DROP X 6 + T SIZE 7 - MIN 'X' STO END DUP 25.3 == THEN DROP 1 'X' STO END DUP 35.3 == THEN DROP T SIZE 7 - 'X' STO END { 82.1 83.1 84.1 72.1 73.1 } OVER POS DUP THEN M SWAP GET 'X' STO DROP END DROP { 82.2 83.2 84.2 72.2 73.2 } OVER POS DUP THEN 'M' SWAP X PUT DROP END DROP2 END END DROP THEN END CLEAR STK LIST DROP S » » TROUVE « 2 TVARS "Motif à trouver" { Œ } INPUT 0 0 0 f m i t d « DO WHILE f 'i' INCR IF OVER SIZE OVER < THEN 0 1 'd' STO ELSE GET DUP RCL DUP m POS NOT END REPEAT DROP2 END IF d THEN DROP2 ELSE 1 't' STO SWAP " " + SWAP + VIEWER DROP END UNTIL CLLCD IF t d NOT AND THEN "Continuer la recherche (O/N) ?" 1 DISP 0 WAIT IP 32 == ELSE 1 END END » » M1 { "CRDIR" "NEW" "EDIT" "" "" "FIND" } M2 { "ORDER" "PURGE" } END