67:(C&G) has been offering a wide variety of vocational and apprenticeship programs since the late 19th century. In the early 1960s, the first computer systems were beginning to rapidly proliferate in large companies, and C&G decided to introduce a series of programs on computer operation and programming.
824:
Once opened, the devices could be read and written using the various I/O instructions. These included separate instructions for numbers and characters, instructions to convert between the two, and various other instructions for particular operations like outputting a line feed or rewinding a tape. A
1060:
to ease the task of outputting readable text. The format is stored as a value in memory, at n+(m) for most instructions, or in locations 6 and 7 for the CNC instruction, which uses n+(m) to define the output location. There are four basic formats, all of which begin with a leading space and plus or
812:
In contrast, the ICL version, which corresponds to the 1968 specification, is much more flexible. Its
Computer had a single input and single output channel that could be connected to different devices. There were five devices defined, 10 was the paper tape reader, 30 was the card reader, 50 was
694:
instructions. There are significant differences between the two known versions, ICL and Elliot, but it is not clear whether these are differences due to the Elliot version being the earlier specification, or whether it is due to the machine lacking tape and disk support and thus simply removing
142:. Most instructions took two operands pointing into the main memory, referred to as n and m. n was normally a 12-bit value 0 through 999, while m selected one of the registers, 0 through 9. The value in that register was added to n to produce a complete address. For instance, the
94:
The first release was in 1964, and used in two courses, Basic and
Advanced Certificates for Computer Personnel. The system was updated in 1968 as the Revised Mnemonic Code, at which time the Basic course became the Certificate in Computer Programming and Information Processing.
149:
In the documentation, if the value in question was read from a memory location it was indicated in parens, so most instructions were of the form n+(m), meaning that the value in the register/memory location m was added to the constant value n. Addition performed the operation
78:
on any sufficiently powerful platform. The system was deliberately simplified to make the number of machines that could run it as large as possible. It also added a number of features one would not normally associate with assembler, including the standard data format being
184:
operations. One curious addition is the "Q", for "query", which could be added to the front of any instruction. When Q was encountered, the interpreter would run the instruction and then output debugging information to the printer.
278:
Group 1, accumulator/constant operations, with a single operand holding an integer value. In the original specification only n was used, in the 1968 revision, m can be optionally supplied and its value added to the constant in n.
103:
The virtual computer was an oddity in that its basic data type was the floating point number, as opposed to the majority of real-world machines which used binary integers, or for business-oriented machines of the era,
1162:
In addition to the
Mnemonic Code, the Computer also defined a basic operating environment, like the BASIC language. This included LOAD and SAVE, ON to redirect the input or output device, and GO to start execution.
825:
key feature was the concept of a "block", a group of related data that was read all at once. This was normally used to read and write character strings in a single instruction. The block ended with the
194:
FF, the "order number", was the numerical instruction opcode. Q indicated the query function, and nnn and m were three-digit and one-digit values for n and m. Numbers were entered in decimal format.
180:
The instructions in the
Mnemonic Code can be broken into three broad categories, basic math and logic operations that closely mirror most assembler languages, additional mathematical operations, and
112:, C&G also included multiplication and division, as well as a number of more advanced features like exponents and trigonometric functions. A memory location could alternately hold one character.
202:
The system broke down its basic arithmetic and logical operations into several groups for organizational purposes. Unless otherwise specified, the lists are from the Elliot 903 documentation.
146:
instruction read the two operands, added the value in the selected register m to the constant value n, and then accessed the value at the resulting memory location, referred to as C.
154:, meaning the value in register m was added to the constant value n, and then the value in the resulting memory location, (n+(m)), was added to the value already in the accumulator.
582:
The LOP instruction is used to implement loops; by placing the number of iterations in register 5, LOP will decrement the value each time and then jump back to the top of the loop.
39:
and used as the basis for a number of computer programming and administration courses. The computer model was deliberately very simple, and operational systems were implemented as
70:
The City & Guilds
Mnemonic Code addressed the problem of widespread incompatibility across platforms by introducing a single new assembler language that could then be
1204:
The ICL documentation uses section numbers throughout, but some pages also have a page number in the header. Page numbers are used where available, sections otherwise.
613:
Square root of the value in A. If n+(m) is non-zero, an error will leave A unchanged and jump to that location. If n+(m) is zero, errors cause execution to stop.
1570:
172:. It also lacked symbolic labels, so if the program added or removed lines, the programmer had to manually update the locations of branches.
1056:
As a major goal of the system was to read and write data to various real-world devices, the Code included a formatting system similar to
64:
36:
1530:
169:
165:. This held 0 to 9 in locations 0 to 9, A to Z in 10 through 35, and then a number of symbols for a total of 64 characters.
454:
The
Revised edition changed some of the codes and added new ones. The list in this section is from the ICL documentation:
83:
and including a number of features for advanced mathematics and string handling that would normally be expected in a
88:
1565:
885:
Write the number in A to the output device. n and m holds numbers that defines the format to write (see below)
131:
instruction and 6 and 7 were used to specify the format when converting from characters to numbers using the
120:
40:
1153:
indicates the end of the program code and sets the initial program counter location when the program is run
1520:
1497:
1171:
This example, from
Herbert, calculates and prints PI. Written for the Elliot 903, this uses the earlier
115:
The computer was defined to have a main memory of 1,000 words. The first ten addresses could be used as
1057:
105:
119:
but also had special meanings. Location zero was permanently set to the value zero, while 1 was the
1575:
821:
instruction was called, for read or write respectively, with the desired device number in (n+(m)).
139:
108:. In addition to the low-level commands found in most assemblers, like loading data from memory or
84:
1128:
In addition to the machine instructions, the language also included a small number of directives:
44:
28:
1141:
sets the starting location of the following code. Several STOREs can be used in a single program
1508:
109:
695:
instructions related to those devices. The result is a relatively limited set of functions:
75:
32:
918:
Read characters into memory starting at n+(m), stopping when the block character is seen
813:
magnetic tape, 60 was a disk pack, and 80 was a printer. To use one of the devices, the
161:
had been standardized, and, as was typical for machines of the era, used its own custom
1217:
116:
80:
1559:
1549:
1011:
162:
1178:(TITLE) SIMPLE TEST (STORE 12) LDAN 1 ARC 16 MLTN 4 PNT 1,6 JST (EXECUTE 12)
691:
181:
261:
Multiply the value stored in n+m to the value in the accumulator, A = A x (n+(m))
188:
The instructions, depending on the version, were stored internally in the format:
71:
554:
Write the return address to location 4, and jump to n+(m) (jump to subroutine)
437:
Write the return address to location 4, and jump to n+(m) (jump to subroutine)
1117:
write a leading period, m digits of fraction, "E", and two digits of exponent
124:
52:
1512:
335:
Multiply the value stored in n+m to the value in the accumulator, A = A x n
250:
Subtract the value at n+m from the value in the accumulator, A = A – (n+(m))
239:
Add the value stored in n+m to the value in the accumulator, A = A + (n+(m))
985:
1084:
write all the digits in the number including a period at the decimal place
272:
Divide the value at n+m from the value in the accumulator, A = A / (n+(m))
576:
Decrement the value in register 5, then jump to n+(m) if the value > 0
48:
773:
Read all the characters on a punch card into memory starting at (n+(m))
324:
Subtract the value at n+m from the value in the accumulator, A = A – n
1505:
Computer
Resurrection: The Journal of the Computer Conservation Society
346:
Divide the value at n+m from the value in the accumulator, A = A / n
874:
Read number from the input device into A, jump to n+(m) on any error
907:
Write one character at (n+(m)), this may be the new line character
158:
1147:
stops execution and waits for a GO instruction from the operator
718:
Read a single character from punch tape and store it at (n+(m))
1095:
write n digits of the integer part, ignore any fractional part
635:
Natural logarithm of the value in A. Overflows jump to n+(m)
228:
Load the data stored in location n+(m) into the accumulator
1552:– Helen Young recounts early work on a C&G interpreter
1106:
write n digits of integer, a period, m digits of fraction
999:
Backspace to block number n+(m). Only legal on hard disks
929:
Write a block of characters from memory starting at n+(m)
1243:
1241:
1239:
565:
Stop execution, when user presses GO, pick up at n+(m)
448:
Stop execution, when user presses GO, pick up at n+(m)
1289:
1287:
1285:
1283:
1281:
1279:
1277:
1275:
1273:
302:
Load the constant 0 through 999 into the accumulator
624:
Exponent of the value in A. Overflows jump to n+(m)
1260:
1258:
1256:
1182:
1172:
988:, with other devices is moves forward n+(m) blocks
826:
151:
128:
127:calls. In the revised edition, 5 was used with the
740:Read a number from the tape into the accumulator
55:family. An updated version was released in 1968.
1391:
1389:
375:Store the accumulator's value to location n+(m)
962:Convert the string at n+(m) into a number in A
784:Punch characters starting at (n+(m)) to a card
1135:prints the following line to the output device
984:Access block number n+(m). Normally used with
590:Group 4 are a set of standard math functions:
35:that ran it. It was introduced in 1964 by the
1352:
1350:
1175:I/O command, which prints to the punch tape.
973:Convert the number in A to a string at n+(m)
940:Write a sequence of n+(m) newline characters
313:Add the value to the accumulator, A = A + n
168:The system lacked any facility for including
8:
751:Punch the number in the accumulator to tape
951:Write a sequence of n+(m) space characters
543:Jump to n+m if the accumulator is >= 0
521:Jump to n+m if the accumulator is >= 0
510:Jump to n+m if the accumulator is <= 0
896:Read one character and store it in n+(m)
863:Allocate output to device number (n+(m))
829:character, known as the block character.
532:Jump to n+m if the accumulator is < 0
415:Jump to n+m if the accumulator is > 0
1220:– A similar educational virtual machine.
1063:
1024:
852:Allocate input to device number (n+(m))
831:
697:
592:
499:Jump to n+m if the accumulator is not 0
456:
383:
354:
281:
207:
205:Group 0, accumulator/memory operations:
1479:
1293:
1247:
1235:
1197:
729:Punch the character at (n+(m)) to tape
123:and 4 held the return address during
7:
1455:
1380:
1368:
1341:
1317:
1305:
1264:
1185:command, this program will produce:
488:Jump to n+m if the accumulator is 0
426:Jump to n+m if the accumulator is 0
1571:Programming language implementation
65:City and Guilds of London Institute
37:City and Guilds of London Institute
16:1964 British computer specification
14:
477:Jump to n+m (unconditional jump)
404:Jump to n+m (unconditional jump)
806:Punch number at (n+(m)) to card
1522:City & Guilds Mnemonic Code
1498:"City and Guilds Mnemonic Code"
1496:Herbert, Andrew (Autumn 2015).
1467:
1443:
1431:
1419:
1407:
1395:
1356:
1329:
795:Read number on card to (n+(m))
679:Integer part of the value in A
21:City & Guilds Mnemonic Code
1532:The City & Guilds Computer
157:The system was created before
1:
668:Arctangent of the value in A
27:was a specification for an
1592:
762:Punch a newline character
381:Group 3, test and branch:
25:City & Guilds Computer
690:Group 5, 6 and 7 are the
657:Cosine of the value in A
1550:Memories of a Programmer
646:Sine of the value in A
33:virtual computer system
1010:Rewind. Only legal on
352:Group 2, store value:
1188:SIMPLE TEST 3.141593
1158:Operating environment
1058:printf format strings
1124:Assembler directives
106:binary coded decimal
1181:When run, with the
1103:n>=1, m<>0
138:The machine was an
85:high level language
45:mainframe computers
23:and its associated
1021:Other instructions
140:accumulator design
29:assembler language
1121:
1120:
1052:Number formatting
1049:
1048:
1018:
1017:
810:
809:
683:
682:
580:
579:
452:
451:
379:
378:
350:
349:
276:
275:
1583:
1566:Virtual machines
1539:
1537:
1526:
1516:
1502:
1483:
1477:
1471:
1465:
1459:
1453:
1447:
1441:
1435:
1429:
1423:
1417:
1411:
1405:
1399:
1393:
1384:
1378:
1372:
1366:
1360:
1354:
1345:
1339:
1333:
1327:
1321:
1315:
1309:
1303:
1297:
1291:
1268:
1262:
1251:
1245:
1205:
1202:
1184:
1174:
1064:
1025:
832:
828:
820:
816:
698:
593:
457:
384:
355:
282:
208:
198:Basic operations
153:
145:
134:
130:
1591:
1590:
1586:
1585:
1584:
1582:
1581:
1580:
1556:
1555:
1546:
1535:
1529:
1519:
1500:
1495:
1492:
1487:
1486:
1478:
1474:
1470:, p. 13.0.
1466:
1462:
1458:, pp. 2–3.
1454:
1450:
1442:
1438:
1430:
1426:
1418:
1414:
1406:
1402:
1394:
1387:
1383:, pp. 6–7.
1379:
1375:
1367:
1363:
1355:
1348:
1340:
1336:
1328:
1324:
1316:
1312:
1304:
1300:
1292:
1271:
1263:
1254:
1246:
1237:
1232:
1227:
1214:
1209:
1208:
1203:
1199:
1194:
1189:
1179:
1169:
1160:
1126:
1114:n=9, m<>0
1054:
1045:Stop execution
1023:
818:
814:
688:
588:
200:
192:
178:
152:A = A + (n+(m))
143:
132:
117:index registers
101:
76:virtual machine
61:
43:on a number of
17:
12:
11:
5:
1589:
1587:
1579:
1578:
1573:
1568:
1558:
1557:
1554:
1553:
1545:
1544:External links
1542:
1541:
1540:
1527:
1517:
1491:
1488:
1485:
1484:
1472:
1460:
1448:
1446:, p. 2.8.
1436:
1434:, p. 6.1.
1424:
1422:, p. 5.0.
1412:
1400:
1385:
1373:
1361:
1346:
1334:
1332:, p. 2.6.
1322:
1310:
1298:
1269:
1252:
1234:
1233:
1231:
1228:
1226:
1223:
1222:
1221:
1218:p-code machine
1213:
1210:
1207:
1206:
1196:
1195:
1193:
1190:
1187:
1177:
1168:
1165:
1159:
1156:
1155:
1154:
1151:
1148:
1145:
1142:
1139:
1136:
1133:
1125:
1122:
1119:
1118:
1115:
1112:
1111:floating point
1108:
1107:
1104:
1101:
1097:
1096:
1093:
1090:
1086:
1085:
1082:
1079:
1075:
1074:
1071:
1068:
1053:
1050:
1047:
1046:
1043:
1040:
1036:
1035:
1032:
1029:
1022:
1019:
1016:
1015:
1008:
1005:
1001:
1000:
997:
994:
990:
989:
982:
979:
975:
974:
971:
968:
964:
963:
960:
957:
953:
952:
949:
946:
942:
941:
938:
935:
931:
930:
927:
924:
920:
919:
916:
913:
909:
908:
905:
902:
898:
897:
894:
891:
887:
886:
883:
880:
876:
875:
872:
869:
865:
864:
861:
858:
854:
853:
850:
847:
843:
842:
839:
836:
808:
807:
804:
801:
797:
796:
793:
790:
786:
785:
782:
779:
775:
774:
771:
768:
764:
763:
760:
757:
753:
752:
749:
746:
742:
741:
738:
735:
731:
730:
727:
724:
720:
719:
716:
713:
709:
708:
705:
702:
687:
684:
681:
680:
677:
674:
670:
669:
666:
663:
659:
658:
655:
652:
648:
647:
644:
641:
637:
636:
633:
630:
626:
625:
622:
619:
615:
614:
611:
608:
604:
603:
600:
597:
587:
584:
578:
577:
574:
571:
567:
566:
563:
560:
556:
555:
552:
549:
545:
544:
541:
538:
534:
533:
530:
527:
523:
522:
519:
516:
512:
511:
508:
505:
501:
500:
497:
494:
490:
489:
486:
483:
479:
478:
475:
472:
468:
467:
464:
461:
450:
449:
446:
443:
439:
438:
435:
432:
428:
427:
424:
421:
417:
416:
413:
410:
406:
405:
402:
399:
395:
394:
391:
388:
377:
376:
373:
370:
366:
365:
362:
359:
348:
347:
344:
341:
337:
336:
333:
330:
326:
325:
322:
319:
315:
314:
311:
308:
304:
303:
300:
297:
293:
292:
289:
286:
274:
273:
270:
267:
263:
262:
259:
256:
252:
251:
248:
245:
241:
240:
237:
234:
230:
229:
226:
223:
219:
218:
215:
212:
199:
196:
190:
177:
174:
100:
97:
81:floating point
60:
57:
15:
13:
10:
9:
6:
4:
3:
2:
1588:
1577:
1574:
1572:
1569:
1567:
1564:
1563:
1561:
1551:
1548:
1547:
1543:
1534:
1533:
1528:
1524:
1523:
1518:
1514:
1510:
1507:(71): 20–27.
1506:
1499:
1494:
1493:
1489:
1482:, p. 25.
1481:
1476:
1473:
1469:
1464:
1461:
1457:
1452:
1449:
1445:
1440:
1437:
1433:
1428:
1425:
1421:
1416:
1413:
1410:, p. 11.
1409:
1404:
1401:
1398:, p. 13.
1397:
1392:
1390:
1386:
1382:
1377:
1374:
1370:
1365:
1362:
1358:
1353:
1351:
1347:
1343:
1338:
1335:
1331:
1326:
1323:
1319:
1314:
1311:
1307:
1302:
1299:
1295:
1290:
1288:
1286:
1284:
1282:
1280:
1278:
1276:
1274:
1270:
1266:
1261:
1259:
1257:
1253:
1250:, p. 20.
1249:
1244:
1242:
1240:
1236:
1229:
1224:
1219:
1216:
1215:
1211:
1201:
1198:
1191:
1186:
1176:
1166:
1164:
1157:
1152:
1149:
1146:
1143:
1140:
1137:
1134:
1131:
1130:
1129:
1123:
1116:
1113:
1110:
1109:
1105:
1102:
1099:
1098:
1094:
1091:
1088:
1087:
1083:
1080:
1077:
1076:
1072:
1069:
1066:
1065:
1062:
1059:
1051:
1044:
1041:
1038:
1037:
1033:
1030:
1027:
1026:
1020:
1013:
1012:magnetic tape
1009:
1006:
1003:
1002:
998:
995:
992:
991:
987:
983:
980:
977:
976:
972:
969:
966:
965:
961:
958:
955:
954:
950:
947:
944:
943:
939:
936:
933:
932:
928:
925:
922:
921:
917:
914:
911:
910:
906:
903:
900:
899:
895:
892:
889:
888:
884:
881:
878:
877:
873:
870:
867:
866:
862:
859:
856:
855:
851:
848:
845:
844:
840:
837:
834:
833:
830:
822:
805:
802:
799:
798:
794:
791:
788:
787:
783:
780:
777:
776:
772:
769:
766:
765:
761:
758:
755:
754:
750:
747:
744:
743:
739:
736:
733:
732:
728:
725:
722:
721:
717:
714:
711:
710:
706:
703:
700:
699:
696:
693:
685:
678:
675:
672:
671:
667:
664:
661:
660:
656:
653:
650:
649:
645:
642:
639:
638:
634:
631:
628:
627:
623:
620:
617:
616:
612:
609:
606:
605:
601:
598:
595:
594:
591:
586:Extended math
585:
583:
575:
572:
569:
568:
564:
561:
558:
557:
553:
550:
547:
546:
542:
539:
536:
535:
531:
528:
525:
524:
520:
517:
514:
513:
509:
506:
503:
502:
498:
495:
492:
491:
487:
484:
481:
480:
476:
473:
470:
469:
465:
462:
459:
458:
455:
447:
444:
441:
440:
436:
433:
430:
429:
425:
422:
419:
418:
414:
411:
408:
407:
403:
400:
397:
396:
392:
389:
386:
385:
382:
374:
371:
368:
367:
363:
360:
357:
356:
353:
345:
342:
339:
338:
334:
331:
328:
327:
323:
320:
317:
316:
312:
309:
306:
305:
301:
298:
295:
294:
290:
287:
284:
283:
280:
271:
268:
265:
264:
260:
257:
254:
253:
249:
246:
243:
242:
238:
235:
232:
231:
227:
224:
221:
220:
216:
213:
210:
209:
206:
203:
197:
195:
189:
186:
183:
175:
173:
171:
170:code comments
166:
164:
163:character set
160:
155:
147:
141:
136:
135:instruction.
126:
122:
118:
113:
111:
107:
98:
96:
92:
90:
86:
82:
77:
73:
68:
66:
58:
56:
54:
50:
46:
42:
38:
34:
30:
26:
22:
1531:
1521:
1504:
1490:Bibliography
1480:Herbert 2015
1475:
1463:
1451:
1439:
1427:
1415:
1403:
1376:
1371:, p. 6.
1364:
1344:, p. 4.
1337:
1325:
1320:, p. 7.
1313:
1308:, p. 3.
1301:
1294:Herbert 2015
1267:, p. 1.
1248:Herbert 2015
1200:
1180:
1170:
1161:
1127:
1092:n>=1, m=0
1061:minus sign:
1055:
823:
811:
692:input/output
689:
686:Input/output
589:
581:
453:
380:
351:
277:
204:
201:
193:
187:
182:input/output
179:
176:Instructions
167:
156:
148:
137:
114:
110:bit shifting
102:
93:
69:
62:
41:interpreters
24:
20:
18:
1150:(EXECUTE n)
121:accumulator
99:Description
72:interpreted
51:series and
1576:Assemblers
1560:Categories
1225:References
1034:Operation
986:hard disks
841:Operation
707:Operation
602:Operation
466:Operation
393:Operation
364:Operation
291:Operation
217:Operation
191:FF nnn m
125:subroutine
53:Elliot 900
1513:0958-7403
1230:Citations
1138:(STORE n)
47:like the
1456:Computer
1381:Computer
1369:Computer
1342:Computer
1318:Computer
1306:Computer
1265:Computer
1212:See also
1089:integers
1081:n=0, m=0
1078:complete
1073:results
1031:Mnemonic
838:Mnemonic
819:AWD n, m
815:ARD n, m
704:Mnemonic
599:Mnemonic
463:Mnemonic
390:Mnemonic
361:Mnemonic
288:Mnemonic
214:Mnemonic
49:ICL 1900
1167:Example
1132:(TITLE)
1070:n and m
1014:drives
996:BSP n,m
981:ACB n,m
970:CNC n,m
959:CNN n,m
948:WSS n,m
937:WNL n,m
926:WNB n,m
915:RNB n,m
904:WCH n,m
893:RCH n,m
882:WNA n,m
871:RNA n,m
860:AWD n,m
849:ARD n,m
803:PNC n,m
792:RNC n,m
781:PCC n,m
770:RCC n,m
748:PNT n,m
737:RNT n,m
726:PCT n,m
715:RCT n,m
632:LGN n,m
621:EXP n,m
610:SQT n,m
573:LOP n,m
562:JST n,m
551:JSR n,m
540:JGR n,m
529:JLT n,m
518:JGE n,m
507:JLE n,m
496:JNE n,m
485:JEQ n,m
474:JUN n,m
445:JST n,m
434:JSR n,m
423:JEQ n,m
412:JGR n,m
401:JUN n,m
372:STA n,m
269:DIV n,m
258:MLT n,m
247:SUB n,m
236:ADD n,m
225:LDA n,m
59:History
1538:. ICL.
1525:. ICL.
1511:
1144:(WAIT)
1028:Opcode
835:Opcode
701:Opcode
596:Opcode
460:Opcode
387:Opcode
358:Opcode
343:DIVN n
332:MLTN n
321:SUBN n
310:ADDN n
299:LDAN n
285:Opcode
211:Opcode
31:and a
1536:(PDF)
1501:(PDF)
1192:Notes
1100:mixed
159:ASCII
89:BASIC
87:like
74:in a
1509:ISSN
1067:type
1042:STOP
63:The
19:The
1468:ICL
1444:ICL
1432:ICL
1420:ICL
1408:ICL
1396:ICL
1357:ICL
1330:ICL
1173:PNT
1007:RWD
817:or
759:PNL
676:ENT
665:ARC
654:COS
643:SIN
144:ADD
133:CNC
129:LOP
1562::
1503:.
1388:^
1349:^
1272:^
1255:^
1238:^
1183:GO
1039:99
1004:72
993:71
978:70
967:67
956:66
945:65
934:64
923:63
912:62
901:61
890:60
879:53
868:52
857:51
846:50
800:63
789:62
778:61
767:60
756:52
745:53
734:52
723:51
712:50
673:46
662:45
651:44
640:43
629:42
618:41
607:40
570:39
559:38
548:37
537:36
526:35
515:34
504:33
493:32
482:31
471:30
442:34
431:33
420:32
409:31
398:30
369:20
340:14
329:13
318:12
307:11
296:10
266:04
255:03
244:02
233:01
222:00
91:.
1515:.
1359:.
1296:.
827:£
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.