IDP "PUNCH BOOT" IDP "RELEASE 21/03/79" IDP "P. FRANCONNET" PROG ZERO: EQU $ < < P R O G R A M M E D E P U N C H U T I L I S E < < P O U R P U N C H E R U N E Z O N E M E M O I R E < < D A N S U N F O R M A T C O M P A T I B L E A V E C < < L E " N O Y A U D E B O O T S T R A P " D U < < S Y S T E M E C M S 5. < < < PARAMETRES < LCCI: VAL 80 < COMPATIBLE CMS5. NOCMO: VAL 2 < COMPATIBLE CMS5. (NOMBRE D'OCTETS < PAR MOT) BNNMPC: VAL LCCI/NOCMO < NOMBRE DE MOTS PAR CARTE, A RAISON < DE 1 OCTET PAR COLONNE. < FORMAT DES CARTES: < < - 'BNNMPC' MOTS PAR CARTE A RAISON DE 1 OCTET < PAR COLONNE. < - CHAQUE OCTET EST RANGE EN COLONNES 0 A 7. < - FIN DES DONNEES INDIQUEE PAR UN BIT < A 1 EN COLONNE 12. < DZS '10 < INTERFACE AVEC LE SYSTEME. WORD BN00 WORD BN01 BN00: EQU $ LRP L BR -1,L < < PILE < PILE: DZS 20 < < BUFFER PUNCH < BP: DZS 80 FBP: EQU $ PAGE < < MESSAGES A ENVOYER PAR LE S/P 'ENVOI' < M: EQU $+128 MADEB: BYTE '6D;"A" ASCI "DRESSE DEB=" WORD 0 MAFIN: BYTE '6D;"A" ASCI "DRESSE FIN=" WORD 0 MASCU: BYTE '6D;"A" ASCI "SSIGNATION CU IMPOSSIBLE..." WORD 0 MPBP: BYTE '6D;"P" ASCI "ROBLEME PERFO." WORD 0 < < DIVERS < ASU1: ASCI "!ASSIGN B=CU" BYTE "1";'04 ASU1F: EQU $ ASU2: ASCI "!ASSIGN B=CU" BYTE "2";'04 ASU2F: EQU $ DESAS: ASCI "!ASSIGN B=" BYTE "S";'04 DESASF: EQU $ COMMON COM: EQU $ < < RELAIS ET ZONES DE TRAVAIL < ADRDEB: WORD 0 < ADRESSE DE DEBUT COURANTE. ADRFIN: WORD 0 < ADRESSE DE FIN. Q8000: WORD '8000 < LES ADRESSES COMPRISES ENTRE '8000 Q8080: WORD '8080 < ET '8080 BORNES INCLUSES, SERONT REFUSEES PBP: WORD 0 < POINTEUR BUFFER PUNCH. ABP: WORD BP < ADRESSE BUFFER PUNCH. AFBP: WORD FBP < ADRESSE FIN BUFFER PUNCH. AFBP1: WORD BNNMPC*2+BP < POUR LE TEST 'FIN DE CARTE', EN < FONCTION DU NOMBRE DE MOTS PAR < CARTE : 'BNNMPC' QUI EST UN PARAMETRE. AXTRAV: WORD ZERO,X < RELAI D'INDEXATION. AM: WORD M < POUR LE S/P 'ENVOI'. < < RELAIS DE SOUS-PROGRAMMES. < ARAZBP: WORD RAZBP < REMISE A ZERO BUFFER PUNCH. APC1M: WORD PC1M < PUNCH 1 MOT. APC1O: WORD PC1O < PUNCH 1 OCTET. ACONVH: WORD CONVH < CONVERSION ASCI --> HEXA. ACONVA: WORD CONVA < CONVERSION HEXA --> ASCI. AENVOI: WORD ENVOI < ENVOI MESSAGE. AVALID: WORD VALID < VALIDATION ADRESSE. < < DEMANDES < ADEB: DZS 2 < ADRESSE DEBUT EN ASCI. DMADEB: WORD '0101 < LECTURE ADRESSE DEBUT. AOADEB: WORD ADEB-ZERO*2 WORD 4 AFIN: EQU $ < ADRESSE FIN, EN RECOUVREMENT. DMAFIN: EQU DMADEB < LECTURE ADRESSE DE FIN. AOAFIN: EQU AOADEB DMASU1: WORD '0002 < ASSIGNATION 'B <--> CU1. WORD ASU1-ZERO*2 WORD ASU1F-ASU1*2 DMASU2: WORD '0002 < ASSIGNATION 'B <--> CU2. WORD ASU2-ZERO*2 WORD ASU2F-ASU2*2 DMCCI: WORD '0001 < RETOUR AU CCI. DMDSAS: WORD '0002 < DESASSIGNATION DE L'UL 'B. WORD DESAS-ZERO*2 WORD DESASF-DESAS*2 DMPCH: WORD '0B02 < PUNCH COLONNE. WORD 0 WORD 2 DMTMPO: WORD '0005 < TEMPORISATION. WORD 0 WORD 3 < SECONDES. DMOUT: WORD '0202 < ENVOI MESSAGE PAR S/P 'ENVOI'. WORD 0 WORD 0 MNBM: BYTE '6D;"N" ASCI "OMBRE DE MOTS= '" NBM: DZS 2 < NOMBRE DE MOTS EN ASCI. MNBMF: EQU $ DMNBM: WORD '0202 < EDITION NOMBRE DE MOTS. WORD MNBM-ZERO*2 WORD MNBMF-MNBM*2 PAGE PROG BN01: EQU $ < < I N I T I A L I S A T I O N S < < < 'K' DE PILE < LRM C,K WORD COM+'80 WORD PILE-1 < < ADRESSE DEBUT < BN02: EQU $ LAI MADEB-M < POUR ENVOI QUESTION. BSR AENVOI LAD DMADEB < DEMANDE DE L'ADRESSE. SVC 0 LA AOADEB < ADRESSE OCTET DE L'ADRESSE EN ASCI. BSR AVALID < CONVERSION ET VALIDATION. JNE BN02 < ADRESSE INACCEPTABLE. STA ADRDEB < STOCKAGE ADRESSE DEBUT. < < ADRESSE DE FIN < BN03: EQU $ LAI MAFIN-M < POUR ENVOI QUESTION. BSR AENVOI LAD DMAFIN < DEMANDE DE L'ADRESSE. SVC 0 LA AOAFIN < ADRESSE OCTET DE L'ADRESSE DE FIN. BSR AVALID < CONVERSION ET VALIDATION. JNE BN03 < ADRESSE INACCEPTABLE. STA ADRFIN < STOCKAGE ADRESSE DE FIN. < < VALIDATION GLOBALE: < < LES DEUX ADRESSES DOIVENT ETRE DE MEME SIGNE, < PUISQU'ON SAIT QUE L'INTERVALLE ('8000 '8080) EST INTERDIT, < ET L'ADRESSE FIN > ADRESSE DEBUT. < LA ADRDEB EOR ADRFIN TBT 0 JC BN02 < SIGNES DIFFERENTS. LA ADRFIN SB ADRDEB JAL BN02 < FIN < DEBUT. < < EDITION DU NOMBRE DE MOTS. < LRM Y WORD NBM-ZERO*2 ADRI 1,A < NOMBRE DE MOTS. BSR ACONVA < EDITION NOMBRE DE MOTS. LAD DMNBM < ENVOI NOMBRE DE MOTS. SVC 0 < < DESASSIGNATION DE L'UL 'B < LAD DMDSAS SVC 0 < < ASSIGNATION DE 'CU1' OU 'CU2' A L'UL 'B. < SI C'EST IMPOSSIBLE, RETOUR AU CCI ET BOUCLE. < BN05: EQU $ LAD DMASU1 < TENTATIVE ASSIGNATION CU1. SVC 0 JE BN04 LAD DMASU2 < TENTATIVE ASSIGNATION CU2. SVC 0 JE BN04 LAI MASCU-M < ASSIGNATION IMPOSSIBLE, BSR AENVOI < ON PREVIENT, LAD DMCCI < ET ON REVIENT AU CCI. SVC 0 JMP BN05 < ... ET BOUCLE. < < INITIALISATION BUFFER PUNCH ET POINTEUR BUFFER PUNCH. < BN04: EQU $ BSR ARAZBP < < B O U C L E D E L E C T U R E E T D E P U N C H < BN07: EQU $ LA ADRDEB < ADRESSE DEBUT COURANTE. WORD '1E15 < 'B' RECOIT LE MOT D'ADRESSE (A). LR B,A < POUR LE S/P 'PC1M' BSR APC1M < PUNCH DU MOT COURANT. LA ADRDEB CP ADRFIN < FIN ? JE BN06 IC ADRDEB < ADRESSE SUIVANTE JMP BN07 < ET BOUCLE. < < O P E R A T I O N S D E F I N < BN06: EQU $ < < PUNCH DELIMITEUR DE FIN < LRM A WORD 'C000 < DELIMITEUR DE FIN. BSR APC1O < PUNCH OCTET. < < PUNCH DERNIERE CARTE < LXI BNNMPC*2-1 LAI 0 BSR APC1O < PUNCH OCTET 'BNNMPC'-1 FOIS POUR JDX $-1 < PROVOQUER A COUP SUR LE PUNCH < DE LA CARTE EN COURS. BESTIAL NON ? < < DESASSIGNATIONS ET RETOUR CCI < LAD DMDSAS < DESASSIGNATION DE L'UL 'B. SVC 0 LAD DMCCI < RETOUR CCI. SVC 0 JMP BN01 < VERS NOUVELLE EXECUTION DU PROGRAMME. PAGE < < R E I N I T I A L I S T I O N B U F F E R P U N C H < < E T P O I N T E U R B U F F E R P U N C H < RAZBP: EQU $ PSR A,X,Y,L < LRM A,X,Y,L WORD 0 < REINIT A ZERO. WORD FBP-BP < LONGUEUR EN MOTS. WORD BP < VALEUR DE REINITIALISATION DE 'PBP'. WORD BP < ADRESSE BUFFER PUNCH. < RAZBP1: EQU $ STA 0,L ADRI 1,L JDX RAZBP1 STY PBP < PLR A,X,Y,L RSR PAGE VALID: EQU $ < < C O N V E R S I O N E T V A L I D A T I O N < < D ' U N E A D R E S S E E X P R I M E E E N A S C I < < ARGUMENT: < - 'A' = ADRESSE OCTET DE L'ADRESSE EXPRIMEE < EN ASCI. < < < RESULTAT: < < - 'A' = ADRESSE CONVERTIE. < - CODE CONDITION POSITIONNE PAR CPZR, IN < DIQUANT LA VALIDITE DE L'ADRESSE. TESTER < EN RETOUR PAR 'JE OK'. < PSR B BSR ACONVH < CONVERSION JNE VALID2 < ADRESSE INVALIDE. CP Q8080 JG VALID1 CP Q8000 JL VALID1 VALID2: EQU $ < ADRESSE INACCEPTABL ('8000 A LBI 1 < '8080 SONT INTERDITES A CAUSE < DU '1E15) VALID1: EQU $ CPZR B PLR B RSR PC1M: EQU $ < < P U N C H U N M O T C O N T E N U D A N S ' A ' < PSR B LBI 0 SLRD 8 SLLS 2+4 BSR APC1O < PUNCH PREMIER OCTET. LAI 0 SLLD 8 SLLS 2+4 BSR APC1O < PUNCH SECOND OCTET. PLR B RSR PC1O: EQU $ < < P U N C H U N O C T E T < PSR A,X,Y,L LR A,Y < OCTET A PUNCHER. < LA PBP < POINTEUR BUFFER PUNCH CP AFBP1 < FIN DE CARTE ? JL PC1O1 LRM X,L WORD 80 < NOMBRE DE COLONNES. WORD BP < ADRESSE MOT COURANT. PC1O2: EQU $ LR L,A SLLS 1 STA DMPCH+1 LAD DMPCH < PUNCH COLONNE. PSR X < A CAUSE DU SVC. SVC 0 PLR X JE PC1O3 LAI MPBP-M < PROBLEME PERFO, ON PREVIENT. BSR AENVOI WORD '1E05 < ET ON TRAPPE. PC1O3: EQU $ ADRI 1,L JDX PC1O2 LAD DMTMPO < TEMPORISATION SVC 0 BSR ARAZBP < REINITIALISATION BUFFER PUNCH < ET POINTEUR BUFFER PUNCH. PC1O1: EQU $ LX PBP LR Y,A < OCTET A PUNCHER STA &AXTRAV < STORE OCTET A PUNCHER IC PBP < POUR OCTET SUIVANT < PLR A,X,Y,L RSR PAGE CONVA: EQU $ < < S/P DE CONVERSION D'UN MOT EN ASCI < < ARGUMENT: < A = MOT A TRADUIRE < Y = ADRESSE OCTET DE RANGEMENT DU RESULTAT < PSR A,B,X,Y < SAUVEGARDES < ADRI 3,Y < ADRESSE OCTET DERNIER CHIFFRE PSR A LXI 4 < INIT COUNT CONVA1: EQU $ PLR A SLRD 4 PSR A SLLD 4 ANDI 'F < RECUPERATION CHIFFRE HEXA CPI '9 JLE $+2 ADRI 7,A ADRI '30,A < CARACTERE ASCI PSR X < SVG COUNT LR Y,X < INDEX CHIFFRE EN COURS STBY &AXTRAV ADRI -1,Y < INDEX CHIFFRE SUIVANT PLR X < RECUPERATION COUNT JDX CONVA1 < PLR A < A NE PAS OUBLIER ! PLR A,B,X,Y < RESTAURATIONS RSR PAGE < < CONVERSION EN BINAIRE D'UN NOMBRE HEXADECIMAL SAISI < EN ASCI (PAR EXEMPLE, NUMERO DE SECTEUR) < < ARGUMENTS: < 'A' = ADRESSE OCTET DES 4 CARACTERES ASCI < < RESULTAT: < 'A' = NOMBRE EN BINAIRE < 'B' = 0 SI CONVERSION OK < # 0 SINON < < NOTA: < 'B' EST TESTE A ZERO AVANT LE RETOUR (TESTER PAR JE/JNE) < CONVH: EQU $ PSR Y,W < SAUVEGARDES LR A,Y < Y = ADRESSE CARACTERE EN COURS LXI 4 < INIT COUNT CONVH1: EQU $ LR X,W < SAUVEGARDE COUNT LR Y,X < INDEX CARACTERE LBY &AXTRAV < CARACTERE CPI "0" JL CONVH3 < ERREUR CPI "9" JLE CONVH2 CPI "A" JL CONVH3 < ERREUR CPI "F" JG CONVH3 < ERREUR ADRI -7,A CONVH2: EQU $ ADRI -'30,A SLLS 12 SCLD 4 < CHIFFRE HEXA DANS 'B' ADRI 1,Y < CARACTERE SUIVANT LR W,X < RESTAURATION COUNT JDX CONVH1 < AU SUIVANT < SLLD 16 < CONVERSION OK JMP CONVH9 < CONVH3: EQU $ LBI 1 < ERREUR CONVH9: EQU $ PLR Y,W < RESTAURATIONS CPZR B < POUR TEST AU RETOUR RSR PAGE ENVOI: EQU $ < < ENVOI D'UN MESSAGE SUR UL '02 < < EN ENTREE < < A=DEPLACEMENT MOTS DU MESSAGE A ENVOYER PAR RAPPORT < A M. TOUT MESSAGE EST DELIMITE PAR '00 < < < NOTA: ON A < EN TABLE: M: EQU $+128 < MES1: ASCI "TEXTE..." < WORD 0 < EN COMMON: AM: WORD M < APPEL PAR: LAI MESI-M < BSR AENVOI < PSR A,X AD AM < @ MOT MESSAGE ADR A,A < @ OCT MESSAGE STA DMOUT+1 STZ DMOUT+2 LR A,X ENV1: EQU $ < BOUCLE JUSQU'A DELIM '00 LBY &AXTRAV JAE ENV2 IC DMOUT+2 < LONGUEUR='+1 ADRI 1,X JMP ENV1 ENV2: EQU $ LAD DMOUT SVC 0 PLR A,X RSR END