Fx- ตัวเลือก ข้าม แกมมา

Fx- ตัวเลือก ข้าม แกมมา

Forex- ทอง สัญลักษณ์
Forex- RSI   การตั้งค่า
FT- โลก อัตราแลกเปลี่ยน


เทพนารี -forex- HKD Forex- RSS -feed- วิดเจ็ต ไบนารี ตัวเลือก ตัวบ่งชี้ -no- ทาสี Forex -trading- ระบบ ผล Forex- ซื้อขาย หนังสือ ใน ภาษาอูรดู รูปแบบไฟล์ PDF Alpari -UK -forex- เปิด ตำแหน่ง

ยูทิลิตี้ CASsette IO สาธารณูปโภคเพื่อจัดการภาพเทปและฟล็อปปี้ดิสก์จากคอมพิวเตอร์พกพาแบบโบราณซึ่งเป็นซอฟต์แวร์เสรีที่ได้รับอนุญาตภายใต้สัญญาอนุญาตแบบสาธารณะทั่วไปของ GNU ซอฟต์แวร์มีให้ตามที่เป็นอยู่ Im ไม่น่าเชื่อถือสำหรับผลกระทบที่เกิดขึ้นจากการใช้งานของมัน เครื่องหมายการค้าทั้งหมดชื่อ บริษัท หรือผลิตภัณฑ์เป็นกรรมสิทธิ์ของเจ้าของระบบสาธารณูปโภคที่นี่มีไว้สำหรับคอมพิวเตอร์พกพาของ Casio เท่านั้น Ive เพิ่งเริ่มสนับสนุนเครื่องอื่น ๆ ด้วยรูปแบบข้อมูลที่เทียบเท่ากันและได้เปลี่ยนชื่อแพคเกจจาก Casio Utilities ไปเป็น CASsette IO Utilities โฟกัสหลักยังคงอยู่ในเครื่อง Casio และส่วนใหญ่ของเอกสารที่จัดการได้เพียงพวกเขา กำลังทำงานอยู่ระหว่างดำเนินการไม่ใช่ฟังก์ชันทั้งหมดทำงานบนระบบปฏิบัติการทั้งหมดและบางไฟล์อาจได้รับการจัดการไม่ถูกต้อง ขออภัยในความไม่สะดวกใด ๆ. เพิ่มตัวเลือก -d to list850 เพื่อสนับสนุนไฟล์ที่คัดลอกมาจากดิสก์ MD100 กำลังดำเนินการใหม่ของ md100 ลบตัวเลือก -f และเพิ่ม -p ตัวเลือกต่อไปนี้ข้อมูลจาก Piotr Piatek แก้ไขบั๊กที่ก่อให้เกิดห่วงที่ไม่มีที่สิ้นสุดเมื่อเขียนไฟล์ wave สไตล์ Sharp มีผลต่อ wav2wav ส่วนใหญ่ การสนับสนุนไฟล์ข้อมูลจำเป็นต้องปรับปรุงบางอย่าง เพิ่มตัวเลือกในการปราบปรามเอาท์พุทส่วนหัวของรายการ 850 เพิ่มการสนับสนุนไฟล์ข้อมูลไปยัง bas850 เพิ่มการสนับสนุน Unicode (UTF-8) ใน list850, listX07, bas850 และ basX07 ตัวเลือก -i ละเว้นข้อมูลที่มีข้อผิดพลาดเกี่ยวกับเฟรมหรือความคลาดเคลื่อนเมื่อป้อนข้อมูลไฟล์ wave สำหรับยูทิลิตีรายการส่วนใหญ่ เพิ่มไบนารีสำหรับโฮสต์ Windows CE (ARM, CE 3.0) ลบการสนับสนุน PPC สำหรับ OSX (ฉันไม่มีคอมไพเลอร์ที่เหมาะสม) list8000 สนับสนุนการแสดงผลและการส่งออกข้อมูล Range ViewWindow list8000 ตอนนี้ส่งออกหน่วยความจำตัวแปรไปยังไฟล์ CAS (สำหรับ FA-121) . bas850 และ md100 อนุญาตให้จัดวางไฟล์ข้อความได้ กำหนดลำดับการหลบหนีบางส่วน (phi-gttheta) list8000 สนับสนุนการส่งออกในรูปแบบ FA-123FA-124 แล้ว list8000 - เพิ่มการสนับสนุนรายการสำหรับเครื่องคิดเลขกราฟิก fx-8000G พร้อมอินเตอร์เฟส FA-80 wav2wav รองรับรูปแบบอื่น ๆ list74 - การสนับสนุนสำหรับ TI-74 เริ่มต้น waveX07 - เพิ่มไฟล์ wave file สำหรับ Canon X-07 basX07 - เพิ่มโทเค็นสำหรับ Canon X-07 listX07 - โปรแกรมแรกสำหรับเครื่องที่ไม่ใช่ Casio: Canon X-07 มีซอฟต์แวร์ต่อไปนี้: list702 - แสดงเนื้อหาของไฟล์ไบนารีหรือ WAV เป็นข้อความหรือข้อมูล BASIC โปรแกรมนี้ใช้สำหรับ FX-702P เป็นการปรับเปลี่ยนรายการ 730 list730 - แสดงเนื้อหาของไฟล์ไบนารีหรือ WAV เป็นข้อความพื้นฐานหรือข้อมูล โปรแกรมนี้ใช้สำหรับชุด PB-100 มันถูกสร้างขึ้นโดยปิแอร์ Piatek Ive เพิ่มรูปแบบไฟล์ต่างๆ list850 - แสดงเนื้อหาของไฟล์ไบนารีหรือ WAV เป็นข้อความพื้นฐานหรือข้อมูล โปรแกรมนี้ใช้กับเครื่องใหม่ทั้งหมดเริ่มต้นด้วย PB-700 รวมทั้ง FX-850 และ PB-1000 รวมทั้ง FP-200 list8000 - แสดงเนื้อหาของไฟล์ไบนารีหรือ WAV เป็นรายการแหล่งที่มาการลงทะเบียนภาพหน้าจอหรือข้อความ โปรแกรมนี้ใช้สำหรับเครื่องคิดเลขกราฟฟิค fx-8000G list8000 สามารถส่งออกในรูปแบบไฟล์ที่เข้าใจได้โดย Casios FA-121 หรือซอฟต์แวร์ FA-124 listX07 - แสดงเนื้อหาของไฟล์ binary หรือ WAV เป็นข้อความ BASIC โปรแกรมนี้ใช้สำหรับ Canon X-07 list74 - แสดงเนื้อหาของไฟล์ binary หรือ WAV เป็นข้อความ BASIC โปรแกรมนี้ใช้สำหรับ Texas Instruments TI-74 wave730 - สร้างไฟล์ WAV จากไฟล์ไบนารี โปรแกรมนี้ใช้สำหรับชุด PB-100 wave850 - สร้างไฟล์ WAV จากไฟล์ไบนารี โปรแกรมนี้ใช้กับเครื่องใหม่ทั้งหมดเริ่มต้นด้วย PB-700 รวมทั้ง FX-850 และ PB-1000 The FP-200 รวมอยู่ด้วย ไฟล์สามารถสร้างขึ้นในโหมด S (S) ต่ำหรือ (F) ได้ waveX07 - สร้างไฟล์ WAV จากไฟล์ไบนารี โปรแกรมนี้ใช้สำหรับ Canon X-07 bas702 - สร้างไฟล์ WAV (หรือไบนารีหรือ ASCII เข้ารหัส) จากข้อความต้นฉบับ BASIC โปรแกรมนี้ใช้สำหรับ FX-702P เท่านั้น bas730 - สร้างไฟล์ WAV (หรือไบนารีหรือ ASCII เข้ารหัส) จากข้อความต้นฉบับ BASIC โปรแกรมนี้มีไว้สำหรับเครื่องเก่าทั้งหมดที่เริ่มต้นด้วย PB-100 หรือ FX-700P รวมถึง FX-730P และ FX-795P bas850 - สร้างไฟล์ WAV (หรือไบนารีหรือ ASCII เข้ารหัส) จากข้อความต้นฉบับ BASIC โปรแกรมนี้ใช้กับเครื่องใหม่ทั้งหมดเริ่มต้นด้วย PB-700 รวมทั้ง FX-850 และ PB-1000 รวมทั้ง FP-200 ไฟล์ WAV สามารถสร้างขึ้นในโหมด S (S) ต่ำหรือ (F) ได้ รูปแบบข้อมูลที่เป็นไปได้คือข้อความ (โหลดด้วยโหลด, A ในเครื่องบางเครื่อง) หรือรูปแบบภายใน (โหลดด้วยโหลด) basX07 - สร้างไฟล์ WAV (หรือไบนารี) จากข้อความต้นฉบับ BASIC โปรแกรมนี้ใช้สำหรับ Canon X-07 wav2raw - สารสกัดจากภาพไบนารีจากไฟล์ WAV ใช้ได้กับทุกรุ่น wav2wav - สร้างบิตไฟล์ WAV ใหม่สำหรับบิต ไฟล์ที่ได้สามารถบีบอัดข้อมูลได้ดีขึ้นโดยซอฟต์แวร์บีบอัดแบบไม่สูญเสียเช่น ZIP หรือ GZIP มากกว่าการบันทึกต้นฉบับ เนื่องจากการพักผ่อนหย่อนใจจะทำบิตสำหรับบิตโปรแกรมควรจะทำงานสำหรับไฟล์ WAV ใด ๆ ที่บันทึกไว้ในแคนซัสซิตีมาตรฐานกับผู้ให้บริการ 2400 เฮิรตซ์ (Ive เพิ่งรวมการสนับสนุนสำหรับคอมพิวเตอร์ Sharp ซึ่งใช้ความถี่แตกต่างกัน) md100 - จัดการภาพของฟล็อปปี้ดิสก์ MD-100 ที่เขียนโดยคอมพิวเตอร์ PB-1000 หรือ PB-2000C ในระบบพีซีบางรุ่นทำงานได้แม้ในดิสก์จริงรุ่นต่างๆของกระเป๋า Casio คอมพิวเตอร์แบบพกพา Casio BASIC สามารถจัดกลุ่มได้ ภายในแต่ละกลุ่มไฟล์โปรแกรมสามารถแลกเปลี่ยนหรือโปรแกรมสามารถโอนโดยตรงจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่งผ่านทางอินเตอร์เฟซเทปของพวกเขา ไม่สามารถรันโปรแกรมทั้งหมดในเครื่องทั้งหมดภายในชุดเดียวกันได้เนื่องจากคำหลักบางคำอาจแตกต่างออกไป ตัวอย่างเช่น FX-700P ไม่เข้าใจ REM รายละเอียดเพิ่มเติมเกี่ยวกับรุ่น BASIC ที่แตกต่างกันมีอยู่ในแผ่นเปรียบเทียบ BASIC ของฉัน ชุด PB-100 นี้เป็นชื่อ Casio ที่มอบให้กับคอมพิวเตอร์ในช่วงต้นของกระเป๋าด้วย BASIC เครื่องดังต่อไปนี้: PB-100, PB-110, PB-220, PB-240, PB-300, PB-410, FX-700P, FX-720P, FX-730P , FX-770P, FX-785P, FX-790P และ FX-795P ฉันเป็นเจ้าของบางส่วน: PB-220, PB-300, FX-700P, FX-720P, FX-730P และ FX-795P ทุกรุ่นมีคุณสมบัติทั่วไปบางอย่าง: ปุ่มโหมดสลับระหว่างโหมด RUN หรือ WRT (โปรแกรม) เลือกโหมดมุมและเปลี่ยนเส้นทางเอาท์พุทไปยังเครื่องพิมพ์เสริม (หรือในตัว) มี 10 พื้นที่โปรแกรมแยกต่างหาก แป้นพิมพ์มีปุ่ม EXE เดียว ฟังก์ชันที่ถูกเลื่อนจะถูกเลือกโดยปุ่มคำนำหน้าซึ่งจะต้องกดและปล่อยออกมาก่อนที่จะมีการเปลี่ยนคีย์ การเข้ารหัสภายในไม่ใช่ ASCII แต่เป็นเรื่องที่พิเศษมาก หากคุณสนใจในรายละเอียดด้านเทคนิคดูที่ Piotr Piateks หน้าบนอินเทอร์เน็ต การบันทึกเทปทั้งหมดทำได้ผ่านอินเตอร์เฟส FA-3 แม้ว่า PB-220 ต้องใช้อะแดปเตอร์เพื่อเชื่อมต่อด้วยกลไก ความเร็วในการส่งข้อมูลคือ 300 บิตต่อวินาที FX-702P เครื่องนี้ย่อมาจากตัวเอง ภาษาพื้นฐานของมันค่อนข้างแปลก คำสั่ง GOSUB กลับ. PRINT และ INPUT ได้รับการแทนที่โดย GSB RET PRT และ INP รหัสอักขระภายในเป็นสิ่งที่พิเศษ ไม่ได้เป็น ASCII หรือเข้ากันได้กับการเข้ารหัสชุด PB-100 แป้นพิมพ์มีปุ่มโหมดซึ่งทำงานได้ดีเหมือนกับเครื่อง PB-100 series มีพื้นที่ให้เลือก 10 แห่ง แป้นพิมพ์มีปุ่ม EXE เดียว แป้นพิมพ์อัลฟาไม่ได้จัดอยู่ในรูปแบบของเครื่องพิมพ์ดีด แต่เรียงตามตัวอักษร ปุ่ม Shift สองปุ่ม (F1, F2) เป็นปุ่มนำหน้า รูปแบบเทปมีความคล้ายคลึงกันบางอย่างกับรูปแบบชุด PB-100 แต่ดูเหมือนว่าจะเป็นเวอร์ชันก่อนหน้านี้ โปรแกรมจะแสดงรายการไฟล์เทปดังนั้นจึงแยกออกได้ในขณะที่เครื่องกำเนิดไฟล์ wave สำหรับชุด PB-100 (wave730) สามารถสร้างภาพสำหรับ FX-702P ได้ บันทึกเทปทั้งหมดได้ทำผ่านอินเทอร์เฟซ FA-2 ความเร็วในการส่งข้อมูลคือ 300 บิตต่อวินาที PB-700, PB-770 และ FX-750P เป็นกระเป๋ารุ่น BASIC รุ่นใหม่ที่ไม่มีคีย์โหมด แทนคีย์ ENTER บนแป้นพิมพ์ตัวเลขจะใช้สำหรับการคำนวณโหมดตรงขณะที่คีย์การตอบกลับสำหรับป้อนคำสั่งและบรรทัดโปรแกรม BASIC ต้องกดปุ่ม Shift และกดค้างไว้พร้อมกับคีย์ที่ได้รับผลกระทบเช่นเดียวกับเครื่องพิมพ์ดีด มีพื้นที่โครงการแยกออกเป็นสิบส่วน คำสำคัญพิเศษ (PROG) สลับระหว่างพื้นที่โดยไม่ต้องเริ่มต้นโปรแกรม มีความแตกต่างที่ลึกซึ้งในการจัดการฟังก์ชันลอการิทึม ระบบ PB (PB-700 series และ PB-1000 ดูด้านล่าง) ใช้ LGT สำหรับฐาน logarithm 10 และ LOG สำหรับลอการิทึมธรรมชาติ เครื่องอื่น ๆ ทั้งหมดรวมทั้งชุด PB-100 เก่าใช้ LOG และ LN ตามลำดับ การเข้ารหัสภายในคือ ASCII ที่มีอักขระกราฟิกในชุดขยาย หากคุณสนใจในรายละเอียดทางเทคนิคดูที่ Piotr Piateks หน้าบนอินเทอร์เน็ต FX-750P มีมุมแหลมที่น่ารำคาญ: ไม่เข้าใจตัวพิมพ์เล็ก แต่ไม่แสดงอะไรแทน ซึ่งทำให้ไม่สามารถแก้ไขบรรทัดด้วยสายอักขระตัวพิมพ์เล็กที่ส่งผ่านจาก PB-700 หรือโหลดจากไฟล์ PB-700 ฉันเป็นเจ้าของ PB-700 และ PB-770 ด้วยอินเตอร์เฟซ FA-10 และ FX-750P กับ FA-20 Ive ทดสอบโปรแกรมของฉันกับเครื่องเหล่านี้และการเชื่อมต่อ ความเร็วในการส่งข้อมูลคือ 300 บิตต่อวินาที เครื่องเหล่านี้มีการใช้งานพื้นฐานของ BASIC ซึ่งเรียกว่า JIS Standard BASIC โดย Casio โดย FX-850P, FX-870P, FX-880P, FX-890P, VX-1 ถึง 4, Z-1 และ PB-1000 PB-1000 มีระบบไฟล์ RAM ในขณะที่ระบบ FX และ VX เก็บรักษาพื้นที่โปรแกรมสิบเครื่องไว้ในเครื่องก่อนหน้านี้ การเข้ารหัสภายในเป็น ASCII แต่คำหลัก BASIC และหมายเลขบรรทัดมีการเข้ารหัสที่แตกต่างกัน (ตัวเลขบรรทัดสามารถเข้าถึงได้สูงสุด 65535 ไม่ใช่ 9999 เท่านั้น) ชุดอักขระเสริมจะแตกต่างกันระหว่าง PB-1000 และเครื่องอื่น ๆ ของชุดข้อมูล PB-1000 มีชุดอักขระ PB-700 พร้อมกราฟิกพิเศษในขณะที่ระบบ FX, VX และ Z แสดงสัญลักษณ์ทางคณิตศาสตร์และวิทยาศาสตร์แทน Z-1 และพี่น้อง FX-890P ขาดอินเตอร์เฟสเทป เครื่องทั้งหมดยกเว้น PB-1000 เชื่อมต่อกับอินเตอร์เฟซ FA-6 อินเทอร์เฟซนี้มีความเร็วในการรับส่งข้อมูลที่สูงกว่า 1200 บิตต่อวินาที รูปแบบบล็อกข้อมูลเป็นตัวแปรของโครงการ PB-700 แต่การเข้ารหัสของโปรแกรมพื้นฐานแตกต่างกัน เป็นไปได้ที่จะโหลดไฟล์ที่บันทึกด้วย SAVE, A บน PB-700 ลงใน FX-850P และอีกทางหนึ่งก็เป็นไปได้ด้วย คุณต้อง จำกัด ความเร็วไว้ที่ 300 บิตต่อวินาที (SAVE (S) และ LOAD (S) ใน FX-850P) ฉันสามารถทดสอบส่วนติดต่อเทปด้วย VX-1 หรือ FX-870P ได้เพียงบางส่วนเพราะฉันสามารถเขียนได้เท่านั้น แต่ไม่สามารถอ่านโปรแกรมหรือข้อมูลผ่านอินเตอร์เฟส FA-6 กับเครื่องเหล่านี้ได้ ระบบ FX-850PFX-880P สามารถอ่านเทปจากชุด PB-100 ด้วยคำสั่งพิเศษ (PBLOAD PBGET) PB-1000 มีขั้วต่อที่คล้ายกัน แต่ความแตกต่างทางกลและทางไฟฟ้าขัดขวางการใช้ FA-6 PB-1000 ใช้อินเตอร์เฟส FA-7 ที่ให้อัตราการถ่ายโอนสูง (ถึง 2400 บิตต่อวินาทีโดยสามารถเลือกได้จากสวิตช์ DIP บนอินเทอร์เฟซ) Z-1 และ FX-890P ไม่สนับสนุนเทปอีกต่อไป แต่ยังสามารถใช้งานได้ กับตัวแปลข้อความต้นฉบับ bas850 และอินเทอร์เฟซแบบอนุกรมหรือ USB FP-200 เครื่องนี้เป็นเครื่องขนาด A4 ในชั้นเรียนของตนเอง พื้นฐานมีความคล้ายคลึงกับ PB-1000 แต่มีคุณสมบัติพื้นฐานของ Microsoft-BASIC ด้วย แอปพลิเคชันสเปรดชีต CETL ที่มีอยู่เป็นเอกลักษณ์ รูปแบบเทปมีความคล้ายคลึงกับเครื่อง FX-850P เช่นเดียวกับการใช้งานในโปรแกรมเดียวกัน ในกรณีส่วนใหญ่สวิตช์ -2 จะจัดการกับความแตกต่าง ไฟล์เข้ารหัส ASCII บางไฟล์สามารถทำงานร่วมกันได้ระหว่างแต่ละครอบครัวโดยเฉพาะอย่างยิ่ง: ความเร็วของเทปคือ 300 baud (รูปแบบช้าเท่านั้น) การเข้ารหัสภายในมีความแตกต่างกันไฟล์ไบนารีไม่สามารถแลกเปลี่ยนได้ รูปแบบ ASCII FP-200s เข้าใจโดย FX-850P แต่ไม่ใช่ PB-1000 ฉันไม่สามารถทดสอบได้ด้วย VX-4 หรือ FX-870P (ดูด้านบน) FP-200 เข้าใจรูปแบบ ASCII ของเครื่องอื่น ๆ ทั้งหมดโดยให้ความเร็วที่ถูกต้อง คุณสามารถฟีดไฟล์ผ่าน list850 และ bas850 เพื่อสร้างไฟล์สำหรับแพลตฟอร์มต่างๆ ไดรฟ์ฟล็อปปี้ดิสก์ MD-100 พร้อมเครื่องคิดเลข PB-1000 และ PB-2000C MD-100 ไม่มีอินเทอร์เฟซสำหรับเทป แต่ใครสนใจเมื่อมีฟล็อปปี้ดิสก์อยู่ในระบบแฟ้มจริงฉันมีเครื่องคิดเลขสองเครื่องที่เชื่อมต่อกับ MD-100 : คอมพิวเตอร์ PB-1000 BASIC และ PB-2000C ซึ่งสามารถตั้งโปรแกรมในรูปแบบ C (แปลช้าๆ) โปรแกรม md100 เข้าใจรูปแบบดิสก์ มีพื้นฐาน ROM OM-53B สำหรับ PB-2000C ซึ่งเปลี่ยนเป็นหลักเป็น PB-1000 กับกรณีที่แตกต่างกัน แต่ฉัน havent เห็นนี้ยัง Piotr Piatek มี emulators สำหรับสิ่งเหล่านี้ เครื่องอื่น ๆ Casio fx-8000G ไม่ใช่คอมพิวเตอร์แบบพกพาพื้นฐาน แต่เป็นเครื่องคิดเลขกราฟฟิค ด้วยอินเตอร์เฟซ FA-80 คุณสามารถบันทึกโปรแกรมลงทะเบียนกราฟิกและไฟล์ข้อความลงในเทปคาสเซ็ตได้ list8000 สนับสนุนรายการของไฟล์เหล่านี้ ฉันไม่มีอินเทอร์เฟซเองดังนั้นการพัฒนาจึงช้า ไฟล์สามารถ conatain มากกว่าหนึ่งชนิดข้อมูล โปรแกรมจะแสดงเนื้อหาตามที่ปรากฏในไฟล์ กราฟิกจะถูกแปลงเป็นไฟล์ BMP ตามคำขอ การบันทึกจะทำที่ 2400 baud คุณอาจต้องตั้งค่าซอฟต์แวร์เสียงของคุณให้เป็นอัตราการสุ่มตัวอย่างที่เหมาะสมสำหรับการอ่านไฟล์ WAV ที่เชื่อถือได้ Canon X-07 Canon X-07 เป็นเครื่องขนาดเล็กที่สามารถใช้งานได้กับ BASIC อันทรงพลังและมีช่องใส่เทปคาสเซ็ตต์ Ive เพิ่งเริ่มสนับสนุนกับ listX07 โปรแกรม waveX07 และ basX07 การ encordings อยู่ในโหมดเร็วที่ 1200 baud ซึ่งเป็นรูปแบบที่ไลบรารี wave รองรับอยู่แล้วในโครงการนี้ เพียงการเข้ารหัสระดับต่ำจะแตกต่างกัน: 8 บิตไม่มีพาริตี้บิตอย่างน้อย 2 จุด ฉันต้องปรับรูปแบบคลื่นที่สร้างขึ้นเพื่อให้ CLOAD ทำงานได้อย่างน่าเชื่อถือ Texas Instruments TI-74 TI-74 เป็นเครื่องคอมพิวเตอร์ตัวต่อของคอมพิวเตอร์รุ่น CC-40 BASIC ซึ่งล้มเหลวในเชิงพาณิชย์เพราะในตอนแรกไม่มีอุปกรณ์จัดเก็บข้อมูลขนาดใหญ่ TI-74 รุ่นใหม่สามารถติดตั้งไดรฟ์ cassette CI-7 ผ่านทางขั้วต่อ DockBus ตรรกะของอินเทอร์เฟซมีอยู่ภายในเครื่องคอมพิวเตอร์ไม่ใช่อินเทอร์เฟซ ทำให้ไม่สามารถใช้ CI-7 ผ่านอะแดปเตอร์กับ CC-40 ได้ CC-40 ซึ่งมีเพียงต้นแบบน้อยมากเท่านั้นที่มีอินเทอร์เฟซคาสเซ็ทในตัวและอาจใช้งานได้กับระบบสาธารณูปโภคของฉัน แต่ฉันไม่สามารถทดสอบตัวเองได้ พื้นฐานเป็นหนึ่งในสิ่งที่ดีที่สุดที่คุณสามารถหาได้จากคอมพิวเตอร์ขนาดพกพาทุกยุค สนับสนุนโปรแกรม IO ที่มีความซับซ้อนโปรแกรมย่อยที่มีพารามิเตอร์ชื่อตัวแปรยาว ๆ และอื่น ๆ อินเทอร์เฟซรองรับไฟล์ข้อมูลโหมดข้อความต่อเนื่องสำหรับการป้อนข้อมูลและเอาต์พุตแบบเป็นโปรแกรมเช่นกัน . คุณสามารถแม้แต่ LIST1.NAME โปรแกรมใน ASCII แต่คุณไม่สามารถโหลดกลับเข้าสู่เครื่องคอมพิวเตอร์ได้ ฉันทำงานกับโซลูชัน แต่อาจใช้เวลาสักครู่ รูปแบบไฟล์คลื่นเป็นรูปแบบพิเศษที่ค่อนข้างพิเศษของ Kansas City Standard (KCS) ใช้ที่อื่น ๆ : ความถี่คือ 1400 Hz และ 700 Hz และความเร็ว 1400 บิตต่อวินาที ซึ่งหมายความว่ามีเพียงครึ่งหนึ่งของคลื่นที่ใช้สำหรับการ zero bit 700 Hz Synchronization แตกต่างจาก KCS โดยทั่วไปและไบต์จะถูกเข้ารหัสโดยไม่ต้องเริ่ม parity หรือ stop bits ข้อมูลถูกถ่ายโอนในบล็อคที่มีข้อมูลสุทธิไม่เกิน 64 ไบต์ ระเบียนลอจิกสามารถประกอบด้วยหลายบล็อก แต่ละบล็อคได้รับการป้องกันโดยการตรวจสอบแบบง่ายๆและจะถูกส่งสองครั้งเพื่อความซ้ำซ้อน การบันทึกโปรแกรม BASIC เป็นไปอย่างรวดเร็วเนื่องจากมีการส่งข้อมูลตรรกะขนาดใหญ่หนึ่งรายการ ยังคงมีค่าซิงโครไนซ์อยู่พอที่จะสร้างไฟล์ wave 30 วินาทีสำหรับโปรแกรมสั้น ๆ แต่โปรแกรมอีกต่อไปจะไม่ทำให้ไฟล์นานเกินไป การเขียนไฟล์ ASCII เป็นเรื่องที่แตกต่างกันโดยสิ้นเชิง: จะมีการเพิ่มค่าโสหุ้ยสำหรับแต่ละระเบียนของไฟล์ เจ้าของอินเทอร์เฟซพีซีมีตัวเลือกเพิ่มเติม: สามารถบันทึกและโหลดจากระบบไฟล์พีซีได้โดยตรง ไฟล์โปรแกรมเป็นไบนารีและมักมีส่วนขยายของ PGM โปรแกรม DOS TIC74 ที่มาพร้อมกับซอฟต์แวร์อินเตอร์เฟสจะสร้างไฟล์ดังกล่าวจากไฟล์ข้อความ BASIC เนื้อหาของไฟล์นี้เหมือนกับบันทึกขนาดใหญ่ที่ส่งผ่านอินเทอร์เฟซคาสเซ็ท Im วางแผนที่จะใช้เช่นไฟล์ PGM เป็น input และสร้างไฟล์คลื่นสำหรับการโหลดโดยไม่ต้องเชื่อมต่อเครื่องคอมพิวเตอร์ รายชื่อผู้ป่วย 74 สามารถแสดงไฟล์ดังกล่าวเป็นรายการ BASIC หรือดึงข้อมูลออกจากการบันทึกได้ วิธีจัดการการบันทึกเทปเชื่อมต่อกับอินเตอร์เฟซเทปด้วยสายไมโครโฟนโดยตรงกับการ์ดเสียงของคุณ เริ่มซอฟต์แวร์เครื่องบันทึกเสียงที่คุณเลือกโดยใช้พารามิเตอร์ต่อไปนี้: รูปแบบไฟล์ WAV 8 บิตต่อตัวอย่าง บิตเพิ่มเติมเป็นไปได้ แต่ไม่จำเป็น อย่าใช้รูปแบบจุดลอยตัว 11025 หรือ 22050 ตัวอย่างต่อวินาที (เป็นความคิดที่ดี แต่ไม่จำเป็นต้องใช้เพื่อบันทึก 2400 baud recording ที่ 44100 ตัวอย่างต่อวินาที) Monaural ระดับการบันทึกสูงพอที่จะเติมไดนามิกช่วงของไฟล์ wave หรือใช้ตัวแก้ไขเสียงเช่น Audacity เพื่อขยายสัญญาณ ส่งโปรแกรมหรือข้อมูลจากคอมพิวเตอร์พกพาของคุณด้วย SAVE บันทึกทั้งหมด. PUT หรือ WRITE และเริ่มการบันทึก หยุดการบันทึกเมื่อพรอมต์พร้อมส่งกลับ การบันทึกข้อมูลความเร็วสูง (1200 baud หรือมากกว่า) ทำให้สาธารณูปโภคไม่สามารถแปลรูปคลื่นได้อย่างถูกต้องเนื่องจากความซ้ำซ้อนลดลงอย่างมาก ถ้าคุณมีปัญหาลองตั้งตัวแปรสภาพแวดล้อม WAVEPHASE 1 หรือกลับการบันทึกด้วยโปรแกรมแก้ไขเสียงแล้วลองอีกครั้ง มีปัญหากับ iMac และการ์ดเสียงภายในของฉัน ระดับการบันทึกในอินพุตสายอินพุตต่ำมาก Ive เชื่อมต่อ Soundblaster USB เข้ากับ mic input แทน ปลั๊กเสียง noname USB ที่มีอินพุตไมโครโฟนราคาถูกกว่าได้รับการพิสูจน์แล้วว่าทำงานได้ดีเช่นกัน เล่นผ่านการ์ดเสียงภายในได้ดี เชื่อมต่ออินพุต EAR ของอินเทอร์เฟซเทปกับเอาต์พุต PHONES ของการ์ดเสียงของคุณ มีปัญหาในการแก้ปัญหา: คุณต้องมีอะแดปเตอร์เชื่อมต่อเอาต์พุตสเตอริโอของการ์ดเสียง (เพียงหนึ่งช่อง) เข้ากับอินพุตแบบ Mono ของอินเทอร์เฟซสำหรับเทป อ่านข้อมูลก่อนหน้านี้อีกครั้งก่อนที่จะดำเนินการต่อหากทุกอย่างถูกเชื่อมต่ออย่างถูกต้องให้ป้อนคำสั่ง LOAD (ALL), READ หรือ GET ที่เหมาะสมแล้วทำตามขั้นตอนต่อไปนี้ เริ่มเล่นไฟล์ WAV กำหนดระดับเอาต์พุตสูงกว่าปกติ ถ้าหูฟังของคุณดังเกินไปสำหรับคอมพิวเตอร์เพียงเล็กน้อยถ้าคอมพิวเตอร์พกพาอ่านและประมวลผลข้อมูลภายในโปรแกรมโดยใช้ปลั๊ก REMOTE ของอินเตอร์เฟซเทปเพื่อหยุดการเล่นขณะทำงานคุณจะต้องเลียนแบบ นี้โดยการหยุดเล่นชั่วคราวและเริ่มเล่นใหม่ด้วยตนเอง ไฟล์โปรแกรมไม่มีปัญหาในส่วนนี้ การรีเฟรชการบันทึกต้นฉบับ (หรือการบันทึกจากแหล่งอื่นบนอินเทอร์เน็ต) อาจไม่เหมาะสำหรับการจัดเก็บ โปรแกรมการบีบอัดแบบไม่สูญเสียเช่น ZIP หรือ GZIP dont เช่นสัญญาณอนาล็อกการบันทึกบางอย่างที่พบในส่วนอื่น ๆ ไม่ได้บอกอินเตอร์เฟซเทปอย่างถูกต้องเมื่อการบันทึกเสร็จสิ้น นอกจากนี้ยังสามารถนำไปสู่สายโปรแกรมที่หายไปเมื่อดาวน์โหลดไปยังเครื่องคิดเลขพกพา wav2wav ทำสำเนาบิตของบิตของไฟล์ WAV ที่บันทึกไว้ในแคนซัสซิตี้สแตนดาร์ดหรือหนึ่งในรูปแบบที่สนับสนุน ทุกรุ่นของ Casio ใช้รูปแบบการบันทึกนี้แม้ในโหมดความเร็วสูงหรือเร็ว (1200 หรือ 2400 บิตต่อวินาที) ซึ่งบิตจะถูกแสดงโดยเพียงหนึ่งหรือสองคลื่นแทนสี่ถึงแปดในโหมดมาตรฐานที่ 300 บิตต่อวินาที ซอฟต์แวร์สามารถ recode การบันทึกในความเร็วใด ๆ 300, 1200 หรือ 2400 บิตต่อวินาทีในความเร็วอื่น ๆ มีสองโหมดพิเศษสำหรับอุปกรณ์อื่น: 500 บิตต่อวินาทีสำหรับคอมพิวเตอร์พกพาของชาร์ปและ 1400 บิตต่อวินาทีสำหรับ TI-74 หรือ TI-95 เหล่านี้มักจะใช้สำหรับการป้อนข้อมูลและการส่งออก มันไม่ได้ทำให้รู้สึกถึงการเปลี่ยนแปลงความเร็วสำหรับการบันทึกเหล่านี้เพราะไฟล์ที่เกิดจะไร้ประโยชน์ รูปแบบเอาต์พุตเป็นคลื่นซายน์สำหรับความเร็วทั้งหมดที่ใช้สำหรับ TI ที่ใช้คลื่นสแควร์ ซึ่งอาจมีการเปลี่ยนแปลงในอนาคต โปรแกรมนี้เรียกว่า: ถ้าคุณต้องการ recode ไฟล์ 300 baud (เช่นไฟล์จาก PB-700) ไปเป็นไฟล์ความเร็วสูงสำหรับ PB-1000 ให้ใช้ตัวเลือก -oh alone ความเร็วในการป้อนข้อมูลคือ 300 โดยค่าเริ่มต้น ถ้าคุณต้องการ recode ไฟล์ความเร็วสูงจาก PB-1000 สำหรับการโหลดเข้าสู่ FX-850P ให้ใช้ทั้งสองตัวเลือก -ih และ -of ตัวเลือกมีการแยกวิเคราะห์จากซ้ายไปขวา ดังนั้นแม้การรวมกัน -t -of งาน แต่จะไร้ประโยชน์ คุณสามารถใช้ -f บน 300 ไฟล์ baud เป็นไปได้เพราะความถี่เท่ากัน จำนวนรายงานของบิตจะไม่ถูกต้องโดยปัจจัยที่สี่และความน่าเชื่อถือของการแปลงจะลดลงอย่างมาก หากอุปกรณ์ไม่สามารถอ่านไฟล์ที่แปลงแล้วให้ลองอีกครั้งด้วยตัวแปรสภาพแวดล้อม WAVEPHASE1 หากไฟล์ได้รับการบันทึกในปริมาณที่ต่ำมากลองตั้งตัวแปรสภาพแวดล้อม WAVETHRESHOLD เป็นค่าที่สูงกว่า 10 ในกรณีใด ๆ ควรโหลดไฟล์ลงในตัวแก้ไขเสียงและทำให้มีค่าที่ดีกว่า การแปลงเป็นรูปแบบอื่น ๆ การบันทึกสามารถวิเคราะห์ (และจัดเก็บได้ง่าย) โดยการแปลงเป็นรูปแบบไบนารี มีหลายรูปแบบ: รูปแบบไบต์ไบนารีเป็นเพียงข้อมูลที่ถอดรหัสธรรมดา มันสูญเสียลำดับที่เรียกว่านำไปใช้ในการซิงโครไนซ์ตัวถอดรหัสและแยกชุดข้อมูลออก ไบต์ที่มีข้อผิดพลาดเกี่ยวกับกรอบหรือความเท่าเทียมกันจะถูกตัดออก รูปแบบนี้เข้าใจได้ง่ายที่สุดสำหรับมนุษย์และเป็นพื้นฐานสำหรับรายการในรายการ รูปแบบไบนารีของ Word เป็นรูปแบบไบนารีที่มีการเก็บรักษาข้อมูลเพิ่มเติมของสตรีมข้อมูลเดิม ลำดับนำเข้ามีการเข้ารหัสเป็นค่าพิเศษข้อมูลกรอบทั้งหมดและความเท่าเทียมกันจะถูกเก็บรักษาไว้ในไบต์ด้านบนของแต่ละคำข้อมูล รูปแบบดิวดิบของ Word มีเพียง 12 บิตต่อไบต์ข้อมูล (เริ่มด้วยการหยุดและบิตพาริตี) ขยายเป็นคำที่มีขนาด 16 บิต ASCII เข้ารหัสข้อมูลดิบเป็นรูปแบบที่สร้างขึ้นและได้รับการยอมรับโดยอินเตอร์เฟซอนุกรม Piotrs wav2raw แปลงไฟล์ WAV เป็นรูปแบบใดรูปแบบหนึ่งที่กล่าวมาข้างต้น: การต่อท้าย A - เพื่อสิ้นสุดตัวเลือก -s -f หรือ -h มีผลเช่นเดียวกับการตั้งค่าตัวแปรสภาพแวดล้อม WAVEPHASE เป็น 1 ซึ่งจะช่วยหลีกเลี่ยงข้อผิดพลาดในการอ่านเนื่องจากเฟสผิดในไฟล์ wave ใช้ตัวเลือก -f -N2 เพื่ออ่านรูปแบบ Canon X-07 เครื่องคำนวณกราฟิก Casio fx-8000G และ fx-8500G ที่มีอินเตอร์เฟส FA-80 ใช้รูปแบบ -h การทดสอบของฉันให้ผลลัพธ์ที่ดีที่สุดด้วยตัวเลือก -h- รายการเป็นข้อความโปรแกรมเหล่านี้แปลเป็นไฟล์ WAV หรือไบนารีและส่งออกเนื้อหาเป็นรายการโปรแกรมหรือข้อมูล โปรแกรมมีรายการ 702 list730 และ list850 โปรแกรมทั้งหมดเขียนข้อมูลลงในคอนโซลซึ่งสามารถเปลี่ยนเส้นทางไปยังไฟล์ได้ เครื่องคอมพิวเตอร์ Casio BASIC list702 จัดการเฉพาะ FX-702P ไฟล์ข้อมูลไม่ได้รับการสนับสนุน list730 จัดการชุด PB-100 คือ FX-730P ไฟล์ข้อมูลไม่ได้รับการสนับสนุน ใช้ตัวเลือก -e ถ้าคุณต้องการแปลผลลัพธ์ในภายหลังด้วย bas730 list850 รู้เกี่ยวกับเครื่องคิดเลข Casio BASIC อื่น ๆ ทั้งหมดที่ขึ้นต้นด้วย PB-700 คือ FX-850P ไฟล์ข้อมูลและไฟล์ ASCII ที่บันทึกด้วย SAVE ยังสนับสนุนอีกด้วย ใช้ตัวเลือก -eP (หรือ -uP) และ -lP เมื่อแสดงรายการโปรแกรม PB-1000 -2 จัดการเฉพาะ FP-200 โดยเฉพาะอย่างยิ่งการเข้ารหัสไบนารีที่แตกต่างกัน เครื่องคิดเลขกราฟิก Casio list8000 แสดงและแปลงไฟล์จากเครื่องคิดเลขกราฟิก fx-8000G สนับสนุนประเภทระเบียนทั้งหมด คำสั่ง SAVE Name จะบันทึกส่วนผสมของรูปแบบที่มีอยู่ทั้งหมด: โปรแกรมตัวแปร (หน่วยความจำ) กราฟิกและไฟล์ list8000 สนับสนุนลำดับการหลบหนีในสตริงเหมือนกับโปรแกรมอื่น ๆ และสืบทอดตัวเลือกเพจโค้ดของ listX07 ลำดับหนีจะเข้ากันได้กับรูปแบบไฟล์ CAT (ดูด้านล่าง) กราฟิกจะถูกแปลงเป็นไฟล์ BMP ถ้ามีตัวเลือก -G อยู่ ต้องตามด้วยชื่อไฟล์ที่ลงท้ายด้วย. bmp และควรมีอักขระที่ถูกแทนที่ด้วย 1 ถึง 3 ไฟล์แรกมีความละเอียดในการแสดงผลที่แน่นอนคือ 96 x 64 พิกเซล ไฟล์ที่สองมีความละเอียด 192 พิกเซล 128 พิกเซล เครื่องคิดเลขนี้ใช้ภายในเครื่องสำหรับการพิมพ์ความละเอียดสูง หากสวิตช์เลือกที่ด้านซ้ายถูกตั้งค่าเป็น N แทน HD ในขณะที่วาดกราฟจะมีเฉพาะจุดที่สองทุกจุดในภาพความละเอียดสูงเท่านั้น รูปแบบทั้งสองเป็นส่วนหนึ่งของการบันทึกภาพกราฟฟิกในเทป สร้างภาพที่สามซึ่งเป็นสำเนาแรก แต่สามเท่าของขนาด: แต่ละพิกเซลจะวาดเป็นรูปสี่เหลี่ยมจัตุรัส 2x2 พร้อมด้วยคอลัมน์ว่างด้านขวาและแถวที่ว่างเปล่าที่ด้านล่าง ลักษณะนี้ดูคล้ายกับการแสดงจริงที่จุดเดียวมีระยะห่างเล็กน้อย list8000 รองรับรูปแบบไฟล์ที่เข้าใจโดยซอฟต์แวร์ FA-121 124 จาก Casio (ดูด้านล่าง): รูปแบบ CAS สำหรับ FA-121 และรูปแบบ CAT สำหรับ FA-122 เป็นต้นไป ด้วยสายเคเบิลอนุกรมที่เหมาะสมจาก Casio หรือ Yellow Computing - สาย USB ของ FX-Interface เชื่อมโยงไปยังพอร์ตอนุกรมปกติ - คุณสามารถเชื่อมต่อเครื่องคิดเลขกราฟิกล่าสุดกับขั้วต่อขาสามตัว พอร์ต USB ในตัวเครื่องคิดเลขบางตัวไม่สามารถใช้งานได้โดยตรงเนื่องจาก FA-124 ไม่สนับสนุนในโหมดดั้งเดิม (FA-123) ซึ่งจำเป็นต้องใช้กับรูปแบบ CAT มีบางสิ่งที่ควรพิจารณา: ไฟล์ CAS: ใช้ตัวเลือก --cas และระบุไฟล์ผลลัพธ์ที่ลงท้ายด้วย. CAS ตัวเลือกสามารถเลือกได้ตามด้วยตัวบ่งชี้ว่าจะใส่อะไรลงในไฟล์: รายการทั้งหมดโปรแกรมแฟ้มแก้ไขไฟล์หน่วยความจำหรือข้อมูลช่วงเท่านั้น รูปแบบไฟล์ CAS ใช้โดย FA-121 ซึ่งเป็นโปรแกรม Windows แบบ 16 บิตเก่า คุณควร จำกัด ตัวเองให้ 83 ชื่อไฟล์สำหรับไฟล์ที่ส่งออก ไฟล์ CAS สามารถนำเข้าโดยซอฟต์แวร์ FA รุ่นใหม่ได้ ไม่มีการแปลงรหัสเกิดขึ้น แม้กระทั่งเครื่องคำนวณบรรทัดด้านบนของรุ่นนี้ CFX-9800G ควรจะประมวลผลโค้ด fx-8000G เก่าทั้งหมดอย่างถูกต้อง เมื่อคุณเปิดไฟล์ประเภท A ใน FA-121 รายการที่ขาดหายไปเช่น Factor จะถูกสร้างขึ้นโดยอัตโนมัติ แต่จะมีข้อมูลดีฟอลต์เท่านั้น ใช้ตัวเลือก -casP หรือ -cas7 หากคุณกำหนดเป้าหมาย fx-7700GB ซึ่งสนับสนุนการถ่ายโอนเฉพาะโปรแกรม ตัวเลือกหลังมีผลต่อการวางหน่วยความจำตัวแปรและไฟล์โปรแกรมแก้ไขใด ๆ ลงในพื้นที่โปรแกรม B. B. เป็นต้นครั้งแรก Prog A. มีโปรแกรมตั้งค่าตัวแปร A Z ให้เป็นค่าที่พบในไฟล์ต้นฉบับ ชื่อไฟล์บรรณาธิการต้นฉบับจะถูกบันทึกเป็นความคิดเห็นที่จุดเริ่มต้นของแต่ละโปรแกรมที่สร้างขึ้น ไม่มีความพยายามในการแปลชื่อสาย Prog ใด ๆ ไฟล์ CAT: ใช้ตัวเลือก -cat และให้ไฟล์ผลลัพธ์ที่ลงท้ายด้วย .cat ไฟล์นี้ได้รับการยอมรับจาก FA-122124 FA-124 ต้องอยู่ในโหมดดั้งเดิม (Model Type: fx-7400G CFX-9850G) แม้ว่าคุณจะเชื่อมต่อเครื่องคำนวณใหม่ คำนำหน้าเสริมสำหรับการแปลงไฟล์ของโปรแกรมต้องเป็นไปตามตัวเลือกโดยตรง (ดูด้านล่าง) หากคุณไม่มีสายพินสามขาคุณยังสามารถลองใช้ตัวเลือกการแปลง FA-124 และโอนไฟล์ที่แปลงแล้วในโหมด FA-124 พื้นเมืองผ่าน USB list8000 แปลงไฟล์โปรแกรมแก้ไขไฟล์ AZ และข้อมูล Range เป็นรูปแบบทั้งสอง กราฟิกเข้าสู่รูปแบบไฟล์ CAT เท่านั้น ข้อมูลทั้งหมดถูกเขียนลงในไฟล์เดียว ในไฟล์ CAT โปรแกรมจะเปลี่ยนชื่อตามตำแหน่งในการบันทึกแหล่งที่มา หากคุณบันทึกเทปคาสเซ็ทด้วยชื่อไฟล์จะใช้เป็นคำนำหน้า คุณสามารถเลือกที่จะให้คำนำหน้าของคุณเองได้หลังจากตัวเลือก - แมว A ในคำนำหน้าจะกลายเป็นหลักของพื้นที่ของโปรแกรม ถ้าไม่มีอยู่ในคำนำหน้าโปรแกรม 0 จะได้รับชื่อคำนำหน้าเพียงอย่างเดียวในขณะที่ตัวเลข 1 9 จะถูกผนวกเข้ากับพื้นที่โปรแกรมต่อไปนี้ การโทรไปยัง Prog n จะถูกแปลงเป็น Prog name โดยอัตโนมัติ การบันทึกเทปขาดข้อมูลเกี่ยวกับพื้นที่โปรแกรมเดิมของโปรแกรมที่บันทึกไว้ ซึ่งอาจทำให้เกิดปัญหาหากคุณเรียกโปรแกรมหนึ่งจากที่อื่น ๆ ตัวเลือก -p ช่วยในการกำหนดพื้นที่สำหรับโปรแกรมแรกในแฟ้มเป็นค่าอื่นที่ไม่ใช่ 0 มีความแตกต่างระหว่างไวยากรณ์หลายรุ่นของ Casios programming language สะดุดตาคำแนะนำ Scl. ไม่สามารถแปลง CL และ Dt เป็นรูปแบบ CAT ได้ เพื่อแก้ไขปัญหานี้คำสั่งบางคำจะถูกแทนที่เมื่อมีการสร้างไฟล์ CAT นี้ควรหลีกเลี่ยงข้อผิดพลาดทางไวยากรณ์ แต่ไม่สามารถช่วยในทุกกรณี เช่น. การเข้าถึงอาร์เรย์จะถูกแทนที่ด้วยการเข้าถึงรายการ แต่ถ้าคุณอาศัยการแม็พเฉพาะระหว่างตัวแปร AZ และอาร์เรย์คุณต้องแก้ไขโปรแกรม มีการเปลี่ยนแปลงคำสั่ง Mcl เพื่อล้างตัวแปร A Z และรายการการตั้งค่า 1 โดยมี 26 องค์ประกอบ เพิ่มในตอนเริ่มต้นของโปรแกรมการจัดการ arrray ของคุณ คุณควรปรับขนาดรายการด้วยตนเองหลังจากแปลง ไฟล์ข้อความจะถูกเก็บไว้ในการบันทึกเทปภายใต้ชื่อพร้อมกับรหัสผ่าน รูปแบบไฟล์ CAT เก็บทั้งชื่อและรหัสผ่าน แต่เนื่องจากรูปแบบไฟล์นี้เป็น ASCII คุณจึงสามารถแก้ไขรหัสผ่านได้ อย่าแก้ไขเนื้อหาของไฟล์โดยตรงในไฟล์ cat เพราะช่องความยาวจะไม่ถูกต้องไฟล์ CAS ไม่มีรหัสผ่าน กราฟิกในไฟล์ CAT จะถูกแปลงเป็นรูปแบบต่างๆ: Picture1 to Picture3 ประกอบด้วยภาพกึ่งกลาง (96x64 บนหน้าจอ 128x64) ใน 3 สีคือสีส้ม สีฟ้าและสีเขียว รูปภาพ 4 มีความละเอียด 96x64 เดิมเป็นสีน้ำเงิน เครื่องคิดเลขที่มีหน้าจอที่กว้างขึ้นจะปฏิเสธ (ในความเป็นจริงฉันยังไม่พบเครื่องคิดเลขที่โหลด) ภาพความละเอียดสูงจะไม่ถูกแปลงเนื่องจากไม่มีเครื่องคิดเลขอื่นสามารถจัดการได้ ในตัวอย่างแรกโปรแกรมแรกบนเทปจะเปลี่ยนชื่อเป็น MYAPP-3.FX ผู้ดำเนินการเปลี่ยนเส้นทาง GT เป็นตัวเลือกสำหรับการสร้างไฟล์ CAT และต้องถูกละเว้นสำหรับเอาต์พุตไฟล์ CAS Canon X-07 listX07 จัดการ Canon X-07 สนับสนุนไฟล์ไบนารีและ WAV จาก CSAVE เท่านั้น ลำดับหนีเป็นบิตที่แตกต่างจากเครื่อง Casio เนื่องจาก charset แตกต่างกันมาก ดูที่นี่สำหรับรายการที่สมบูรณ์ คุณสามารถใช้ชุดอักขระ DOS หรือ Windows extend (หน้ารหัส 437 หรือ 1252 ตามลำดับ) บนเอาต์พุตพร้อมกับตัวเลือก -c ซึ่งจะทำให้อักขระพิเศษในสตริงหรือความคิดเห็นป้อนด้วยคีย์ GRPH บน X-07 ซึ่งสามารถอ่านได้ในระบบของคุณ ถ้าคุณต้องการแปลผลลัพธ์ในภายหลังด้วย basX07 คุณควรใช้ตัวเลือก -e และคุณอาจใช้ตัวเลือก -c ทั้งสองสามารถผสม หากพบอักขระที่มีการจับคู่เพิ่มขึ้นในหน้าโค้ดที่เลือกไว้ผลลัพธ์จะถูกส่งออกแทนลำดับการเลี่ยง list74 จัดการ TI-74 รองรับไฟล์ไบนารีหรือไฟล์ WAV ไฟล์ไบนารีสามารถสร้างโดย wav2raw ได้ ถูกแยกโดยตัวเลือก -r ในช่วงก่อนหน้าของ list74 หรือมาจากอินเทอร์เฟซ TI PC: บันทึกจาก TI-74 (หรือ CC-40) หรือสร้างโดยคอมไพเลอร์ TIC74 ใช้ตัวเลือก -r ถ้าคุณต้องการสร้างไฟล์ที่สามารถส่งไปยัง TI-74 โดยใช้อินเทอร์เฟซสำหรับพีซี ชื่อไฟล์ต้องเป็นไปตามตัวเลือก char โดยตรง ไม่มีรายการที่ผลิตแล้ว list74 ทำงานสำหรับไฟล์ลำดับที่เขียนลงในอุปกรณ์ 1. เช่นกัน ตัวเลือก -e และ -c ทำงานคล้ายกับ listX07 แต่ TI สนับสนุนอักขระที่น้อยกว่าในระดับชาติ อย่างน้อยสามารถใช้อักขระพิเศษเช่น auml, ouml, uuml หรือ szlig ได้ พวกเขาไม่สามารถป้อนโดยตรงบนอุปกรณ์ แต่อาจลื่นผ่านอินเตอร์เฟซคอมพิวเตอร์หรือปรากฏในไฟล์ข้อมูล การสร้างจากไฟล์ไบนารีโปรแกรมสามโปรแกรมจะแปลไฟล์ไบนารีและสร้างไฟล์ WAV จากเครื่องดังกล่าวซึ่งสามารถถ่ายโอนไปยังเครื่องคิดเลขผ่านการ์ดเสียง โปรแกรมเป็น wave730 wave850 และ waveX07 โปรแกรมแรกจัดการชุด Casio PB-100 ได้แก่ FX-730P และเป็นผลข้างเคียง FX-702P (แต่ชื่อโปรแกรมที่เก็บไว้ในไฟล์ไม่ได้ถูกแสดงอย่างถูกต้องบนหน้าจอ) ส่วนที่สองเขียนขึ้นสำหรับอีกชุดหนึ่ง เครื่องคิดเลขพื้นฐานที่ขึ้นต้นด้วย PB-700 ได้แก่ FX-850P waveX07 จัดการ Canon X-07 ลำดับนำเข้าสั้นกว่าในไฟล์ต้นฉบับที่มาจากอินเตอร์เฟซเทป ช่วยประหยัดเวลาในการโหลดไฟล์ FP-200 จำเป็นต้องใช้อีกต่อไปเล็กน้อย: ใช้สวิทช์ -2 การสร้างจากไฟล์ต้นฉบับ BASIC โปรแกรมเหล่านี้ใช้ไฟล์ต้นฉบับซึ่งอาจถูกสร้างขึ้นโดยโปรแกรมอรรถประโยชน์รายการหรือพิมพ์ลงในพีซีและสร้าง ไฟล์เทปในรูปแบบใดรูปแบบหนึ่งดังต่อไปนี้: ไฟล์ WAV, ไฟล์ไบนารีหรือไฟล์ที่เข้ารหัส ASCII สำหรับอินเตอร์เฟซอนุกรม Piotrs โปรแกรมเหล่านี้เป็นแบบ Bas702 bas730, bas850 และ basX07 The last two can create plain ASCII source files for transmission through a serial interface. BASIC programs can be written with lowercase or mixed case keywords. The utilities translate everything outside strings, comments or DATA lines to uppercase before further processing. Uppercasing can be suppressed for the newest machines which support case sensitive variable names. You can use a single apostrophe () instead of REM to start a comment. This is natively supported on the FX-850P and later models and on the X-07 but not on the older machines where it will be translated to REM or :REM depending on its position. Lines that do not start with a line number are ignored. This way you can have lenghty comments in your source code which are not downloaded to your pocket computer. Different generations and lines of pocket computers use different BASIC dialects. The differences are sometimes huge and sometimes very subtle. This ranges from the almost exotic FX-702P BASIC variant with abbreviated keywords like PRT instead of PRINT to minor quirks like the lack of USING in the FX-850P or the renaming of the logarithm functions in the PB-700 and PB-1000. The translators know about some of these specifics and try to bridge the gaps with special options. Of course some restrictions like variable name syntax or memory organization or the lack of functionality cannot be overcome. But I tried hard to avoid these nasty SN Error or ERR-2 messages resulting from unknown keywords where a perfect replacement on the target machine exists. VAC vs. CLEAR is a good example for this. Within the same family, some commands are valid for one machine but not for the other. The statistics functions of the FX-750P are unavailable on the PB-700. bas850 translates these functions to tokens but the PB-700 cannot list or execute them. This is equally true, if you load a programm written on and saved by the FX-750P directly into a PB-700. You will find a detailed analysis of the various BASIC dialects in my BASIC Comparison Sheet . You can translate source files especially written for the FX-702P or from newer Casios standard BASIC keywords like PRINT or INPUT are automatically translated to the special syntax of the FX-702P. The prefix FACT function is replaced by the FX-702P postfix factorial . Some unkown commands like REM or DATA are completely removed. This can lead to lines being deleted and therefore unavailable as jump targets. The PB-700PB-1000 logarithm syntax is supported with the -l option. The FX-702P supports only one array named A(). On the PB-100 series you better use Z() after DEFM when you do not want to overlap your standard variables with your array. bas702 translates the arrayname Z() to array A() to emulate this behaviour. bas702 supports escape sequences anywhere in the code in order to allow the use of the special characters of the pocket computer. An escape starts with a backslash character followed by either one or two characters (see table below) or a two digit hexadecimal code. Set the -e switch on list702 to include these sequences in a program listing Here is the character map: Code 0F is used as the space character. The BASIC tokens range from 60 to AF. The character escape sequences are: DG (deg), gt (greater or equal), lt (less or equal), ltgt (not equal), PI and E (exponent). These are case insensitive: PI and pi are equivalent. The strings gt. lt. ltgt. PI and E in numbers are automatically translated when they occur in normal code. There is no need to escape them, except when you want to use them in strings. The character is treated as deg. is the up arrow and is PI. and are lt, gt and ltgt respectively. So in order to print the character pi, any of the following will do: PI. pi. Pi or 3B. Outside of strings, PI. pi or Pi are also valid. FX-730P family If you have a source file from an FX-702P, which uses some special keywords like PRT or INP. translate your source with the -o option. If you want to port a program from one of the newer machines like the FX-850P, try option -n. The program does its best to translate to the older or newer syntax, but it is not foolproof. The FX-702P postfix factorial is translated to the prefix FACT function. The PB-700PB-1000 logarithm syntax is supported with the -l option. Since the BASIC of the PB-100, PB-300, FX-701P and FX-801P lacks some keywords, notably REM. use option -1 if you want to target one of these. The unknown commands are then excluded from the output. This may lead to lines being dropped as a whole. Their line numbers are no longer available as jump targets Options -n and -o are mutually exclusive. Option -1 may be combined with either one. bas730 supports escape sequences anywhere in the code in order to allow the use of the special characters of the pocket computer. An escape starts with a backslash character followed by either one or two characters (see table below) or a two digit hexadecimal code. Set the -e switch on list730 to include these sequences in a program listing Here is the character map (courtesy Piotr Piatek): Code 00 is used as the space character. The BASIC tokens range from 80 to D1. The character escape sequences are: gt (greater or equal), lt (less or equal), ltgt (not equal), PI. E-. E (exponent), SD. SL (small caps), GA (gamma), SI (lowercase sigma), -1 (small), . (quotes) (circle), SM (Sum), DG (deg), (triangle), (multiply), : (divide), SP (spade), HT (heart), DI (diamond), CL (club), MU (micro), OM (omega), YN (Yen), SQ (square), . (dot) and (block), (backslash), (gray block), (thick slash), Bgt (B) and TA (tau). These are case insensitive: PI and pi are equivalent. The strings gt. lt. ltgt. PI. E- and E in numbers are automatically translated when they occur in normal code. There is no need to escape them, except when you want to use them in strings or comments. The character is treated as deg. . and are the left, right, up and down arrows. So in order to print the character pi, any of the following will do: PI. pi. Pi or 1B. Outside of strings, PI. pi or Pi are also valid. PB-700 and FX-850P families and the FP-200 -tT format is just plain text with all source text translations performed. You can send the result directly to the serial or USB interface. The outfile can be omitted, the output goes to standard out then. This way, you can send the output directly to other utilities like md100. In Windows, the following commands will setup the serial port and send the file directly to the pocket computer: The mode command is necessary only once. On an FX-850P use LOADCOM0:6. to load the file. Ive tried this successfully with the USB-interface by Manfred Becker (see below .) -tA format is compatible with the PB-700, FX-850P series machines and the FP-200. But its slow because each program line is preceeded by a lead-in sequence of about two seconds. This is necessary because the computer needs some time to compile one line in memory before the next line arrives. This is still better than typing the code in. The FP-200 and the FX-850P support -tB format, a blocked variant of the -tA format. Blocking creates less but larger blocks and is therefore faster to load but cannot be used for the PB-1000. The -2 switch sets all relevant options for the FP-200 and adds some special quirks. If you target to this machine, use the -2 switch -t2 creates a binary file for the FP-200. It sets the -2 switch as well. To get a program from the PC into your PB-700, PB-770 or FX-750P, use switch -t7 to create a binary file. This will be much faster than -tA . -t8 is preferable over -tA or -tB if you target the FX-850 or the PB-1000. For the latter, -lF is needed as well, if you are using the correct LGTLOG syntax of the PB series. The token table only contains the FX syntax LOGLN keywords. The -lF switch takes care of the source text translation before the tokenization takes place. There is another caveat: The token table contains all keywords for all known variants of JIS BASIC. If your program uses such a keyword as a variable name on a machine where it is not a reserved word (e.g. VAC which is a replament for CLEAR on the FX-850P but free for use on the PB-1000) the tokenizer will accidently translate your variable name to a token. Rename your variable or use -tA mode instead In any case, be careful to select a speed ( -w or -f ) that is supported by your pocket computer Use -u if you plan to load the file into your FX-750P: This machine does not support lowercase letters On the other hand, option -l allows lowercase variable names and keywords as accepted by the newer machines otherwise, everything outside strings and remarks is translated to uppercase. If you have a source file from an FX-702P or from the PB-100FX-730P series, which have some special keywords like VAC, the -o option might help. The program does its best to translate to the new syntax, but it is not foolproof. The FX-702P postfix factorial is translated to the prefix FACT function. There is a problem with the different meanings of LOG, LN and LGT in the various versions of Casio BASIC. The PB-700 series, the PB-1000 and the FP-200 use LGT for the base 10 logarithm and LOG for the natural logarithm. The other machines use LOG for base 10 logarithm and LN for the natural logarithm. If your source file specifies LOG and LN but you want to transmit the file to a PB-700 or PB-1000, specify -lP to force a translation. In the opposite case, specify -lF if you transfer, for example, a source from a PB-700 to a FX-850P. If your source file already contains the correct logarithm functions, do not specify a conversion There is an Exception: If you are creating a binary file for the PB-1000, you need to use -lF (see above.) With option -d data files can be created for all machines. As a modern PC does not allow the pausing of the sound output to the tape interface by means of a Remote plug, there is the ltdelaygt parameter. It controls the time in tens of seconds between data lines or blocks. You may have to increase this value from its default (two seconds in non blocked mode, four seconds in blocked mode) if you program misses data. There are differences between the PB-700 and later systems. A PB-700 PUT command creates an unnamed tape file with as many lines as there are items in the command. Later systems use OPEN and CLOSE to create named files with as many lines as there are PRINT statements. The FP-200 and the FX-850P support large blocks of several records before a new lead-in sequence is output. Option -2 forces this mode. For other systems just set the the ltcountgt parameter of option -d to B. Here are a few examples: PB-700: bas850 -w -d30,1 DATAFILE.DAT DATAFILE.WAV This matches a single variable as in GET A. Set option -d30,3 for GET A,B,C. The value 30 for the lead-in time is arbitrary. In most cases the default of 20 works fine. For each tape file, two blocks are written to the wav-file, header and data, each with its own lead-in of the requested length FX-850P: bas850 -w -d,B DATAFILE.DAT DATAFILE.WAV This will create a file with large data blocks. The lead-in time per block is 40 in this case. You can try to decrease it to 30 or some such. FP-200: bas850 -w -d -2 DATAFILE.DAT DATAFILE.WAV Option -2 forces large blocks and a modified line end (CR LF). This is FP-200 specific. bas850 supports escape sequences anywhere in the code in order to allow the use of the special characters of the pocket computer without resorting to the CHR function. An escape starts with a backslash character followed by either one or two characters (see table below) or a two digit hexadecimal code. Set the -e switch on list850 to include these sequences in a program listing Here are the character maps for the PB-700 and the FX-850P (courtesy Casio and some editing by me): PB-700 and PB-1000 character map. The FP-200 uses a reduced version of this map. FX-850P character map. Also valid for VX and Z machines. The character escape sequences for the FX-850P are: AN (Angstroumlm), IN (integral), RT (root), (over), SM (Sum), OM (omega), (gray block), (block), AL (alpha), BT (beta), GA (gamma), EP (epsilon), TH (theta), MU (micro), SI (sigma), P S (psi), S0. S9. S. S-. SN. SX. -1 (superscripts), : (divide), . (dot), DG (deg), gt (greater or equal), lt (less or equal), ltgt (not equal), . V. lt-. -gt (arrows), PI (pi), SP (spade), HT (heart), DI (diamond), CL (club), SQ (square), (circle), TR (triangle). (multiply), PN (pound), CN (cent), -. - (signs), YN (Yen), (backslash, same as Yen). These are not case sensitive: PI and pi are equivalent. The symbolic escape sequences help in porting software from the older PB-100FX-700 series machines and are easier to remember. Just use the -e switch on list730 . Use option -uF if you have created the source text in UTF-8 format. A complete list of the supported extended characters is contained in the following document: CasioFX-850PCharset.pdf With option -eP set on bas850 . a different set of character escapes is used, because the PB-700 and PB-1000 support a different character set. Hexadecimal escapes are not affected by this option. The following codes are used instead (some looking a little strange, like the arrows): 1. 8 (horizontal bars), 1. 7 (vertical bars), (over), (gray block), (block), . (dot), DG (deg), . V. lt-. -gt (sort of arrows), SP (spade), HT (heart), DI (diamond), CL (club), LD (large dot), (circle), TR (triangle), YN (Yen), (backslash). Use option -uP if you have created the source text in UTF-8 format. A complete list of the supported extended characters is contained in the following document: CasioPB700Charset.pdf On the PB-700 and the FX-750P, lines with escape codes beyond 7F cannot be edited because the codes are replaced by their corresponding keywords when using LIST or EDIT. You can still LOAD and RUN such a program. Code F0 (multiplication sign) is not allowed on these machines because it breaks the transmission protocol. It can only be used in the form CHR(ampHF0). Canon X-07 The program supports three output formats: -b creates a binary file, used mainly for debugging the tokenizer or later translation with waveX07. -w creates a WAV file which can be fed to the computer via the sound card. -t creates plain text but all source text translations are performed. The delay value inserts a short break for the slow X-07 and controls the line termination: CR only if a delay is specified, the system default (CRLF for DOS, LF for Unix) without delay. The output can be sent to your machine directly via the serial interface (see below for details.) The Canon X-07 has an extended character set with many special characters for foreign languages like French or German. You can use your favorite editor in DOS or Windows and type text in strings, comments or data lines without worrying about the encoding. If you are on DOS use option -cD. on Windows use option -cW. If your text is in UTF-8 format use option -cU. Escape sequences are supported as well such as :A for Auml or e for eacute. The complete list is in the following document: CanonX-07Token.pdf. You can use binary escape sequences like 86 for Auml. เกินไป. A single backslash serves as the marker for an escape sequence. Therefore, in order to enter a backslash for the integer division, you need to encode it as (or YN because it is displayed as the Yen symbol yen on the machine). Using the serial interface on the Canon X-07 to enter a program The Canon X-07 lacks the ability to load an ASCII program with the LOAD command from the serial interface. Instead, it can be remotely controlled from another computer or terminal over the serial line. This way, an ASCII file can be simply typed in from the controlling system. To enable this feature, it is easiest to type in a small program first: The program is now ready to be run from the memory disk with RUNREMOTE. Before you start downloading, make sure to delete the current program. Otherwise, new lines will be merged with existing ones. You can now send your source from the PC. The following example is for a command prompt on Windows: The mode command is necessary only once. The basX07 command assumes that you have entered the text with a windows editor and you want to translate extended characters from Windows to the machines character set. If you see obvious garbage on the display, then the X-07 was too slow to read and store all the lines. You will then need to reduce the speed further or increase the delay after option -t . Turning the machine off and on returns control to the keyboard. An example: Dumping the memory of a PB-770 Here is a short example on how to get the RAM contents of a PB-770 as a binary dump file into your PC. This does not work for the FX-750P or the PB-700 because they lack the necessary PEEK function. Only RAM can be accessed, PEEK does not read out the ROM contents. PEEK(ampH0000) and PEEK(ampH8000) return identical values. PB-770 BASIC source The following source text should be created on the PC and transferred to the PB-770 via sound card: Save the file as pb-dump.txt and translate it to a WAV file: The wav file can now be downloaded to your PB-770. A simple LOAD on the machine will do. Getting the data into your PC Set up your recording software on the PC and start recording. You will need a lot of space. About half of the recording will be silence which you can edit out later if you like. Now run the program and enter the start address and the number of kilobytes to transfer. RAM seems to start at address 0000. Without RAM expansion, the size is 8 kb. Each block of 256 bytes takes about 75 seconds to collect and another 70 seconds to write out. This totals to about 80 minutes for 8 kb of RAM. After the last block has been written, save the recording as a WAV file, lets say as dump.wav . Converting the data The following command converts dump.wav into a readable format: The conversion takes its time because of the size of the WAV file. The file dump.txt can be inspected with an editor or treated with the following simple C program: The filenames dump.txt and dump.bin are hardcoded into the source. Feel free to improve it. The binary file is updated with each run of the program so that you can upload the dump in chunks of your liking. The new data will be inserted or updated in the correct position of dump.bin . Download all files including Windows executable of undump.exe here: mvcsys.dedownloadpb-dump.zip How to handle floppy disk images Creating an image An MD-100 image is a file that contains the sectors of a real 3.5 floppy disk. The disks are written with 80 tracks and 16 sectors of 256 bytes length on each track. Only one side of the disk is used. I use double density disks (without the second hole in the case) but high density disk may work if you cover the hole with black tape. You should format the floppy in the MD-100 drive. Now you need access to a Linux PC. Sorry, I havent written software yet to copy the disk under DOS or Windowsreg. In order to access the disk physically you need to tell the floppy driver about the format of the disk. Ive had success with the package fdutils-5.5 . In the Linux subdirectory of casutil youll find shell scripts to setup the drive, read and write floppies. The setup script makedev.sh creates the device devfd0casio and configures it with setfdprm SS DD ssize256 sect16 . Copying is done with dd . The sample script getmd100.sh creates an image file named md100.img . The md100 program can create an image if you precede the image name by the option -c. It is possible to create disk images of up to 512 blocks instead of the default 320 blocks, but these cannot be written back to a real disk.A new image is filled with empty blocks. The option is mostly ignored if the image already exists but you can increase the maximum allowed size of the image with its parameter. Writing to a floppy The image created in the step above can be written back to a real floppy in pretty much the same way. A sample script putmd100.sh is provided in the linux subdirectory. Manipulating files A single program, md100 . does all the manipulations to the disk image (or the real disk on some operating systems, see below .) Patterns are DOS style, but you can use for all files. Wildcard expansion on local files depends on the platform. On Linux this is automatic, on other platforms it depends on the compiler. The Borland compiler has wildcard support, the library wildargs.obj is automatically linked in by the compile jobs provided with the package. Patterns for files on the floppy must be included in double quotes. MD-100 filenames and types The MD-100 filenames are only eight characters long plus three characters for a file extension. Filenames can contain many characters not allowed on your PC. Case is respected just like on Unix file systems. There are no subdirectories on an MD-100 floppy. Files have an additional attribute, the file type. Both the PB-1000 and the PB-2000C use the file type to select the correct handling of a file selected from the menu. I know of the following types: S - Sequential files, including MEMO files, assembly source files, C data files, files loaded via RS-232C and BASIC programs saved with SAVE,A. Sequential files are opened with the MEMO editor and can be read and written by BASIC or C programs. The contents is ASCII text with CR LF delimiters. R - Relative or Random data files. They can only exist on a disk, not in PB-1000 RAM. C does not use type R files. The contents is defined by the BASIC FIELD statement. M - Machine code files, created by the PB-1000 assembler. B - BASIC programs in internal representation. C - C source or BAT files. The contents is ASCII text with CRLF delimiters, just like sequential files. The PB-2000C can change the file type between C and S from the menu. The PB-1000 misinterprets a type C file and thinks it is a type R file. Consequently it refuses to copy such a file to RAM. There is an additional attribute byte stored in each directory entry on the disk. Bit 0 is used to protect a file. You can set or select the attribute byte with the -p option. Space allocation is done in blocks of 4 sectors (1KB) each. The size in bytes is computed by multiplying the total number of sectors by 256 and searching backwards the last sector of the file for the EOF marker 1A. The marker is added even on empty files. The following examples assume that you have an image named md100.img in the current directory and that the md100 executable is in your path. Listing the disk directory If you want to specify a pattern, the command name dir must be spelled out: The double quotes around the patterns are essential The -i option forces a case insensitive search. You can use the -u or -l options to convert all filenames to upper or lower case. With the options -t andor -p the listing can be restricted to files of a certain type or with a certain protection setting: Listing files Files on the image can be displayed as text with the type command: (Ask me for a complete listing. The authors pages have seemingly gone.) The file name(s) can be patterns and the options -i. -t and -p do also work. If more than one file is specified, each listing is preceded by the filename and a colon. Listings can be binary (hex dump) or ASCII (the default for most file types). You can force a specific listing style with the options -b or -a : As you can see, BASIC programs are decoded from their internal, tokenized form. I cannot guarantee that the decoder works correctly in all cases, save your programs in ASCII from the calculator if you want to be on the safe side Option -e creates the same escape syntax as list850 does. Copying files to the PC The commands get and mget copy single or multiple files from the image to your PC. The only difference is that get just copies one file (in case of a pattern the first that matches) while the second argument is the new name given to the file on your PC. With mget you can copy a bunch of files in one go but your options to rename the files on your PC are limited to a directory name given with the -d option. Both commands allow the file selection options -i. -t and -f and the case conversion options -l and -u . Use get to copy a single file: This will copy the binary file, not the ASCII code of PI.BAS. You can specify no destination at all (defaults to the current directory), an explicit name, a directory ending in or a name ending in . The trailing in the destination filename is replaced by the source file name. If you want an ASCII copy (just like the type command) specify the -a option. Escape syntax can be created with the -e option: If you want to copy multiple files, use mget : The destination (after the -d option) must end in a directory delimiter or . This is prepended (without the trailing ) to the filename from the floppy image. The source filename pattern(s) must be enclosed in double quotes to prevent the shell from interpreting the wildcard characters. Some characters from the source file name are translated to an underscore. Copying files to the floppy image The commands to copy PC files to the floppy image are put and mput . Again, the main difference is that put copies just one file while mput copies a bunch of files in one go. When copying files to the MD-100 image or the floppy, you need to decide which type to assign to the file. The md100 program tries to guess the file type from the extension correctly: .c . .h and .BAT files are of type C. .BAS is type B. .REL is type R and all others are type S. You can override this with the -t option. The protection attribute is set to 0 by default but can be changed with the -p option. Files saved on your PC with mget in binary mode should be copied back with the -b switch set. This ensures that the file is transferred unchanged to the floppy image. PC text files should be transferred with the -a switch set to ensure ASCII mode. This way, the correct line termination ( CR LF ) is forced on the destination file. ASCII mode is default for all files except types M. R and B. Escape syntax is supported with the -e option, just like in bas850 . If you are unsure whether a copy command will do what you intended, use the option -n before the image name or between the command and its parameters. This prevents updates to the image or the floppy. Use put to copy a single PC file to the image: Since no destination filename was given it was built from the source file. The -u option forces the name to be all upper case. The -e option interprets escape sequences like PI or 80 and translates them to their binary equivalent. The file PI.ASC can later be opened on the PB-1000 with the memo editor or it can be loaded from the BASIC command prompt with LOAD0:PI.ASC. The BASIC interpreter compiles the file to internal format upon loading. You can use piping with the put command if you replace the source filename with stdin or stdin.EXT. Its better to provide a destination filename with a proper extension. Otherwise, the file will be created under the name stdin.EXT . Here is an example: The option -lP of bas850 will translate the fx-850 logarithm syntax LOG LN to the PB-100 syntax LGT LOG . With put and mput . destination names can be patterns included in double quotes. In order to copy all files ending on .asc on your PC to the floppy image and renaming them to be all lowercase and to end on .txt . enter the following command: Note the double quotes around the MD-100 pattern .txt but not around the PC pattern .asc . The third column is the size in blocks. Renaming or deleting files and setting file attributes The commands ren , del and set change the directory of the floppy image. They all work on file patterns or on single files. To rename all BASIC files to lower case with the extension .bas use the following command: As usual, all patterns must be enclosed in double quotes. With the ren command, all patterns except the last are considered source files, the last pattern forms the new name(s). To delete some C files from the image, enter: Use option -tC and the pattern to delete all type C files. To change all type C files to be of type S and alter the protection attribute, enter: This allows access to the files created by the PB-2000C from a PB-1000. The protection attribute is supposed to protect the file against writing. Direct floppy access On Linux, you can replace the image name in the md100 commands by devfd0casio . the device created with makedev.sh. All operations are directly performed on the floppy. Thats much slower than manipulating an image but you save the work of copying the image back and forth. On Windows youll need an additional package, LibDsk. This is a library to directly access floppies in various formats. See the file readme.txt in the win32 subdirectory. The library is cross platform and it should be perfectly possible to use it on other platforms. I simply havent tried it, yet. You can set the -DLIBDSK switch of your C compiler and try for yourself. To access the floppy, replace the image name with A: . Ive written an OS2 floppy access module as well, but that doesnt work, I keep getting read errors. My interest in OS2 has ceased so updates are unlikely. -( BASIC Comparison Sheet Ive made an attempt to compare the various BASIC dialects of different pocket computers in tabular form: Download page. The link points to the online version of the download page, a local copy is part of this package. The comparison includes Casio, Sharp, HP, TI, Canon and Epson machines. Casio Pages The following Internet sites have more or less influenced my work. More links can be found on these pages. Piotr Piatek has inspired much of what you can find here. Some recent bug fixes and contributions, e. g. direct floppy access from DOS, are by him. He has a deep insight in Casio hardware and has even built the interfaces himself. Visit his site at pisi.plpiotr433index.htm Ledudus site, dedicated to Casio calculators and pocket computers, with many pictures and links: ledudupockets.asp (English and French). Information about the PB-700 can be found on the pages of Christophe le Glatin, now hosted by Ledudu: casio.leduducasiopb700casiopb700.htm. Some French r equired. Thomaacutes Wrobel has collected technical information about the PB-1000: itkp.uni-bonn.de Viktor Toths rskey.org is a site that deals with many programmable calculators, among them several Casio models: rskey.org . The Pocket Computer Museum has many pictures and technical data. It hosts some software for Sharp pocket computers: pocket.free.frindex.html . SilRun Systems (Silent Runner) hosts many scanned Casio manuals: silrun.de . Manfred Becker has created a USB interface and a BASIC program editor for the FX-850P and its successors: manib.ma.funpic.dedetaschenrechner.htm (German pages only). The various file formats of Casio graphics calculators are the topic of the Casio file format documentation project. casetta.tuxfamily.orgformats . Casios communication software FA-124 can be downloaded here: world.casioeduresourcesfa124 Floppy access LibDsk . the library used to access the floppy to manipulate MD-100 disks is written by John Elliot: seasip.demon.co.ukUnixLibDsk . The auxiliary Windows driver fdrawcmd that LibDsk uses is the work of Simon Owen: simonowenfdrawcmd . Contact: Marcus von Cube ltmarcusmvcsys.de gt Page last updated: March 15, 2015ImageMagick v6 Examples -- Color Modifications To explore these technqiues we will need a test image. Dont worry above how I actually generated this image, it is not important for the exercise. I did design it to contain a range of colors, transparencies and other features, specifically to give IM a good workout when used. If you are really interested in the commands used to generate this image you can look at the special script, generatetest , I use to create it. WARNING: The color processes below generally assumes the image is using a linear colorspace. Most images are however saved using a sRGB or Gamma corrected colorspace, as such to get things right colorspace correction should also applied first. Converting Color to Gray-Scale Gray scale images can be very useful for many uses, such as, furthering the processing of the original image or for use in background compositions. The best method of converting an image to gray-scale is to just ask IM to convert the image into a gray-scale Color Space representation for the image. Note how the blue is much darker than the red, due the weighting to match the intensity as they seem to appear to the human eye. That is, red is quite a bright color compared to blue which looks darker. This is equivelent to the use of the rec709luma conversion formula with the dedicated -grayscale operator (Added IM v6.8.3-10). The rec709luma value is just one of many greyscaling formula that has been defined for use by the -intensity setting (see below). Here for example is the other common greyscaling formula rec601luma As you can see there is a slight different in intensity levels for the different red, green and blue color channels. However there a many other methods, and meanings of gray-scale. For example, you can drain all the color out of the image by using the Modulate Operator. to set all color saturation levels to zero. This essentually converts the image to the HSL colorspace, and extracts the grayscale Lightness value from that colorspace. However using a -define modulate:colorspace you can specify other colorspace models to use. See Modulate in Other Colorspaces below. Note how the IM green color I used for the center colored disk in my test image is not actually a pure green, such as used in the colored rainbow, but the half-bright green defined by the new SVG -- Scalable Vector Graphics standard. If you need a pure RGB green you can use the color lime instead. See Color Name Conflicts for more detail. Another way is to use the FX DIY operator to average the three channels together to get a pure mathematical meaning of gray-scale. The average of sRGB channel values also equivelent to the intensity channel of OHTA colorspace (red channel). Or the I channel of HSI. colorspace. Another technique is to simply add all three channels together (a color measure known as manhatten distance) and while the resulting image will not loose information due to quantum rounding effects, you may loose information about the brightest colors. Unfortunately, you also loose the transparency channel, too. You can use the same adding channels technique to control the weighting of the individual color channels. For example this is one DIY formula that you can use. The above would suffer from quantization effects for a ImageMagick compiled at a Q8 Quality Level. That is because the results of the -evaluate will be saved into a small 8 bit integer, used for image values. Only later are those values added together with the resulting loss of accuracy. An ImageMagick compiled with Q16, or better still the HDRI. quality compile options will produce a much more exact result. Another new alternative is the Poly - Weighted Image Merging Operator. which will do the weighting and addition of the separated channel images in one operation, so avoiding quantum rounding effects. A similar technique can be used to generate a pure mathematical gray-scale, by directly averaging the three RGB channels equally. However as you can see, I did not attempt to preserve the alpha channel of the resulting image. Another fast alternative is to use the -recolor color matrix operator, which will let you specify the weighting of the three color channels. This doesnt affect transparency, but makes it a much better way of converting colors using a specific weighting. Basically the first row of numbers is the channel weighting for the resulting images red channel, next 3 for green, and the final three numbers for blue. You can also use -type to tell IM to treat the image as gray-scale, when either reading or writing the image. The -type setting is generally only used as a guide when an image is being read or written to a file. As such its action is delayed to the final write of the image. Its effect is also highly dependant on the capabilities of the image file format involved and is used to override ImageMagicks normal determination during that process. See the Type examples for more information. Before IM v6.3.5-9 the above will have removed any transparency in the written image (equivalent of a -type Grayscale ) due to a bug. This was fixed as soon as I noted the problem and reported it. (There is a lesson here :-) A much more interesting technique is to extract a variety of different meanings of brightness by extracting the appropriate Color Channel from various Colorspace representations of the image. Examples see Grayscale Channels from Colorspace Representations. Image Level Adjustments The most basic form of adjustment you can make to images are known as level adjustments. This basically means taking the individual RGB color values (or even the alpha channel values) and adjusting them so as to either stretch or compress those values. As only channel values are being adjusted, they are best demonstrated on a gray-scale image, rather than a color image. However if you adjust all the color channels of an image by the same amount you can use them with color images, for the purposes of either enhancing, or adjusting the image. Do not confuse this with the more automatic form of level adjustments, which we will look at in the next major section of examples below, Normalize Adjustments. This function will do exactly the same operation regardless of the actual content of the image. It does not matter if the image is bright, or dark, or has a blue, or yellow tint. The operations are blind to the actual image content. In demonstrating these operations I will be using a modified gnuplot graph such as shown to the right, which I generate using a special script imgraph . The graph has a red line which maps the given original x value (representing the gray-scale value of the top most gradient) to the y value shown. The resulting color gradient is also shown underneath the input linear gradient. The graph shown to right is of the IM -noop operator which actually does nothing to an image. As such each of the images color values are just mapped to exactly the same value without change. The lower gradient is thus the same as the upper gradient. Image Negation The simplest and most basic global level adjustment you can make is to negate the image, using the -negate image operator. Essentially this makes white, black, and black, white. adjusting all the colors to match. That is, it will make the color red, its complementary color of cyan, and blue, yellow, etc. You can see this with the mapping graph shown below, as I use the -negate operator on both the test image and the standard IM rose built-in image. Note how the lower gradient in the mapping graph image is now reversed, so that black and white are swapped, and the same reversal appearing in the negated test image. Note that 25 is a huge contrast enhancement for any image, but it clearly shows what it does. You dont have to change both the black and white points. Instead it is quite permissible to just adjust only one end of the color range. For example we can make a very light, or a very dark rose image. However I again warn you that the colors outside the given range are clipped or burned, and as such will no longer be available for later image processing. This is the biggest problem with using a -level operator. By using a negative value you can do some rough de-contrasting of an image. What this means is that rather than providing a color value for the values to be mapped to black and white and thus stretching out the colors in between, you instead compress the color values so as to map the imaginary negative color to black or white. The result is a general graying of the image. This method of de-contrasting an image however is very inaccurate and not recommended, unless you have a IM older than version 6.4.2 where you dont have access to the new Reversed Level Operator. You can use the -level operator to negate an image (as previously shown above, just by swapping the black and white point values given, using -level 100,0 . Or by setting them to the same value, you can effectively call all the color values in the image to be thresholded. Using -level to threshold an image is exactly the same as if you used a Threshold Operator with that value. The mapping graph shown right, shows the results of a -level 50,50 operation, and its effect on a grayscale gradient. Note that unlike -threshold the image is not automatically converted to a grayscale image when used with the default -channel setting. The general nature of using level to linearly modify an image, makes the -level operator good for general gray-scale image modifications, and mask adjustments. Add the fact that you can modify individual channels (using the -channel setting) as opposed to the whole image, makes it one of the best color modification operators available to IM users. N ote you can also use the Evaluate and Function Operators for a more direct mathematical modification of the color values, to achieve the same results for -level both and - forms). Be warned that the -level operator treats the transparency channel as matte values. As such 100 is fully transparent and 0 is opaque. Please take this into account when using -level with a blurred shape image. This is most typically done after blurring an shape image, to expand and stretch the results. For examples of this see Soft Edges. and Shadow Outlines. Reversed Level Adjustments -- Decontrasting Images As of IM version 6.4.2 the Level Operator was expanded to provide a reversed form level (note the plus). Alternatively you can use the original -level form of the operator but add a . to the level argument given (for older API interfaces). The arguments for this variant is exactly the same, but instead of stretching the values so as to map the blackpoint and whitepoint to black and white, it maps black and white to the given points. In other words level is the exact reverse of -level . For example here we map black to a 25 gray, and white to 75 gray, effectively de-contrasting the image in a very exact way, using the two methods of specifying the reversed form. If you compare the above level 25 operation with the use of a a negative de-contrasting, -level -25 operator we showed previously, you will see that are not the same. The plus version produces a much stronger de-contrasted image (it is greyer), but does so by mapping to the exact values you give the operator, and not the imaginary values the minus form used. This exact value usage is important, and one of the reasons why the plus form of the operator was added. Of course a 25 is again a very large value, and it is not recommended for use with typical image work. Note that the -level and level , are in actual fact the exact reverse of each other when given the same argument. That is, one maps values to the range extremes, while the other maps from the range extremes. For example here we compress the colors of the test image using level , then decompress them again using -level , so as to restore the image close to its original appearance. The two images appear to be very very similar, and as I am using a high quality Q16 version of IM, you will be hard pressed to notice any difference at all. However the values may not be exactly the same, as you have effectively compressed the color values of the image to a smaller range of integers, and then restored them again. In extreme cases this can result in Quantum Rounding Effects. Doing these two operations in the opposite order (stretch, then compress the color values) will produce Quantum Clipping Effects. One other useful aspect of the level operator is that you can completely compress all the color values in an image to the same gray-scale level. By specifying levels according to the values of specific colors for each individual channel, you can effectively convert a greyscale gradient into a specific color gradient. However this is rather difficult to calculate and do. As such a -level-colors operator has also been provided that will let you specify the black and white points in terms of specific colors rather than level values. See Level by Color below. Level Gamma Adjustments Both the above -level variants also allow you to use a third setting. The gamma adjustment value. By default this is set to a value of 1.0 , which does not do any sort of mid-tone adjustment of the resulting image, producing a pure linear mapping of the values from the old image to the new image. However by making this value larger, you will curve the resulting line so as to brighten the image, while shrinking that value will darken the image. For example here I use just the gamma setting to brighten and darken just the mid-tones of the image. Values generally range from 10 for a blinding bright image, to .2 for very dark image. As mentioned a value of 1.0 will make no gamma changes to the image. However the special value of 2.0 (see above) can be used to get the square root of the images normalized color. Both versions of the -level operate handles gamma in the same way. This means you can combine the level adjustment of the black and white ends with a non-linear gamma adjustment. You can also only adjust a single channel of an image. For example, here we give an image a subtle tint at the black end of just the blue channel, while using gamma to preserve the mid-tone color levels of the image. This specific example could be used to tint a weather satellite photo, where only the sea is pure black, while land is more grey. Other alternatives to this blue channel adjustment are given below in DIY Mathematical Non-linear Adjustments. Gamma Operation Adjustments The -gamma operator is also provided, and has exactly the same effect as the gamma setting in the -level operator. However it will let you adjust the gamma adjustment level for each individual channel as well. Its real use is in adjusting the gamma function of an image before performing linear operations on them. For more details see Human Color Perception and Gamma Correction. We can also use this function to brighten the image differently for each individual RGB channel. For reasons about why you should used this function see Gamma Correction. This function actually equivelent to the Evaluate POW function but with the argument inverted. As such a -evaluate POW 2.2 will actually do a -gamma 0.45455 (0.45455 is equal it 12.2) operation, which is the reverse of a -gamma 2.2 . One of the less obvious uses of -gamma is to zero out specific image channels (see Zeroing Color Channels ). Or color an image completely black, white or some other primary color (see Primary Colored Canvases ). Level Adjustment by Color The -level-colors operator was added to IM v6.2.4-1. Essentially, it is exactly the same as the Level Operator we discussed above, but with the value for each channel specified as a color value. That is, the -level-colors option will map the given colors to black and white and stretching all the other colors between them linearly. This effectively removes the range of colors given from the image. And while this works, it is not particularly useful, as it is prone to fail for colors that have common values in some channel. For example, the colors DodgerBlue and White have the same color values in the blue channel. As such, -level-colors DodgerBlue,White may not always convert those colors to black and white. The better technique in that case is to extract a greyscale image of the channel with the highest differences (such as red) and level or normalize that channel. WARNING: watch out for transparent colors. The plus form of the operator level-colors on the other hand is extremely useful as it will map the black and white color to the given values compressing all the other colors linearly to fit the two colors you give. For example lets map black and white to green , and gold . As you can see the grayscale gradient is remapped into a gradient bound by the colors given, and although colors outside a gray-scale range are also modified, they will also follow the basic style of the color range specified. This makes the level-colors operator an extremely useful one, especially when mapping grayscale images. If you only supply one colorname but include a comma, the missing color will default either to black or white as appropriate. This makes it easy to convert grayscale images into a gradient for any color you like. For example here I remap a black and white gradient to a red and white gradient, (note the , in the argument). This didnt just replace black with red but also re-mapped all the anti-aliased gray colors to an appropriate mix of red and white, producing a very smooth result. If I had just performed a simple Direct Color Replacement converting pure black colors to red, I would end up with the horrible image (showen right). See Fuzz Factor for the example used to generate that image. Of course if you want one of the colors to be made transparent instead you are better off using the -alpha Shape operator instead, as this requires you to transfer the gradient into the alpha channel. If you only specify a single color, without any comma separator, that color will be used for both black and white points. That means all the colors in the image will be reset to that one color. (according to the current -channel setting limitations). This is an identical result to using -fill DodgerBlue -colorize 100 to Colorize Images (see below). If you want to set the images transparency setting as well you will need to set -channel to include the transparency channel, OR set the Alpha Channel to fully-opaque, using either -alpha opaque or -alpha off . Here are a few more examples of using this to adjust or tint a colorful image, rather than a gray-scale image. In summary the level-colors is a gradient color replacement, a linear tinting operator, and can also completely reset colors. Sigmoidal Non-linearity Contrast From a PDF paper on Fundamentals of Image Processing (page 44) they present an alternative to using a linear contrast control (level), with one using gamma correction known as sigmoidal non-linearity contrast control . The result is a non-linear, smooth contrast change (a Sigmoidal Function in mathematical terms) over the whole color range, preserving the white and black colors, much better for photo color adjustments. The exact formula from the paper is very complex, and even has a mistake, but essentially requires with two adjustment values. A threshold level for the contrast function to center on (typically centered at 50 ), and a contrast factor ( 10 being very high, and 0.5 very low). For those interested, the corrected formula for the sigmoidal non-linearity contrast control is. Where alpha is the threshold level, and beta the contrast factor to be applied. Here is a alternate version of the formula using intermedite variables. x exp( beta ( alpha - u)) y exp( beta 1 result (x y 1) (1 (x 1) - 1 y) The formula is actually very simple exponential curve, with the bulk of the above formula is designed to ensure that 0 remains zero and 1 remains one. That is, the graph always goes though the points 0,0 and 1,1. And the highest gradient of change is at the given threshold. Here for example is a -fx implementation of the above formula, resulting from a very high contrast value of 10 and a 50 threshold value. These values have been rolled into the floating point constants, to speed up the function. I did say 10 was a very heavy contrast factor. In fact anything higher than this value can be considered to be more like a fuzzy threshold operation, rather than a contrast enhancement. For a practical example of using this operator see the advanced Gel Effects Example. where it is used to sharpen the bright area being added to a shaped area color. Miscellaneous Contrast Operators Adjustments Using Hist ogram Modification This section was a joint effort by Fred Weinhaus and Anthony Thyssen. What is a histogram A histogram is a special type of graph. It simply sorts the color levels of the pixels in an image into a fixed number of bins each of which span some small range of values. As such each bin contains a count of the number of color levels (pixel values) in the image that fall into that range. The result is a representation of how the color values that make up an image are distributed, from black at the left, to white at at the right. The histogram can be generated for each channel separately or as a global histogram which looks at values from all the channels combined. The result is often displayed as a image of a bar chart. In IM, this is done using the special Histogram: output format. ตัวอย่างเช่น. But it can also be displayed as a line graph where the line connects the tops of the bars. This will be demonstrated later in the discussion below. See Histogram: for more details of this special output format. This is recommended reading at this point as it is the best way to extract histogram information about images using IM. A histogram charts actual height has little actual meaning, since it is usually scaled so that the highest peak touches the top of the image. As such the height of each individual bar is not relevant. What is much more important is the distribution of the histogram over the whole range, and how the relative heights relate to each other over the whole of the chart. When looking at a histogram you would consider the following factors. Does the histogram form one wide band of values This means that the image makes wide use of the colorspace and thus has good contrast. Or is it all in a tight group in the middle or at one end of the range This means the image has a low contrast, making it look fogged or grayed, or perhaps overly light or dark. Does it form two or more peaks As a result of highly different areas or regions in the image. Where are most of the pixels At the left, meaning the image is very dark. Or at the right, meaning it is very bright. Or spread out around the middle Are there regular gaps or empty spaces between individual bars This usually means either the image has very few pixels, so it could not completely fill out the whole histogram, or the image was color reduced, or modified in some way, so as to produce those gaps. Essentially a histogram is a simpler representation of an image, and as such it is much easier to change or adjust an image in terms of its histogram. Almost any mathematical color transformation that one applies to an image will normally cause not only the image to be modified, but its histogram as well. These include linear operations such as the Level Operator or non-linear operations such as the Gamma Operator. (see above). The mapping graphs we saw above represent how the graylevels in an image and thus how the images histogram is to be transformed. For example, lets make a low contrast image to demonstrate. However, the final result is that it not only modifies the image, but does so by modifying the images histogram (by compressing it). In the above case, -contrast. is a simple Level type operator that adds just a little more contrast to the image. the result of this is that the histogram itself is spread out more, causing it to cover the whole of the possible color range better. You can also see from the histograms, before and after, that the colors will also end up with gaps and holes between the bins, due to the way in which the stretching was performed. Specifically it creates a histogram with all the colors being places into bin. These binned colors are then modified as a whole, causing the image colors to be grouped together. It is not a particularly good way of handling image colors. This operator however works blindly, without any knowledge of the image content or color distribution. It thus cannot be done without some user control, as the operator could very easily make any image it is applied to, worse, rather than better. In this section we will look at image processing operators that examine the images histogram as part of its decision making process. It then modifies images using the result this study, so as to enhance some quality of the image color distribution. As these operators make use of actual information coming from the image being processed, they can often be used more globally over many images with much checking by the user. Operators of this type include automatic linear level type operators such as -normalize , -contrast-stretch , and -linear-stretch , but also non-linear ones such as -equalize , and others that may eventually be included into ImageMagick such as Fred Weinhauss script, redist . Histogram Stretching The simplest techniques, like the previous example simply stretch the histogram of the image outward to improve the color range. However instead of just blindly picking the black-point and white-point for Level operation, they select points based on the images histogram. Basically they count up the number of color values in each histogram bin, from each of the two ends, inward until they reach some threshold. These points will then be used as the black-point and white-point for the histogram (level) stretching. Basically the histogram counts provide the graylevel values that the stretch will force to black and white. This means that all pixels in the image that fall within the range of bins from pure black to the selected black-point bins corresponding graylevel will end up pure black. Likewise those pixels in the image that fall within the range of bins from from pure white to the white-point bins corresponding graylevel will end up pure white. The pixels that are outside these points however will have been stretched outside the possible color range of values, and as a result they will be simply be set to the range limits. That is these pixels are clipped burned-in as they are converted to the extreme of pure black or pure white color values. As a result if the threshold limits for selecting the black-point and white-point is set too high, you will get lots of black and white areas in the image, with the resulting histogram having large counts (tall bars) at the extreme end bins. Example of severe burn-in -- Chinese Chess Image Summary of stretch operators . -contrast-stretch, and -linear-stretch all generate a histogram (using 1024 bins) to determine the color position to stretch. as such it is not exact. The other difference is how zero is handled, and that -linear-stretch actually does a -level operation to do the stretch, while -contrast-stretch uses histogram bin values for color replacement stretching (which introduces a 1024 quantum rounding effect. -normalize uses -contrast-stretch internally. A mathematically perfect normalization stretching operator is -auto-level. While a perfect white-point only or black-point only version is posible it has not been implemented at this time. Auto-Level - perfect mathematical normalization The -auto-level finds the largest and smalled values in the image to use to stretch the image to the full Quantum Range. At no time will values become clipped or burned as a result of the histogram being stretch beyond the value range. The -channel setting will determine if all channels are stretch equally in sync (using the maximum and minimum over all channels) or separatally (each individual channel as a separate entity). At this time the hidden color of fully-transparent pixels, are also used in determining the levels, which can cause some problems when transparency is involved. This is regarded as a bug. It is a pure-mathematical histogram stretch just as the manual Level Operator is. That is the minimum will be adjusted to zero and maximum to Quantum range, and a linear equation is used to adjust all other values in the image. It does not use histogram bins or any other grouping of values that other methods may use for either determining the levels to be used, or other histogram adjustments. The -normalize operator is the simplest of these three operators. It simply expands the grayscale histogram so that it occupies the full dynamic range of gray values, while clipping or burning 2 on the low (black) end and 1 on the on the high (white) end of the histogram. That is, 2 of the darkest grays in the image will become black and 1 of the lightest grays will become white. This is not a large loss in most images, and the overall result is that the contrast (intensity range) of the image will be automatically maximized. A idealized diagram is needed here Example using chinese chess Here we create a gray-scale gradient, and expand it to the full black and white range. For practical reasons to do with JPEG color inaccuracies (see JPEG Color Distortion for more details) and scanned image noise, -normalize does not expand the very brightest and darkest colors, but a little beyond those values. That is, it is equivalent to a -contrast-stretch with a value of 2,99 (see below). This means if highest and lowest color values are very close together, -normalize will fail, an no action will be taken. If you really want to expand the exact brightest and darkest color values to their extremes use -auto-level instead. Up until IM version 6.2.5-5, -normalize worked purely as a grayscale operator. That is, each of the red, green, blue, and alpha channels were expanded independently of each other according to the -channel setting. As of IM version 6.2.5-5, if only the default channel setting is given, then -normalize will tie together all the color channels, and normalizes them all by the same amount. This ensures that pixel colors within the image are not shifted. However, it also means that you may not get a pure white or black color pixel. For example here we added some extra colors (a blue to navy gradient) to our normalization test image. As you can see from the last example, for color images -normalize maximized all the channels together so one channel has a zero value, and another channel has a maximum value. That is, no black pixels were generated, as all the added blue colors already contain zero values in the red and green channels. As such the lower bounds of the image did not expand. If you want the old -normalize behaviour (before IM v6.2.5-5), you will need to specify any non-default -channel setting. For images that contain no alpha (or matte) channel, you can just use the all channel setting. Note that the number of parameters ( a to d in above) needed for curve fitting, must equal the number of control points you provide. As such if you want five control points you need to include another e term to the function. If your histogram curve goes though the fixed control points 0,0 and 1,1. you really only need two parameters as d will be equal to 0 , and c will be equal to 1-a-b . A more detailed usage guide to the above specifically for Windows users, but works for linux users too, has been posted on StackOverflow: IM Curves using Gnuplot on Windows. As you can see from the extra gnuplot generated image above, the function generated fits the control points perfectly. Also as it generated a -fx style formula it can be used as is as an IM argument. To make it easier for users to convert control points into a histogram adjustment function, I have created a shell script called imfxcurves to call gnuplot , and output a nicer looking polynomial equation of the given the control points. Gabe Schaffer, also provided a perl version (using a downloaded Math::Polynomial library module) called imfxcurves.pl to do the same thing. Either script can be used. For example here is a different curve with 5 control points. A more practical example of this method is detailed in the advanced Aqua Effects example. An alternative away generating curves is looked at in the IM Forum Discussion Arbitrary tonal reproduction curves. Tinting Images Uniformly Color Tinting Images Typically tinting an image is achieved by blending the image with a color by a certain amount. This can be done using an Evaluate Operator or Blend Images techniques, but these are not simple to use. Lucky for us a simpler method of bleeding a uniform color into an image is available by using the -colorize image operator. This operator blends the current -fill color, into all the images in the current image sequence. The alpha channel of the original image is preserved, with only the color channels being modified. For example lighten an image (gray scale or otherwise) we use -colorize to blend some amount of white into the image, making it brighter without saturating the image completely. Similarly we can use a black fill color to darken an image. To gray both ends of the image toward the mid-tones, you would use a specific gray fill color. The color gray50 is the exact middle color of the RGB color spectrum. This is also often used as an method of de-contrast such as what the Reverse Level Adjustment Operator provides, though with less control. The -colorize operator also allows you to specify dissolve percentages for each of the three color channels separately. This is useful for linearly darkening (or lightening) an image in a special way. Before IM v6.7.9 the -colorize operator did not modify the alpha channel at all. From that version onwards, as you can see above, it now uniformly tints all pixels including fully transparent pixels. One common use of the -colorize operator is to simply replace all the colors in an existing image (tinting 100 ), but preserve the transparency (alpha) shape of the image, so as to produce a colored mask. However from IM v6.7.9 you will need to protect the alpha channel from this operator by disabling it, then re-enabling the alpha channel. (See Alpha On for more details). Without this protection, colorize would have fully-blanked the canvas to the given color. However if there is a posibility of using a verion of IM older than IM v6.7.9 I recommend you include a -alpha opaque or -alpha off operation in the above to ensure the resulting image is the completely blank image you expect. Note that you can blank canvases faster using Level Adjustments by Color operator with a single color, rather than a range of colors. See also Blank Canvases. Midtone Color Tinting While the Colorize operator applies the -fill color to tint all the colors in an image linearly, the -tint operator applies the -fill color in such a way as to only tint the mid-tone colors of an image. The operator is a grayscale operator, and the color is moderated or enhanced by the percentage given (0 to 200). To limit its effects it is also adjusted using a mathematical formula so that it will not effect black and white. but have the greatest effect on mid-tone colors of each color channel. A -tint 100 essentially will tint a perfect gray color so that it becomes half the intensity of the fill color. A lower value will tint it to a darker color while a higher value will tint it so toward a perfect match of that color. The green color in the test image is not a true RGB green, but a Scaled Vector Graphics green , which is only half as bright as a true green color. As such it is also a mid-tone color, and thus is affected by the -tint operator, becoming darker, unlike red and blue color spots of the test image. Also you can tint the individual color components, by using a comma separated list of percentages. For example -tint 30,40,20,10 . This however can be tricky to use and may need some experimentation to get right. Better to specify the color you want for perfect 50 grays. The -tint operator works by somehow taking the color and percentages given then then adjusting the individual colors in the image according to the -fill colors intensity, as per the following formula. (see graph right) A quadratic function, the result of which is used as vector for the existing color in the image. As you can see gives a complete replacement of the color for a pure mid-gray, with no adjustment for either white or black. Or lower level operators that you can use to DIY this sort of thing, see FX Operator. as well as Evaluate and Function Operators. The tinting operator is perfect to adjust the results of the output of -shade , (See Shade Overlay Highlight Images ), such as the examples in 3d Bullet Images. You can also use -tint to brighten or darken the mid-tone colors of an image. This is sort of like a gamma adjustment for images, though not exactly. For example using a tint value greater than 100 with a white color will brighten the mid-tones. While a value less than 100 will darken colors. See also Hald Color Lookup Tables for a method by which you can save much more complex color change variations, such as the last example above. Duotone Effect A duotone is a printing method where you mix the grayscale of an image (black ink) with some other color to produce a better result, with a limited budget or printing equipment. For example the reason all the old photos you see today have a sepia-tone look about them, is because sepia-tone inks survived and did not deteriorate, or fade with time. Other black and white images formats faded into uselessness. See the Sepia Tone Operator above. Another duotone technique known as Cyanotype (more commonly known as blue-prints) became widely used as method of making large scale copies of the original black and white architect drawings. Remember this tenchique was used long before the invention of lazers and from that photo-copying (and Xerox). The above Tint Operator however produces a reasonable facsimile of the duotone effect, just as it did for a sepia-tone like effect above. Note that I generally chose a darker version of the duotone color, but you can also adjust this using the argument of the Tint Operator. The brightness and contrast can also be adjusted using the arguments of the Sigmoidal Contrast Operator. Another more exacting way of generating a duotone from three colors (the black-point, mid-point and white-point colors) is to use a Color Lookup Table (see below). Here is just a quick example where I create a very unusual duotone using the colors Black , Chocolate , and LemonChiffon for the duotone. And yes the black-point color is typically left black, which is why it is usally called duo -tone. The advantage of the above is an exact control of the mid-point color (unlike Tint which isnt exact). You can also use any the three colors you like directly, just as in the above example, or use an expanded gradient of the colors for finer control of the colors between the three (or more) control points. The technique also provides you with a very compact way of storing the specific duotone effect, for repeated and future usage. Also see Hald Color Lookup Tables for more complex method of saving color changes, that go beyond coloring greyscale images. Color Tinting, DIY One of the biggest problems with -tint is that it is a grayscale (or vector) operator. That is, it handles each of the red,green,blue channels completely separately to each other. That in turn means that a primary and secondary color like blue or yellow are not affected by -tint , even though all the gray levels are. However thanks to various channel mathematical transforms such as the FX Operator and the faster Evaluate and Function Operators. you can generate your own color overlays to modify the image. That is, to Tint the image in a similar what that the Colorize Operator does. For example, here I convert an images gray-scale brightness level into a semi-transparent overlay of the specific color wanted. Warning, this does not preserve image transparency correctly, but it will work fine for fully-opaque images. Note that unlike tint, any color can be used, including black as the color is not treated as a vector addition, but an alpha composition. The result is not quite the same as what you would get for a normal tint. Color Tinting Overlay The special Alpha Composition methods Overlay and Hardlight were actually designed with color (and pattern) tinting in mind. These compose methods also will replace mid-tone grays leaving black and white highlights in the image alone. For example here I quickly generate a colored overlay image, and compose it to tint the original image. As you can see the alpha composition does not preserve any transparency of the original image, requiring the use of a second alpha composition operation to fix this problem. The alpha composition method HardLight will produce the same results as Overlay but with the source and destination images swapped. This could have been used instead of the swap in the last few examples. Global Color Modifiers Modulate Brightness, Saturation, and Hue The -modulate operator is special in that it modifies an image in the special HSL (hue-saturation-lightness) colorspace. It converts each color pixel in into this color space and modifies it and converts it back to its original color space. It takes three values (though later values are optional) as a percentage such that 100 will make no change to an image. ตัวอย่างเช่น. The first value, brightness is a multiplier of the images overall brightness. Note that while a brightness argument of 0 will produce a pure black image, you cannot produce a pure white image using this operator on its own. The second value saturation is also a multiplier adjusting the overall amount of color that is present in the image. A saturation of 0 will produce a grayscale image, as was also shown in Converting Color to Gray-Scale above. The gray however mixes all three color channels equally, as defined by the HSL colorspace, as such does not produce a true intensity grayscale. Essentially small values produce more pastel colors, while values larger than 100 will produce more cartoon-like colorful images. Note that as the brightness and saturation are percentage multipliers, you would need to multiply by a very large number to change almost all the image color values to near maximum. That is you would need to use a brightness factor of close to one million, to make all colors except pure black, white. Hue Modulation The final value, Hue . is actually much more useful. It rotates the colors of the image, in a cyclic manner. To achieve this the Hue value given produces a modulus addition, rather than a multiplication. However be warned that the hue is rotated using a percentage, and not by an angle. This may seem weird but -modulate has always been that way. Conversion formulas between angle and the modulate argument is. hueangle ( modulatearg - 100 ) 180100 modulatearg ( hueangle 100180 ) 100 That means 100 (for all three arguments) produces no change. While a value of 0 or 200 will effectivally negate the colors in the image (but not the intensity). As you can see a value of 33.3 produces a negative, or counter-clockwise rotation of all the colors by approximately 60 degrees, effectively mapping the red to blue, blue to green, and green to red. Using values of 0 or 200 produces a complete 180 degree negation of the colors, without negating the brightness of the image. Note that hues are cyclic, as such using a value of 300 will produce a 360 degree color rotation, and result in no change to the image. For examples of using Hue Modulation to modify colors in images see, Chroma Key Masking and Pins in a Map. These types of operations and more can also be applied using advanced Color Space techniques, such as using in Recolor Matrix Operator (below), but for basic modulation of an image, this operator greatly simplifies things. For primary color swapping, either Recolor Matrix Operator. or channel swapping (see SeparateCombine Operators ), is probably more accurate technique. Though it is much less versatile. See also Hald Color Lookup Tables for a method by which you can save color change variations, especially changes in Hue, for later reuse. Modulate DIY You can if really want to Do It Yourself. You basically convert the image into the appropriate color space, modify the values, and convert back. Remember that in HSL Color Space. the Green channel holds the Saturation value, and the Blue channel holds the Luminance value. For example here is the equivalent to a -modulate 80,120 (darken slightly, increase color saturation), using the default HSL colorspace. Of course if you modify the Hue (red channel) using this method you will need to ensure the final value wraps around (a modulus), rather than simply clipping the value at the maximum or minimum value (both of which is the red hue). As such it is probably easier to just directly use the Modulate Operator. for Hue modifications. Modulate in Other Colorspaces The biggest problem with -modulate is when handing images containing a lot of near white colors. As it does its work in HSL colorspace, colors that are off-white will become more saturated as the brightness is reduced. You can see this in the white leaf of the rose image above, which shows lots of color artifacts at a 50 darkening. This is especially a problem when dealing with JPEG image formats, as it tends to generate off-white colors (actually all colors are generally slightly off in JPEG) due to its lossy compression algorithm. ตัวอย่างเช่น. The problem here is that in HSL all the off white colors were packed into a small white point area of the color space used (a double cone). When brightness is then reduced the off-white colors get expanded as the cone of color expands, causing the off white color to generate a more colorful (saturated) set of off-white colors. That is, small variations in color are exaggerated. The solution to this is to -modulate in the HSB colorspace, instead of HSL colorspace. The B in HSB, means Brigthness, but is also commonally known as HSV, with using V meaning Value. They are the same colorspace, but V is a confusing term, as a value normally means a stored number. There is also a HSI colorspace, (using I of Intensity) but it is uncommon, and not needed due to the addition of the HCL (where L means Luminance) cyclic colorspace (see below). In the HSB colorspace, white is not a single point, but a large disk, and as such off-whites, are not close to each other. As such when you reduce the brightness, the off-whites contract equally, reducing any slight color variations rather than expanding them. As such the whites just become gray, and not more colorful. To modulate the image in HSB Color Space you can either use the DIY technique (see above) in that colorspace. Or with IM v6.5.3-7 and later, you can Define an Operational Control of modulate:colorspace with one of the Hue color spaces. Other Hue colorspaces is HWB, and HCL (see next section). Of course if you resized the image to this small size, an even better solution is NOT to save the image to JPEG, which was the cause of the off-white values. Better still dont save the image at all, until after you are finished, so you can keep all the color values at the best in-memory quality setting. The reason HSB colorspace is not used by default for modulate, is because if you brighten an image in this colorspace the colors become more saturated, and bolder, rather than the image becoming more brilliant and whiter. Here for example is a 150 brighten of the rose image in the default HSL, and a specified HSB colorspace, for comparison. Before IM v6.4.0-10 the -modulate operator actually did use HSB color space rather than HSL colorspace. This was changed because of a bug report by a user about the above situation. The point is for some images you are damned if you use HSL, and for other images you are damned if you use HSB colorspace. It just depends on what you are attempting to do Modulate in LCHab and LCHuv Colorspace Hue modulation (in HSL or HSB colorpsace) is actually regarded as rather crude. These colorspaces do not take into account a more realistic intensity of the colors. As such rotating between the hues blue and yellow will also generate very large brightness shifts. See Wikipedia: Disadvantages to HSL Colorspace . One alternative is to do a Luminance preserving rotation as described on the Grafica Obscura in the Matrix Operations Paper. This is complex as the color modifications are being done as part of the operation, as a single calculated matrix operation that is different depending on how much of a rotation is required. As of IM v6.8.4-7 the Modulate Operator can also handle the special colorspaces LCHuv and LCHab which are Cylindrical (Hue-Chroma) forms the the respective Luv and Lab colorspaces. see Wikipedia, Cylindrical LUV, or LCHuv colorspace and The HCL Colorspace for more information. The equivelent channels of LCHuv and LCHab colorspaces are reverse to those of the HCL and HCB colorspaces. That is the grayscale intensity equivelent is in the first (red) channel and Hue is in the third (Blue) channel of the image. For example we do some hue rotations for the red rose using LCHuv colorspace. Compare these with the previous set for the HSL colorspace above. Note how the blue is nowhere near as dark, but is a shade that better matches the shade of the original image. You can also do the same in LCHuv though I found the hue spead more restrictive. For more information on HCL colorspace hues, see the examples on The LCH Color Wheel. Before IM v6.8.4-7 you would have used the colorspace HCL (introduced IM v6.7.9-1). This colorspace is exacty the same as LCHuv but with the channel order reversed so that Hue was in the first channel, so as to better match HCL colorspace. This spacial channel reversal allowed modulate to work properly, without it needing to understand different channel ordering for different colorspaces. This no longer required, so you can now use the more commonly known channel ordering for the cylindrical version of the Luv colorspace. You can also use a LCHab (cylindrical version of the Lab ) colorspace, however this version has discontinuities for specific impossible color values, especially in the green area. It is not recommended for use with the Modulate Operator. Color Matrix Operator The -color-matrix operator will recolor images using a matrix technique. That is to say you give it a matrix of values which represents how to linearly mix the various color channel values of an image to produce new color values. Typical usage is to provide the operator with 9 values, which form three functions (rows) or three multipliers (columns). As such the first three numbers is the color formula for the red channel. The next for green and so on For example. Future: Hue rotations using a color matrix However be warned that most of these implementations use a Diagonally Transposed form of the matrix, in which columns form the equation, instead of the rows. Or involve fewer channels (smaller number of rowscolumns). Solarize Coloring To -solarize an image is to basically burn the brightest colors black. The brighter the color, the darker the solarized color is. This happens in photography when chemical film is over exposed. Basically anything above the grayscale level given is negated. So if you give a argument of 0 you basically have a poor mans Negate Operator. For example here is a faked -solarize using a -fx mathematical formula. This operator is particularly well suited to extracting the midtone gray colors from images. For example here I use very strong Sigmoidal Contrast operation to produce a sort of fuzzy threshold at 70 gray. I then Solarize the result to generate a fuzzy-spike rather than a fuzzy-threshold. A final level adjustment then brings the spike to maximum brightness to generate a filament effect. ASIDE: The above images showing profile graphs of the gradient, was generated using the improfile in the IM Examples, Scripts directory. Note how anything that is white becomes black, while the mid-tone grays around the central spike are preserved. The fuzziness and placement of the spike is determined by the -sigmoidal-contrast operator. I call it a filament as typically the result looks remarkably like glowing electrical filaments, or lightning discharges. See Random Flux for another example of this effect. This extraction of mid-tone grays is also put to good use in techniques for generating Edge Outlines from Bitmap Shapes. and for the multiplication of two biased gradients. Another novel use of this operation is in determining if an image is basically a pure black and white sketch or drawing (such as from a book), rather than a shaded gray-scale or color images, See Determining if an image is: Pure Black and White, or Gray-scale Recoloring Images with Lookup Tables While you can recolor images using the various histogram color adjustments as shown above, there is another technique for recoloring images, simply by looking up the modified values from a pre-prepared color gradient, or Color Look Up Tables (Color LUT, or CLUT). There are two types of Color LUTs: simple one dimensional or per-channel LUTs and 3d color LUTs. A channel LUT has three independent look-up tables: one each for the R G and B channels. Each entry in the channel LUT maps an input channel value to an output channel value. The red channel of the output image is only effected by the original red value of the input image. A 3D color LUT however allow the whole color to be replaces as a function of the whole input color. That is the output value of the red channel can be dependent on any or all of the input red, green, and blue values. This is sometimes called channel cross-talk. Color (Channel) Lookup Tables A common requirement of a image processing tool is the ability to replace the whole range of colors, from a pre-prepared table of colors. This allows you to convert images of one set of colors (generally gray-scale) into completely different set of colors, just by looking up its replacement color from a special image. Of course you do need a Look Up Table image from which to read the replacement colors. For these first few examples, I choose to use a vertical gradient of colors for the LUT so that the IM gradient: generator can be used to simplify the generation of the color lookup table. Well so much for the theory. Let try it out by recoloring a simple gray-Scale Plasma image, replacing the grayscale with a dark-blue to off-white gradient of colors. The -clut operator takes two images. The first is the image to replace color values in, the second is a gradient image that is either a single row, or a single column. The -clut operator was added to IM v6.3.5-8. If your IM is too old to understand the -clut operator or you want to do something out of the ordinary, such as a 2 dimensional color lookup table, then you can roll your own using the General DIY Operator, FX. For example here is a slow, but equivalent command to the above. The problem is that even for a simple process such as the above the -fx operator is very slow, and has to be designed specifically for either a row or column LUT. But it does work. The LUT does not have to be very large. For example here we use a very small LUT, with a very limited number of colors. I enlarged the gradient image for the web page display above, otherwise it would be too small to see properly. The LUT is in actual fact only 6 pixels in size. However if you look at the result you will see that the Color Lookup Operator smooths out those 6 colors into a smooth gradient. What is happening is that IM is doing an Interpolated Lookup of the LUT image. That is, instead of just picking the color found, it does a weighted average of all the nearby colors to better represent the LUT. In this particular case, it used the default Bilinear setting that just links each colored pixel together with linear line segments. Different -interpolate settings generate different levels of smoothing of the colors when using a very small color LUT. Here for example I show a various type of interpolated smoothing of the LUT colors. The Integer and Nearest settings are special in that they do no smoothing colors at all. That is, no new mixed colors will be added, only the exact color values present will be used used to color a grayscale image. However note how the lookup of the colors differ between the two. It is a subtle difference but can be very important. The Average setting on the other hand also generated bands of color but only using a mix of the colors, resulting in one less color than the size of the color lookup table image. Blend however mixes Average and Nearest together, to add more pixels. This type of color banding (or Blocking Artefacts ) is actually rather common for geographic maps, and temperature graphs, as it gives a better representation of the exact shape of the map. The sharp boundary edges are known as iso-lines. Adding a slight one pixel Blur to the final image can improve the look of those edges, making it look a little smoother, without destroying the color banding. The BiLinear setting will also generate banding but only in the form of sharp gradient changes, when the colors change sharply (not in this example). While Catrom will smooth out the color changes. Finally Spline will blur the colors, and may not generate any of the colors in the given CLUT. To avoid interpolation problems, or better define the color gradients, the best idea is to use much longer LUT. Ideally this should cover the full range of possible intensity values. For ImageMagick Q16 (compiled with 16 bit quality) that requires a LUT to have a height of 65536 pixels. But Pixel Interpolation allows you to use a more reasonable LUT gradient image of 500 pixels suitable for most image re-coloring tasks. Note that the vertical gradient LUT used in the above examples appears upside-down to our eyes, as the black or 0 index is at the top of the image. Normally we humans prefer to see gradients with the black level at the bottom (thanks to our evolutionary past). If you rather save the gradient image the right way up you can -flip the image as you reading it in. For example lets try a more complex LUT, flipping the vertical gradient before using it on the image. As you can see for a vertical gradient, flipping it before using makes a lot of sense. For more examples of generating gradients see Gradients of Color. You may also be interested in a way of tiling greyscale images using a image for each grey level, which can produce even better map like images. See Dithering with Patterns. Function to Color LUT Conversion These pre-prepared Lookup Table Images (or LUTs) can also be used to greatly increase the speed of very complex and thus slow -fx operations, so instead of IM interpreting the functional string 3 or 4 times per pixel, it can do a much faster lookup of the replacement color. The procedure for doing this is quite straight forward, either apply the function to a unmodified linear gradient, or replace the u in the function with the value (iw) or (jh) to calculate the replace value based on its position. For example, in the advanced Aqua Effects example, I used a complex -fx function to adjust the gray-scale output of the Shade operator . Also as this gray-scale adjustment is also overlaid onto a DodgerBlue shape, there is no reason why the results of both of these operators could not be combined into a single gradient lookup table. That is, we generate a LUT from the -fx formula and the color overlay. Also for these examples I decided to generate a single row of pixels rather than a column as I did previously. The polynomial -fx in the above can now be generated more directly and faster using a Polynomial Function. For example This pre-generated LUT can now be applied to the shaded shape much more quickly at the minimal cost of storing a very small image. As you can see, the result is very effective, and once an appropriate LUT gradient has been generated, you can re-use the same gradient over and over, as many times as you want. CLUT and Transparency Handling The -clut operator is controlled by the -channel setting, but in reality, it only replaces the individual channel values within the image. That means that normally each individual channel of the source image is used to lookup the replacement value for just that channel from the color lookup table. That includes the alphamatte channel which is usually very inconvenient, and difficult to apply. Typically the -clut operator is used to either colorize a gray-scale source image, (see previous examples), OR it is used to do a histogram adjustment of a color image using a gray-scale CLUT (Color Lookup Table). In other words, usually one of the images will typically be gray-scale. As of IM v6.4.9-8, if a -channel setting specifies that if you are wanting to replaceadjust the alpha channel of an image (an A is present), and either the source image or CLUT image has no alphamatte channel defined, then IM will assume that that image is gray-scale, and will act accordingly. For example, here I generate a simple blurred triangle, as a grey-scale image. I can then color using a Color Lookup Table that includes transparency. I did not flip the CLUT image this time, so the black replacement will be at the top and white replacement at the bottom. Remember the above will only work as expected if the gray-scale image has no alpha channel (turned off using either -alpha off or matte ), and you specify that you also want to lookup alpha channel values (using -channel RGBA ). And here is the other special case where were have an image with transparency (and alpha channel) that needs to be adjusted using a gray-scale histogram adjustment gradient (with no alpha channel enabled). The above is a typical Image Feathering problem. The black halo in the intermediate image is caused by the -blur operation making the fully-transparent areas surrounding the triangle visible. As fully-transparent has an undefined color, IM defaults to black. The CLUT image itself was designed to ensure that any pixel that was less than 50 transparent will be turned fully-transparent, effectively making the previously fully transparent parts of the image, transparent again. For this example I over-do the initial blur, then over-correct the alpha channel adjustment. The result is a sever rounding of the points of the triangle. For normal image feathering would typically use much smaller values for both the -blur and the -sigmoidal-contrast alpha adjustment. Fred Weinhaus. has implemented a blurred feathering technique in his feather script, to make it easier to use. Hald 3D Color Lookup Tables As of IM v6.5.3-4 you can now also use a full 3D Color Lookup Table which can be used to directly replace all the colors of multiple images. That is, instead of just looking up the value of each each color channel as a separate entity (as in the CLUT above), the whole color is used to lookup the new color. However a 3D color tables usually require special file formats to correct store the 3D array of color values. However by using a special arrangement of color values the 3D table can be stored into a 2D image known as a Hald Color LUT . This is just a normal image and as such ANY good image file format can be used to save a Hald 3D Color LUT. For more details and examples of HALD Images, see the official website Hald Images, Clut Technology. To generate a Hald 3D color table, use the HALD: level image generator. For example, here is a small one that I have enlarged so you can see the individual pixels. The table holds a color cube with a side of level 2 colors or 9 colors. The full color cube contains 9 times 9 times 9 colors, giving a total of 729 colors, which is stored in a image of that numbers square root, or 27x27 pixels. The colors are stored so the first 9 colors (in the top-left corner) forms a gradient going from pure-black to pure-red. Every 9 th color then forms a gradient in green, and every 81 st color will form a gradient of blue. The last color in the bottom-right corner is pure-white. You can think of the image as an even simpler 1D array of pixels that are referenced as a 3D color cube, if it helps you to imagine it. Now this is only a small HALD CLUT image. More typically you would use at least a level 8 Hald ( the default ), which will hold a color cube with 64 colors per side, or 643 262144 colors, and produce an image that is 512x512 pixels in size. and saves into into an approximate 10Kbyte PNG image. This is not all 8 bit colors but is quite good. For a HALD image with every 8 bits color, you would need a level 16 version, producing a 4096x4096 image. Whcih just does to prove that even normal digital camera images generally can not hold every posible 8 bit color. However a smaller Hald image can be used, as IM will interpolate the neighbouring 8 colors from the Hald to work out the final color for the lookup replacement. It will simply not be as good a representation as a larger version. Hald images larger than 8 are not recommended, and would require very large images, of at least 16 bits per value depth to hold it. Now these generated hald images are the identity or no-op CLUT images. That is, they are the normal colors values forming the 3D color cube, and as such will produce no change the image. For example lets apply a no-op Hald image, using the -hald-clut operator. This image is exactly the same as the original, and the Hald image contained no changes. However by modifying the Hald image, either by hand, or using a color modification, then you can substitute the original colors for the modified colors. For example here I create a blended-sepia-tone color scheme. Of course if you can apply a specific color modification to a Hald image, you can also apply it to the actual image directly too. But you can now save your color modifications to reuse them, and can then be applied as many times as like. That means you can spend your effort on the halt, and save it for the future. You can also send, or download Hald CLUT images for other people and even other applications. You could even directly edit the colors in a Hald, using a image editor like Gimp or Photoshop , or if saved in a Enumerated Pixel Text Image use a plain text editor All this is especially the case for very complex color modifications Please mail me any Hald CLUT images you have found interesting or useful, and I will example them here. You will be credited, here as well Hald CLUT Limitations Unlike the simpler 1 Dimensional gradient lookup using the CLUT Operator you can use a Hald CLUT to rotate colors. For example swap red and blue colors. It is a much more versatile CLUT method. However it is not as good for doing simpler things like coloring a gray-scale image, or doing a histogram adjustment of color values. It can also replace colors with transparent, or semi-transparent values, by saving such replacement colors in the Hald CLUT image. However this replacement lookup is by color only. You cannot use it to replace transparent colors in specific ways. It isnt after all a 4D color lookup hyper-cube Color Replacement using Hald CLUT Now as the whole color value is used to lookup the color replacement, you could also use this as a method of directly replacing all the colors in an image with some other color. However as IM currently does a linear interpolated lookup of the Hald, you will need to set the replacement color in all 8 neighbouring color cells of the 3D color cube. This needs more work, and may need a nearest-neighbour Hald Lookup setting (say using -interpolate), rather than a 3D linear interpolated lookup to work better for specific color replacement. Also some easy way of locating specific colors in a Hald (nearest-neighbour, or the 8 neighbours) would make this a lot easier. If you have ideas, suggestions, or better still small examples, then please contribute by mailing them to me, or the IM Discussion Forums Another idea is that if you have two images, the original and the converted, then it should be possible to fill-in a Hald CLUT image from the comparison of the two images. When the immediate colors have been filled in the rest of the color cube should be able to be at least roughly derived by curve fitting the colors that are present. That is, create a 4-D color surface from the color changes discovered. When complete than you can apply the Hald CLUT to any other image so as to either make the same color transformation (in either direction) to any other image. Full Color Map Replacement FUTURE: Replace all the colors in one color map with colors in another color map. Suggestions as to how to best do this is welcome, or programmers to implement some image color map function. One method may be to use ideas presented in Dithering with Symbols. The best known solution (but hardly ideal) is currently provided by Fred Weinhaus in is mapcolors script. This script essentially maps each color one at a time, masking the pixels involved from one image into a new initially blank image. Another idea is to somehow map a 3 dimentional color replacement into a HALD Color Table. This will not just map the specified colors, but also re-map the colors between the specified colors in a logical way. HALD generator wanted. Created: 19 December 2003 Updated: 6 October 2011 Author: Anthony Thyssen. ltA.Thyssen64griffith.edu.au gt Examples Generated with: URL: imagemagick.orgUsagecolormodsThis is a guest post from 8220DerivsTrading,8221 who founded SampT Careers to teach you how to win bulge bracket trading interviews and offers and ace your assessment centers. He8217s an experienced flow options trader currently working at a bulge bracket bank in London, and he defied the odds to break in coming from a non-target school. We8217ve covered a few days and 48-hour periods in the lives of sales amp trading interns before, but what about when you start working full-time Even if the hours and stress levels are still brutal, do you at least get to do more real work Or are you stuck picking up lunch for everyone on your desk Lets jump into this day-in-the-life account and see exactly what you do as a full-time options trader at a bulge bracket bank and hey, you might even improve your knowledge of the Greek language in the process 5:45 AM: Wake up. No matter which desk you end up on, you are most likely going to be waking up around this time. Adjust your sleeping habits accordingly or suffer for most of the day. Also keep in mind that even if you go out the night before, you are still expected to be in on time and alert. Any signs that you are at less than 100 capacity will be looked upon very badly. 6:30 AM: Arrive on the desk. The market opens in 90 minutes, so its really a countdown from here. 20 minutes is spent just turning on all the systems with 4 computers and each one running 10-15 different applications, this is quite time-consuming. Inevitably, youll forget to log into at least one crucial system each day and then realize it at the absolute worst moment. 6:50 AM: Start reading various new sources generally FT, Bloomberg, City AM, and then the internal research that comes out. Finish off with a couple broker chats. You need to know, before the open, any market information that can affect your stocks how it might affect your PampL and what the cash traders are calling it that day (most cash traders after a big piece of news will call a stock up or down x). 7:15 AM: Look at the largest positions on the book and try to come up with a rough game plan for the day. I generally like to make a list of risks I dont like, in order of priority, and then work down the list throughout the day. You want to make sure you know the biggest risks in every category (e.g. gamma, vega, delta, decay, skew, div). NOTE FOR NON-TRADERS: These metrics all measure characteristics of options for example, delta is the rate of change of the option value relative to the changes in the underlying assets price (basically the first derivative with respect to price). Vega is the first derivative of the options value with respect to the underlying assets volatility gamma is the second derivative of the options value with respect to underlying asset price (so the first derivative of delta). In a large options book there is also a lot of hidden risk. Therefore, you cant just look at your overall risk for a name you need to know where your largest strikes are, and how your risk changes through spot and time. For example, you might see yourself long gamma, but actually you might be short a strike that expires in 2 weeks that is 10 away. You need to know about all of that because if the stock makes a big move, that strike will start kicking out a very large short gamma (this is also why most traders are unwilling to sell short dated OTM options). Morning Meetings: The Worst Time to Show Up with a Hangover 7:30 AM: Morning meeting with sales and research, which is generally the worst moment of your entire day if you have had a rough night out. The macro summary is given, and then everyone discusses important research updates. 7:50 AM: Take one final glance over the stock news to make sure you havent missed anything just before the open (which is at 8 AM in London and a few other regions). You never want your boss to ask you a question that you dont have an answer to: if youre running risk, you need to be aware of everything at all times. 8:00 AM: The market opens. You watch any big movers, see that cash equity prices find their levels fairly quickly but volatility (vol) levels adjust a bit more slowly generally, within the first 10 minutes you get an idea of where vol is on most names. If there are earnings or big announcements, you will generally not quote until the screens come in a bit. For the first 10 minutes, the vol spread will be extremely wide and you can easily get picked off. 8:15 AM: First wave of client requests comes in. If you cover several sectors, you can get a backlog of 7-10 prices pretty quickly. You prioritize all these requests by client and size even when you only have a couple minutes for each price, you need to make sure you have all your bases covered. Options trading is very tricky because there are so many different risks you need to make sure youre not being picked off on vol (check if anything similar in the broker market is already trading to hedge your risk and skew pricing accordingly), make sure youre not being picked off on divs, and make sure that you can find borrow on the stock if youre selling shares as part of the trade. If the government steps in and restricts short-selling for some reason, this last risk can become more of an issue. US vs. European Options 8:30 AM: Finally send off last of the prices, get some time to look at how the book is doing, and start phoning up brokers and start working some trades. Options on single stocks in Europe trade a bit differently than in the US because the liquidity is not the same the issue is that screen prices are kept very tight in extremely small sizes, and clients expect the same spreads in sizes that are 50x larger. But the problem is that unless you can find someone to find the other side in the broker market. you will get wider prices with brokers than you give to your clients. This means that to survive, you constantly need to be aware of what brokers are working so that you can spot chances to offload risk. That way, when a client request comes in you can skew it appropriately. The best case scenario: when you know someone is a buyer in the broker market, you can buy it from a client at a vol from mids, and then offload it in the broker market at a vol above. However, this is very rare, so most of the time you need to make a price based on a prop view (if you will). You need to price it according to your view of the trade, instead of where you can offload it. 9:15 AM: Things start calming down around this time, and you might chat with co-workers or use the time to go for a bathroom break. Always go when you have a chance and not when you need to nothing distracts you more than having to go to the bathroom when youre in the middle of something. 10:00 AM: Its still fairly quiet, so you finally get to fire up Excel and work on some longer-term projects. It gets difficult on a flow book because you need to find the balance between looking after the risk, but at the same time also exploring opportunities to move the business forward. 10:15 AM: Spoke too soon a big client request comes in, and its a good client so the price needs to be very competitive. This is a double-edged sword: you can take a lot of PampL upfront on the trade, but you know that getting out of the position is impossible and will take a couple weeks. So you price it with the help of the senior guys on the desk and get back to Excel. 12:00 PM: A company youre following announces a profit warning unfortunately, you have a short gamma position and the stock is down 5. This is one of the situations you hate to be in. NOTE: This is bad news because gamma is the second derivative of an options value with respect to the underlying stock price so if youre long gamma, you benefit from stock price movement, and the bigger the better. If youre short gamma that hurts you because youve bet against stock price movement and now the stock has just made a big move. Because of the short gamma, you are long a lot of delta. Do you sell the shares 5 down, or hold on and hope it rallies back As a personal rule, I like to keep my deltas from my short gammas to a certain limit, and I hedge so that it never crosses that limit. You do not want to be stuck with a stock that drops 20 in a day and just sit there watching it. Its important that you know everything about your short gammas, more so than your longs, because if something gaps down you need to know the impact on your PampL and delta. With longs its fine because of the positive PampL, but negative PampL always brings more senior attention and means that youre more likely to get questions on what youre doing. You also need to make sure you know not just your local risk, but also your risk as spot prices move. In a client flow book you have thousands of positions, so your risk can quite easily flip as parameters move. That is why you need to look at your risk in three dimensions: time, spot, and volatility. These added dimensions make derivatives more interesting than delta one products (e.g. futures, forwards, or anything else with a linear, symmetric payoff profile), but also harder to risk-manage. 12:30 PM: The stock has calmed down so you get back to Excel, keeping an eye on the chart in the corner of the screen in case theres any follow-up movement. 1:30 PM: You attend an IT meeting for 30 minutes, where youre really just listening to updates on various projects that theyre working on for trading desks. 2:00 PM: You get back to the desk to find 10 prices waiting for you. Lock back into the cockpit. Pricing becomes routine after a while. This can become dangerous, especially with very small requests. You have to make sure that for every single price, you are very rigorous in assessing all the different risks you can easily get picked off because you missed an announcement in a company conference call that dividends were being changed or restructured, for example. 3:00 PM: You have a big short gamma expiry today that is OTC and has just rallied close to the strike. Pin risk is very real. The stock is trading just above the strike and you are fully hedged, which means that if it dips below, the delta flips from 0 to 1 (or 1 to 0 but it has the same effect), so all of a sudden you get very long delta if its a sizeable position. A long delta position isnt a problem if the stock stays near that strike, but it could then drop 3 and you would lose quite a bit in that scenario. However, if you sell shares and it comes back up through the strike you get short a lot of delta. This situation gets even worse if the stock is illiquid and you get longshort several times the daily volume. Your choices are very limited at these times, and you need to be aware of the strike risk days or weeks leading up to the expiry so you can plan accordingly. 4:00 PM: You slowly start hedging the smaller delta positions on the book so you can spend the last 15 minutes focusing on the 10-15 large positions and expiries. This is one of the most hectic times of the day, as you need to hedge quite a large percentage of daily volume for a lot of stocks. In addition, several prices come in for clients, and you are trying to finish off some stuff you have been working in the broker market. On a standard day there are 20-30 things you need to be on top of, and so mentally it does stretch you a bit. Another tricky thing is that different markets close at different times of the day, so you cant necessarily stop paying attention or finish up right away as soon as the market of the city youre in closes. 4:35 PM: The markets close, so you finish off all outstanding bookings before running the final PampL for the day. Technically, your day is done once you submit the PampL, but you normally stay until 6 PM to work on your longer-term projects and think about new trade ideas. Its the only time of the day where you dont need to monitor something, so its actually the most productive time for new business generation as well. 6:45 PM: Wrap things up and head home. This is a guest post from 8220DerivsTrading,8221 who founded SampT Careers to teach you how to win bulge bracket trading interviews and offers and ace your assessment centers. He8217s an experienced flow options trader currently working at a bulge bracket bank in London, and he defied the odds to break in coming from a non-target school. He offers a comprehensive SampT interview guide that includes 100 technical (equities, credit, FX, interest rates, and options theory) and behavioral questions, a guide to generating trade ideas, secrets on how to beat the intern 8220trading game,8221 and full support and access to a forum where you can ask all your questions and receive answers from professional traders. NOTE FROM BRIAN: And yes, as I said in another guest article from a few months ago. this interview guide is great if you8217re looking to prepare for the technical side of SampT interviews and want something more in-depth. It goes well beyond the simple fit and markets-based questions we8217ve covered on the site before, into possible interview questions on the concepts discussed above. This is the best SampT interview guide I have seen if you are already comfortable with the fundamentals and want to learn even more. Holy Christ, I started developing an ulcer around 12:00 PM of your day. How do you deal with the stress Do you genuinely find what you do rewarding The way it was written it seems like you are always on tenterhooks that the bottom is going to drop out and you are going to get royally fucked somehow. Thanks for doing this, incredibly interesting Haha thats not a bad way to put it, yes you do honestly sit there a lot of the time going through those 8220getting fucked scenarios8221, because especially with options there are so many hidden risks that a big part of the job is trying to make sure you are aware of them. For example a simple scenario is that you are long gamma with earnings coming up, but lets say earnings are 24th of May but most of your long gamma rolls off on the 22nd (its an OTC position). Now once that rolls off lets say you are flat gamma, but actually you have some short Jun13 downside options so if the stock drops 4 you actually become short gamma very quickly. This is quite a simple scenario, but the trick comes when you have a book of 100 names that you have to keep track of these types of things for each one. Stress comes from missing something like this and losing money because of an oversight on your part. In terms of general stress, theres currently a thread on wallstreetoasis where i hve written quite a bit on general stress in a trading seat. Not sure if Brian allows to post links but its quite easy to find. Thanks I will dig the thread up. Do you like what you do I know you mentioned the timevolspot makes things interesting, but it seems like no regular human could keep track of all those things for 100 names8230 what happens if you get really sick and cant come in Does another trader take care of your book for the day (I imagine that must be incredibly hard if they too have to think about their own 100 names). Thanks again so much for the response Incredibly educational reading your experiences. Yea i find it very interesting every day, and i love having something where results are so directly trackable every day. In terms of monitoring everything, you honestly get used to it. Your eyes become very well adapted at searching for things on all the screens. Also there is always a hierarchy of things you are looking at, so you will always have 4-5 fires that are at your forefront of your mind, and then the other 90 things are on the backburner because they arent crucial, and you pay attnetion to them when you get a chance. In terms of covering books, most teams have a system, and there will usually always be some cross coverage so multiple people on a book.
Forex- คำศัพท์ -swap
Forex   ยาเสพติด